24小时热门版块排行榜    

查看: 1844  |  回复: 16
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

田山东

捐助贵宾 (著名写手)

[求助] 并行计算没有输出?怎么回事

家好。感谢论坛上的各位好友对我的帮助。

昨天并行运算弄好了,速度确实快了很多,以前要30小时算完的程序,现在10小时左右就可以了。但是计算完成之后,我发现输出文件没有数据。这是怎么回事呢?

串行 计算的时候我都是把输出输出到一个文件下,改成并行计算了,语句没有修改,是不是并行情况下要对输出语句修改一下啊?

  

谢谢!
回复此楼
everythinghasitsseason.enjoyyourlife.
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

田山东

捐助贵宾 (著名写手)

引用回帖:
14楼: Originally posted by libralibra at 2012-08-31 18:22:53
MPI并行的大框架就是

读数据
分发数据 (前面2不不是必须,也可以根据core id号去读取自己需要的那部分数据,反正就是每个core只拿到自己运算需要的数据)
然后运算(如果运算过程有不能并行的部分,需要gather到一 ...

我发现我的问题是这样的:串行运行的时候,单个程序会产生一个很大的数组,大约60G,服务器总内存只有120G,所以一个程序产生的数组占内存占到了49%左右,我这个服务器最多只能运行两个程序。并行运算之后,比如我分配6个节点,我会发现很快每个节点占内存达到20%多,很奇怪,这样的话加在一起总数据量比原来大很多啊。
是你说的这个原因吗?是数据分配不合理的事吗?
everythinghasitsseason.enjoyyourlife.
15楼2012-09-01 21:20:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 17 个回答

libralibra

至尊木虫 (著名写手)

骠骑将军

【答案】应助回帖

★ ★ ★ ★ ★
感谢参与,应助指数 +1
田山东: 金币+5, ★★★很有帮助, 谢谢你了。我再摸索下 2012-08-28 17:01:33
并行之前将数据broadcast到每个core,分别计算
你要写文件之前,需要将数据重新collect到同一个core来写文件,因为每个core的运算不可能同时结束,所以需要synchronization
如果涉及文件读写,基本框架是:

master读文件
broadcast/划分数据给children
所有children并行运算
collect数据到master(同步)
master写文件
matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
2楼2012-08-28 15:36:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

田山东

捐助贵宾 (著名写手)

很奇怪啊,一个小的体系就能把结果输出到文件中,大的体系反而不行了呢。我按照你给我的思路再摸索下。谢谢了
everythinghasitsseason.enjoyyourlife.
3楼2012-08-28 17:02:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

田山东

捐助贵宾 (著名写手)

引用回帖:
2楼: Originally posted by libralibra at 2012-08-28 15:36:16
并行之前将数据broadcast到每个core,分别计算
你要写文件之前,需要将数据重新collect到同一个core来写文件,因为每个core的运算不可能同时结束,所以需要synchronization
如果涉及文件读写,基本框架是:

master读 ...

可以给个实例吗?或者推荐一本书也行啊、谢谢
everythinghasitsseason.enjoyyourlife.
4楼2012-08-28 17:03:17
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见