Тип данных MPI для 2D-массива

В течение нескольких часов я пытался отправить 2D-массив через MPI в другой поток. Код выглядит так (я оставлю комментарии, чтобы показать трюки, которые я уже пробовал):

Определение типа:

// Define datatype
//MPI_Type_contiguous(N, MPI_INT, &mpi_vector);
//MPI_Type_vector(N, N, N, mpi_vector, &mpi_matrix);
//MPI_Type_vector(N, N, N, MPI_INT, &mpi_matrix);
//MPI_Type_contiguous(N, MPI_INTEGER, &mpi_vector);
//MPI_Type_contiguous(N, mpi_vector, &mpi_matrix);
MPI_Type_vector(N, N, 0, MPI_INTEGER, &mpi_matrix);
//MPI_Type_commit(&mpi_vector);
MPI_Type_commit(&mpi_matrix);

Отправка и получение:

int** tmp = new int*[N];
switch(r) {
case T1:
    inputMatrix(tmp, 2);
    MPI_Send(tmp, 1, mpi_matrix, T2, 0, MPI_COMM_WORLD);
    //task_T1();
    break;
case T2:
    //task_T2();
    inputMatrix(tmp, -1);
    MPI_Recv(tmp, 1, mpi_matrix, T1, 0, MPI_COMM_WORLD, &s);
    for(int i = 0; i < N; i++)
    {
        for(int j = 0; j < N; j++) {
            cout << "  " << tmp[i][j];
        }
        cout << endl;
    }
    break;
}

Мне нужно сделать это до утра (через 7 часов), Я надеюсь, что кто-то может мне помочь.

0
задан Andrew Dryga 30 May 2012 в 21:26
поделиться