私は、微分方程式を扱うプログラムを並列化するための単純な OpenMP コードを作成するように依頼されたプロジェクトに取り組んでいます。また、コンパイラの最適化を行った場合と行わない場合のコードのパフォーマンスをテストするよう依頼されました。私は Sun CC コンパイラを使用しているので、最適化されたバージョンではオプションを使用しました
-xopenmp -fast
および最適化されていない場合
-xopenmp=noopt
当然のことながら、コンパイラの最適化をオンにした場合の実行時間は、他の場合よりもはるかに短かった. 驚いたことに、最適化されていないバージョンの方がスケーリングのパフォーマンスがはるかに優れています。ここで、パフォーマンスとは、スピードアップ係数を意味します。これは、M 個のプロセッサで実行されたプログラムの実行時間と、1 個のプロセッサで実行されたプログラムの実行時間の比率です。
これは、最適化されたバージョンがメモリにバインドされているのに対し、最適化されていないバージョンは CPU にバインドされているという事実に依存する可能性があることが示唆されました。「境界」がコードのスケーリング機能にどのように影響するかはわかりません。何か提案はありますか?