コンピュータ サイエンスにおいて、並列アルゴリズムの分析とは、並列に実行されるアルゴリズムの計算の複雑さ、つまり、アルゴリズムを実行するために必要な時間、ストレージ、またはその他のリソースの量を調べるプロセスです。多くの点で、並列アルゴリズムの分析は順次アルゴリズムの分析に似ていますが、複数の連携実行スレッドの動作について推論する必要があるため、一般的にはより複雑です。並列分析の主な目的の 1 つは、プロセッサの数が変更されると、並列アルゴリズムのリソースの使用 (速度、スペースなど) がどのように変化するかを理解することです。
背景
いわゆる作業時間 (WT) (作業深度または作業スパンと呼ばれることもある) フレームワークは、もともと Shiloach と Vishkin [1]によって 並列アルゴリズムの概念化と記述のために導入されました。WT フレームワークでは、並列アルゴリズムは最初に並列ラウンドの観点から記述されます。各ラウンドでは、実行される操作が特徴付けられますが、いくつかの問題は抑制できます。たとえば、各ラウンドの操作数は明確である必要はなく、プロセッサについて言及する必要はなく、ジョブへのプロセッサの割り当てに役立つ可能性のある情報は考慮する必要はありません。次に、抑制された情報が提供されます。抑制された情報を含めることは、この記事の後半で説明する Brent [2]によるスケジューリング定理の証明によって導かれます。WT フレームワークは、並列アルゴリズムの初期記述を大幅に簡素化できる一方で、その初期記述で抑制された詳細を挿入することはそれほど難しくないことが多いため便利です。例えば、WTフレームワークは、並列アルゴリズムの本(並列ランダムアクセスマシンPRAMモデル用) [3] や[4] 、 および授業ノート[5]の基本的なプレゼンテーションフレームワークとして採用されました。以下の概要では、WTフレームワーク内で説明されていない場合でも、より一般的な並列アルゴリズムを分析するためにWTフレームワークをどのように使用できるかを説明しています。
定義
p 個のプロセッサを持つ マシンで計算が実行されるとします。T p は計算の開始から終了までの時間を表します。計算の実行時間の分析では、次の概念に重点が置かれます。
- p個のプロセッサによって実行される計算の作業量は、プロセッサが実行する基本操作の合計数です。[6]プロセッサの同期による通信オーバーヘッドを無視すると、これは単一のプロセッサで計算を実行するのに使用される時間(T 1と表記)に等しくなります。
- 深さまたはスパンは、データの依存関係により順番に実行する必要がある最長の一連の操作の長さです(深さは計算のクリティカルパス長とも呼ばれる。 [ 7]深さ/スパンを最小化することは並列アルゴリズムの設計において重要である。深さ/スパンによって実行時間が最短になるからである。[8]無限数のプロセッサを持つ理想的なマシンを使用して計算に費やされる時間T ∞として定義することもできる[9]
- 計算コストはpT pという量で表されます。これは、すべてのプロセッサが計算と待機に費やした合計時間を表します。[6]
作業、スパン、コストの定義から、いくつかの有用な結果が得られます。
- 作業法則。コストは常に作業以上である:pT p ≥ T 1。これはp個のプロセッサが最大でp個の操作を並列に実行できるという事実から導かれる。[6] [9]
- スパンの法則。有限個のプロセッサpは無限個のプロセッサよりも性能が優れているわけではなく、T p ≥ T ∞となる。[9]
これらの定義と法則を使用すると、次のようなパフォーマンスの尺度が与えられます。
- スピードアップとは、並列実行によって逐次実行に比べて得られる速度の向上です。S p = T 1 / T p 。p個のプロセッサに対してスピードアップがΩ( p )の場合( big O 記法を使用)、スピードアップは線形であり、作業法則によりT 1 / T p ≤ pとなるため、単純な計算モデルでは最適です(メモリ階層効果により、実際には超線形のスピードアップが発生する可能性があります)。T 1 / T p = pの状況は、完全な線形スピードアップと呼ばれます。 [9]線形のスピードアップを示すアルゴリズムは、スケーラブルであると言われています。 [6]この本では、多くの重要な並列アルゴリズムのスピードアップに関する解析式が紹介されています。 [10]
- 効率はプロセッサあたりの速度向上、S p / pである。[6]
- 並列性はT 1 / T ∞の比率で、任意の数のプロセッサで可能な最大のスピードアップを表します。スパンの法則により、並列性はスピードアップを制限します。p > T 1 / T ∞の場合、次のようになります。[9]
- スラックネスはT 1 / ( pT ∞ )である。スラックネスが1未満の場合、(スパンの法則により)p個のプロセッサでは完全な線形高速化は不可能であることを意味する。[9]
限られた数のプロセッサでの実行
並列アルゴリズムの分析は、通常、プロセッサの数が無制限であるという仮定の下で行われます。これは非現実的ですが、問題ではありません。なぜなら、N個のプロセッサで並列に実行できる計算は、各プロセッサに複数の作業単位を実行させることで、 p < N 個のプロセッサで実行できるからです。ブレントの法則と呼ばれる結果によると、このような「シミュレーション」は、次の式で制限される時間T pで実行できます。 [11]
あるいは、あまり正確ではないが、[6]
この法則の別の表現では、 T p の上限と下限は次のように 定められています。
- 。
スパン(深さ)T∞と作業T1の組み合わせが計算時間に妥当な境界を与えることを示している。[2]
参考文献
- ^ Shiloach, Yossi; Vishkin, Uzi (1982). 「O ( n 2 log n ) 並列最大フローアルゴリズム」. Journal of Algorithms . 3 (2): 128–146. doi :10.1016/0196-6774(82)90013-X.
- ^ ab Brent, Richard P. (1974-04-01). 「一般算術式の並列評価」Journal of the ACM . 21 (2): 201–206. CiteSeerX 10.1.1.100.9361 . doi :10.1145/321812.321815. ISSN 0004-5411. S2CID 16416106.
- ^ JaJa, Joseph (1992). 並列アルゴリズム入門. Addison-Wesley. ISBN 978-0-201-54856-3。
- ^ ケラー、ヨルグ;ケスラー、クリストフ・W.トラエフ、ジェスパー L. (2001)。実践的な PRAM プログラミング。ワイリー・インターサイエンス。ISBN 978-0-471-35351-5。
- ^ Vishkin, Uzi (2009). Thinking in Parallel: Some Basic Data-Parallel Algorithms and Techniques、104 ページ(PDF)。1992 年以来メリーランド大学カレッジパーク校、テルアビブ大学、テクニオンで教えられている並列アルゴリズムに関するコースの授業ノート。
- ^ abcdef カサノバ、アンリ;ルグラン、アルノー。ロバート、イヴ (2008)。並列アルゴリズム。 CRCプレス。 p. 10. CiteSeerX 10.1.1.466.8142。
- ^ Blelloch, Guy (1996). 「並列アルゴリズムのプログラミング」(PDF) . Communications of the ACM . 39 (3): 85–97. CiteSeerX 10.1.1.141.5884 . doi :10.1145/227234.227246. S2CID 12118850.
- ^ Michael McCool、James Reinders、Arch Robison (2013)。構造化並列プログラミング: 効率的な計算のためのパターン。Elsevier。pp.4–5。
- ^ abcdef コーメン、トーマス H. ;レイソン、チャールズ E. ;リベスト、ロナルド L. ;スタイン、クリフォード(2009) [1990]。アルゴリズム入門(第 3 版)。MIT プレスおよび McGraw-Hill。pp. 779–784。ISBN 0-262-03384-4。
- ^ Kurgalin, Sergei; Borzunov, Sergei (2020).離散数学ワークブック: Python を使用したコンパニオンマニュアル。Texts in Computer Science (第 2 版)。Cham、スイス: Springer Naturel。ISBN 978-3-030-42220-2。
- ^ Gustafson, John L. (2011). 「ブレントの定理」.並列コンピューティング百科事典. pp. 182–185. doi :10.1007/978-0-387-09766-4_80. ISBN 978-0-387-09765-7。
