6次元メッシュ・トーラスで接続される計算ノード群

京コンピュータの計算ノードはICCチップにより6次元のメッシュ・トーラスという形で接続されている。X-Y-Z-a-b-cと呼ぶ6次元であるが、a軸は2ノード接続、b軸は3ノード接続、c軸は2ノード接続と小さいサイズのローカルな次元であり、このa-b-c軸で接続された12ノードが全体的な接続を行う単位となる。

12計算ノードの接続。黒がa軸、緑がb軸、青がc軸の接続

そして、各計算ノードはa-b-c軸接続の腕に加えてX-Y-Z軸の+/-方向の6本の腕を持っており、これらの腕でX、Y、Z方向に隣接する12ノードのグループの対応する位置の計算ノードに接続する。なお、この図では右下の1つのノードのXYZの腕だけを描いているが、12ノードそれぞれにXYZで計6本の腕があり、隣接する12ノードグループ間には12本の接続ができる。

京コンピュータではX軸とZ軸はループとなるトーラス接続であるが、Y軸はループにならないメッシュ接続になっており、全体としてはX、Z、bはトーラス、Y、a、cはメッシュという接続になっている。

このように物理的な接続は3次元がメッシュ、3次元がトーラスという接続であるが、ユーザには3次元の各軸がループとなるトーラス構造を提供するという使い方をする。物理的な接続が3次元トーラスであると、システム全体を一人で使う場合には3次元トーラスとなるが、システムを分割して複数のユーザで使う場合には、分割した面では接続が切れてメッシュ接続になってしまい各ユーザの使用する部分は3次元トーラスにならない。

このため、Tofuインタコネクトではa-b-c軸を使って、分割面で折り返してループとなる接続を実現し、システムを分割して使用する場合にも、ユーザには3次元トーラス構造を提供することができるようになっている。このようにすると、ユーザは3次元トーラスであることを前提としてプログラムを作れば良いというメリットがある。また、a-b-c軸を使うことにより故障ノードを切り離して運用を続けたり、故障ノードを切り離して修理したりすることができるようになる。

Tofuインタコネクトでは、送信元のノードから宛先のノードに送るデータパケットは、先ず、X軸を通って宛先のノードとX座標が等しいノードまで中間のノードを経由してバケツリレーで送られ、次にY座標が同じになるノードに送られ、更にZ座標が同じになるノードに送られる。これで、宛先のノードが含まれている12ノードグループまでパケットが到着する。その後、12ノードグループ内でa軸、c軸、b軸の順に使って、宛先のノードにパケットを届けるというのが基本パターンである。しかし、分割面の折り返しや故障ノードを切り離す場合は、先ず、b軸、c軸、a軸を使って12ノードグループ内で移動してから、基本のX-Y-Z-a-c-bのルーティングを行う

各システムボードには4つの計算ノードが載っており、a軸とc軸の接続はシステムボードのプリント配線で実現されている。そして、3枚のシステムボードをバックプレーンのプリント配線で作られるb軸で接続することで12ノードのグループが作られている。そして、各筐体には24枚のシステムボードが搭載されるので、全体では8つの12ノードグループができる。

Z軸ループはZ=0にIOノードが入る

そして、2筐体で16の12ノードグループと1個の12IOノードグループでZ軸のループを作る。このとき、IOノードがZ=0となり、計算ノードはZ=1~16となる。2筐体には計12個のIOノードがあるので、2筐体でZ軸ループを12個作ることができる。

京コンピュータは、この筐体を横方向24個、奥行方向に36個並べ、全体では864筐体で構成されている。そして、X軸、Y軸は次の図のように接続されている。

京コンピュータ筐体のX軸(黒線)とY軸(赤線)の接続

X軸の接続をY軸と同じように隣接した筐体を接続し、X=23の筐体からX=0の筐体に接続してもトーラスになるが、1本だけ長く伝送時間の掛る接続ができてしまう。この図のようにX軸を2個置きに接続すると、ほぼ同じ長さのケーブルとなり筐体間の伝送遅延時間がバランスする。

計算ノード間の接続はX+、X-、Y+、Y-の4本であり、筐体には96計算ノードが搭載されているので4×96=384本のケーブルが接続される。これらの筐体間のケーブルは長さが短いので、次の写真では黒色に見える電気ケーブルで行われている。そして、各筐体の上側の12枚のシステムボード間を繋ぐケーブルは上側に引き出し、筐体の上のケーブルトラックを通す。一方、下側の12枚のシステムボード間のケーブルは下側に引き出して床下のスペースを通している。そして筐体からのケーブルの引き出し部はケーブルカバーで覆って保護する。筐体間のスペースは80cmであり、そこからケーブルカバーが出っ張っているので、保守スペースはかなり窮屈であるが、これを広げると必要な床面積に跳ね返る。

筐体間ケーブルの配線作業の様子(左)とケーブルカバーを付けた完成状態(右)(提供:理化学研究所 計算科学研究機構)

次の写真は最初に計算ノード8筐体のシステムが動いた時に発表されたものであるが、4つの計算ノードの真ん中にローカルファイルシステムのディスク筐体が配置されていることが分かる。

4つの計算ノード筐体の中央にローカルファイルシステムの筐体が配置されている(出典:理研の次世代スーパーコンピュータ開発実施本部Webサイト)

このローカルファイルシステムはLustreを拡張した富士通のFEFS(Fujitsu Exabyte File System)で、MDS(メタデータサーバ)は1階に置かれている。そして、計算ノード筐体のIOノードがOSS(オブジェクトストレージサーバ)となっている。そして、1階に置かれたMDSとの接続や、グローバルファイルシステムとの接続にはオレンジ色の多芯光ファイバが使われており、2階の空調機械室を貫通して1階に繋がっている。

そして、30PB以上という巨大な容量のグローバルファイルシステムは1階に置かれている。1階のフロアは、奥行は3階と同じ60mであるが幅は半分の25mで、残りの部分はセミナ室や事務室、説明のための展示スペースなどとなっている。

1階の計算機室にはグローバルファイルシステムを構成する富士通のETERNUS RAIDストレージ720台とそのアクセスを制御するOSS 90台が並んでいる。大量のファイルを扱うので全てのアクセスが集中するMDSには高い処理能力が要求される。このため、Xeon E7を使う8CPUのPRIMEQUESTサーバを使い。信頼度を高めるため2台で二重化を行っている。RAIDディスクへのアクセスを制御するOSSは90台の2CPUのPRIMERGYサーバを使い、これも2台ずつをペアとして片側が故障してもアクセスは継続できるようになっている。

1階に置かれたグローバルファイルシステム(提供:理化学研究所 計算科学研究機構)

巨大なシステムであるので、コンポーネントが故障するのは避けられないが、水冷でCPUやICCのチップ温度を下げた効果で計算ノードの故障は予想より少なく、システム全体では9万個を超えるハードディスク関連の故障が最も頻度が高いという。ただし、ストレージはRAID構成になっているので、故障が発生してもシステムが止まることはない。

2011年11月のTop500 で2位となった中国の天河1Aの平均故障間隔は数時間と言われ、大規模なLINPACK計算ができていないのに対して、京コンピュータでは30時間程度連続走行するLINPACK計算を行っており、世界トップレベルの信頼度を持っていることが確認されている。このように京コンピュータは実用的なスパコンになっており、今後の本格利用で防災、医療、もの作り、素粒子や宇宙などの科学技術分野での成果が期待される。