SC12において、京コンピュータを使った重力N体問題でGordon Bell賞を獲得した東京工業大学(東工大)の牧野教授が、SC12で重力N体問題専用のアクセラレータ「GRAPE-8」の論文を発表した。

SC12でGRAPE-8の論文を発表する東工大の牧野教授

太陽と地球はニュートンの万有引力(重力)で引き合っており、それが遠心力と釣り合って、地球は一定の軌道を回っている。このような2つの物体だけの動きは解析的に解けるが、3体以上になると、特殊な場合以外は解析的な答えは得られず、コンピュータを使って数値的に解くしかない。多数の星と重力、それにダークマターとダークエネルギーを含めて、それらが時間を追ってどう動くのかを計算するのが重力N体問題である。

1つの物体(粒子)に着目して、他のすべての粒子との間の力を計算して合計し、着目した粒子に働く力を求める。これをすべての粒子に対して行い、それぞれの粒子の質量と働く力による粒子の動きを、時間を追ってシミュレーションすれば良いのであるが、働く力の計算量は、粒子数の2乗に比例する。実際には遠方の粒子はある程度まとめて力を計算するツリー法が使われるが、なにしろ、Gordon Bell受賞論文では、Nは167億7721万6000であり、膨大な計算量になる。

この計算を、専用ハードウェアを作って高速化しようというアイデアが1988年に出され、初代のGRAPEが作られた。その後、GRAPEの改良が続けられたが、開発コストの高騰が重大な問題になってきた。天文の重力N体問題だけのために使える予算は限られるので、 2004年のGRAPE-DRでは、より汎用の計算ができる構造にしてお金を集めるという方法を取った。

2004年のGRAPE-DRでは開発費が400万ドルと高騰し、用途を広げるアプローチを取った

しかし、宇宙の発展などの計算では、精度を決めるのは粒子数で、個々の粒子ペアの間の力の計算にはそれほど高い計算精度は不要で、汎用の演算ユニットで浮動小数点演算を行うのは無駄が多い。

そのため、GRAPE-8ではeASICを使うというアプローチを取った。通常のASICは半導体チップのレイアウトや配線をフルカスタムで設計するので数十枚のマスクを作る必要があり、開発費が高くなる。これに対してeASICは、シリコンと配線の間の接続ビアのマスクを変えるだけで異なる機能のチップを作る。マスクが1枚ですむので、開発費はフルカスタムのASICと比べると非常に安い。FPGAの場合は、CMOSのスイッチでセルの論理機能やセル間の接続を変えるところを、eASICでは、これをビアのマスクで変えるという感じである。

GRAPE-8では「N2X740」というeASICの製品を使っている。N2X740は約74万セル(7.4Mゲート相当)と11.5MbitのRAM、320Kbitのレジスタファイルなどを集積している。このeASICに、粒子の座標は32bit整数、力は9bit精度の浮動小数点数、力の合計は64bit整数で計算するという演算パイプラインを8本持つユニットを6系統実装している。

粒子情報を保持するメモリ、CPUとのインタフェースユニットと8本の演算パイプラインが入った6系統のパイプラインユニットが集積されている

ただし、このeASICにはPCI Express(PCIe)のインタフェースモジュールが無いので、GRAPE-8のボードには2個のeASICチップとPCIe用にFPGAを1個搭載している。このボード1枚で、ピーク演算性能960GFlopsを46Wで実現している。

GRAPE-8チップ2個とPCIe用のFPGAを搭載したボード

このeASICの開発費は30万ドル程度で、天文の重力N体問題だけでも支出可能な予算レベルである。そして、チップレベルでは480GFlopsを13Wとエネルギー効率が高く、eASICの採用は非常に良い解になっているという。

eASICは開発費が安く、非常に高い性能/Wを達成できる