並列コンピューティング
出典: フリー百科事典『ウィキペディア(Wikipedia)』
並列コンピューティング(へいれつ-、parallel computing、並列計算、並列処理)とは、コンピュータにおいて複数のプロセッサで1つのタスクを動作させること。問題を解く過程はより小さなタスクに分割できることが多い、という事実を利用して処理効率の向上を図る手法である。また、このために設計されたコンピュータを並列コンピュータという。ディープ・ブルーなどが有名。 関連する概念に並行計算があるが、並行計算は物理的な並列化のみならず、マルチスレッドなどで仮想的な資源の多重化を行い、プロセッサの待ち時間を他のタスクに利用する場合も含む。
一般的には多くのパーソナルコンピュータや、サーバー、スーパーコンピュータを接続し、並列コンピューティングを行うものはクラスターと呼ばれることが多い。 このクラスターをさらにインターネットなどの広域ネットワーク上で分散・協調させるものも広義には並列コンピューティングに属し(クラスターは1台のパーソナルコンピュータでも構わないことに注意)、分散コンピューティングあるいはグリッド・コンピューティングと呼び(狭義の)並列コンピューティングとは区別することが多い。
[編集] 処理方式
処理方式については、大きくメモリ共有型とメモリ非共有型に大別される。
メモリ共有型の並列コンピューティングは、大規模な共有メモリサーバにおいてSMP・NUMA構成で行われるものや、コンピュータ・クラスターなどで使用されるメモリ上のデータをクラスター-ノード間で通信共有・制御し、MPIなどを用いて並列コンピューティングを行うメッセージ通信方式のものがある。 実際には、このクラスター方式においても、システムリソースを共有する密結合型とリソースを共有しない疎結合型が存在する。
一方、メモリ非共有型の並列コンピューティングは、1つの大きな処理全体を個々に細分化し、それぞれの処理単位における影響を排して並列コンピューティングを行うものであり、この形は一般にクラスターとは呼ばれない。
[編集] 可能性と問題点
並列コンピューティングは、プロセッサ同士が独立して同時に仕事をするため、理想的な状況下ではプロセッサの回路規模を大きくすること無く、プロセッサの数に比例して性能が得られると考えられ、スーパーコンピュータなどで古くからとられた手法である。
しかし、問題点もある。並列コンピューティングを行う場合、もっともパフォーマンスを発揮するのはこれら複数のプロセッサが全て100%使い切られた時と考えられるが、従来のプログラムの多くは、複数のプロセッサを均等に全て使い切るようにはできておらず、また、そういったプログラミングは難しい。
買い物を例にとろう。まず買い物の前に、財布の中身を確かめなければならないし、足りなければ銀行で補充もしなければならない。その後はじめてお店にも行かなければならない。銀行に行くのと、お店に訪れるのは同時にできないし、財布の中身を確認してからでなければ、お店には行けない。プログラムもこれと似て、実行順番が変えられなかったり、同時に実行できなかったりする部分がどうしてもできてしまう。このため複数のプロセッサで同時に、かつ実行順番に依存しないようなプログラムのみでプログラムを構成することは難しい。
並列コンピューティングでは、処理の"ある瞬間"ではそれぞれのプロセッサは実質まったく別に動作しており、そのため実行順番が全く問題にならないプログラムなら性能は引き出しやすい。しかし、先の例のように実行順番が強く束縛される場合は、あるプロセッサだけが働き、ほかのプロセッサはすることがなくなってしまうといった状態になり、性能が引き出しにくい。そのため,並列コンピューティングはそうでない場合と比べて性能を引き出すプログラミングが困難となる。
一般に、プログラムの処理が複数のプロセッサで均等に処理できる割合をプログラムの並列度と言うが、地球シミュレーターの高い性能はこの並列度が他に比べて極めて高いことも重要な要因である。
以上のように、並列コンピューティングでは高い性能を発揮する為にはソフトウェアの並列環境への最適化が重要な鍵となる。(詳しくは並列化を参照)
[編集] 関連項目
- マルチプロセッシング
- 対称型マルチプロセッシング(SMP)
- NUMA
- マルチコア, メニイコア
- SIMD, MIMD
- 排他制御
- 並列化
- コンピュータ・クラスター
- スーパーコンピュータ
カテゴリ: 並列コンピューティング | 並行計算 | スーパーコンピュータ | 計算科学