PC クラスタで台数が大きいのを組む、という時に大きな問題になるのが故障
です。例えば 1000 台 PC があれば、計算上は1日1台くらい壊れても不思議は
ないわけです。ある程度の稼働率を保っておこう、というのはマシン台数が
増えると急速に困難になります。
理研クラス タの報告 では、実際に 1024 台のクラスタで1年に 64 台が故障したそうです。
例えばディスクの場合は RAID という考え方が昔からあるので、なんかそう
いうことはできないか?というのが問題です。元々、ノンストップコンピュー
タみたいな「落ちない計算機」への需要はあるのですが、残念ながらそうい
うところでの考え方がそのまま使えるわけではありません。
というのは、「落ちない計算機」にするには基本的には2重とか3重にして、ど
れか落ちても大丈夫なようにするわけですが、 HPC では2重とか3重にしたく
ないからです。例えば1日1回程度止まったとしても、復帰に1時間ですむシス
テムは、冗長性があって落ちないけれど性能が半分のシステムよりも明らかに
お得です。また、大規模なアプリケーションは大抵チェックポインティング、
つまり、途中から計算を再開できるためのデータを書き出す機能を自前でもっ
ています。これは、計算機が落ちるから、というのも理由の1部ではあります
が、もっと大きな理由は単純にバッチ処理で計算時間の上限があるからです。
こういうアプリケーションを PC クラスタで実行する場合、別に計算途中で計
算ノードが壊れても大した問題ではありません。前のチェックポイントに戻っ
て、違うノードを割り当てて計算を再開すればいいだけだからです。もちろん、
チェックポイントの間にノードが壊れる確率が1よりも十分小さくないと計算
が進まないですが。
もしもネットワークが完全なクロスバーなら、そういうわけで故障とか冗長性
とかいうことを考える必要はありません。壊れたのはほっておいて生きている
のを使って計算を続ければいいからです。もちろん、死んだノードのチェック
ポイントデータが見える必要があるので、チェックポイントはローカルディス
クではなくてネットワーク上に必要とか、そういう問題はあります。また、そ
れ以前に壊れたかどうかの診断の機能はなんか必要です。
しかし、ここで大問題なのは、実際に非常に大規模になった時に構築
可能なネットワークはクロスバーではない、ということです。実際問題として、
例えば 10,000 CPU になるような巨大システムを現実的なコストで構築する方
法はメッシュネットワークか多次元クロスバーしかなく、どちらも全く冗長性
がありません。
これに対して、規則的なネットワークであっても例えば fat tree や omega
net の場合、冗長性があるものとして扱うことも可能です。 fat tree の場合、
単純にネットワークの一番下で同じスイッチノードにつながっている計算ノー
ドの間では交換が効くからです。例えば 8 台つながったスイッチで 7 台だけ
使って1台は予備にできます。同じスイッチにつながった2台が同時に(例えば
同じ日のうちに)壊れる確率はかなり低いので、例えば1万ノードくらいならこ
の程度の冗長性で計算上は十分です。 100万台だと駄目ですが。
このように考えると、別にメッシュや多次元クロスバーであっても冗長性をも
たせることはできることがわかります、単純に、グリッドの点を1台の計算ノー
ドではなく、複数の計算ノードがつながったスイッチにして、その下で例えば
9 台に1台とかを予備にすればいいわけです。
これでも、スイッチ自体には冗長性がない、という問題はありますが、スイッ
チの台数は計算ノードの台数よりも1桁少ないですし、また、消費電力とかい
ろんなことを考えてもスイッチが壊れる確率のほうが普通は低いと思いますの
でそんなに大きな問題ではないでしょう。
これは、構成としては例えば Cray-XD1 のネットワークと同じで、別に難しい
技術ではありません。 XD1の問題点は、計算ノード自体がカスタムメイドなの
で高価であることです。これを回避するにはネットワーク構成だけを生かして
PC クラスタにもってくればいいわけです。つまり、信頼性を考えるなら、大
規模なシステムで単純なメッシュや多次元クロスバーは避けるべきであり、も
うちょっと考えたネットワークを作る必要があります。
注意するべきことは、 Infiniband, QsNet, あるいは Myrinet といった現在
HPC に使われているネットワークでは、この冗長性の問題は原理的には解決され
ている、ということです。これは、どのネットワークの場合でも計算ノードは
単一のスイッチにつながっているので、同じスイッチにつながった機械の間で
は冗長性があるからです。これに対して 2D クロスバーやメッシュを計算ノー
ドに複数のカードを挿して実現するとか、あるいは BG/L のように本当にメッ
シュだと、耐故障性は結構ややこしい問題になります。まあ、 BG/L の場合は
普通の PC よりはノード当りの故障率が低いと思われるので、そんなに大きな
問題ではないかもしれませんが、 それでも 6万ノードとなると大変でしょう。
もっとも、InfiniBand 等の問題は、既にみたようにネットワークスイッチも
NIC もとても高いことです。特にファットツリー構成にすると、スイッ
チは O(N log N) の台数がいるわけだし、また長い線が必然的に発生して光で
つなぐ、とかいうことになってくるので全く話になりません。
とはいえ、特に InfiniBand の場合、本当に高いか?というのは微妙になって
きました。というのは、スイッチおよびアダプタ LSI をほぼ独占的に製造し
ている Mellanox が
OEM 価格 125ドルのカードを発売 したからです。これは 10GbE が安
くなる前に売れるだけ売って、マーケットを支配しよう、という戦略的な価格
設定ですが、カードを見ると LSI が 1 つ載ってるだけなので 100万枚とか売
る気ならこの価格は十分元がとれるものでしょう。
カードが安くてもスイッチが高くては意味がないので、近い将来にスイッチも
ポートあたり $100 程度になる、ということをこのカードの発表は意味してい
ます。なにしろ、スイッチ LSI を作ってる会社とカードを作ってる会社が同
じなので。光では高い、というのはすぐには変わらないかもしれないですが、
しかし IB 4X までは PC クラスタで使える時代が来た、ということです。