近年,マイクロプロセッサの処理速度の上昇,並列計算機の発達によって,計算機システムの処理能力は飛躍的に増加している。 世界の並列計算機の動向をまとめた「TOP500リスト」によると, 世界最高速の計算機の速度は1993年6月から2006年11月の間に4,500倍にもなっている。 2006年11月現在で世界最高速(約280 TFLOPS,TFLOPSとは「TERA Floating Point Operations Per Second」の略,1秒間に1兆回の浮動小数点演算) のIBM BlueGene/Lは約130,000台のプロセッサ, 世界第14位(日本で2位,約36 TFLOPS)の「地球シミュレータ」は約5,000台の プロセッサから構成されている。
これら,国家プロジェクトによる超大型並列計算機の他,PCを連結したPCクラスタも普及している。 世界第9位(日本で1位,約47 TFLOPS)の 「TSUBAME(東京工業大学)」は約11,000コアのOpteronプロセッサを使用したクラスタである。 ネットワーク技術の発展により,広範囲に分布した大規模な計算機資源を効率的に利用する「グリッドコンピューティング」も実現されつつある。 並列計算機の使用によって,より大規模で詳細なシミュレーションを高速に実施することが可能になり, 新しい科学の開拓が期待される・・・しかしながら,いざ,自作のプログラムを並列計算機で動かそうとすると中々容易ではない。
参考になる文献も少なく,英語のものが多い。 これまで,計算機を専門としない学生に対して科学技術シミュレーションのための並列プログラミング技術を体系的に教える授業は, 日本では皆無であった。多圏地球COEの一環として平成16年度から開講された「並列計算プログラミング」,「先端計算機演習I・II」は, そうした試みの日本における最初のもののうちの一つである。
FORTRAN,C言語などで記述されたプログラムを並列計算機上で並列化するための手段の代表的なものとして MPI(Message Passing Interface)というプロセッサ間通信のための 共通規格がある。MPIには400以上の関数があるが,科学技術シミュレーションにおいて必要になるのは10程度である。 本授業では,科学技術シミュレーション手法を,局所的手法(差分法,有限要素法等)と大域的手法(境界要素法,スペクトル法等)に分類し, それぞれを並列化するために必要な最小限のMPI関数(1対1通信,グループ通信)について教え, あとはできるだけ実習によって経験を積んでもらうこととする。
アメリカのメリーランド大学(University of Maryland)で Applied Mathematics and Scientific Computation Programという コンピュータサイエンスと科学技術シミュレーションのジョイントプログラムを主宰している David Levermore教授によると, 科学技術シミュレーションの真髄は「SMASH」,すなわち,
本授業の中で強調したいことは以下の4点である: