2
シーケンシャルコードが使用できない場合、単一のプロセッサで実行される並列コードの並列オーバーヘッドをどのように計算しますか?
PETScの線形ソルバーのパフォーマンスをプロファイルしています。私が理解しているように、 スピードアップ= シーケンシャルタイム並列時間。スピードアップ=順次時間並列時間。\text{speedup}=\frac{\text{Sequential Time}}{\text{Parallel Time}}. 1つのプロセッサで並列コードを実行すると、シーケンシャルパフォーマンスのプロキシとして使用できることを知っています。ただし、並列オーバーヘッドが発生するため、これは同等の順次コードの適切な尺度ではないと思います。多くの場合、シーケンシャルコードのパフォーマンスは、シングルプロセッサのパラレルパフォーマンスよりも高速です。同じソルバーを実装する数値ライブラリを検索できると思いますが、アルゴリズムが実際に同等である保証はありません。 私が理解しているように、 1つのプロセッサーでの並列パフォーマンス= 順次時間+ 並列オーバーヘッド1つのプロセッサーでの並列パフォーマンス=順次時間+パラレルオーバーヘッド\text{Parallel performance on one processor} = \text{Sequential Time} + \text{Parallel Overhead} したがって、並列オーバーヘッドを定量化する方法がある場合は、1つのプロセッサーの並列時間からそれを差し引いて、順次時間のより良い測定値を取得できます。 したがって、私の質問は次のようになります。 シーケンシャルコードが利用できない場合に、単一のプロセッサで実行される並列コードの並列オーバーヘッドを計算する方法はありますか? 本当に必要ですか?一般に、1つのプロセッサでの並列パフォーマンスは、順次パフォーマンスを概算するのに十分ですか?