ノードからデータを受信する
value = MPI_Recv(rank,tag)
ランク. TODO
タグ. TODO
MPI_Sendから取得した値.
指定したノードから値を取得します. その値は,通常,関数 MPI_Sendから送信されます.
Scilab/MPIの実装に関する詳細については, 実装に関する技術的詳細を 参照ください.
MPI_Init(); rnk = MPI_Comm_rank(); sizeNodes = MPI_Comm_size(); SLV = rnk; // 便利なショートカット, マスターはランク 0 Master = ~ SLV; // その他は全てスレーブ tag=0; if Master // マスターノード for slaveId = 1:sizeNodes-1 // Send data to the slaves value = rand(100,100) + rand(100,100) * %i; MPI_Send(value, slaveId); end for slaveId = 1:sizeNodes-1 valueBack=MPI_Recv(slaveId, tag); // スレーブが期待するものを送信したか確認 assert_checkequal(valueBack,value + 1); end else // スレーブ rankSource=0; // マスターから情報を受信 value=MPI_Recv(rankSource); // 値を1つ増加 value=value+1; // マスターに戻す MPI_Send(value,0); end MPI_Finalize(); | ![]() | ![]() |