クラスターコンピュータは複数のコンピュータをまとめて一体として動作するようにしたものです。なぜまとめているかというと速く計算を行うためです。計算を速くするためにはいくつかの方法が考えられます。
1から100までの和を求める計算を例に考えてみましょう。一回の足し算に1秒かかるとすると99回の足し算で99秒かかります。1のCPUを速くする方法は一回の計算時間を短くすることに相当します。0.5秒になれば半分の時間、0.1秒になれば10分の1の時間で終わるようになります。
もう少し頭を使ってnまでの和を求める公式n(n+1)/2を使うことを考えます。この公式があれば1から100までの和を求める計算は1回の足し算、1回の掛け算、1回の割算で終わります。これは2の専門の演算装置を用いることに似ています。専用の(1からnまでの和を求める公式)を使って、そこの部分だけを速くすることができます。しかし、専用の装置というのは一般的な計算には使えないことが多いので目的とする計算が変わると役に立たないことがあります。
計算を分割して、同時に実行する方法が3です。1から10まで、11から20まで...91から100までというように計算を分割して10人で計算をすると1回の足し算に1秒かかる場合でも9秒で終わります。それから10人の計算を集約すれば追加で9秒、全体で18秒で終わることになります。実際には計算を分割してそれぞれに指示を与えたり、集約したりするのに時間がかかるので10人でやれば10倍になることはありませんが並列で実行することで速く計算を終えることができます。
並列度を上げる方法にはいくつかあります。
CPUにある演算装置を増やしたものがマルチコアCPUです。マルチコアCPUでは複数のCPUが存在するので同時に計算を行うことができます。しかし、複数のCPUで同時に計算させるためにはアプリケーションの対応が必要です。一つの机でノートを共有しながら計算を行うためには互いにノートの使い方の合意をしないといけません。一人が読んでいる部分にもう一人が書きこんでは混乱してしまうからです。二人、四人、八人と人数が増えるにつれルールは複雑になってきます。
これはCPUを二つ、四つと増やす方法です。マルチコアと似ていますがもう少し距離が離れています。でもいろいろな部分を共同して使うのでアプリケーションが対応しないといけません。
これは複数のコンピュータをネットワークでつなぐ方法です。部屋ごとに人がいて、建物全体で計算を行うイメージでしょうか。それぞれの独立度が高いのでぶつかることは少ないのですが、互いに離れているので連絡が遅くなります。クラスターコンピュータはこれに相当します。
クラスターコンピュータのいいところはコンピュータの数を増やすことが容易であることです。マルチコアやマルチプロセッサの並列度を上げるには基盤の設計などができないといけませんが、マルチコンピュータにするにはコンピュータを用意してネットワークにつなぐだけです。またプログラムのつくりかたも簡単です。並列で処理できる部分を分割するプログラムと、それを処理する部分、最後にまとめる部分のプログラムをつくれば並列計算のできあがりです。
このウェブページでは複数のコンピュータをまとめてクラスターコンピュータとして動かすまでの記録を紹介します。