分散プログラミングとは何ですか?
分散プログラミングは、並列プログラミングまたは並列コンピューティングの1つの形式です。並列プログラミングには、明日の天気の予測など、特定の問題に同時に動作するコンピューター内のコンピューターとコンピューティングユニットが含まれます。コンピューティングユニットは、非常に密接に位置し、調整されているか、離れて配置できます。コンピューティングユニットが離れている場合、分散プログラミングと呼ばれます。このようなシナリオでは、コンピューティングユニットは互いに異なり、オペレーティングシステムとネットワークのセットアップも異なり、コンピューティングアクティビティのプログラミングが特に困難になります。
分散方法で問題を解決する場合、プログラムの一部が異なるコンピューティングユニットで実行できるようにプログラムを分割する必要があります。これらの部分は、しばしば「プロセス」と呼ばれます。プロセスは同時に実行されますが、入力と結果を相互に通信する必要があります。 Intelとanotで実行されている1つの部品など、プロセスが異なるハードウェアで実行されている場合彼女は太陽の下で走り、プログラムをコンパイルして最適化する必要があります。
十分に難しい問題を解決する1つの方法は、入力部品を分割し、同じアルゴリズム、問題解決のためのルールのセットまたは手順を使用して、異なる部分で異なるコンピューティングユニットを動作させることです。たとえば、10,000ペアのゲノムを割るために、最初の1,000ペアを最初のコンピューティングユニットに割り当てることができます。2番目のコンピューティングユニットに割り当てられた2番目の1,000ペアなど、すべて同じアルゴリズムを使用しています。分散プログラミングを使用すると、1つの利点は、異なるコンピューティングユニットが異なるアルゴリズムを実行して同じ問題を解決できるため、大幅に優れたソリューションにつながることです。これは、ジグソーパズルのパズルを解くことに似ています。一部の人々は境界線をつなぎ合わせていますが、他の人は特定の色の断片をまとめました。
分散コンピューティングの調整プロセスは特に困難な作業になる可能性があります。一部のコンピューティングユニットは、他の作業を処理するために故障したり、中断されたりする可能性があります。入力または計算結果を含むメッセージは、目的地に到達できない場合があります。プログラムが素朴な方法で記述されている場合、コンピューティングユニットまたは一部のメッセージを失うと、コンピューターのセット全体がハングアップする可能性があります。分散プログラミングでは、1つのプロセスが制御プロセスであり、基本的に他のプロセスによって作業を成し遂げることができます。または、すべてのプロセスは、プロセスが「マスター」ではないため、ピアツーピアで動作する可能性があります。分散プログラミングで試みられた問題のいくつかの例には、石油、タンパク質や生物学的分子のモデリング、コード化されたメッセージの割れ、軍事シミュレーションなどのリソースの地質データの分析が含まれます。地球が受け取ったラジオメッセージからインテリジェントな地球外の生活を検索するSETIプロジェクトは、おそらく最も有名な例の1つです。