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

suddanila

New Member
03.04.2013
2
0
#1
Есть простая программа на 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;
}
}
}


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