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

         

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


// Функция для параллельного выполнения обратного хода метода Гаусса
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
if ( pProcPivotIter[j] < i ) {
val = pProcRows[j*Size + i] * IterResult;
pProcVector[j]=pProcVector[j] - val;
}
}
}

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







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