繁体   English   中英

使用openmp for循环输出文件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM