1. Методы распараллеливания и модели программ, поддерживаемые OpenMP.
2. Пояснить основные принципы выполнения ниже указанных директив.
Главная директива задания нитей:
#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
3. Как задаются параллельные процессы при умножении матрицы на вектор и матрицы на матрицу в OpenMP?