私は新しい OpenMP ユーザーであり、Visual Studio 2010 (Windows 7 Ultimate x64) で 13.5 倍高速 (14 スレッド) で実行されるコードを並列化しました。CentOS 5.8 x64 (gcc 4.1.2) または SUSE x64 (gcc 4.5.1) でのパフォーマンスは zip です。複数のスレッドが使用されていることを確認しました。オンにする必要があるシステム フラグまたはオプションはありますか? はい、OMP_NUM_THREADS は環境内にあり、8 に設定されています。CentOS マシンはデュアル xenon プロセッサです。
2 に答える
1
8 コアの場合、使用するスレッドの数に関係なく、13.5 倍のスピードアップはほとんど不可能に思えます。
あなたの測定は間違っていると思います。どのようにパフォーマンスを測定しますか? Unix では、コマンド「time ./myprogram」は 3 つの異なる時刻を返します。「リアルタイム」時間は関心のある時間であり、「ユーザー」時間は CPU 時間 (各コアに費やされた時間の合計) です。Windowsではわかりませんが、「ユーザー」時間は「CPU」時間の13.5倍であり、スピードアップについては何も言っていませんが、14個のスレッドすべてが使用されていると思います。
シングルスレッドプログラムとopenmpプログラムの「リアルタイム」時間を比較する必要があります。
于 2012-11-03T16:41:19.293 に答える
0
正しいコンパイラ/リンカー スイッチを使用しました-fopenmp -lgomp
か? 最初に OpenMP ドキュメントの簡単な例を試して、セットアップが正しいことを証明してください。
于 2012-11-02T23:46:21.693 に答える