- •В.П. Гергель, р.Г. Стронгин Основы параллельных вычислений для многопроцессорных вычислительных систем
- •1. Принципы построения параллельных вычислительных систем
- •2. Моделирование и анализ параллельных вычислений
- •3. Оценка коммуникационной трудоемкости параллельных алгоритмов
- •4. Параллельные численные алгоритмы для решения типовых задач вычислительной математики
- •5. Модели функционирования параллельных программ
- •6. Учебно-практическая задача: Решение дифференциальных уравнений в частных производных
- •Введение
- •"Многопроцессорные системы и параллельное программирование"
- •1. Цели и задачи курса
- •1. Цель преподавания курса
- •2. Задачи курса
- •3. Дисциплины, изучение которых необходимо при освоении данного курса
- •2. Принципы построения параллельных вычислительных систем
- •4. Принципы разработки параллельных алгоритмов и программ
- •6. Параллельные численные алгоритмы для решения типовых задач вычислительной математики
- •Часть 2. Методы параллельного программирования для вычислительных систем с общей памятью
- •8. Практикум по использованию библиотек параллельных методов для решения сложных научно-технических задач - 4 часа
- •9. Практикум по методам параллельных вычислений для решения задач многомерной многоэкстремальной оптимизации -4 часа
- •Учебно-методические материалы по дисциплине Основная литература
- •Дополнительная литература
- •Учебно-методические пособия
- •Информационные ресурсы сети Интернет
- •1. Принципы построения параллельных вычислительных систем
- •1.1. Пути достижения параллелизма
- •1.2. Классификация вычислительных систем
- •1.3. Характеристика типовых схем коммуникации в многопроцессорных вычислительных системах
- •1.4. Высокопроизводительный вычислительный кластер ннгу
- •4. Параллельные численные методы для решения типовых задач вычислительной математики
- •4.1. Вычисление частных сумм последовательности числовых значений
- •Последовательный алгоритм суммирования
- •Каскадная схема суммирования
- •Модифицированная каскадная схема
- •Вычисление всех частных сумм
- •4.2. Умножение матрицы на вектор
- •Достижение максимально возможного быстродействия ()
- •Использование параллелизма среднего уровня ()
- •Организация параллельных вычислений при
- •Использование ограниченного набора процессоров ()
- •4.3. Матричное умножение
- •Макрооперационный анализ алгоритмов решения задач
- •Организация параллелизма на основе разделения данных
- •4.4. Сортировка
- •Параллельное обобщение базовой операции сортировки
- •Пузырьковая сортировка
- •Сортировка Шелла
- •Быстрая сортировка
- •4.5. Обработка графов
- •Нахождение минимально охватывающего дерева
- •Поиск кратчайших путей
- •6. Учебно-практическая задача: Решение дифференциальных уравнений в частных производных
- •6.1. Последовательные методы решения задачи Дирихле
- •6.2. Организация параллельных вычислений для систем с общей памятью
- •Использование OpenMp для организации параллелизма
- •Проблема синхронизации параллельных вычислений
- •Возможность неоднозначности вычислений в параллельных программах
- •Проблема взаимоблокировки
- •Исключение неоднозначности вычислений
- •Волновые схемы параллельных вычислений
- •Балансировка вычислительной нагрузки процессоров
- •6.3. Организация параллельных вычислений для систем с распределенной памятью
- •Разделение данных
- •Обмен информацией между процессорами
- •Коллективные операции обмена информацией
- •Организация волны вычислений
- •Блочная схема разделения данных
- •Оценка трудоемкости операций передачи данных
6.1. Последовательные методы решения задачи Дирихле
Одним из наиболее распространенных подходов численного решения дифференциальных уравнений является метод конечных разностей (метод сеток) [5,11]. Следуя этому подходу, область решения представляется в виде дискретного (как правило, равномерного) набора (сетки) точек (узлов). Так, например, прямоугольная сетка в области может быть задана в виде (рис. 6.1)
где величина задает количество узлов по каждой из координат области.
Обозначим оцениваемую при подобном дискретном представлении аппроксимацию функции в точкахчерез. Тогда, используяпятиточечный шаблон (см. рис. 6.1) для вычисления значений производных, уравнение Пуассона может быть представлено в конечно-разностной форме
.
Данное уравнение может быть разрешено относительно
.
Разностное уравнение, записанное в подобной форме, позволяет определять значение по известным значениям функциив соседних узлах используемого шаблона. Данный результат служит основой для построения различныхитерационных схем решения задачи Дирихле, в которых в начале вычислений формируется некоторое приближение для значений , а затем эти значения последовательно уточняются в соответствии с приведенным соотношением. Так, например,метод Гаусса-Зейделя для проведения итераций уточнения использует правило
,
по которому очередное k-ое приближение значения вычисляется по последнемуk-ому приближению значений ии предпоследнему (k-1)-ому приближению значений и. Выполнение итераций обычно продолжается до тех пор, пока получаемые в результате итераций изменения значенийне станут меньше некоторой заданной величины (требуемой точности вычислений). Сходимость описанной процедуры (получение решения с любой желаемой точностью) является предметом всестороннего математического анализа (см., например, [5,11]), здесь же отметим, что последовательность решений, получаемых методом сеток, равномерно сходится к решению задачи Дирихле, а погрешность решения имеет порядок .
Рис. 6.1. Прямоугольная сетка в области D (темные точки представляют внутренние узлы сетки, нумерация узлов в строках слева направо, а в столбцах - сверху вниз).
Рассмотренный алгоритм (метод Гаусса-Зейделя) на псевдокоде, приближенного к алгоритмическому языку С++, может быть представлен в виде:
// Алгоритм 6.1
do {
dmax = 0; // максимальное изменение значений u
for ( i=1; i<N+1; i++ )
for ( j=1; j<N+1; j++ ) {
temp = u[i][j];
u[i][j] = 0.25*(u[i-1][j]+u[i+1][j]+
u[i][j-1]+u[i][j+1]–h*h*f[i][j]);
dm = fabs(temp-u[i][j]);
if ( dmax < dm ) dmax = dm;
}
} while ( dmax > eps );
(напомним, что значения при индексахявляются граничными, задаются при постановке задачи и не изменяются в ходе вычислений).
Рис. 6.2. Вид функции в примере для задачи Дирихле
Для примера на рис. 6.2 приведен вид функции , полученной для задачи Дирихле при следующих граничный условиях:
Общее количество итераций метода Гаусса-Зейделя составило 210 при точности решения и(в качестве начального приближения величиниспользовались значения, сгенерированные датчиком случайных чисел из диапазона [-100,100]).