Previous ToC Next

12. 他の可能性は? --- IV. 数値計算向け SIMD 付加プロセッサ (2005/12/29)

というわけで、相変わらずあれも駄目、これも駄目、という議論になっていい 加減書くほうも気分が暗くなってきますし、読む人もつまらないでしょう。結 局、これまでの議論からは以下のようなことがいえます。

というわけで、スーパーコンピューティングには将来なんかない、というので おしまいにしてもいいのですが、では私たちが今やってるのは何か?というの が問題なのでここではその話をします。

現在、私たちは GRAPE-DR というプロジェクトを進めています。GRAPE は Gravity Pipe の略であり、 DR は東大情報の平木さんが中心になって進めて きた Data Reservoir プロジェクトをさすわけですが、一応現在の公式には GRAPE-DR は

   Greatly Reduced Array of Processor Elements with Data Reduction
というものの略語、ということになっています。

で、これは一体なんじゃい、というのがお話です。

GRAPE-DR の基本的な考え方は、

この2つの要求はもちろん完全には両立しないわけで、どの辺で手を打つか、 また、実際にどんなことに使えるか、が問題になります。

基本的な考え方は GPU がアルゴリズム固定のシェーダユニットからプログラ ム可能なシェーダに切り替わったのと同じように、固定パイプラインプロセッ サをプログラム可能なプロセッサに置き換える、で、 GPU の場合と同様に SIMD で演算する(全プロセッサが同じ命令を実行する)というものです。

現在開発中のチップ(開発名は SING) では、512個のプロセッサエレメントを 集積します。 それぞれのプロセッサはサイクル毎に単精度乗算と倍精度加減 算を実行でき、また2サイクル使うことで倍精度乗算も実行できます。予定の クロックは 500MHz で、このクロックで動作すれば単精度ピーク 512 Gflops、 倍精度でもピーク 256 Gflops となります。倍精度乗算には加算ユニットも使 うので、倍精度乗算していると加算器は2サイクルに1度しか使えなくなってス ループットは同じになるために倍精度ピーク性能は単精度のちょうど半分にな ります。設計ルールは 90nm であり、既に最新というわけではありませんが まあ来年にはチップができるので時代遅れということもない、という程度です。

SING チップの特徴は、倍精度演算換算でも 256+256 個と極めて沢山の演算器を集 積した、ということです。このために、 GPU 並の低いクロックでありながら 倍精度で現在のマイクロプロセッサを 1 桁以上上回るピーク性能を実現して います(というか、する予定です)。

このように多数のプロセッサを集積するためには、1つのプロセッサが非常に 小規模なものでなければなりません。 SIMD 構成は、各プロセッサから命令を 読んで解釈する部分を完全に無くし、演算器とレジスタ等のメモリユニットだ けにできるので非常に有利です。 SING では 1つのプロセッサは

これだけでできています。レジスタファイルの語数、ポート数、メモリの語数 が極度に少ないのが近代的なプロセッサからはだいぶずれていますが、これに よってこれらのメモリ部分がプロセッサの面積に占める割合を 1/2 以下にし ています。逆にいうと、演算器がプロセッサ面積の半分程度をしめるようになっ ています。 演算器とメモリユニットはマルチプレクサでつながれるわけです が、ここでも入力ポート数を節約するためにいろいろ いじましい工夫をしてマルチプレクサのサイズを押さえています。 このように演算器以外の部分を切り詰めることで、およそ 0.6mm 角というゴ マ粒以下のサイズに単精度 1 Gflops 倍精度 512 Mflops のプロセッサをつめ こんだわけです。

プロセッサが小さくても、メモリインターフェースやプロセッサ間ネットワー クが面積を食ってはなんにもなりません。 SING では、メモリインターフェー スは 500MHz, 64 bit 幅、4GB/s 程度と高価にならず設計もまあできる範囲に し、プロセッサ間ネットワークについては基本的に放送と、総和等の縮約計算 のためのツリーネットワークしかありません。さらに、ツリーネットワークは 複数のプロセッサをグループにしてそれが葉ノードにがつくようにしてネット ワークハードウェアの回路規模をを小さくしています。 このために全プロセッ サの結果の総和はハードウェアではできず、一旦プロセッサグループの中で総 和をとる必要があり、これはグループ内プロセッサの数に比例した時間がかか ります。しかし、粒子系の計算や密行列の演算など色々な応用で、この、グルー プ間の総和だけで性能を出すのに十分であることがわかっています。

