4

私はプログラミング構造の研究を行っていました。特にコンカレントプログラムについて勉強していました。並行プログラム、並列プログラム、および分散プログラムの区別が混乱しているように見える記事をいくつか見つけました。

私の理解は次のとおりです。

並行プログラム : 同時に複数のタスクを実行するか、そうするという概念を与える

並列プログラム : このような問題を解決するためのアルゴリズムにより、いくつかの関連タスクを同時に実行できます

分散プログラム: 対応するアルゴリズムに固有の並列処理よりも、利用可能なリソースと関係があります。問題を解決するために、複数のコンピューティング リソースを利用できます。

これらの用語の正確で詳細な説明を教えてください。

4

1 に答える 1

2

これらの用語は確かに関連しており、時には重複しています。並列プログラミングは、いくつかの計算を高速化するために、同時に実行される複数のエンティティ(スレッド、プロセス)を使用することを目的とした並行プログラミングのサブセットです。分散コンピューティングは非常に幅広いトピックであり、あなたが言ったように、問題を解決するためにリソースを使用することに焦点を当てています。これらのリソースは、同じマシン上にある場合もあれば、地理的に分散している場合や異種の場合もあります。並列コンピューティングと分散コンピューティングの間に明確な線を引くことは困難です。並列コンピューティングは、使用されるリソースに応じて分散される場合とされない場合がありますが、分散コンピューティングは、問題を並列に解決するために使用される場合と使用されない場合があります。

私の意見では、これらの用語の微妙な違いは、それらが考慮される抽象化レイヤーに由来します。主な焦点がいくつかの共有データに対する個別の計算エンティティの相互作用である場合、並行プログラミングについて説明します。重要な側面が複数の計算ユニットを使用して計算を高速化することである場合、並列計算があります。最後に、リソースを管理して問題を解決する方法に焦点を当てている場合は、分散コンピューティングについて話します。

于 2011-11-06T22:43:47.650 に答える