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

         

Функция для параллельного выполнения обратного


// Функция для параллельного выполнения обратного хода метода Гаусса void ParallelBackSubstitution (double* pProcRows, double* pProcVector, double* pProcResult, int Size, int RowNum) { int IterProcRank; // Ранг процессора, который содержит ведущую строку int IterPivotPos; // Положение ведущей строки в полосе процессора double IterResult; // Вычисленное значение очередной неизвестной double val;
// Итерации обратного хода метода Гаусса for (int i=Size-1; i>=0; i--) {
// Вычисление ранга процессора, который содержит ведущую строку FindBackPivotRow(pParallelPivotPos[i], Size, IterProcRank, IterPivotPos);
// Вычисление значения неизвестной if (ProcRank == IterProcRank) { IterResult = pProcVector[IterPivotPos]/pProcRows[IterPivotPos*Size+i]; pProcResult[IterPivotPos] = IterResult; } // Рассылка значения очередной неизвестной MPI_Bcast(&IterResult, 1, MPI_DOUBLE, IterProcRank, MPI_COMM_WORLD);
// Обновление вектора правых частей for (int j=0; j<RowNum; j++) if ( pProcPivotIter[j] < i ) { val = pProcRows[j*Size + i] * IterResult; pProcVector[j]=pProcVector[j] - val; } } }
Пример 8.3.
Закрыть окно



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







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