80. 相互作用の予測 (2010/1/17)
79 で、FFT について密度場、ポテンシャルを予測すれば予測値
との差分を計算すればよいはずで、その場合には計算精度は低いものでよいは
ず、というアイディアを紹介しました。これと同じことが、粒子間相互作用で
もできないものでしょうか?
FFT の場合は、 FFT 演算自体が線形の演算なので、元の密度分布の FFT に新
しい密度分布との差分の FFT を加えれば厳密に(丸め誤差以外は)新しい分布
の FFT になるわけですが、粒子間相互作用自体は位置の非線型な関数なので
位置の差による力の差は簡単には計算できません。
とはいえ、原理的には多重極展開を計算すればよいわけで、相対位置が1ステッ
プで大きく動かないなら、ハードウェアを作るなら高次項のサイズはたかがし
れていて、非常に小規模なハードウェアで相互作用を計算できるはずです。
但し、独立時間刻みとかツリーコードとかいう話では、そもそも差分をとるた
めの前のステップのデータが存在しないので、あまり上手くいきそうな気がし
ません。 MD 計算のように一定時間刻みでやるなら、前のステップの力との差
分を高次項まで低い計算精度で計算することで、実効的にハードウェアサイズ
を小さくするのは多少はできそうです。が、 FFT の場合のように劇的にはなりそうにないです。
と、こういう観点からは、線形と非線型には本質的な違いがあります。FFT で
は線形になっているのは、結局メッシュ、ないしは波数成分に密度をアサイン
する、という操作が多重極展開と同じく空間座標での展開になっているからで
す。密度一様に近い系でのクーロン力については、時間差分をとって FFT の
必要精度を減らし、その分波数を増やすことで直接計算の分を減らす、という
のが正解ということになるのかもしれません。
もちろん、たとえ多少ビット数を減らしたところで、系全体での FFT は極め
て通信負荷が高い操作であり、大して波数を増やすことはできません。これについ
ては、グローバルな FFT は大きなカットオフ距離と少ない波数で行ない、
比較的ローカルな FFT を波長の両側にカットオフをいれて実行し、
それのカットオフの内側を直接計算する、という3段階法が考えられます。
カットオフがある力のローカル領域での FFT は、計算量は増えますが
グローバルな通信は起きないようにして実行できます。
水も置く計算であれば、分子間力のうち相手が水分子の水素、酸素であるもの
が計算量の大半になるので、この分だけでも遠距離分を FFT で評価してカット
オフ距離を短くすれば相互作用の計算量は大きく減るはずです。まあ、並列化
効率が落ちるかもしれませんが、計算量減少の効果のほうがもちろん必ず大き
いわけで、これは大した問題ではありません。