超並列マシン (ちょうへいれつマシン、Massively parallel machine) は1990年代から台頭してきた、並列計算機の中で規模の大きなもの(CPU数の多いもの)を言う。大規模クラスターマシン、大規模ワークステーションクラスター地球シミュレーターなども超並列マシンの範疇に入れることができる。時代と共に並列度は大きくなり、CPU性能は向上するため、何個以上のCPU数(或いは性能)で超並列であるというはっきりとした定義はない。

超並列マシンは分散メモリ型のコンピュータシステムであり、多数のノードから構成され、各ノードは基本的に独立したコンピュータとなっている。本来の超並列マシンはnCUBEコネクションマシンなどのように、ほとんどのノードがCPUメモリとノード間接続用の通信ポートのみで構成されるものであった。ノード間通信にはMPIのような標準的なプロトコルを使用してメッセージをやり取りする。2005年現在のスーパーコンピュータはほとんどが超並列マシンである。超並列マシンの性能は、実行しようとするアプリケーションの並列性と、スレッド間の通信量に左右される。アプリケーションの並列性が高ければ多くのノードに展開して並列実行できるため、性能向上が期待できる。しかし、共有メモリ型と異なり、あるスレッドの実行結果をメモリに置くだけでは他のスレッドからは見えないため、通信が必要となる。したがって、計算途中に他のスレッドの結果を待ち合わせなければならないようなアプリケーションではノード数に比例した性能向上は期待できない。超並列マシンでの計算性能の向上は研究の活発な領域である。

コンシューマー市場での超並列

編集

超並列処理技術は、ハイパフォーマンスコンピューティング以外の用途でも使われている。その最も普及した例が、Graphics Processing Unit (GPU) である。最新[いつ?]世代のGPUは、少なくとも100個以上、ハイエンドモデルでは1000個以上のストリームプロセッサエレメント(シェーダーユニット)を持ち、8〜32個の集合を一つの命令デコーダに接続し、一つの命令で8〜32個のデータを同時処理できる。このプロセッサエレメントのクラスターは巨大なクロスバースイッチデータバスや、リングバスに接続される。プログラミング言語にはOpenGL/Direct3D用のプログラマブルシェーダー記述言語のほか、GPGPU向けに開発されたCUDAOpenCLといった汎用言語およびAPIセットが使用され、SIMDVLIW技術を駆使した内部命令セットへ変換される。単体で10TFLOPSもの理論演算性能を持つ製品もある。近年[いつ?]、このGPUを多数接続して安価な大規模超並列コンピュータを製造しようと言う動きがあり、GPUメーカーも科学計算向けに倍精度浮動小数点の演算性能を強化した製品を徐々に浸透させつつある。また、AIを実現するための機械学習深層学習をアクセラレートするために、半精度浮動小数点および8ビット整数の演算性能および命令セットを強化する傾向も出始めている。

関連項目

編集