計算のための現在の並列モデル


30

1980年代には、両方を引き起こしたPRAMBSPの並列計算モデル。両方のモデルの全盛期は、80年代後半から90年代前半の間にあったようです。

これらの分野は、並列アルゴリズムの研究に関してまだ活発ですか?並列計算用のより洗練された新しいモデルはありますか?一般モデルはまだ流行していますか、それとも研究者はGPGPUやクラウドベースの計算を専門にしようとしていますか?

回答:


19

多くのモデルが浮かんでいますが、最も顕著なものは次のとおりです。

  1. MUDのMapReduceのMapReduceフレームワークを撮像について主であるが、より一般的には、計算の並列分散モデルとして見ることができるモデル
  2. 提案されているさまざまなマルチコアモデル(ただし、まだ標準ではありません)

先月DIMACSでこのトピックに関するワークショップがありました:アブストラクトを熟読するとより多くの指針が得られます。


DIMACワークショップは素晴らしいです!ありがとうございました。
ニコラスマンクーソ

3
2009年に以前のワークショップumiacs.umd.edu/conferences/tmc2009があり、最近のDIMACのワークショップよりもさらに研ぎ澄まされているように思えました。レスリーヴァリアントはMulti-BSPモデルを紹介し(今年のワークショップで詳しく説明しました)、IntelのPhil Gibbonsは挑発的なトーク理論を発表しました見る価値のあるメニーコアへの切り替えで眠ります。私にとってDIMACワークショップはMapReduceにあまりにも焦点を当てていたので、GoogleはWebインデックスの作成にこれを使用しなくなりました。
アンドラスサラモン

それは本当だ。以前のものを忘れていました。
スレシュヴェンカト

22

回答のブログ投稿形式について事前に謝罪します。並列計算の世界の概要を簡単に説明することはできませんでした。

並列プログラミングモデルは、制御フローモデルとデータフローモデルの2つのカテゴリに大まかに分類できます。

制御フローモデルは、基本的にすべてのプログラム可能なコンピュータ今日、明示的な制御プログラムのコンテキスト内で並列動作させるためにしてみてください。取り組まれている根本的な問題は、そのような「フォンノイマンアーキテクチャ」が並列実行用ではなく、効率的な逐次計算用に設計されていることです。このようなコンテキストでの並列性は、基本モジュール(メモリ、制御、算術)の一部を複製することで得られます。

算術演算のみを複製するとSIMD命令が得られ、すべてのALUが同じプログラムカウンター(PC)を共有するため、異なるデータであるにもかかわらず、常に同じ演算を並列に実行します。

ALUとPCを複製しますが、制御ユニット内に命令シーケンサーを保持することにより、パイプライン並列性をもたらすOut of Order(OoO)の実行が可能になります。このカテゴリには、Very Long Instruction Word(VLWI)および分岐予測テクニックもあります。ただし、ソフトウェアレベルでこのカテゴリが表示されることはほとんどありません。

少し先に進むと、「コア」全体が複製されますが、メモリは共有されたままになります。これらは、タスク(またはスレッド)の並列性を提供する現在のマルチコアプロセッサです。このコンテキストでメモリを共有する非常に困難で微妙な並行性の問題が発生します。したがって、現在のマルチコアでの並列計算は、同期/同時実行の問題、パフォーマンスのバランス(同期なし)、および目的のセマンティクス(完全に同期された順次実行セマンティクス)を中心に完全に回転しています。この例は、PRAMまたは最近人気のあるfork / join(IntelTBBJava.Utils.ConcurrencyなどのCilk ofshootsです。)。CSPおよびアクターモデルは同時実行モデルですが、前述のように、共有メモリ環境では同時実行と並列処理がぼやけます。nb並列処理は、パフォーマンス、同時実行性が正しいセマンティクスを維持するためのものです。

メモリの複製も、MPIとそのilkでプログラムされたネットワークコンピューター、またはネットワークオンチッププロセッサ(クラウドプロセッサ、トランスピュータ、ティレラ)などの奇妙な非フォンノイマンアーキテクチャを提供します。UMANUMAなどのメモリモデルは、共有メモリの錯覚を維持しようとするものであり、ソフトウェアレベルまたはハードウェアレベルで存在できます。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。私は「モデル」という用語を広く使用し、正式な目的とプログラミング目的の両方の抽象的なマシンを対象としています。


