Зачет по лабораторным работам курса
«Основы параллельных вычислений»
(ПМ, 2004)
Корнеев В.Д.
Параллельные алгоритмы задач:
(Алгоритмы пояснить на рисунке).
1. Умножение матрицы на вектор (MPI);
2. Умножение матрицы на матрицу (MPI, OpenMP);
3. Решение систем линейных уравнений методом Гаусса (два алгоритма) (MPI);
4. Решение систем линейных уравнений методом простой итерации (MPI, OpenMP);
5. Решение систем линейных уравнений методом сопряженных градиентов (MPI, OpenMP);
6. Умножение матриц на вычислительной системе с топологией двумерная решетка (MPI);
5. Решение задачи Пуассона в 3D пространстве методом Зейделя (MPI);
6. Сортировка множеств (MPI).
Язык MPI
(Семантика MPI–функций)
(Выполнение этих функций пояснить на рисунке)
Парные взаимодействия:
Коллективные взаимодействия:
Строители MPI-типов:
Функции задания топологий и связанные с ними:
Язык OpenMP
(Семантика OpenMP–директив)
Модель распараллеливания.
Главная директива задания нитей:
#pragma omp parallel [clause clause ...]
{
. . .
}
clause: if(условие)
private(list)
shared(list)
firstprivate(list)
copyin(list)
reduction(operator:list)
Директивы разделения работ по нитям
#pragma omp for [clause clause ...]
{
. . .
}
clause: schedule(type[,chink])
ordered
private(list)
shared(list)
firstprivate(list)
lastprivate(list)
reduction(operator:list)
nowait
Параллельные секции
#pragma omp sections [clause clause ...]
{ . . .
. . .
#pragma omp section
{ . . .
. . .
}
#pragma omp section
{ . . .
. . .
}
} // – end sections
clause: private(list)
firstprivate(list)
lastprivate(list)
reduction(operator:list)
nowait
Исполнение одной нитью
#pragma omp single [clause clause ...]
{
. . .
}
clause: private(list)
firstprivate(list)
nowait
Явное управление распределением работы
Директивы синхронизации
#pragma omp master
{
. . .
}
#pragma omp critical[name]
{
. . .
}
#pragma omp barrier
#pragma omp atomic
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.