光速を超える計算速度

数値計算をmany coreの計算機で行うと、ほとんどの数値計算では、演算器の計算速度に対して、メモリからのデータ転送が追いつかずに計算資源が無駄になる。

僕はこの手の問題の解決の一つに、解く方程式系を相対論化するというのがあると思う。相対論の重要な帰結の一つに「因果律」がある。つまり、いかなる情報も光速を超えて伝達しない。

ところが、非相対論的な方程式は、因果律を破る。局所的な変化が次の瞬間に全体に伝わる。

逆にいうと、局所的な物理量の変化をみるには、全体の情報が必要となることを意味する。非相対論的な方程式系を計算機上でに実行するとなると、大量のメモリ転送が必要となる。追記に説明あり。

これが計算機のパフォーマンスを著しく落とす原因となっていて、メモリ転送を抑えるアルゴリズムの開発が求められている。

メモリ転送の問題に取り組む方法の一つとして、相対論化した方程式系を解かせるというのがあるのではないかと考えている。

そもそも、局所的な物理量の変化を調べるのに、全体の物理量の変化を知らなくてはならないというのが、馬鹿げている。因果律を考慮されてない方程式系は、どんなにアルゴリズムを工夫しても、結局のところそういう自然が求めていない馬鹿げた計算をしているのである。

もし、方程式系を相対論化することができれば、メモリ転送が隘路になっている問題は本質的に解決するのではないかと思う。

例えば、気象現象などの、空間的に大きなスケールの問題を解く場合は、光速によって制限された領域のデータを十分に短い時間で演算器にメモリ転送を行うことができる。

光速による因果律を考慮した場合は、計算機のメモリ転送速度が文字通り光速を超えるときが来るかもしれない。


最後にまとめる。メモリ転送の問題は、因果律の制限を受けない大量のメモリ転送を行っていることにある。これは相対性理論を考慮すると本来は必要とされてないことである。相対論的な定式化からスタートすれば、物理的にもより正しく、メモリ転送の問題が解決するシミュレーションを行うことが可能になる。

どうでしょうかね?

とは言っても、その相対論化が難しいのだが‥

追記

何を言っているかわからないという意見があったので、少し説明。

計算機で解く場合は微分方程式を離散化させる。そうすると、 x=A^{-1}yの形をした問題を解くことになる。ここで注意したいのはAは疎行列であるが、その逆行列 A^{-1}は必ずしも疎行列でなく、密行列になっていることだ。行列Aの例は、 微分方程式の差分解法の基礎、(2.35)とか。つまり、ベクトルxの一成分を求めるのに、ベクトルyの成分の大部分が必要になる。これは、計算量もさることながら、大量のメモリ転送が必要になることを意味する。

因果律を考慮すれば、ある時間スケールにおいて、求めるベクトルxに必要なベクトルyの成分が少なくなるはずである。つまり、 A^{-1}も疎行列になるはずである。こうなると計算量も大幅に削減できるし、メモリ転送も抑えることができる。