mapreduceがツリーを形成する方法がわかりません。説明してもらえますか?
リコジェイコブ

@Riko Jacob、「+」を(1 2 3 4)にマッピングするとしましょう。概念的には、各ノードに「+」、各番号を葉としてアプリケーションツリーを作成します。reduce(haskelの場合はfold)は、各ノードをその子からのデータで折りたたみます。
牛肉

K22

グラフ自体の作​​成を考慮しない場合(たとえば、a / bをキー/値のペアにマッピングする場合)、2つのツリーで縮約を行いますが、少しのれんがあります:) k接続グラフまたはラティスグラフあなたが言ったように。単純なツリーよりも少し一般的であることは正しいです。より一般的なDAGデータフロー構造を区別しようとしていました。
牛肉

8

メッセージパッシングアーキテクチャの場合、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の並列アルゴリズムは、通常、それらを実装およびベンチマークするときに実験的に決定された実際の時間に非常に近い理論的な複雑さの分析を行います。



4

私が知っていることから、今日、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)を見てきました。個人的には、これは非常に興味深い研究トピックだと思います。将来のプロセッサを知っている人は、計算の小さなスペースのように、この方法で作られるでしょう。私はこれに関する確かな参照を持っていません、あなたはウェブで見ることができます。


3

純粋に機能的なプログラムにより、独立した式の並列実行が可能になります。したがって、それらを計算の並列モデルとして数えます。


関数型プログラミングに関連付けられた特定のコストモデルはないので、これは質問に答えません。参照してくださいcstheory.stackexchange.com/questions/376/...
チャールズ・スチュワート

2
このようなラムダ計算に基づく言語の評価メカニズムは縮小であり、実際のハードウェアへの直接のマッピングはありません。これが、Haskellが「par」のような明示的な並列構造を導入する必要がある理由です。参照:csg.csail.mit.edu/projects/languages/ph.shtml
牛肉

3

私はBader-Jajaアプローチを好みます(セクション2.1を参照)。複雑さをメッセージパッシングの問題としてモデル化します。送信される各メッセージには、通信を開始するための待ち時間の変数と帯域幅の変数の両方があります。

tあなたはmptあなたはmp


-3

特にクラウドコンピューティングについて言及しています。このエリアでは、わずか数年の激しい技術革新の中にあったアマゾン弾性コンピュートクラウド、Googleのアプリエンジン&様々なツールやそれに関連する概念の並列処理「モデル」。

特別なオープンソースツールには、GoogleのMapreduce、Apache Hadoop、およびNoSQLデータベースが含まれます。これらは、並列化アルゴリズムの「ベストプラクティス」および「設計パターン」において新しく強力で広く採用された標準として登場しています。また、memcacheDはインメモリ分散データベースとしてますます使用されています。この例は、最近の論文[1]で説明されているFacebookで使用されています。

[1] Berezecki et alによる多くのコアキーバリューストア


再び。モデルまたは並列計算をお願いします。ツールではありません。MapReduceはそのようなモデルの1つです。ただし、HadoopとNoSQLは違います。Hadoopは、MapReduceのJavaベースの具体化です。NoSQLは、私が知ることができるリラックスしたキーストアのモデルです。
ニコラスマンクーソ

MapReduceはツールとして始まり、広範な使用/採用を通じてモデルに移行しました。他の人と同じ。HadoopはMapReduceと同一ではありませんが、おそらく類似しています。はい、私はMapReduceを含むSureshのトップ投票の答えに捨てられたと思います...人々はこのサイトの実際のソフトウェアパッケージをあまり気にしない、または議論することを好まないようです...どれほど広く使われていても。MapReduceが行ったように、後の固体理論を刺激/
相互受入

2
ポイントは、あなたが質問に答えていないということです。ここでの方針は、質問に接線方向に関連する提案は受け入れられない回答であるということです。このポリシーが気に入らない場合は、参加しないことを選択できます。現実世界の並列システムをモデル化する方法について実際のアイデアがあれば、それはもっと話題になります(質問に対する答えはまだ尋ねられませんが)
Sasho Nikolov

-3

これに関する別の角度。確かに、これは一部の人によっては多少不明瞭またはフリンジと見なされる可能性がありますが、一般的な方法で、並列化にある程度自然に適していると主張される確率的アルゴリズムの並列化に関する作業がいくつかあります。

