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

         

Функция для рассылки строки всем


// Функция для рассылки строки всем процессам void RowDistribution(int *pProcRows, int Size, int RowNum, int k, int *pRow) { int ProcRowRank; // Ранг процесса, которому принадлежит k-я строка int ProcRowNum; // Номер k-й строки в полосе матрицы
// Нахождение ранга процесса – владельца k-й строки int RestRows = Size; int Ind = 0; int Num = Size / ProcNum;
for(ProcRowRank = 1; ProcRowRank < ProcNum + 1; ProcRowRank ++) { if(k < Ind + Num ) break; RestRows -= Num; Ind += Num; Num = RestRows / (ProcNum - ProcRowRank); } ProcRowRank = ProcRowRank - 1; ProcRowNum = k - Ind;
if(ProcRowRank == ProcRank) // Копирование строки в массив pRow copy(&pProcRows[ProcRowNum * Size], &pProcRows[(ProcRowNum + 1) * Size], pRow);
// Распределение k-й строки между процессами MPI_Bcast(pRow, Size, MPI_INT, ProcRowRank, MPI_COMM_WORLD); }
Пример 10.2.
Закрыть окно



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







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