Зависание При Вызове Mpi_send

Тема в разделе "C и С++ FAQ", создана пользователем suddanila, 3 апр 2013.

  1. suddanila

    suddanila New Member

    Регистрация:
    3 апр 2013
    Сообщения:
    2
    Симпатии:
    0
    Есть простая программа на c++ / mpi (mpich2), пересылающая массив массивов (матрицу) типа double. При размере матрицы более 90х90 при вызове MPI_Send происходит зависание приложения. При меньших размерах матрицы все работает прекрасно. Ниже фрагмент кода:

    double* coefReOut = GetOneDimArray(cube->coefficientsRe, cube->coefficientsReLength, cube->coefficientsReLength);
    int count = cube->coefficientsReLength * cube->coefficientsReLength;
    MPI_Send(coefReOut, count, MPI_DOUBLE, nodeDest, 0, MPI_COMM_WORLD);

    //получаем одномерный массив из матрицы
    double* GetOneDimArray(double** array, int sizeX, int sizeY) {
    double* res = (double*) malloc(sizeof (double)*sizeX * sizeY);

    for (int i = 0; i < sizeX; i++) {
    for (int j = 0; j < sizeY; j++) {
    res[i + j * sizeX] = array[j];
    }
    }

    return res;
    }

    конструктор класса Cube:

    Cube::Cube(int size) {
    coefficientsReLength = size;

    coefficientsRe = new double*[size];
    for (int i = 0; i < size; i++) {
    coefficientsRe = new double[size];
    for (int j = 0; j < size; j++) {
    coefficientsRe[j] = 10;
    }
    }
    }


    В чем может быть проблема?
     
  2. suddanila

    suddanila New Member

    Регистрация:
    3 апр 2013
    Сообщения:
    2
    Симпатии:
    0
Загрузка...

Поделиться этой страницей