2012-07-28 24 views
18

Hereは、Rob Pikeのスライドです。私がこれを通過するたびに、私は馬鹿げているように感じる。私はそれの要点を理解することができません。並行性は、複雑な問題をより小さなコンポーネントに分解することをよく理解しています。何かを小さな部分に正しく分割できない場合は、並行処理を使用して解決することは難しいです。並行処理は並列処理ではありませんか?

しかし、同時性を達成すると、並列性を得る方法の詳細はあまり詳しくはありません。レッスンのスライド(num 52)で、彼は並行性 - 「Maybe Even Parallel」と言います。しかし、問題は - です。同時実行性が正しくかつ効率的に並列性につながる時期と方法は?

私の推測では、開発者は並行性のレベルで動作する必要があり、並列性は言語/ VMの関心事(gomaxprocs?)でなければなりません。正確な並行性のみに関係する、より小さな単位へのインテリジェントな分解に注意してください。並列性は "システム"に注意を払うでしょう。

光を当ててください。

+0

ここでは多少の議論の余地があります。私はProgrammers.SE改造者にこれがうまくいくかどうか尋ねました。ありがとう。 – Kev

答えて

6

あなたは心の中でアルゴリズムの抽象的な形を持っている場合はロブ・パイクが

を意味し何を、あなたは、あなたがメッセージパッシングや共有メモリまたは多分ハイブリッドでそれを実装するかどうか選択する必要があります。また、メモリアクセスの種類(NUMA、UMAなど)と使用されるトポロジ(Hypercube、Torus、Ring、Mesh、Treeなど)も考慮する必要があります。

これは、何か、多分単純なものであっても、パラレルなやり方で(例えば並列に)行われます。

トポロジを変更すると(特にそのメリットがあります)、多くの作業があります。

あなたは並列コード(単純か複雑か)を書いて、VMまたはコンパイラが最良の方法であると思われるものを選択します。でも順番に実行します!

重要EDIT(例では、.NETのためのタスク並列ライブラリになります):

私はシステムで実行する独立したプログラム間でプログラム/アルゴリズムでは、並行性について話しておりませんことを言及すべきです。

あなたはうまく並行処理が小さなコンポーネントに複雑な問題の分解であることが理解だ

と言いました。あなたは正しく小さな部分に何かを分割することができない場合は、同時実行

を使用してそれを解決するのは難しいが、それは、これらの小さな部品が完了するまでに順次に互いに依存し、その場合でもありB/C 間違っています小さなコンポーネントに分割すると、並行性/並列性を実現するわけではありません。並列・分散アルゴリズムのすべての私のクラスで

(両方BSとMSで)私たちは、「我々が得られ、今のは、並列処理を取得する方法を見てみましょう同時性」について話したことはありません。あなたが記述とアルゴリズムに並行性という言葉を使用すると、あなたは並列性を暗示し、逆も同様です。

文献では、分散と並列の間に細い線があります。

アルゴリズムの観点から、並行性、並列性、および分散性を使用することができ、同じアイデアを得ることができます。

実装の観点からは、「並列処理」と言えば、通常、ローカルコンピュータまたはクラスタ(共有メモリ通信)上で動作するプログラムを意図し、グリッド上でプログラムを実行すると「分散」しますメッセージパッシング通信)。

分散型と並列化は、並行処理を意味します。

文章でも(実際にこの分野に貢献した人物については言いますが、言語の作成だけではなく)、これらの用語の正確な意味については、もっと懐疑的であるべきだと思います。抽象的な概念。

アルゴリズム上の並行処理(プログラムともいう)とは、他のコードとは独立して実行できるコードを持つことを意味します(Amdahlの法則が、これの)。

アルゴリズム/プログラムに並行性がある場合は、並列性もあります。

私は、その背後にあるアイデアをよりよく理解するために、いくつかの並列AND分散アルゴリズムを実装する方が良いと思います。 C/C++を知っているなら、分散(メッセージパッシング)の実装にはOpenMPIを、並列(共有メモリ)にはOpenMPを使用できます。

EDIT:

彼はまた、共有メモリ、双方の間のメッセージパッシング、ハイブリッド[それが実装されている方法として、抽象的原則と平行に並列性を意味するかもしれません。メモリアクセスのタイプ(numa、umaなど)]。

+1

Rob Pikeが言っていることは、マルチコアプロセッサ上で同時に実行される複数のスレッドの「並列処理」についてです。 – devundef

+1

私はこれをEDITパートでカバーしました:) – amb

+0

Amdahlの法則は、1つ以上のコア/プロセッサが関わっている場合の並列性について語ります。 http://en.wikipedia.org/wiki/Amdahl's_law – devundef

関連する問題