Message Passing Interface (MPI) 統合スレ
■ このスレッドは過去ログ倉庫に格納されています
0321デフォルトの名無しさん
2009/04/03(金) 03:39:48rank2が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
とでもしないとダメなんでしょうか?どう考えてももっとスマートなやりかたが
ありそうなんですがどうなんでしょうか?どなたか教えていただけませんか?
■ このスレッドは過去ログ倉庫に格納されています