回答:
多くのモデルが浮かんでいますが、最も顕著なものは次のとおりです。
先月DIMACSでこのトピックに関するワークショップがありました:アブストラクトを熟読するとより多くの指針が得られます。
回答のブログ投稿形式について事前に謝罪します。並列計算の世界の概要を簡単に説明することはできませんでした。
並列プログラミングモデルは、制御フローモデルとデータフローモデルの2つのカテゴリに大まかに分類できます。
制御フローモデルは、基本的にすべてのプログラム可能なコンピュータ今日、明示的な制御プログラムのコンテキスト内で並列動作させるためにしてみてください。取り組まれている根本的な問題は、そのような「フォンノイマンアーキテクチャ」が並列実行用ではなく、効率的な逐次計算用に設計されていることです。このようなコンテキストでの並列性は、基本モジュール(メモリ、制御、算術)の一部を複製することで得られます。
算術演算のみを複製するとSIMD命令が得られ、すべてのALUが同じプログラムカウンター(PC)を共有するため、異なるデータであるにもかかわらず、常に同じ演算を並列に実行します。
ALUとPCを複製しますが、制御ユニット内に命令シーケンサーを保持することにより、パイプライン並列性をもたらすOut of Order(OoO)の実行が可能になります。このカテゴリには、Very Long Instruction Word(VLWI)および分岐予測テクニックもあります。ただし、ソフトウェアレベルでこのカテゴリが表示されることはほとんどありません。
少し先に進むと、「コア」全体が複製されますが、メモリは共有されたままになります。これらは、タスク(またはスレッド)の並列性を提供する現在のマルチコアプロセッサです。このコンテキストでメモリを共有すると、非常に困難で微妙な並行性の問題が発生します。したがって、現在のマルチコアでの並列計算は、同期/同時実行の問題、パフォーマンスのバランス(同期なし)、および目的のセマンティクス(完全に同期された順次実行セマンティクス)を中心に完全に回転しています。この例は、PRAMまたは最近人気のあるfork / join(IntelTBB、Java.Utils.ConcurrencyなどのCilk ofshoots)です。)。CSPおよびアクターモデルは同時実行モデルですが、前述のように、共有メモリ環境では同時実行と並列処理がぼやけます。nb並列処理は、パフォーマンス、同時実行性が正しいセマンティクスを維持するためのものです。
メモリの複製も、MPIとそのilkでプログラムされたネットワークコンピューター、またはネットワークオンチッププロセッサ(クラウドプロセッサ、トランスピュータ、ティレラ)などの奇妙な非フォンノイマンアーキテクチャを提供します。UMAやNUMAなどのメモリモデルは、共有メモリの錯覚を維持しようとするものであり、ソフトウェアレベルまたはハードウェアレベルで存在できます。MPIはプログラムレベルの並列性を維持し、メッセージパッシングを介してのみ通信します。メッセージパッシングは、通信と同時実行性(トランスピュータ)のハードウェアレベルでも使用されます。
2番目のカテゴリはデータフローモデルです。これらは、Von Neumannの設計を避けて、並列計算を書き留めて実行する方法として、コンピューター時代の夜明けに設計されました。これらは、シーケンシャルパフォーマンスが指数関数的に上昇した後、80年代に流行しなくなりました(並列コンピューティングの場合)。ただし、Google MapReduce、MicrosoftのDryad、IntelのConcurrent Collectionsなどの多くの並列プログラミングシステムは、実際にはデータフロー計算モデルです。ある時点で、それらは計算をグラフとして表し、それを使用して実行をガイドします。
モデルの一部を指定することにより、データフローモデルのさまざまなカテゴリとセマンティクスを取得できます。グラフの形状を、DAG(CnC、Dryad)、ツリー(mapreduce)、有向グラフに制限するものは何ですか?厳密な同期セマンティクス(Lustre、リアクティブプログラミング]?再帰による静的スケジュール(StreaMIT)の許可を拒否しますか、または動的スケジューラー(Intel CnC)を使用して表現力を高めますか?着信エッジまたは発信エッジの数に制限はありますか?起動セマンティクスでは、着信データのサブセットが利用可能なときにノードを起動できますか?データのエッジストリーム(ストリーム処理)または単一データトークン(静的/動的単一割り当て)です。関連する作業については、Arvind、K。Kavi、j。などの人々のデータフロー研究作業を調べることから始めることができます。シャープ、W。アッカーマン、R。ジャガンナタンなど
編集:完全を期すため。並列リダクション駆動型とパターン駆動型のモデルもあります。削減戦略には、グラフ削減と文字列削減があります。Haskellは基本的にグラフ削減を使用します。これは、シーケンシャル共有メモリシステムで非常に効率的な戦略です。文字列の縮小は機能しますが、暗黙的に並列化されるのに適したプライベートメモリプロパティがあります。パターン駆動モデルは、並行プロローグなどの並列ロジック言語です。アクターモデルもパターン駆動モデルですが、プライベートメモリの特性を備えています。
PS。私は「モデル」という用語を広く使用し、正式な目的とプログラミング目的の両方の抽象的なマシンを対象としています。
メッセージパッシングアーキテクチャの場合、BSPに非常に似ていますが、実際のマシンで実際に得られるものに近いパフォーマンス分析を扱いやすく、扱いやすいモデルは、確かにCGMまたはCoarse Grained Multicomputerです。Frank Dehneによって提案されました。このコンテキストで開発されたアルゴリズムを提示する多くの興味深い論文があります。
CGMは、それぞれがO(n / p)ローカルメモリを持ち、入力nのサイズがpよりもはるかに大きい(桁違い)、つまりp≪nであるプロセッサを想定して、粗粒度アーキテクチャに適合します。したがって、このモデルは、現在のアーキテクチャで他のモデルよりもはるかに優れたマッピングを行います。広く研究されています。モデルは次の仮定に基づいています:(i)アルゴリズムは、ローカル計算の1フェーズと中間バリア同期を使用したプロセッサ間通信の1フェーズで構成される、いわゆるスーパーステップを実行します。(ii)すべてのpプロセッサは、 O(n / p)ローカルメモリ、(iii)各スーパーステップで、プロセッサは最大でO(n / p)要素を送受信でき、(iv)プロセッサ間の通信ネットワークは任意です。このモデルでは、アルゴリズムは計算時間と通信ラウンドの回数によって評価されます。モデルは単純ですが、それにもかかわらず、並列アルゴリズムの実際のパフォーマンスの合理的な予測を提供します。実際、CGMの並列アルゴリズムは、通常、それらを実装およびベンチマークするときに実験的に決定された実際の時間に非常に近い理論的な複雑さの分析を行います。
Parallel External Memory(PEM)は、PRAMスタイルの共有メモリマシンと外部メモリモデルの自然な組み合わせです。プライベートキャッシュの意味に焦点を当てています。
私が知っていることから、今日、BSPおよびLogPモデルは分散アルゴリズムに使用されています。また、GPUコンピューティング以来、PRAMは再び一般的になりましたが、分析にメモリ階層を含める必要があります。PRAMをうまく補完するUPMHモデル(Uniform Parallelメモリ階層)を確認できます。
B.アルパーン、L。カーター、E。フェイグ、T。セルカー。計算の統一メモリ階層モデル。Algorithmica、12:72–109、1994。10.1007 / BF01185206。
ボーエン・アルパーン、ラリー・カーター、ジャンヌ・フェランテ。メモリー階層としての並列コンピューターのモデリング。In Proc。超並列コンピュータのプログラミングモデル、116〜123ページ。IEEEComputer Society Press、1993年。
また、GPUコンピューティングについては、理論的なコンピューティングモデルの提案があります。Kモデル:
ガブリエレ・カパンニーニ、ファブリツィオ・シルヴェストリ、ラニエーリ・バラグリア。Kモデル:ストリームプロセッサの新しい計算モデル。2010年のIEEE 12th International Conference on High Performance Computing and Communications、HPCC '10、239-246ページ、ワシントンDC、米国、2010年の議事録。IEEEComputer Society。
最後に、並列コンピューターとしてモデル化されたセルオートマトン(CA)を見てきました。個人的には、これは非常に興味深い研究トピックだと思います。将来のプロセッサを知っている人は、計算の小さなスペースのように、この方法で作られるでしょう。私はこれに関する確かな参照を持っていません、あなたはウェブで見ることができます。
純粋に機能的なプログラムにより、独立した式の並列実行が可能になります。したがって、それらを計算の並列モデルとして数えます。
私はBader-Jajaアプローチを好みます(セクション2.1を参照)。複雑さをメッセージパッシングの問題としてモデル化します。送信される各メッセージには、通信を開始するための待ち時間の変数と帯域幅の変数の両方があります。
特にクラウドコンピューティングについて言及しています。このエリアでは、わずか数年の激しい技術革新の中にあったアマゾン弾性コンピュートクラウド、Googleのアプリエンジン&様々なツールやそれに関連する概念の並列処理「モデル」。
特別なオープンソースツールには、GoogleのMapreduce、Apache Hadoop、およびNoSQLデータベースが含まれます。これらは、並列化アルゴリズムの「ベストプラクティス」および「設計パターン」において新しく強力で広く採用された標準として登場しています。また、memcacheDはインメモリ分散データベースとしてますます使用されています。この例は、最近の論文[1]で説明されているFacebookで使用されています。
[1] Berezecki et alによる多くのコアキーバリューストア
これに関する別の角度。確かに、これは一部の人によっては多少不明瞭またはフリンジと見なされる可能性がありますが、一般的な方法で、並列化にある程度自然に適していると主張される確率的アルゴリズムの並列化に関する作業がいくつかあります。
たとえば、ワークステーションのクラスターでの並列確率計算を参照してください Radenski、Vann、Norris:
確率的アルゴリズムは、難治性の問題を解決するための計算集約的な近似手法です。確率的アルゴリズムは、通信と同期をほとんど必要としないため、クラスター計算の優れた候補です。確率的クラスター計算の一般的なアルゴリズムとして、共通の並列制御構造を指定することができます 。 そのような一般的な並列アルゴリズムは、ドメイン固有の逐次アルゴリズムと一緒に接着して、さまざまな難問の近似並列解を導き出すことができます。この論文では、ワークステーションのクラスタでの確率的計算のための一般的なアルゴリズムを提案します。この汎用アルゴリズムを使用して、ナップザック問題と巡回セールスマン問題という2つの離散最適化問題の特定の並列アルゴリズムを導き出します。
明確でない場合、確率的計算および全体的な変換と呼ばれる「一般的なアルゴリズムとしての共通の並列制御構造」は「モデル」です。
確率的計算は厳密に古典的な計算やチューリング完全ではないと主張できます。したがって、特に並列コンテキストでも、古典と確率計算を結び付ける作業がいくつかあることに注意してください。
Raoによる確率的並列プログラムについての推論:
アルゴリズムの設計と分析でのランダム化の使用は、困難な問題に対する単純で効率的なアルゴリズムを約束します。単純さ、効率、および可解性の向上により、アルゴリズムの絶対的正確性という従来の概念と、より定量的な概念、つまり、0〜1の確率の正確性とのトレードオフが生じます。ランダム化の考え方により、確率的並列プログラムについての推論はさらに曲がりくねって困難になります。この論文では、決定論的または確率1で保持する確率的並列プログラムの特性を指定および導出する問題に対処します。
もちろん、QMコンピューティングは確率的コンピューティングと非常によく似ています(これを強調する素晴らしい参考文献は、Fortnowによる1つの複雑さの理論家の量子コンピューティングの見方です)。
これは一部の人々からは議論の余地があると考えられており、この角度の支持者でさえ研究の初期段階でそれを認める必要がありますが、基本的に量子計算は並列性と並列計算に多くのつながりがあるようです。参照は現在ばらばらになっていますが、熱心な研究者は新しいテーマを見ることができます。
多分、最良の接続は、一般的なほとんどのNP完全問題の高速化に使用できるという意味で、より一般的であることが最近示されたGrovers検索アルゴリズムとの接続です[5]。Groversアルゴリズムは、並列データベース検索アルゴリズムと強力な類似性/接続を持っているようです。最良の古典的シリアルアルゴリズムは同じ性能を満たすことはできませんが、少なくとも1つの機関は、検索のためのQMアプローチが実際に並列化された古典的アルゴリズムをアウトパフォームしないと主張しています。
さらなる証拠は、量子検索で並列性を明示的に調べるスキームです[2]。また、並列/分散処理に基づいた量子シミュレータが提案されています[3] [4]。スキームがうまく適合し、効率的で扱いやすいシミュレーションにつながるため(30キュビットがref [3]でシミュレートされます)、この変換確かに単なる偶然ではなく、パラレルクラシックコンピューティングとQMコンピューティングの間のより深い橋渡しを示していますが、おそらくこれまでのところ明らかにされていません。
[1] 量子検索は実用的ですか?ヴィアモンテス他
[2] Wu / Dian による並列ユニタリ識別法による正確な量子探索
[3] 量子コンピューティング用の汎用並列シミュレータ、丹羽、松本、今井。
[4] Beals et al 2012による効率的な分散量子コンピューティング
[5] 量子検索でNP完全問題を解決するFurer 2008