![]() |
||||||||||||||||||||||
PLAINセンターニュース第96号 |
||||||||||||||||||||||
数値シミュレーション専用エンジン |
||||||||||||||||||||||
(1) なぜ 専用エンジンを使うか |
||||||||||||||||||||||
薄田 竜太郎 |
||||||||||||||||||||||
数値演算専用エンジンは特定の種類の計算だけをCPUに代わって高速に計算するものです。数値演算は普通CPUを使って行いますが、用途によっては専用エンジンの方が適しています。数値演算専用エンジンの身近な例はパソコンやゲーム機の画像処理です。本記事では数値シミュレーションを目的とする代表的な専用エンジンとして、重力多体シミュレーション専用エンジンGRAPEと重力以外に分子間力なども計算できるように拡張したタイプの分子シミュレーション専用エンジンを中心に扱います。これらは研究目的に開発されたものと商用に販売されているものがあります。 専用エンジンの利点は目的とする用途において汎用コンピューターよりも高い計算性能が得られることです。GRAPEの最新機種であるGRAPE-6は、重力を計算する場合、1プロセッサあたり31 Gflopsの理論性能をもっています。これはスーパーコンピューター日立SR8000の1ノードの理論性能の2倍以上にあたります。GRAPE-6システム全体(1024プロセッサー)の理論性能は32 Tflopsで、汎用コンピューターでは最速のASCI Whiteの理論性能が12 Tflopsですから、その2倍以上あります。しかもGRAPE-6の開発費は推定されるASCI Whiteの価格の25分の1程度です。分子シミュレーション専用エンジンMDGRAPE-2(図)はクーロン力や分子間力を計算する場合、1プロセッサーあたり16 Gflopsの理論性能をもっています。専用エンジンは1000プロセッサーを超える大きな構成以外にシミュレーション規模に応じて数個〜数10個のプロセッサーの小さい構成でも使われています。 これらの専用エンジンは理論性能が高いだけでなく、これを使って実際のシミュレーションを高速に実行することができます。重力多体シミュレーションでは計算時間のほとんどが各質点に働く重力の計算にかかります。重力多体シミュレーション専用エンジンはこの計算を高速に行いますので、全体のシミュレーション時間を短縮できます。クーロン力の計算が含まれる分子シミュレーションの場合も計算時間のほとんどが各粒子に働く力の計算にかかります。分子シミュレーション専用エンジンはこの計算を高速に行いますので、全体のシミュレーション時間を短縮できます。汎用CPUで大きい系の重力やクーロン力を高速に計算するためにいろいろな高速アルゴリズムが考案されていますが、よく使われる高速アルゴリズムについては、アルゴリズムの一部を変更して専用エンジンでも高速に実行できることがわかっています。 専用エンジンには複数のプロセッサーがありますが、これらは効率よく並列動作させることができます。各質点に働く重力はそれぞれ独立に計算できるので、各プロセッサーにそれぞれ別の質点に働く重力の計算を割り当てると、各質点に働く重力を並列に計算できます。分子シミュレーションの場合も同様に各粒子に働く力を効率よく並列計算できます。 専用エンジンの欠点は既存のプログラムを変更する必要があることです。専用エンジンを使って力の計算をするにはCPUを使って行っている部分を専用エンジンを使うように変更しなければなりません。しかし、力の計算を行っているのは普通、シミュレーションプログラムの一部ですので、短期間で変更できる場合も多いでしょう。 これらの専用エンジンはいろいろな研究に使われています。最初のGRAPEであるGRAPE-1は1990年につくられました。GRAPEは年々性能を向上しながら、これまでに惑星形成、球状星団の進化、銀河衝突、銀河形成、銀河団の進化などの研究に使われています。これらの研究では数万個以上の質点の重力多体シミュレーションが行われています。分子シミュレーションにも使えるGRAPE型の最初の専用エンジンGRAPE-2Aは1993年につくられました。その後に開発された分子シミュレーション専用エンジンはこれまでにタンパク質の構造やイオン結晶 これらの専用エンジンのプロセッサーの性能が汎用CPUよりも優れている理由は2つあります。1つは汎用CPUは必要な回路の種類が専用エンジンよりも多いためです。まず、メモリから実行プログラムを読んで解析し、それにしたがって動作を制御する回路が必要です。専用エンジンでは行う演算は決まっているので、メモリから実行プログラムを読むことはなく、これらの回路は必要ありません。また汎用CPUは整数と浮動小数点の加減乗除のすべての種類の演算ができることが必要です。専用エンジンにはその用途に必要な種類の演算回路しか必要ありません。汎用CPUの性能を高めるためにキャッシュなどの機能を入れると、さらに多くの回路が必要になります。専用エンジンではこれらの回路が不要な分、他の演算回路やチップ内部のメモリを増やすことができます。もう1つはこれらの専用エンジンに要求される演算精度が汎用CPUよりも低いためです。汎用CPUはいろいろな用途に使われますので、浮動小数点計算を倍精度またはそれ以上の精度で計算できるようになっています。これに対して、GRAPE-6やMDGRAPE-2では演算を単精度相当で行います。重力多体シミュレーションや分子シミュレーションでは力の計算精度は単精度で十分なことが多いからです。単精度よりも低精度の専用エンジンもあります。倍精度よりも単精度の方が小さい回路で行えますので、これによって1演算あたりの回路規模を減らして、1つのプロセッサが同時に実行できる演算数を増やすことができます。 |
||||||||||||||||||||||
![]() |
||||||||||||||||||||||
|
||||||||||||||||||||||