と2つのMPI_Recvs
の2つのバッファを使用した場合、2つの異なるバッファがあり、各バッファからそれぞれのバッファを受け取った場合は、MPI_Send
の内容をどのバッファに渡すかを指定できますか?MPIで送信するバッファを指定できますか?
if(rank == MASTER) {
for(kk=1; kk < size; kk++) {
MPI_Recv(printbuf, numcols, MPI_DOUBLE, kk, tag, MPI_COMM_WORLD, &status);
sum = sum + printbuf[kk-1];
}
}
else {
MPI_Send(sum, local_ncols + 2, MPI_DOUBLE, MASTER, tag, MPI_COMM_WORLD);
}
if(rank == MASTER) {
for(kk=1; kk < size; kk++) {
MPI_Recv(secondbuf, numcols, MPI_DOUBLE, kk, tag, MPI_COMM_WORLD, &status);
sum2 = sum2 + secondbuf[kk-1];
}
}
else {
MPI_Send(sum2, local_ncols + 2, MPI_DOUBLE, MASTER, tag, MPI_COMM_WORLD);
}
これはOpenMPIの場合です。各ランクはsum
とsum2
を計算します。私はすべてのランク 'sum
sとsum2
の合計を取得したいと思います。より良い方法がありますか?例えば、sum
とsum2
を送信するバッファを指定することによって、以下のコードを圧縮することはできますか?
コードの改善や凝縮については、このコードを[コードレビュー](http://codereview.stackexchange.com/)のStack Exchangeに掲載します。あなたがここではなくそれを置くと、より正確で正確な回答が得られます。 – esote
reduce操作の使用を避ける理由はありますか? – Angelos
@非常識ありがとう、私はそれを試みる – FullMetalScientist