VTune を使用してコードの同時実行性をチェックしています。出力のスクリーンショットを次に示します。スレッドが 1 つの初期期間があり、その後約 0.3 秒の集中的なマルチスレッド作業 (茶色のスパイク) と、約 3 秒のアイドル状態 (茶色の「CPU」はなく、緑色の「実行中」のみ) があることがわかります。
スレッドがグリーンアイドル状態になる原因は何ですか? 私のコードは、集中的な計算をすべて実行した後に返されるはずです。さらに 3 秒待つ必要はありません...
VTune を使用してコードの同時実行性をチェックしています。出力のスクリーンショットを次に示します。スレッドが 1 つの初期期間があり、その後約 0.3 秒の集中的なマルチスレッド作業 (茶色のスパイク) と、約 3 秒のアイドル状態 (茶色の「CPU」はなく、緑色の「実行中」のみ) があることがわかります。
スレッドがグリーンアイドル状態になる原因は何ですか? 私のコードは、集中的な計算をすべて実行した後に返されるはずです。さらに 3 秒待つ必要はありません...
プロファイラーなしでプログラムを実行するにはどれくらいの時間がかかりますか? 速いですか?VTune のタイムライン ビューを見ると、メイン スレッドが pthread_exit() を使用して main() 関数を終了している可能性があるため、OpenMP ワーカー スレッドが存続し続け、タイムアウトが発生してワーカー スレッドが終了を決定するまで、プログラムが終了しないようにします。シャットダウンします。ここで pthread_exit に関する議論を参照してください。