Presentation is loading. Please wait.

Presentation is loading. Please wait.

プロセス間データ通信  齋藤グループ 小林 直樹 2003.6.6.

Similar presentations


Presentation on theme: "プロセス間データ通信  齋藤グループ 小林 直樹 2003.6.6."— Presentation transcript:

1 プロセス間データ通信  齋藤グループ 小林 直樹

2 前回の問題点 問題点 解決策 各プロセスでの計算 結果が同じファイルに出力 1/8しか結果を得られず rootプロセスに結果を集める
MPIを使って8プロセスで計算した結果 MPIを使わずに計算した結果

3 集積方法① -MPI_REDUCE- 加算 e11 e21 e31 e41 e12 e22 e32 e42 e13 e23 e33 e43
プロセス0 プロセス1 プロセス2 プロセス3 e11 e21 e31 e41 e12 e22 e32 e42 e13 e23 e33 e43 e14 e24 e34 e44 加算 e11 e12 e13 e14 e21 e22 e23 e24 e31 e32 e33 e34 e41 e42 e43 e44 call mpi_reduce(e(1,1),a(1,1),16,mpi_integer, & mpi_sum,0,mpi_comm_world,ierr)

4 集積結果① call mpi_reduce(eee(1,1), eee1(1,1), (nk*3)*nj,
(120×100行列)×8 の加算 call mpi_reduce(eee(1,1), eee1(1,1), (nk*3)*nj, & mpi_double_precision, mpi_sum, 0, mpi_comm_world, error) アームチェアナノチューブ(10,10)  nk = 40, nj = 100

5 集積方法② -MPI_GATHER- e11 e21 e31 e41 e12 e22 e32 e42 e13 e23 e33 e43 e14
プロセス0 プロセス1 プロセス2 プロセス3 e11 e21 e31 e41 e12 e22 e32 e42 e13 e23 e33 e43 e14 e24 e34 e44 送信側の引数 e11 e12 e13 e14 e21 e22 e23 e24 e31 e32 e33 e34 e41 e42 e43 e44 call mpi_gather(e(1,is),4,mpi_integer, & e(1,1),4,mpi_integer,0,mpi_comm_world,ierr) 受信側の引数

6 MPI_GATHER の注意点 各プロセスから同じ個数の値をとらなければならない プログラムの抜粋 結果 do 10 i = is, ie
a(i) = i **2 10 continue c if(myrank+1 .le. lc) then call mpi_gather(a(is), lb+1, mpi_integer, & a(is), lb+1, MPI_INTEGER, 0, mpi_comm_world, ierr) else call mpi_gather(a(is), lb,MPI_INTEGER, & a(is), lb,mpi_integer, 0, mpi_comm_world, ierr) end if a( 1) = a( 2) = a( 3) = a( 4) = 16 a( 5) = 25 a( 6) = 36 a( 7) = 49 a( 8) = a( 9) = 64 a(10) = 81 a(11) = 100 a(12) = 0 各プロセスから同じ個数の値をとらなければならない

7 集積結果② メッセージパッシング call mpi_gather(eee(1,is), (nk*3)*nj/tnode, mpi_double_precision, & eee(1,1), (nk*3)*nj/tnode, mpi_double_precision, 0, & mpi_comm_world, error) アームチェアナノチューブ(10,10)  nk = 40, nj = 96

8 今後の予定 abc-lib(対角化プログラム) の実行


Download ppt "プロセス間データ通信  齋藤グループ 小林 直樹 2003.6.6."

Similar presentations


Ads by Google