並列化、特に問題のパターンとアルゴリズムに関する入門ノート


10

コンピューターサイエンスの基本的なクラスの並列アナログのように、並列プログラミングの優れた紹介を提供するオンラインで利用可能な講義ノートまたはその他のリソースを探しています。

私の焦点は次のとおりです。分割統治、貪欲アルゴリズム、動的プログラミングなど、つまり逐次アルゴリズムの基本パターン(および問題)について話すことができますが、並列アルゴリズムのアプローチを分類するための適切な言語がありません。

たとえば、次の各問題への明白な並列アプローチには定性的振る舞いが異なるという事実を表すために、適切な用語を取得したいと思います。

  1. 整数の配列をすべてゼロに設定します(完全にスケーリングします)。
  2. 整数の配列を合計する(使用するスレッドが多いほど、オーバーヘッドが大きくなります)。
  3. 配列を指定して、各エントリと他のエントリの積をリストします(標準のdouble-for-loopを並列化すると、実行時間はプロセッサ数のsqrtにスケーリングされます)。

共有メモリ環境で十分であり、プロセス間通信は私にはそれほど関係ありません(実際、私はそれをまったく回避するアルゴリズムに興味があります)。さらに、技術的な側面は私には無視できます。


この文章を再構成できますか:「たとえば、次の問題への明白な並行アプローチが異なる質的行動をとる理由を言語で知りたいのです」
Gopi

できました。これがより正確であることを願っています。
shuhalo

回答:


6

並列プログラミングの入門書(オンライン資料については知りません)については、Casanova、Legrand、およびRobertの並列アルゴリズムを使って学習しています。これは、理論的な並列アルゴリズムを始めるのに非常に役立ちます。

さらに、SPAA'11では、並列アルゴリズムと分散コンピューティングの学生が何を知っておくべきか、何を教えるべきかについての議論がありました。この並列および分散コンピューティングに関するカリキュラムイニシアチブは、コースではなく、学部生のコースでカバーする必要のあるさまざまなトピックのリストを見つけるのに役立ちます。それから、すべての特定のトピックに関するドキュメントを見つける方が簡単だと思います。


1
「言語」という用語は自然言語を指し、プログラミング言語などは指しません。ちょうど数学が言語であるように、たとえばカテゴリー理論やグループ理論は、特定の構造、関係、事実に「言語」を提供すると言われています。どっちにしても、ありがとうね。
shuhalo

確かに、私の悪い:)。それからあなたが持っていた3つの質問については、私がリンクした本を非常に理論的であると本当にお勧めします。彼らは、さまざまな種類の並列アーキテクチャに関するあらゆる種類の並列アルゴリズムと手法を研究しています。次に、3つの質問に答える可能性があるのは、ユニフォームループの部分です。
Gopi、2011年


NSF / IEEE-TCPPカリキュラムイニシアチブの+1ですが、OpenMPとMPIはここではあまり関係がないため、削除することをお勧めします。
Jukka Suomela、2011年

確かに、@ Martinのコメントの後に削除するのを忘れていました。ありがとう。
Gopi、2011年

7

細かいところまで掘り下げたくない場合は、Mattson、Sanders、Massingillによる書籍 『並列プログラミングのパターン』で、並列化設計パターンの非常に優れた紹介が提供されています。

並列化に対する一般的で広く適用可能なソリューション、さらにOpenMPとMPIの両方の簡単な紹介があります。この本は、設計パターンと並行性を紹介することから始まります。次に、同時実行性を活用する方法、アルゴリズムを構造化する方法、および同期と通信を考​​慮してアルゴリズムを実際に実装する方法を説明します。

繰り返しますが、これは並列アルゴリズムの教科書ではありません。これは、並列ソフトウェアエンジニアリングに厳密に関連する資料を、実用的および理論的な焦点の両方で提示するのに非常に適しています。したがって、それは完全にあなたのニーズに合うはずです。


1

MPI_RUBY ...最新の安定したビルドを見つける必要があります。リストに並列プレフィックス(スキャン)を追加することをお勧めします。私は並列接頭辞を教えて、すべてのペアの問題でより良いキャッシュ効率を得るために空間充填曲線を使用する方法を彼らに示します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.