Теория и практика параллельных вычислений



Пример 3


// Функция для выделения памяти и инициализации исходных данных void ProcessInitialization (double* &pAMatrix, double* &pBMatrix, double* &pCMatrix, double* &pAblock, double* &pBblock, double* &pCblock, double* &pTemporaryAblock, int &Size, int &BlockSize ) { if (ProcRank == 0) { do { printf("\nВведите размер матриц: "); scanf("%d", &Size);

if (Size%GridSize != 0) { printf ("Размер матриц должен быть кратен размеру сетки! \n"); } } while (Size%GridSize != 0); } MPI_Bcast(&Size, 1, MPI_INT, 0, MPI_COMM_WORLD);

BlockSize = Size/GridSize;

pAblock = new double [BlockSize*BlockSize]; pBblock = new double [BlockSize*BlockSize]; pCblock = new double [BlockSize*BlockSize]; pTemporaryAblock = new double [BlockSize*BlockSize];

for (int i=0; i<BlockSize*BlockSize; i++) { pCblock[i] = 0; } if (ProcRank == 0) { pAMatrix = new double [Size*Size]; pBMatrix = new double [Size*Size]; pCMatrix = new double [Size*Size]; RandomDataInitialization(pAMatrix, pBMatrix, Size); } }

Пример 7.3.

Закрыть окно






Содержание  Назад  Вперед