我感兴趣的是 OpenMPI 中是否有命令或技术来进行原子调用以写入标准输出(或者,就此而言,任何流)。
我注意到的是,在 MPI 程序的执行过程中,对写入 cout(或其他流)的调用可能会变得混乱,因为每个 proc 可能会在到达特定代码段时写入。报告结果时,一行可以由多个 proc 写入,从而混淆问题。所以 2 个不同的 procs 可能会做这样的事情:
//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;
但结果可能是:
My results are: 20 My results are: 10 11 21
我正在寻找的是类似于“阻塞”或原子 cout(以及可能写入其他流,例如文件流)的东西。因此,一旦我开始将 a 写入 cout,它就会阻塞直到语句结束,或者直到发出 endl 或对流的刷新。如果是这种情况,我可以保证这两行是分开的(但是,当然,我仍然不知道哪一行会先出现):
My results are: 20 21
My results are: 10 11