地球シミュレータと呼ぶ以上は地球の全てをシミュレーションしないと逝けない.
しかしやってるのは大気や海洋シミュレーションばかりである.
そりゃそうだ.いくら40Tflops(10TB)の性能が有っても地球をまるごとシミュレーションするには
全然性能が足りてないんだから.
ではどのくらいの性能があれば地球の全てをリアルタイムにシミュレーション出来るのか考えてみよう.
君たちの思考だって脳内の化学反応で全て説明が付くはずだ.
もしも実時間以上の高速なシミュレーションが可能になればコレから先に起こる全てが判る.
ほとんど神.
まず地球をシミュレーションするとはどういうことかというと,
地球を構成する物質すべての動きを計算するってことだろう.
ようするに分子動力学のシミュレーション(MD)ってことだ.
もちろん良い精度を求めるなら電子の分布も考えて第一原理で実行すべきだ.
しかし地球規模のシミュレーションなら電子の影響なんて微々たるものか?
うーむ電子はもの凄い影響があるような気もしないでもないが,
まぁ面倒だから以下古典力学のMDで考える.
まず皆が高校で習ったアボガドロ数がある.
これは6.02×10^23という数字だ.これだけの原子を集めれば(原子量グラム)になる.
ちなみに現在のシミュレーションでは多くても一千万(10^7)粒子程度かな?
地球上に最も多い分子はケイ素(Si)だ.Siの原子量は28.0855だ.面倒だから28とする.
地球の質量は5.974×10^27g(理科年表2003)だ.面倒だから地球は全てケイ素だとすると,
地球は(5.974×10^27)÷28=2.133×10^26(mol)
N=(2.133×10^26)×(6.02×10^23)=1.284×10^49個の分子で出来ていることになる.
さてこれだけの分子の動きをシミュレーションするにはどれだけのメモリが必要になるだろう?
MDの計算では分子の現在の位置と速度から次の粒子のポジションを計算する.
少なくとも1粒子当たり,
粒子のIDとその電荷,3次元の位置情報と速度情報をメモリする必要になる.
面倒だから電荷は+1か-1のトータル0にするとして単精度(32bit),
粒子のIDと速度情報は倍精度(double)64bitでもいいだろう.
位置情報は全ての粒子に対してユニークになる必要がある.
よってデータサイズは少なくとも粒子数の3乗根以上にしなければならない.
つまり2.34×10^16を保持出来るデータサイズが必要だがこれも倍精度で問題ない.
以上から必要なデータサイズは1粒子当たり,
粒子のIDと速度と位置と電荷が必要だから,
8Byte(64bit)×7+4byte(32bit)=60Byte
地球全体の分子で
60×1.284×10^49=7.7×10^50B となる.
これに計算用のメモリ等々必要になるだろうから8×10^50Bということにする.
テラに直すと8×10^38TBか,大体今の地球シミュレータの
10000000000000000000000000000000000000倍ぐらいのメモリが必要な訳だ.
次にシミュレーションの手法を考えよう.
MDといっても色々な方法があるわけだ.
MDの計算の大半は粒子間のポテンシャルの計算だ.
粒子数をNとすると,MDの場合なにも工夫しないと計算量はO(N^2)になる.
LJポテンシャルならカットオフすればO(N)にすることが出来るが
地球上の分子間力なんて大半はクーロン力なんじゃないかな?
クーロン力のような長距離力ではカットオフはしない方がいいようだからやめておく.
エワルドの方法なら計算量はO(N^3/2)くらいに出来るらしいが
非周期境界条件では出来ないから止める.
ツリー法ならO(NlogN),FMMならO(N)に出来るそうなのでO(N)になるFMMでやるべきか?
まぁとにかくO(N)より計算量が少なくなる方法を著者は知らぬので計算量はO(N)ということにする.
次に計算速度の問題を考えよう.
計算量はO(N)で係数は無視してもいいとして,タイムステップの間隔Δtをどのくらいにするか
という問題がある.面倒なのでよく使われる1fs(10^-15)ぐらいでいいか?
結局,CPUの性能としては8×10^50Bのデータを1(sec)で10^15回処理できる性能があれば
リアルタイムにシミュレーションできるってことだ.
floatを64bit(8Byte)だとして計算すると,
(地球シミュレータがfloat=64bitなのかは知らぬが
TOP500で使うベンチマークのhplは32bit機も64bit機もソース同じだからよしとする)
8×10^50B=1.25×10^49(float)
(1.25×10^49)×10^15=1.25×10^64(flops)
テラに直すと1.25×10^52(Tflops)か.大体今の地球シミュレータの
10000000000000000000000000000000000000000000000000倍ぐらいのCPU性能が必要な訳だ.
実時間の100倍早送りをしてみたかったらこれの100倍は必要だな.
最後に地球上の原子の配置等の初期データの入力作業が必要だが.
これはSEに徹夜でやってもらうから万事問題ない.
まぁかなりいい加減な見積もり方をしてきたし,
ちょっとでもシミュレーションしてる人が読んだらアフォか氏ねと突っ込みたくなるだろうが
懲りずに次回は宇宙シミュレータの見積もりをしてみたいと思う
宇宙シミュレーションでは地球の存在なんざ丸め誤差だね
人間の存在なんざ打ち切り誤差だ
・真地球シミュレータ仕様書
処理速度:1.25×10^52(Tflops)
メモリ:8×10^38TB
お値段:¥10^62