[英]output file using openmp for loop
我正在使用openmp并行化一个for循环,该循环计算一些值,并且我想将结果写入一个输出文件中(顺序无关紧要)。 我使用的代码的简化版本如下:
#pragma omp parallel for schedule(dynamic)
for(n=0; n<M; n++){
// calculate some parameters, e.g. a,b,c,d
// now write them in the output file which is already opened using the config.dat file
outfile << setprecision(8) << a << ", " << b << ", " << c << ", " << d << "\n";
}
outfile.close();
在大多数情况下,我会收到正确的输出文件,但有时我的输出文件中有断行,或者有些行似乎混淆了,我猜这是由于以下事实:多个内核尝试同时写入输出文件。 如果有人可以告诉我如何解决此问题,我将非常感谢。
正如其中一条注释中所写,您将需要一个互斥体。
但是,如果您要转储大量数据,请使用
#pragma omp critical
可能会对性能产生重大影响。
考虑一种解决方案,其中每个线程将X行存储在专用缓冲区中,并将它们全部转储到一批中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.