• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

  • Автор темы suddanila
  • Дата начала
S

suddanila

Есть простая программа на 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;
}
}
}


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

suddanila

кому интересно ответ тут (англ.)

 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!