並列化プログラムの作成方法について
物理計算の並列化についてお尋ねします。計算機環境(GPU, メモリ分散(ハブ)、メモリ共有(CPU内での並列))、コンパイラの選択とかいろいろ条件があると思います。また、作りこみの度合い(本気度)によっても違うと思います。特に並列計算は並列化の度合いによって速度が急激に伸びるなどいろいろ特性があると思います。
現時点では、
通常のパソコン(Core-i7)で、コンパイラはintel fortran, OSはWindows10というごく普通の環境です。Cygwinのgfortran, Visual studioなどもあります。
物理プログラムは、構成として以下のようです。
2次元空間の時間発展の計算です。
do n=1,nt
do i=1,nx ! x方向格子へのループ
do j=1,ny ! y要綱格子へのループ
enddo ! x方向格子ループの端
enddo ! y方向格子ループの橋
enddo ! 時間方向ループの終端
stop
end
時間発展のループの中に、空間方向のループが何回も出てくるという構成です。計算が遅くなる理由は空間方向の格子数が極端に増えるからです。
このような場合、計算の速度を向上させるための並列化の方法についてゼロベースで教えて頂きたいのですが。ゼロベースなので、何から手を付けるべきかということですが。
よろしくお願いします。