5

mpfr_tを使用して型の変数を送信しようとしていますMPI_Scatter。例えば:

mpfr_t *v1 = new mpfr_t[10];  
mpfr_t *v2 = new mpfr_t[10];   
MPI_Scatter(v1, 5, MPI_BYTE, v2, 5, MPI_BYTE, 0, MPI_COMM_WORLD ); 
for (int i = 0; i < 5; i++) 
    mpfr_printf("value rank %d -  %RNf \n", ProcRank, v2[i]);

それは印刷します:

value rank 0 - nan
value rank 0 - nan
value rank 0 - nan
.....
value rank 1 - nan
value rank 0 - nan

しかし、それはMPI_Bcastの仕事です。私が間違っていること。コードC/C ++、MPIlibはOpenMPI-1.6です。

4

1 に答える 1

2

sendcount を 5 に、データ型を MPI_BYTE に指定しました。これは奇妙に思えます。MPI_BYTE を使用し、5 つの mpfr_t 値を送信する場合は、5*sizeof(mpfr_t) の sendcount を指定します。もう 1 つのオプションは、独自の MPI 派生データ型を作成することです (sizeof() を取り除きたい場合)。

于 2012-06-19T00:06:43.137 に答える