В этом приложении приведен список и краткое описание директив и функций OpenMP.
Директива | Описание |
---|---|
parallel [<параметр>...] | Директива определения параллельного фрагмента в коде программы. Параметры: if, private, shared, default, firstprivate, reduction, copyin, num_threads |
for [<параметр>...] | Директива распараллеливания циклов. Параметры: private, firstprivate, lastprivate, reduction, ordered, nowait, schedule |
sections [<параметр>...] | Директива для выделения программного кода, который далее будет разделен на параллельно выполняемые параллельные секции. Выделение параллельных секций осуществляется при помощи директивы section. Параметры: private, firstprivate, lastprivate, reduction, nowait |
section | Директива выделения параллельных секций - должна располагаться в блоке директивы sections. |
single [<параметр>...] | Директива для выделения программного кода в параллельном фрагменте, исполняемого только одним потоком. Параметры: private, firstprivate, copyprivate, nowait |
parallel for [<параметр>...] | Объединенная форма директив parallel и for. Параметры: private, firstprivate, lastprivate, shared, default, reduction, ordered, schedule, copyin, if, num_threads |
parallel sections [<параметр>...] | Объединенная форма директив parallel и sections. Параметры: private, firstprivate, lastprivate, shared, default, reduction, copyin, if, num_threads |
master | Директива для выделения программного кода в параллельном фрагменте, исполняемого только основным (master) потоком |
critical [(name)] | Директива для определения критических секций |
barrier | Директива для барьерной синхронизации потоков |
atomic | Директива для определения атомарной (неделимой) операции |
flush [list] | Директива для синхронизации состояния памяти |
threadprivate (list) | Директива для определения постоянных локальных переменных потоков |
ordered | Директивы управления порядком вычислений в распараллеливаемом цикле. При использовании данной директивы в директиве for должен быть указан одноименный параметр ordered |
Параметр | Описание |
---|---|
private (list) | Параметр для создания локальных копий для перечисленных в списке переменных для каждого имеющегося потока. Исходные значения копий не определены. Директивы: parallel, for, sections, single |
firstprivate (list) | Тоже что и параметр private и дополнительно инициализация создаваемых копий значениями, которые имели перечисленные в списке переменные перед началом параллельного фрагмента. Директивы: parallel, for, sections, single |
lastprivate (list) | Тоже что и параметр private и дополнительно запоминание значений локальных переменных после завершения параллельного фрагмента. Директивы: for, sections |
shared (list) | Параметр для определения общих переменных для всех имеющихся потоков. Директивы: parallel |
default (shared | none) | Параметр для установки правила по умолчанию на использование переменных в потоках. Директивы: parallel |
reduction (operator: list) | Параметр для задания операции редукции. Директивы: parallel, for, sections |
nowait | Параметр для отмены синхронизации при завершении директивы. Директивы: for, sections, single |
if (expression) | Параметр для задания условия, только при выполнении которого осуществляется создание параллельного фрагмента. Директивы: parallel |
ordered | Параметр для задания порядка вычислений в распараллеливаемом цикле. Директивы: for |
schedule (type [, chunk]) | Параметр для управления распределением итераций распараллеливаемого цикла между потоками. Директивы: for |
copyin (list) | Параметр для инициализации постоянных переменных потоков. Директивы: parallel |
copyprivate (list) | Копирование локальных переменных потоков после выполнения блока директивы single. Директивы: single |
num_treads | Параметр для задания количества создаваемых потоков в параллельной области. Директивы: parallel |
Функция | Описание |
---|---|
void omp_set_num_threads (int num_threads); | Установить количество создаваемых потоков |
int omp_get_max_threads (void); | Получение максимально возможного количества потоков |
int omp_get_num_threads (void); | Получение количества потоков в параллельной области программы |
int omp_get_thread_num (void); | Получение номера потока |
int omp_get_num_procs (void); | Получение числа вычислительных элементов (процессоров или ядер), доступных приложению |
void omp_set_dynamic (int dynamic); | Установить режим динамического создания потоков |
int omp_get_dynamic (void); | Получение состояние динамического режима |
void omp_set_nested (int nested); | Установить режим поддержки вложенных параллельных фрагментов |
int omp_get_nested (void); | Получения состояние режима поддержки вложенных параллельных фрагментов |
void omp_init_lock (omp_lock_t *lock); void omp_init_nest_lock (omp_nest_lock_t *lock); |
Инициализировать замок |
void omp_set_lock (omp_lock_t &lock); void omp_set_nest_lock (omp_nest_lock_t &lock); |
Установить замок |
void omp_unset_lock (omp_lock_t &lock); void omp_unset_nest_lock (omp_nest_lock_t &lock); |
Освободить замок |
int omp_test_lock (omp_lock_t &lock); int omp_test_nest_lock (omp_nest_lock_t &lock); |
Установить замок без блокировки |
void omp_destroy_lock (omp_lock_t &lock); void omp_destroy_nest_lock (omp_nest_lock_t &lock); |
Перевод замка в неинициализированное состояние |
double omp_get_wtime (void); | Получение времени текущего момента выполнения программы |
double omp_get_wtick (void); | Получение времени в секундах между двумя последовательными показателями времени аппаратного таймера |
int omp_in_parallel (void); | Проверка нахождения программы в параллельном фрагменте |
Переменная | Описание |
---|---|
OMP_SHEDULE | Переменная для задания способа управления распределением итераций распараллеливаемого цикла между потоками. Значение по умолчанию: static |
OMP_NUM_THREADS | Переменная для задания количество потоков в параллельном фрагменте. Значение по умолчанию: количество вычислительных элементов (процессоров/ядер) в вычислительной системе |
OMP_DYNAMIC | Переменная для задания динамического режима создания потоков. Значение по умолчанию: false |
OMP_NESTED | Переменная для задания режима вложенности параллельных фрагментов. Значение по умолчанию: false |