たとえば、ワークステーションのクラスターでの並列確率計算を参照してください Radenski、Vann、Norris:

確率的アルゴリズムは、難治性の問題を解決するための計算集約的な近似手法です。確率的アルゴリズムは、通信と同期をほとんど必要としないため、クラスター計算の優れた候補です。確率的クラスター計算の一般的なアルゴリズムとして、共通の並列制御構造を指定することができます そのような一般的な並列アルゴリズムは、ドメイン固有の逐次アルゴリズムと一緒に接着して、さまざまな難問の近似並列解を導き出すことができます。この論文では、ワークステーションのクラスタでの確率的計算のための一般的なアルゴリズムを提案します。この汎用アルゴリズムを使用して、ナップザック問題と巡回セールスマン問題という2つの離散最適化問題の特定の並列アルゴリズムを導き出します。

明確でない場合、確率的計算および全体的な変換と呼ばれる「一般的なアルゴリズムとしての共通の並列制御構造」は「モデル」です。

確率的計算は厳密に古典的な計算やチューリング完全ではないと主張できます。したがって、特に並列コンテキストでも、古典と確率計算を結び付ける作業がいくつかあることに注意してください。

Raoによる確率的並列プログラムについての推論

アルゴリズムの設計と分析でのランダム化の使用は、困難な問題に対する単純で効率的なアルゴリズムを約束します。単純さ、効率、および可解性の向上により、アルゴリズムの絶対的正確性という従来の概念と、より定量的な概念、つまり、0〜1の確率の正確性とのトレードオフが生じます。ランダム化の考え方により、確率的並列プログラムについての推論はさらに曲がりくねって困難になります。この論文では、決定論的または確率1で保持する確率的並列プログラムの特性を指定および導出する問題に対処します。

もちろん、QMコンピューティングは確率的コンピューティングと非常によく似ています(これを強調する素晴らしい参考文献は、Fortnowによる1つの複雑さの理論家の量子コンピューティングの見方です)。


-6

これは一部の人々からは議論の余地があると考えられており、この角度の支持者でさえ研究の初期段階でそれを認める必要がありますが、基本的に量子計算は並列性と並列計算に多くのつながりがあるようです。参照は現在ばらばらになっていますが、熱心な研究者は新しいテーマを見ることができます。

多分、最良の接続は、一般的なほとんどの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


@vnz、これはせいぜいランダムな概念のランダムな寄せ集めのようです。ここで「並列量子」をグーグルで検索して結果をリストすることは、私やこれを読んでいる他の人にとっては役に立ちません。コミュニティは、評判ポイントのために狂ったダッシュを作るよりも、あなたが快適で知識があると感じる答えに実際に応答する方が良いと思います。量子計算を並列検索と考えるのは非構造的であり、おそらく不誠実です。量子計算では、説明を使用するために、並列ではなく、確率的検索との「強力な類似/接続」が必要です。
ニコラスマンクーソ

私は教室でどのような教義が教えられているのか知りませんが、もし誰かが実際にQMのこれまで明らかにされていない並列古典的計算の対応に妥当性がない理由を示す単なる基準ではなく基準を持っているなら...私は読むでしょうそれ。QMコンピューティングは、正確な答えを返します。そうでなければ、実際の計算システムではありません。.....QMコンピューティングは、ある意味で並列古典コンピューティングと同等でなければならないことを示すために、スケッチ以外の方法があります教科書に載っていないので、間違っているに違いない!
-vzn

ここには、量子コンピューティングに関する完全な無料コースがあります:coursera.orgは、あなたのために物事を明確にするかもしれません。
ニコラスマンクーソ

ps "hodgepodge"の場合...実際に
REFSを読ん

1
(6.)あなたの参考文献[5] Groverのアルゴリズムを拡張する方法を説明しますが、これも量子計算で求める並列性に対処するものではありません。要約すると、量子計算と並列計算の間には関係があるというあなたの解釈は、QMの多世界解釈に由来するようです。あいまいではありませんが、議論の余地もありませんし、量子計算を「並列計算」として生産的に説明することもできません。ただし、これらの計算が表示されない場合を除きます。彼らの存在。
ニールドボードラップ14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.