計算ノード間を接続するインタコネクトチップ(ICC)の概要

ICCは富士通の65nmプロセスで製造されるインタコネクトLSIで、SPARC64 VIIIfxプロセサへの接続バスと他の計算ノードと接続する10本のポートを持っている。各ポートのデータ転送速度は5GB/sで同時に送受信ができる全二重の通信ができるので、送受を合わせると10GB/sで、それが10本あるので100GB/sの最大転送能力をもっている。

また、ICCはPCI Express(PCIe)のインタフェースを持っているが、それがどのように使用されているかは明らかにされていない(IOノードでは、高性能クラスタネットワークがこのPCIe経由で接続されると考えられるが、計算ノードでは使われていないのかも知れない)。

ICCはCPUとインタコネクトポート間のデータ転送を行う4つのDMAエンジンを持つ

そして、ICCは4つのDMAエンジンを持ち、プロセサのメインメモリと他のノードとの間で4つのDMA転送を並行して実行することができるようになっている。この図の中の比較表に示されるように、ICCは同時通信数や同時通信帯域の点でTSUBAME2.0のInfiniBandスイッチやCrayのGemini 1.2より高い能力を持ち、Blue Gene/Qのスイッチと比べても負けていない。

Tofuインタコネクトの概要

ICCの10本のポートはX、Y、ZとB軸の+と-方向、AとC軸は1方向という割り付けになっている。ABCの3軸で右下の図のような12ノードのローカルなグループを作る。そして、このローカルグループをXYZの3軸でグローバルな3次元トーラス構造に接続する。この時、ローカルグループの同じ位置のノード同志がXYZで接続されるので、それぞれの位置のノード群からなる12個の3次元トーラスがあり、それぞれのノード位置で、他の3次元トーラスとABC軸で接続されていると考えることもできる。

通常のノード間ルーティングはX→Y→Z→A→C→Bに順であり、まず、XYZで相手方のノードのあるローカルグループに到達し、その中ではACBの順に転送して目的のノードにたどり着く。しかし、上の順序の前にB→C→Aというローカルグループ内のルーティングを行う拡張次元ルーティングという機能を持っている。この機能を使うと、そのノード位置のXYZのグローバル接続に故障があっても、最初のB→C→Aで故障のないXYZトーラスを使うノードに転送してやれば、故障を迂回して通信を行うことができる。

3次元トーラスはこの模式図にあるように立方体の対応する面(上下、左右、前後)のノードを接続しループになっていなければならないが、インタコネクトがXYZだけの3Dトーラス接続であると、システムを分割したときに切り口がループにならずトーラスにならない。しかし、TofuではABCの次元を使って、システムを分割した場合でもループとなりトーラス構造を維持できるようになっている。また、故障ノードを修理する場合もX方向の1列だけを切り離し、他の部分はトーラスとして運用したまま保守ができるというような機能を実現している。

そして、今回、明らかになったのは、Z方向の接続はZ=0の位置にIOノードがあり、Z=1~17が計算ノードとなっているという点である。この構成であれば、IOノードと計算ノードはZ位置が違うだけで、通信上は同等であり、Top500のLINPACK計算の時にIOノードも利用して計算を行ったというのは良く理解できる。

システム全体のラック数は、今回の講演でも800以上とあいまいな数になっている。Top500で1位になったシステムは672ラックであることが分かっているので、LINPACKで10PFlopsを超えるには672×10/8.162=823.3ラック以上が必要と考えられる。

そして、今回、Z軸の長さが17であることが分かった。そして、ローカルグループは12ノードであることが分かっているので、2ラックで1つのZ軸方向のローカルグループが作れる計算になる。そうすると、システム全体のラック数は2×X×Yとなる。7月2日の日経新聞ではシステム全体のラック数は864と報じられている。これが正しいとすると、X×Yは432であり、432は(2の4乗)×(3の3乗)である。ここで3の2乗を8に置き換えると823ラック以下になるし、2の3乗を9に置き換えると900ラックを超えてしまう。もちろん、3の3乗を26に置き換えるとか28に置き換えると8XXラックで10PFlops以上という計算にはなるが、13とか7とかいう約数が出てきてトーラスのつなぎ方が面倒になる。ということを考えると、システム規模として864ラックはかなり、信じられる数字である。