このコプロセッサのたくさんの単純な計算を複数の小さなコンピュータで並列処理させる考えは、シミュレータなどの科学計算にも有効だとの考えが生まれました。
シミュレーションといっても実に多様ですが、実は多くのシミュレーションは膨大な数の単純な演算から成り立っています。
いま、単純な2次元の例で考えてみます。多くのシミュレーションでは解析する対象をセルと呼ばれる小さな領域に分けて解析します(図10)。
このセルの形状はいろいろなものがあり、大きさも均一に分けたり、境界部を外形に合わせたり、変化の大きいところを細かく分けたりといろいろです。
ここでは最も単純な正方形にします。
セルAにはセルa、b、c、dの4つのセルが接しています(図11)。
セルAとセルaの持つエネルギー(電圧や電界、磁界、温度などシミュレータによって異なります)の差によってある伝達関数FaでAとaの間でエネルギーが移動します。同じようにAとbの間の伝達関数はFb、AとcはFc、AとdはFdとなります(図12)。
この伝達関数はシミュレータによっていろいろありますが、関数自体はそれほど複雑なものではありません。
いまA、a、b、c、dの持つエネルギーをEA(t)、Ea(t)、Eb(t)、Ec(t)、Ed(t)とすると次のタイミングではAの持つエネルギー、EA(t+1)は、
EA(t+1)=E(At)+Fa(E(At)−E(at))+
Fb(EA(t)−Eb(t))+Fc(EA(t)−Ec(t))
+Fd(EA(t)−Ed(t))
となります(図13)。
伝達関数を使ったこの演算自体はそれほど複雑なものではありません。しかし、その演算数は膨大なものとなります。セルaはA以外にも3つのセルに接しています。セルb、c、dも同様に他のセルと接しています。
全てのセルに対してこの単純な演算を実行した結果、次のタイミングでの各セルの状態が分かり、それが次のタイミングでの計算のデータになります。これが3次元になればセルの総数もお互いに接するセルの数も増えます。セルの形状が複雑になれば、また、セルの総数もお互いに接するセルの数も増えます。
このような比較的簡単な演算を、膨大な数で行うには、多くのコプロセッサで並列処理をさせるのが効率的です。
このため科学計算用のアクセラレータが製品化されました。例えば、インテル社のXeonPhiコプロセッサでは幾つかの製品がありますが、60個程度のコプロセッサと、6〜16GBのメモリからなっています(図14)。
コプロセッサは4つの演算が並列処理できます。これがPCI-Expressボードに組み込まれ、1つのシステムで、複数枚を実装することができます。このような、メモリバスの並列化を見越して、新しいメモリ規格であるWide I/O規格では512bitのバス幅、規格策定中のHBM規格では1024bitのバス幅を規格としています。
もちろん今後、全てのコンピュータが多数のコプロセッサを持ち、大きな並列バスをもつとは限りません。
今後、ますます増大するネットワークをコントロールするためのネットワークサーバ、膨大なビッグデータを処理するためのコンピュータなど、求められる機能は同じではありません。
今後は、単純にコンピュータとか、スーパーコンピュータというだけでなく、目的とするアプリケーションに最適化されたコンピュータが求められてくるでしょう。
前田 真一(マエダ シンイチ)
KEI Systems、日本サーキット。日米で、高速システムの開発/解析コンサルティングを手掛ける。
近著:「現場の即戦力シリーズ 見てわかる高速回路のノイズ解析」(技術評論社)
Copyright © ITmedia, Inc. All Rights Reserved.