- 321 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 03:39:48 ]
- 質問です。1〜300の分子のうち今、rank0が分子を1~100個目、rank1が101~205個目、
rank2が205~300個目の速度の計算を受け持ったとします。で、計算が終わった後、 自分が受け持った分の分子の速度をそれぞれ別の全てのプロセスに渡したいとします。 ちなみにそれぞれのプロセスが受け持つ個数も総数も計算中に変動するので、 それぞれのプロセスの最初の分子の番号をista_mol、もってる個数をnum_mol n個目の分子の速度をvel_mol(n)として、 do n=1,3 CALL MPI_BCAST(vel_mol(ista_mol),num_mol,MPI_REAL8,n,MPI_COMM_WORLD,IERR) end do とやらかすと、それぞれのプロセスが持っているista_mol,num_molの値が違うので絵 受信側と送信側のアドレスと要素数がずれて困ったことになりますね。 この場合、ista_mol(n),num_mol(n)とでもしてそれぞれ別の値として持たせて、 (ista_mol(1)にrank0の値を、ista_mol(2)にrank1の値を…) do n=1,3 CALL MPI_BCAST(vel_mol(ista_mol(n)),num_mol(n),MPI_REAL8,n,MPI_COMM_WORLD,IERR) end do とでもしないとダメなんでしょうか?どう考えてももっとスマートなやりかたが ありそうなんですがどうなんでしょうか?どなたか教えていただけませんか?
|

|