並列計算
コンピュータが大規模かつ複雑になると、平均故障間隔は小さくなる。並列計算では、多数のプロセッサを使っても長時間かかるような処理を行うことがある。このため、アプリケーションの実行中の状態(全てのリソース確保状況や変数群の状態など)をコアダンプのような形で定期的に保持しておき、障害が発生したときに最初から処理をやり直すのではなく、途中までの保存された状態から再開できるようにする必要がある。この技法をアプリケーション・チェックポインティングと呼ぶ。時には数ヶ月もかかる処理もあり、その場合アプリケーション・チェックポインティングは非常に重要となる。また、この技法はプロセスマイグレーションにも応用できる。
再構成型コンピューティングとは、FPGAを汎用コンピュータのコプロセッサとして利用するものである。FPGAは、内部の配線を変更可能な集積回路である。
FPGA内の配線は、VHDLやVerilogのようなハードウェア記述言語 (HDL) でプログラム可能である。しかし、これらの言語でのプログラミングは手間がかかる。そこで、多くのプログラマが親しんでいるC言語のソースをHDLのソースに変換するソフトウェアがいくつも開発されている。例えば、Mitrion-C、Impluse C、DIME-C、Handel-Cなどがある。
AMDはHyperTransport技術をオープン規格としたため、サードパーティーがこれを再構成型コンピューティングを使った高性能計算に応用している。
同期機能を持ったキャッシュ(MESIプロトコル参照)を持ったプロセッサ群をバスで接続する形態のマルチプロセッサ機としては、1984年の Synapse N+1 が最初である。
SIMD型並列コンピュータの起源は1970年代に遡る。初期のSIMD型コンピュータは、命令列を実行するときのプロセッサの制御装置におけるゲート遅延への対策という意味合いが強かった。1964年、Slotnick はローレンス・リバモア国立研究所向けの超並列コンピュータ構築を提案している。その提案に対してアメリカ空軍が資金を提供し、それが最初のSIMD並列マシン ILLIAC IV となった。設計の鍵となったのは、最大256プロセッサによる高い並列性であり、それらプロセッサが後にベクトル計算機と呼ばれる方式で大きなデータを処理するものであった。しかし、プロジェクトは11年もかけて当初の4分の1の規模までしか構築できず、事前の見積もりの4倍の費用がかかってしまった。1976年に実際のアプリケーションが実行可能になったが、その性能は当時既に発売されていた商用のスーパーコンピュータ Cray-1 に劣っていた。
並列計算のプラットフォームにおけるアルゴリズムの性能は、そのアルゴリズムをどれだけ並列化できるかに依存する。そのため、1960年代にジーン・アムダールが定式化したアムダールの法則が重要となってくる。それによると、プログラムの中の並列化できない部分が並列化による性能向上を制限する。大規模な工学的問題や数学問題には、一般に並列化可能な部分と並列化不可能な部分(逐次実行部分)がある。アムダールの法則によれば、以下のような関係が成り立つ。
S = 1 ( 1 − P ) {\displaystyle S={\frac {1}{(1-P)}}}
ここで、Sはプログラムの性能向上率(逐次実行版での実行時間を1としたときの倍率)、Pは並列化可能な部分の比率である。逐次実行部分がプログラムの実行時間の10%を占めている場合、性能向上は10倍となり、それ以上の多くの計算ノードを追加しても意味はない。これにより、並列実行ユニットを追加して意味のある個数の上限が得られる。
グスタフソンの法則は、アムダールの法則とも密接に関連する計算機工学における法則である。グスタフソンの法則は以下の式で表される。
S ( P ) = P − α ( P − 1 ) {\displaystyle \displaystyle S(P)=P-\alpha (P-1)}
ここで、Pはプロセッサ数、Sは性能向上、 α {\displaystyle \alpha } は処理の並列化できない部分である。アムダールの法則では問題のサイズが固定であり、逐次実行部分はプロセッサ数に依存しないと仮定されている。一方、グスタフソンの法則ではそのような仮定がない。
並列計算(へいれつけいさん、英語: parallel computing)は、コンピュータにおいて特定の処理をいくつかの独立した小さな処理に細分化し、複数の処理装置(プロセッサ)上でそれぞれの処理を同時に実行させることである。並列コンピューティングや並列処理ともいう。