24小时热门版块排行榜    

Znn3bq.jpeg
查看: 1344  |  回复: 5

von_weiqiang

木虫 (正式写手)

[求助] 用MPICH2运行并行程序,代码中的printf语句只有在所有进程都结束后才会打印出来么? 已有2人参与

能不能各进程一边运行,一边打印?
例如代码:
        MPI_Init(&argc, &argv);
        MPI_Comm_rank(MPI_COMM_WORLD,&myrank);
        for(i=0;i<1e1;i++)
        {
                a=integration(0,1,1e-6,f);
                printf("current %d %d %e\n",myrank,i,a);
        }
        MPI_Finalize();
其中,integration函数每调用一次需要约2s时间,每个进程运行时间大约20s,我的理解是,每个进程每2s就应该打印一次“进程号,循环次数”,所以进程号应该是杂乱无章的,可是用MPICH开启3个进程实际运行结果是这样:

current 0 0 3.141593e+000
current 0 1 3.141593e+000
current 0 2 3.141593e+000
current 0 3 3.141593e+000
current 0 4 3.141593e+000
current 0 5 3.141593e+000
current 0 6 3.141593e+000
current 0 7 3.141593e+000
current 0 8 3.141593e+000
current 0 9 3.141593e+000
current 2 0 3.141593e+000
current 2 1 3.141593e+000
current 2 2 3.141593e+000
current 2 3 3.141593e+000
current 2 4 3.141593e+000
current 2 5 3.141593e+000
current 2 6 3.141593e+000
current 2 7 3.141593e+000
current 2 8 3.141593e+000
current 2 9 3.141593e+000
current 1 0 3.141593e+000
current 1 1 3.141593e+000
current 1 2 3.141593e+000
current 1 3 3.141593e+000
current 1 4 3.141593e+000
current 1 5 3.141593e+000
current 1 6 3.141593e+000
current 1 7 3.141593e+000
current 1 8 3.141593e+000
current 1 9 3.141593e+000
请按任意键继续. . .

为什么呢?
回复此楼
专注传播负能量
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

temgy1986

金虫 (小有名气)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
fegg7502: 金币+1, 鼓励交流 2014-02-14 10:03:52
von_weiqiang: 金币+50, ★★★★★最佳答案 2014-03-17 21:54:48
这个问题设计计算机的缓冲区。print的东西是先输出到缓冲区,再从缓冲区输出到终端的(文件,或者显示器)。所以最终的输出和系统有关系,并不能直接反应运行顺序。你可以使用flush命令来刷新缓冲区,并用mpi_barrier()来同步各个进程,就可以得到想要的顺序。

[ 发自手机版 http://muchong.com/3g ]
观念决定思路,思路决定出路。
2楼2014-02-04 21:26:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

von_weiqiang

木虫 (正式写手)

引用回帖:
2楼: Originally posted by temgy1986 at 2014-02-04 21:26:55
这个问题设计计算机的缓冲区。print的东西是先输出到缓冲区,再从缓冲区输出到终端的(文件,或者显示器)。所以最终的输出和系统有关系,并不能直接反应运行顺序。你可以使用flush命令来刷新缓冲区,并用mpi_barrier ...

如果我运行一个迭代的程序,一共迭代100步,总共耗时2小时,我想每一个迭代步都printf输出一个收敛参数,能实现么?还是说必须等到2小时之后我才能看见打印的结果?
专注传播负能量
3楼2014-02-08 10:28:19
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yuejian0518

银虫 (初入文坛)

使用flush命令来刷新缓冲区, 你可以看到及时结果
4楼2014-02-13 14:14:53
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

anlongstar

木虫 (文坛精英)

【答案】应助回帖

不是,如果是你说的那样,就没有办法调试了
5楼2014-02-14 22:08:41
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

temgy1986

金虫 (小有名气)

引用回帖:
3楼: Originally posted by von_weiqiang at 2014-02-08 10:28:19
如果我运行一个迭代的程序,一共迭代100步,总共耗时2小时,我想每一个迭代步都printf输出一个收敛参数,能实现么?还是说必须等到2小时之后我才能看见打印的结果?...

用flush可实现,一般都能立即看得结果。当然刷新缓冲区也需要时间,不排除有时候会1-2秒的延迟。
观念决定思路,思路决定出路。
6楼2014-02-15 07:07:12
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 von_weiqiang 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 一志愿华东理工085601材料工程303分求调剂 +15 a1708 2026-04-06 15/750 2026-04-08 16:23 by luoyongfeng
[考研] 一志愿哈工大,初试329,求环境科学与工程调剂! +11 余未辛 2026-04-06 11/550 2026-04-08 15:21 by screening
[考研] 计算机408|在校多次国家级竞赛获奖|申请调剂 +4 东山大白鹅 2026-04-05 4/200 2026-04-08 00:18 by chongya
[考研] 313求调剂 +3 十六拾陆 2026-04-07 3/150 2026-04-07 23:20 by lbsjt
[考研] 11408 325分 +3 jgtxuxgkx 2026-04-07 3/150 2026-04-07 23:10 by lbsjt
[考研] 081700化学工程与技术 一志愿中海洋 323 求调剂学校 +19 披星河 2026-04-03 19/950 2026-04-07 15:14 by 尽舜尧1
[考研] 316求调剂 +7 yyx想调剂 2026-04-05 7/350 2026-04-07 14:31 by shdgaomin
[考研] 287求调剂 +3 通信学硕081000 2026-04-03 4/200 2026-04-06 21:03 by going home
[考研] 277求调剂 +5 考研调剂lxh 2026-04-05 5/250 2026-04-05 19:03 by chy09050039
[考研] 284求调剂 +7 徐同学_001 2026-04-04 13/650 2026-04-05 17:19 by yulian1987
[考研] 工科求调剂 +15 11ggg 2026-04-03 15/750 2026-04-05 16:24 by zzx2138
[考研] 能动调剂326专硕 +4 wan112233 2026-04-04 4/200 2026-04-04 22:47 by yu221
[考研] 283分求调剂 +7 小聂爱学习 2026-04-03 7/350 2026-04-04 21:51 by hemengdong
[考研] 0835学硕299求调剂 08大类可接受 +5 useryy 2026-04-03 5/250 2026-04-04 20:07 by 蓝云思雨
[考研] 考研调剂 +4 zybz冲冲冲 2026-04-03 6/300 2026-04-04 13:08 by zybz冲冲冲
[考研] 一志愿沪985,326分求调剂 +3 刘墨墨 2026-04-03 3/150 2026-04-04 11:16 by 悲伤的芋头
[考研] 357求调剂 +13 1050389037 2026-04-03 13/650 2026-04-03 22:27 by 无际的草原
[考研] 求调剂 +8 akdhjs 2026-04-03 8/400 2026-04-03 18:17 by 戴维ING
[考研] 0705理学294求调剂 +3 成果成果cg5 2026-04-03 3/150 2026-04-03 14:04 by simons1972
[考研] 能源动力 调剂 +3 不破不立0 2026-04-02 3/150 2026-04-02 12:46 by ffffjjjj
信息提示
请填处理意见