私はMPIを学び始めました。私が得た問題の理由は私には分かりません。出力の0が処理されないのはなぜですか?
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <mpi.h>
int main(int argc, char *argv[])
{
int myRank, size;
double myLeftBound, myRightBound;
MPI_Status status1;
MPI_Status status2;
MPI_Request request1;
MPI_Request request2;
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &myRank);
MPI_Comm_size(MPI_COMM_WORLD, &size);
if (myRank == 0)
{
int counter;
for (counter = size - 1; counter >= 0; counter--)
{
myLeftBound = 0;
myRightBound = 1;
MPI_Isend(&myLeftBound, 1, MPI_DOUBLE, counter, 2 * counter, MPI_COMM_WORLD, &request1);
MPI_Isend(&myRightBound, 1, MPI_DOUBLE, counter, 2 * counter + 1, MPI_COMM_WORLD, &request2);
}
}
MPI_Recv(&myLeftBound, 1, MPI_DOUBLE, 0, myRank * 2, MPI_COMM_WORLD, &status1);
MPI_Recv(&myRightBound, 1, MPI_DOUBLE, 0, myRank * 2 + 1, MPI_COMM_WORLD, &status2);
printf ("I received my left boundary %f\n, I'm %d\n", myLeftBound, myRank);
MPI_Finalize();
return 0;
}
一つは
(プロセスの数が4である)私は私の左境界0.000000
を受け、次のされて、私は私が私の左の境界0.000000を受けた1
よ
、私は2
は、私は、私は3
アサーションがファイルに失敗してる私の左境界0.000000
を受けたのsrc/MPID/CH3/SRC/ch3u_buffer.c行77時:FALSE memcpyの引数メモリは範囲の重複、dst_ = 0x7ffcc26963d0 SRC_ = 0x7ffcc26963d0 len_ = 8
内部ABORT - プロセス0
プロセス0が悪いのか?