93. 計算機科学とスーパーコンピューティング(2010/12/31)
2011/1/17 に 次世代スーパーコンピューティング・シンポジウム2010 および 第1回戦略プログラム5分野合同ワークショップというものがあって、
「ポストペタスーパーコンピューティング-計算機科学の立場から-」
という講演を東大情報理工の米澤先生がすることになっています。
計算機科学と計算科学の関係がどういうものかというのはなかなか難しい問題
です。これは、簡単にいってしまうと、それは計算科学は本質的に学際的であ
るのに対して、計算機科学はそもそも学際的でなくなることにより専門分野の
確立を目指すものであるからです。
この辺の、計算機科学と計算科学の違いは、
中里さんによる翻 訳がある Parallel Computing Works! の20章に書いてあるわけですが、
この当時、彼らは、計算科学というものが学科や学部として成り立ちえると考
えていたように見えます。
で、実際にそういう、少なくとも計算科学とか Computational Science とかい
う名前がついた学科は当時いくつかできたし、また日本ではここ1-2年の間に色々
できています。
さて、計算科学というのが、色々な分野での計算機シミュレーションのやり方
に共有するものを扱うような学問である、というふうに思うとすると、そうい
うものを研究する研究者というのはどういうふうにして養成できるか?という
ことが問題になります。ある分野での計算機シミュレーションについて意味が
ある研究ができるためにはその分野のことがそこそこ良くわかっていないと
いけないのですが、そうすると、複数の分野にまたがって共通なものを
扱うにはどうすればいいか、というわけです。もちろん、その複数の
分野のことが全部わかるようなスーパー(ウー)マンを育てることができれば
問題ありませんが、まあ、無理なわけです。
無理な理由は、普通は教えるほうがそういうスーパーマンではないからです。
これはまあ当たり前で、教えるほうの人はまあ例えば天文学者だとして、その
中でさらに多体シミュレーションであるとか、あるいは流体シミュレーション
とかいった個別の、割合狭い領域のことしか知らないわけです。もちろん、稀
には、複数の分野なり複数の手法なりその両方なりをちゃんとカバーできる人
もいるわけですが、そういう人が計算科学とか Computational Science とかい
う名前がついた学科の研究教育スタッフの多くを占めるわけではありません。
もちろん、これは教える側にもわかっているわけで、そうするとどうするかと
いうと、応用数学や計算機科学の研究者に分野横断的なところをやってもらお
うとするわけです。しかし、この人達はもちろん、例えば粒子法シミュレーショ
ンがどういう現象をどういうふうに計算しようとしているかなんてことは全く
知らないわけで、分野横断なんてことはできません。これは、数学や計算機科
学というものが、具体的な応用によらない一般的な何かを扱うことを目指すも
のだからです。
数学や計算機科学の立場からすれば、粒子法シミュレーションというのは
要するに
-
粒子間相互作用を高速・高精度に計算して、
-
粒子の軌道を積分すれば
よい、ということになるでしょう。で、それぞれについて、別々に一般化するわけ
で、相互作用計算は、グリッドを使うなら FFT やその他のポアソンソルバ、軌
道積分は常微分方程式の初期値問題の数値解法、ということになります。
が、実際には、天体の N 体計算にしてもプラズマシミュレーションにしても分
子動力学シミュレーションにしても、そういうふうに物事を分割してしまって
は使えるアルゴリズムを作ることはできません。例えば高精度といっても、実
際にどのような誤差ならはいってよいかは対象とする系の物理的性質や、粒子
系でモデル化した時の仮定によります。また、これは特に天体の N 体計算の場
合に問題になることですが、粒子の空間分布は一様から大きく(何桁も)ずれ、
速度もそれに応じて変わってくるので、高密度領域の粒子が必要とする短い時
間刻みで全粒子を積分するのは無駄だし、またある粒子への相互作用自体、近
くの粒子からの相互作用と遠くの粒子からの相互作用を同じ時間刻みで積分す
るのは無駄です。しかし、それではどういうふうにすればいいか、ということ
の検討には、対象とする系の中で粒子がどのように振る舞うか、また数値計算
によってみたい性質は何か、といったことへの理解が必要になります。これは
「計算機科学」の範囲の外になってしまうわけです。
で、現在では、上のような系の物理的性質、モデルの仮定といった対象側の要
請、ポアソンソルバ、常微分方程式の数値解法といった話の他に、さらに並列
化とかメモリ階層とかいったところまでわかってないと有用なアルゴリズムを
作るのはおぼつかないわけです。
並列化とかメモリ階層とかいった話(要するにここでずーっとだらだら書いて
いるような話なわけですが)はなかなか大学での教育というのは難しいもので、
というのは5年遅れの話をされても困るのに大学での講義というのは普通は
10-20年程度時代遅れだからです。
まあ、この辺は、何か良い方法がある、というわけではないのですが、
上手くいかないことが実証されたやり方に基づいて学科や研究組織を今
になって作るのはどういうものかという気がします。