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

         

А по строкам решетки процессов


// Рассылка блоков матрицы А по строкам решетки процессов void ABlockCommunication (int iter, double *pAblock, double* pMatrixAblock, int BlockSize) {

// Определение ведущего процесса в строке процессной решетки int Pivot = (GridCoords[0] + iter) % GridSize;

// Копирование передаваемого блока в отдельный буфер памяти if (GridCoords[1] == Pivot) { for (int i=0; i<BlockSize*BlockSize; i++) pAblock[i] = pMatrixAblock[i]; }

// Рассылка блока MPI_Bcast(pAblock, BlockSize*BlockSize, MPI_DOUBLE, Pivot, RowComm); }

6. Функция BlockMultiplication. Функция обеспечивает перемножение блоков матриц A и B. Следует отметить, что для более легкого понимания рассматриваемой программы приводится простой вариант реализации функции – выполнение операции блочного умножения может быть существенным образом оптимизировано для сокращения времени вычислений. Данная оптимизация может быть направлена, например, на повышение эффективности использования кэша процессоров, векторизации выполняемых операций и т.п.

// Умножение матричных блоков void BlockMultiplication (double *pAblock, double *pBblock, double *pCblock, int BlockSize) { // Вычисление произведения матричных блоков for (int i=0; i<BlockSize; i++) { for (int j=0; j<BlockSize; j++) { double temp = 0; for (int k=0; k<BlockSize; k++ ) temp += pAblock [i*BlockSize + k] * pBblock [k*BlockSize + j]; pCblock [i*BlockSize + j] += temp; } } }

7. Функция BblockCommunication. Функция выполняет циклический сдвиг блоков матрицы B по столбцам процессорной решетки. Каждый процесс передает свой блок следующему процессу NextProc в столбце процессов и получает блок, переданный из предыдущего процесса PrevProc в столбце решетки. Выполнение операций передачи данных осуществляется при помощи функции MPI_SendRecv_replace, которая обеспечивает все необходимые пересылки блоков, используя при этом один и тот же буфер памяти pBblock. Кроме того, эта функция гарантирует отсутствие возможных тупиков, когда операции передачи данных начинают одновременно выполняться несколькими процессами при кольцевой топологии сети.


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







Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий