- •Распараллеливание некоторых численных методов
- •План
- •Сумма последовательности значений
- •Походы к распараллеливанию суммирования
- •Разбиение цикла на блоки
- •Оценка количества операций
- •Эффективность
- •Конвейер
- •Графическая иллюстрация
- •Умножение матриц
- •Алгоритм Фокса
- •Алгоритм Фокса (продолжение)
- •Оценка времени Алгоритма Фокса
- •Характеристики
- •Решение систем линейных уравнений
- •Методы последовательного исключения неизвестных
- •Последовательная
- •Распараллеливание прямого хода
- •Реализация
- •Другие алгоритмы передачи
- •Оценка времени передачи
- •Иллюстрация
- •Сравнение разных методов передачи
- •Итеративные методы
- •Последовательный вариант
- •Распараллеливание
- •Параллельная реализация
- •Оценка времени
- •Иллюстрация
- •Сравнение различных матричных методов
- •Решение дифференциальных уравнений в частных
- •Дискретизация задачи
- •Пример – уравнение Лапласа
- •Решение уравнения
- •Распараллеливание
- •Реализация
- •Оценка эффективности
- •Вопросы
Оценка времени передачи
Последовательный алгоритм – порядка n3 операций
Параллельный алгоритм
Порядка n3/p последовательных операций
Порядка n2 последовательных пересылок данных
Порядка n устанослений связи
Иллюстрация
Эффективность растет при увеличении порядка матрицы
Один из самых эффективных методов
Сравнение разных методов передачи
Итеративные методы
Метод Якоби выражается значение неизвестного через значения других неизвестных
Итеративно находятся все значения
Последовательный вариант
//xnew – наступне наближення //xold – попереднє наближення
//eps – умова завершення ітераційного процесу for(;;){
for(i=0;i<n;i++){ xnew[i]=0; for(j=0; j<i; j++){
xnew[i]+=a[i][j]*xold[j];
}
for(j=i+1; j<n-1; j++){ xnew[i]+=a[i][j]*xold[j]
}
xnew[i]=(b[i]-xnew[i])/a[i][i];
}
if(abs(abs(xnew)-abs(xold))< eps) break; xold=xnew;
}
Распараллеливание
Каждый элемент нового приближения может быть вычислен параллельно с другими элементами этого же приближения
Каждый процессор содержит n/p=q строк матрицы A
Каждый процессор вычисляет свою часть приближения
Каждый процессор передает всем остальным свою часть приближения
Параллельная реализация
for(;;){ for(i=c*n/p;i<(c+1)*n/p;i++){
xnew[i]=0; for(j=0; j<i; j++){
xnew[i]+=a[i][j]*xold[j];
}
for(j=i+1; j<n-1; j++){ xnew[i]+=a[i][j]*xold[j]
}
xnew[i]=(b[i]-xnew[i])a[i][i]; allgather(xnew);
}
if(abs(abs(xnew)-abs(xold))< eps) break; xold=xnew;
}
Оценка времени
Время параллельных вычислений складывается из времени работы процессора и времени выполнения передачи
Иллюстрация
Распараллеливается достаточно эффективно
Требует синхронизации, что снижает эффективность