1

文字列の配列を MPI のスレーブ プロセスに送信しようとしていますが、その方法がわかりません。ファイルから読み取った文字列の大きな配列があり、この配列の一部をスレーブに送信する必要があります。メインの要素からいくつかの要素を含む新しい配列を割り当てて、これを送信しようとしています。コードの送信部分は次のとおりです。

int w = 0;
int division = size / (procs -1);
for(i=1; i<procs; i++){
    //allocating
    char **array1 = (char**) malloc(sizeof(*array1) * division);
    array1[0] = (char*) malloc(sizeof(*array1[0]) * division * buf);
    for(j=1; j<division; j++)
        array1[i] = &(array1[0][i*buf]);

    // filling it up
    for(j=0; j<division; j++)
        array1[j] = array[w++];

    // sending
    MPI_Send(&array1, division[i], MPI_CHAR, i, tag, MPI_COMM_WORLD);

    // clearing memory
    free(array1);
}
printf("%d: All Sent\n", rank);

送信方法を次のように変更すると

MPI_SEND(&array[0][0] ...)

動作しますが、プロセスごとに複数の文字列を送信する必要があります。

4

2 に答える 2