@Raphaelが指摘したように、Distributed ComputingはParallel Computingのサブセットです。同様に、Parallel ComputingはConcurrent Computingのサブセットです。
同時実行とは共有を指します同じ時間枠内のリソースの。たとえば、複数のプロセスが同じCPU(またはCPUコア)を共有するか、メモリまたはI / Oデバイスを共有します。オペレーティングシステムは共有リソースを管理します。マルチプロセッサマシンと分散システムは、同時実行制御が重要な役割を果たすアーキテクチャです。並行性は、ハードウェアレベルとソフトウェアレベルの両方で発生します。複数のデバイスが同時に動作し、プロセッサーは内部並列処理を備え、複数の命令を同時に処理します。システムには複数のプロセッサーがあり、システムはネットワーク通信を介して相互作用します。並行処理は、信号処理、I / Oと処理のオーバーラップ、通信、およびプロセス間または同じプロセス内のスレッド間でのリソースの共有において、アプリケーションレベルで発生します。
同じシステム上で実行される2つのプロセス(またはスレッド)は、それらの実行が時間内にインターリーブされるように同時実行されます。プロセス(スレッド)はCPUリソースを共有しています。私は次の定義が好きです:同じシステムで実行されている2つのプロセス(スレッド)は、最初のプロセス(スレッド)がまだ実行を終了していないときに2番目のプロセス(スレッド)が実行を開始する場合にのみ並行します。
プロセス(またはスレッド)が異なるCPU(または同じCPUのコア)で実行されると、同時実行性は並列処理になります。この場合の並列処理は「仮想」ではなく「実際」です。
これらのCPUが同じマシンに属している場合、計算を「並列」と呼びます。CPUが異なるマシンに属し、地理的に分散している場合、計算を「分散」と呼びます。
したがって、分散コンピューティングは並行コンピューティングのサブセットであり、並行コンピューティングのサブセットです。
もちろん、一般に、並列コンピューティングと分散コンピューティングは異なるものと見なされているのは事実です。並列コンピューティングは、密結合アプリケーションに関連しており、次のいずれかの目標を達成するために使用されます。
- 計算集中型の問題をより迅速に解決します。
- 同じ時間でより大きな問題を解決します。
- 同じ時間で同じサイズの問題をより高い精度で解決します。
過去において、最初の目標は並列コンピューティングの主な理由でした。問題の解決を加速することでした。現在、可能な場合、科学者は主に並列コンピューティングを使用して、2番目の目標のいずれかを達成します(たとえば、 過去に費やした時間と同じ時間を費やしてサイズ問題を並列に解決して問題を解決します)サイズの)、または第三1(すなわち、それらは時間の同じ量費やすことを喜んでいる彼らはサイズの並列問題に解決過去に費やした今やサイズの問題解決するためにx 5 x T x xTx5xTxxはるかに複雑なモデル、より多くの方程式、変数、制約を使用してより高い精度で)。並列計算では、共有メモリ、メッセージ受け渡し、またはその両方を使用できます(たとえば、OpenMPを使用した共有メモリのイントラノード、MPIを使用したメッセージ受け渡しのノード間)。GPUアクセラレータも使用する場合があります。アプリケーションは1つの並列スーパーコンピューターで実行されるため、通常、障害、ネットワークパーティションなどの問題は考慮しません。これらのイベントの確率は、実際的な目的でゼロに近いためです。ただし、気候変動シミュレーションなどの数か月間実行される大規模な並列アプリケーションは、通常、障害に関係しており、チェックポイント設定/再起動メカニズムを使用して、問題が発生した場合に最初からシミュレーションを再開しないようにします。
分散コンピューティングは疎結合アプリケーションに関連しており、(分散スーパーコンピューティングの)目標は、そうでなければ大きすぎる問題や、異なるアーキテクチャでの実行から恩恵を受ける可能性がある異なるコンポーネントで実行が分割される問題を解決することです。クライアントサーバー、ピアツーピアなどを含むいくつかのモデルがあります。セキュリティ、障害、ネットワークパーティションなど、分散コンピューティングで発生する問題は、このコンテキストでは障害がルールであり、例外ではありません。
最後に、グリッドとクラウドコンピューティングはどちらも分散コンピューティングのサブセットです。グリッドコンピューティングパラダイムは、大規模なリソース共有と革新的な高性能アプリケーションに重点を置いているため、従来の分散コンピューティングとは異なる新しい分野として浮上しました。共有されているリソースは、通常、複数の異なる管理ドメイン(いわゆる仮想組織)に属します。グリッドコンピューティングは、過去10年間で科学者によって頻繁に使用されてきましたが、一般ユーザーにとっては伝統的に困難です。クラウドコンピューティングは、一般ユーザーが仮想マシンを使用して同じデータセンターに配置され、地理的に分散していない複数のマシンを簡単に活用できるようにすることで、ギャップを埋めようとしますユーザーがアプリケーションを実行するために組み立てることができます。ハードウェア、特に高性能ネットワーク相互接続(Infinibandなど)の通常の欠如により、クラウドは並列MPIアプリケーションの実行を対象としていません。通常、クラウドで実行される分散アプリケーションは、Map / Reduceパラダイムを活用するために実装されます。ところで、多くの人はMap / reduceをパラレルデータフローモデルと考えています。