24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1742  |  回复: 16

田山东

捐助贵宾 (著名写手)

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

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

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

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

  

谢谢!
回复此楼
everythinghasitsseason.enjoyyourlife.
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
回帖支持 ( 显示支持度最高的前 50 名 )

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的回帖

libralibra

至尊木虫 (著名写手)

骠骑将军

在中间部分加一些同步,print出数据看看到底在哪里出了问题
大体系有没有内存溢出或者其他问题等等,debug只能一点点试
matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
9楼2012-08-29 17:52:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

libralibra

至尊木虫 (著名写手)

骠骑将军

可能跟你分发数据的代码有关系
matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
12楼2012-08-29 19:51:36
已阅   回复此楼   关注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的回帖

libralibra

至尊木虫 (著名写手)

骠骑将军

★ ★
xzhdty: 金币+2, 谢谢骠骑将军 2012-08-28 19:10:28
引用回帖:
4楼: Originally posted by 田山东 at 2012-08-28 17:03:17
可以给个实例吗?或者推荐一本书也行啊、谢谢...

4年前搞过的MPI,早都不知道哪儿去了
可以看看这个c的例子,很简单,但是基本的步骤都有

http://hi.baidu.com/xukeke2600/b ... 5e4a47f2de32fe.html
matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
5楼2012-08-28 17:25:17
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

田山东

捐助贵宾 (著名写手)

引用回帖:
5楼: Originally posted by libralibra at 2012-08-28 17:25:17
4年前搞过的MPI,早都不知道哪儿去了
可以看看这个c的例子,很简单,但是基本的步骤都有

http://hi.baidu.com/xukeke2600/blog/item/dec0d512a15e4a47f2de32fe.html...

很奇怪,小体系并行运算就可以得到结果,大体系反而不行了。纠结!!还是串行吧,尽管并行运算可以提高速度很多
everythinghasitsseason.enjoyyourlife.
6楼2012-08-29 08:00:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

libralibra

至尊木虫 (著名写手)

骠骑将军

引用回帖:
6楼: Originally posted by 田山东 at 2012-08-29 08:00:42
很奇怪,小体系并行运算就可以得到结果,大体系反而不行了。纠结!!还是串行吧,尽管并行运算可以提高速度很多...

那问题应该出在大体系的代码流程,仔细debug一下
matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
7楼2012-08-29 16:52:34
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

田山东

捐助贵宾 (著名写手)

引用回帖:
7楼: Originally posted by libralibra at 2012-08-29 16:52:34
那问题应该出在大体系的代码流程,仔细debug一下...

大体系和小体系代码相同的,只是修改了下参数,比如小体系N=101,大体系N=1201,就这点差距,其他都没动。真不知道哪里出问题了。很奇怪的问题
everythinghasitsseason.enjoyyourlife.
8楼2012-08-29 17:11:28
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

田山东

捐助贵宾 (著名写手)

引用回帖:
9楼: Originally posted by libralibra at 2012-08-29 17:52:37
在中间部分加一些同步,print出数据看看到底在哪里出了问题
大体系有没有内存溢出或者其他问题等等,debug只能一点点试

这很有可能。记得以前在系服务器算数据的时候,大体系总要在编译前加个ulimit -s unlimited 防止堆饯溢出。但是现在我用的是老板买的服务器,内存120G,串行时候都没出现堆饯溢出的问题,单核运算不溢出,难道并行运算会溢出吗?按道理讲,并行运算每个核承受的容量应该是串行的1/n吧?n个核并行运算的话,那还能溢出吗?
everythinghasitsseason.enjoyyourlife.
10楼2012-08-29 17:59:08
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 田山东 的主题更新
信息提示
请填处理意见