SIMD で多数のプロセッサを集積する、というアイディアは我々が最初ではあ りません。既にみたように GPU はそういうものになっていますし、数値計算 専用でも ClearSpeed 社の CSX600 が既にあります。これは東工大に多数納入されることになったというアナウン スが 2005/11 にありました。なんとなく東工大で妙な計算機というと不吉で すが、まあ、気のせいでしょう。これは今年既に出荷が始まっているはずです。

CSX600 は倍精度のピーク性能が 50 Gflops ですが、行列乗算ではピークの 1/2 しか出ないようです。理由はちょっとわからないですが、 CSX600 は SING がもっているような縮約計算のためのツリーをもたないようなので、 I/O バ ンド幅とプロセッサのローカルメモリサイズの関係から行列乗算のピーク性能 が決まっているのかもしれません。

この、行列乗算でチップ当り 25 Gflops という性能は、商業的になりたたせ るのは困難な数字、といって差し支えないと思います。現在の 2 コアの PC用 プロセッサに対して 2 倍弱の性能なのに、販売価格は(推定)数倍するからで す。SING の場合には CSX600 の 10 倍性能をつみあげたので、価格が同等なら 3年は戦えるはずです。 CSX600 の演算器の数が少ない理由は良くわかりません。テクノロジーは 130nm で1世代前ですから、さらにダイサイズが小さめならこれくらいになる かもしれません。よほど沢山売れない限り、チップのコストは初期コストが殆 どで、量産コストはあまり問題ではないので、ダイサイズを小さくするのはあ まり賢明な戦略とは思えないのですが。

CSX600 が商売になるかどうかはともかく、このような方向で高いピーク性能 を実現できることは明らかだと思います。実用になるか、特にどれくらい幅広 いアプリケーションで性能がでるかは今のところは未知数です。

GPU との大きな違いは、メモリバンド幅にあまり重点を置いていないことです。 これにより製造コストは結構下がります。まあ、どうせ開発コストが大きい、 ということはありますが。しかし、 GPU の項で述べたように、 CPU側に結果 を回収しないといけない場合にはローカルメモリに高いバンド幅があっても結 局無駄になるので、応用範囲はさして変わらないものと考えています。

まあ、新しいアーキテクチャなので、結局のところどれくらい使えるかは使っ てみないとわからないわけです。発案者としては結構なんでもできるんではな いかと実は思っているわけですが、、、

計画としては、 GRAPE-DR システムは 2008年度末に完成、 単精度 2 Pflops のピーク性能を実現する、ということになっています。

これは少なくとも、従来のベクトル計算機で動いていた計算法でそのまま性能 がでる、というものではありません。メモリバンド幅と計算速度の比がベクト ル計算機とは数百倍違うからです。 その代わりに、ピーク性能あたりの価格 は2桁以上下げることができるはずです。

個人的には、半導体技術の進歩を有効に演算速度の向上に使うために は、メモリバンド幅と計算速度の比を落とすしかない、と思います。それでは 性能がでないアルゴリズムがあるといっても、それはベクトル機に最適化され たアルゴリズムだからであり、計算量が10倍になってもかまわないからメモリ バンド幅を1/100 にできないか?というと必ずしもそういう範囲では物事を考 えていない、ということはあると思います。

GRAPE-DR のような計算機が出現することは、そのような、計算アルゴリズム の新しい可能性を開く(というか開かざるをえなくする)という意味でも意義が あることではないかと個人的には思っています。 Illiac-IV が、 SIMD 並列計算しないと性能がでない、というアーキテクチャを提出したこと で、並列アルゴリズムや並列化コンパイラの研究が進んだ、というのと似たこ とになって欲しいな、ということです。Illiac-IV 自体は成功とはいいがたい ものだったかもしれませんが、コンパイラ技術はベクトル化コンパイラに受け 継がれています。

まあ、そううまくいくかどうかはわかりません。
Previous ToC Next