シーケンシャルコードが使用できない場合、単一のプロセッサで実行される並列コードの並列オーバーヘッドをどのように計算しますか?


8

PETScの線形ソルバーのパフォーマンスをプロファイルしています。私が理解しているように、

スピードアップ=順次時間並列時間

1つのプロセッサで並列コードを実行すると、シーケンシャルパフォーマンスのプロキシとして使用できることを知っています。ただし、並列オーバーヘッドが発生するため、これは同等の順次コードの適切な尺度ではないと思います。多くの場合、シーケンシャルコードのパフォーマンスは、シングルプロセッサのパラレルパフォーマンスよりも高速です。同じソルバーを実装する数値ライブラリを検索できると思いますが、アルゴリズムが実際に同等である保証はありません。

私が理解しているように、

1つのプロセッサーでの並列パフォーマンス=順次時間+パラレルオーバーヘッド

したがって、並列オーバーヘッドを定量化する方法がある場合は、1つのプロセッサーの並列時間からそれを差し引いて、順次時間のより良い測定値を取得できます。

したがって、私の質問は次のようになります。

  1. シーケンシャルコードが利用できない場合に、単一のプロセッサで実行される並列コードの並列オーバーヘッドを計算する方法はありますか?
  2. 本当に必要ですか?一般に、1つのプロセッサでの並列パフォーマンスは、順次パフォーマンスを概算するのに十分ですか?

スピードアップは相対的な尺度であり、絶対的なパフォーマンスについてはあまり言いません。スピードアップは、同じ有用な作業を実行する純粋な順次実装、または並列実装(指定したオーバーヘッド)のどちらかで測定できます。いずれの場合も、アプリケーションの命令セットでの並列オーバーヘッドおよび/または考えられる異なる実行パスのため、スピードアップはかなり異なる可能性があります。なぜ並列オーバーヘッドを見積もるのですか?
Allan P. Engsig-Karup 2012

@ AllanP.Engsig-Karup:私の主な動機は、私が持っているすべてが並列コードである場合に、逐次コードの合理的な見積もりを取得する方法を知っているだけだと思います。
ポール

1
@Paul:後で実際の答えを出そうとしますが、スケーラブルなアルゴリズムを取得するために、多くの場合トレードオフがあります。スピードアップは、同じ入力が与えられた場合に同じ出力(モジュロ小さな摂動)を生成する最良のシリアル実装に対して実際に測定する必要があります。
Jack Poulson、2012年

@ジャック:同意します。また、私の意見では、絶対的なタイミングも与えられない限り、相対的な高速化はあまり役に立ちません。
Allan P. Engsig-Karup、2012

1
@ジャック:同意しません。最良のシリアル実装はあなたのものではないかもしれません。コードの高速化は、おそらく独自のシリアルパフォーマンスに対して測定する必要があります。次に、実装を他の実装に対して相対的および絶対的な観点から評価する必要があります。分子で無関係なシリアル実装を使用すると、誤解を招く可能性があります。
Bill Barth

回答:


5

スピードアップの測定対象を言っている限り、並列バージョンのコードが1つのプロセッサーで実行されるのにかかる時間を使用して、誰もあなたを失敗させることはないと思います。いずれかのケースの合計時間(ユニプロセッサ時間など)も指定すると、他の人があなたの実装を他の文献や自分の実装と比較できるようになります。

一部の問題では、メモリまたは時間の制約が与えられている場合、ユニプロセッサの結果でさえ計算できません。それを考えると、ほとんどの人はスピードアップの結果を見るとき、物事は利用可能なプロセッサーの最小数に関連して計算され、ユニプロセッサーデータは1つのプロセッサーで実行される並列コードであることを理解しています。

厳格な規則はありませんが、自分が何をしているのかを明確にし、読者が関心を持つと思われる他の数量を計算するための十分な情報を読者に提供する必要があります。


0

私はPETScの内部については詳しくありませんが(ここにある他のPETScエキスパートとは異なり)、ジョブを単一のプロセスとして実行している限り(つまり、パーティション化を行わない限り)、PETScで並列オーバーヘッドが発生しないはずです。

PETScはMPIなしでインストールすることもできます。つまり、1つのコアで実行しているときに実際にMPI呼び出しが行われるとすれば、疑わしいと思われる小さなMPIオーバーヘッドも割り引くことができます。

これは明らかに、並列オーバーヘッドがほとんど通信であり、アルゴリズムではない場合に当てはまります。


これはpetscには当てはまるかもしれませんが、一般的な並列コードにはおそらく当てはまりません。
ポール
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.