問題のプログラムは、単一の入力データ ファイルと単一の出力データ ファイルで動作します。入力からデータ ユニットを取得し、データのいくつかの統計的特性を計算し、特性を出力に入れます。
プログラムが CPU バウンドであることが発見されました。CPU 使用率は常に 99% であり、読み取りと書き込みよりも計算に時間がかかります。ハードウェアに 32 個の CPU が搭載されているため、OpenMP を使用してプログラムを並列処理版に変換することにしました。ただし、複数の並列スレッドが単一の出力に書き込みたい場合があるため、書き込み競合状態につながる可能性があることは明らかです。
そのような種類のプログラムを OpenMP 対応および OpenMp セーフにするために必要な手順は何ですか? コードを変更せずに OpenMP* プラグマだけで簡単に実現できますか? または、以前に実装されたロック メカニズムが必要ですか?