私はプログラムを作成しています。ここでは、C言語のMPIで2-4のプロセスが使われます。私は、実際の行の下にある各行を、サイクリックマッピングによって異なるプロセスに送信しています。MPI - 行列の行を送受信する
行列5 * 6に対して、アクティブな行0と4つのプロセスがある場合、行1をプロセス1に、行2をプロセス2に、行3をプロセス3に、行4をプロセス1に再度送ります。私はいくつかの計算を行い、いくつかの値をプロセス0に戻したいと考えています。プロセス0では、元の行列にそのeseを追加します。私の質問は、どのSendとRecvコールを使うべきですか?
いくつかの理論的なコードがあります:
if(master){
for(...)
//sending values to other processes
}
for(...)
//recieving values from other processes
}
}else{//for other non-master processes
recieve value from master
doing some computing
sending value back to master
}
私だけの単純なブロッキング送信を使用する場合は、行1と4を取得するので、私は、プロセス1に何が起こるか分からない、と私はCALれる前にrecv in master、プロセス1の私の価値 - 行1は行4で上書きされるので、私は1セットのデータが欠けているでしょうか?私の質問では、どのような種類のMPI_Sendを使うべきですか?
こんにちは、はい、それは教育目的のため、回答ありがとうございます – Waypoint