C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – MPI对cout的“原子”调用大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我感兴趣的是OpenMPI中是否有命令或技术要进行原子调用以写入stdout(或者就此而言,任何流).

我注意到的是,在执行MPI程序期间,写入cout(或其他流)的调用可能会变得混乱,因为每当proc到达某段代码时,每个proc都可以写入.报告结果时,可以通过多个过程写入一行,这会使问题混乱.所以2个不同的过程可能会做这样的事情:

//Proc 10 - results calculated somewhere above
//  result1 = 10
//  result2 = 11
cout << "My results are: " << result1 << " " << resul2 << endl;

和:

//Proc 20 - results calculated somewhere above
//  result1 = 20
//  result2 = 21
cout << "My results are: " << result1 << " " << resul2 << endl;

但结果可能是:

@H_174_4@my results are: 20 My results are: 10 11 21

我正在寻找的东西就像“阻塞”或原子cout(以及可能写入其他流,如文件流).因此,一旦我开始编写一个cout,它就会阻塞直到语句结束,或者直到endl或者刷新流发出.如果是这种情况,我会保证两条线是分开的(当然,我仍然不知道哪条线会先出现):

@H_174_4@my results are: 20 21 My results are: 10 11

解决方法

使用标准i / o流(使用C语言的stdout和stdin或C中的cout和cin)不是MPI的最佳部分(OpenMPI实现MPI).有一些幻灯片http://www.csee.wvu.edu/~donm/classes/cs591x/notes/io1.ppt幻灯片10有一个解决方案.
(或“与m.P Pacheco的Mpi并行编程”一书的 chapter 8.1)

在排名为0的过程中使用COut执行所有I / O操作.如果要从其他进程输出一些数据,只需将带有此数据的MPI消息发送到排名0.

大佬总结

以上是大佬教程为你收集整理的c – MPI对cout的“原子”调用全部内容,希望文章能够帮你解决c – MPI对cout的“原子”调用所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。