0
私はopenmpを使っていくつかの値を計算するforループを並列化しています。結果を1つの出力ファイルに書きたい(順序は関係ありません)。私が使用しているコードの簡略版は次のとおりです。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();
私は右のOUTFILEを受けるが、時々私はOUTFILEの行が壊れているか、いくつかの行が複数のコアが中に書いてみることに起因している私は推測混同しているようだほとんどの時間を同時に出力ファイル。 誰かが私にこの問題を解決する方法を教えてもらえると本当に感謝しています。
'' outfile << ... 'を' #pragma omp critical 'で囲んでください –
何が起こっているのかの説明と修正方法については、[この回答](http://stackoverflow.com/a/33665044/5239503)を参照してください。それ。 – Gilles