Вперед: 3.4. Встроенные процедуры и функции OpenMP
Назад: 3.2.13. Директива THREADPRIVATE
К содержанию: Оглавление


3.3. Переменные окружения OpenMP

Технология OpenMP позволяет гибко управлять режимом выполнения многонитевой программы с помощью переменных окружения оболочки SHELL. В текущей версии OpenMP используется четыре переменные.

OMP_DYNAMIC - разрешает или запрещает динамическое изменение числа нитей.

setenv OMP_DINAMIC "TRUE" [csh, tcsh] 
export OMP_DINAMIC="TRUE" [sh, ksh, bash]

OMP_NUM_THREADS - устанавливает число нитей при исполнении параллельных областей приложения. Если разрешено динамическое изменение числа нитей, то эта переменная определяет максимальное число нитей.

setenv OMP_NUM_THREADS 16 [csh, tcsh]
export OMP_NUM_THREADS=16 [sh, ksh, bash]

OMP_SCHEDULE - определяет способ распределения итераций в цикле, если в директиве DO/for используется ключ SCHEDULE(RUNTIME).

setenv OMP_SCHEDULE "GUIDED,4" [csh, tcsh]
export OMP_SCHEDULE="GUIDED,4" [sh, ksh, bash]

OMP_NESTED - разрешает или запрещает вложенный параллелизм.

setenv OMP_NESTED "TRUE" [csh, tcsh]
export OMP_NRSTED="TRUE" [sh, ksh, bash]

Изменить значение переменной OMP_NESTED можно с помощью вызова функции omp_set_nested().

C/C++:

void omp_set_nested(int nested)

Fortran:

subroutine omp_set_nested(nested)
logical nested

В новом стандарте OpenMP 3.0 добавлено еще 5 новых переменных окружения.

OMP_PROC_BIND - разрешает или запрещает привязку нитей к процессорам. Возможные значения TRUE или FALSE.

OMP_STACKSIZE - определяет размер стека для создаваемых нитей. Например:

export OMP_STACKSIZE=10M 
setenv OMP_STACKSIZE 1G

OMP_WAIT_POLICY - определяет поведение нитей в режиме ожидания. Возможные значения ACTIVE и PASSIVE. В режиме ACTIVE продолжают выполняться процессорные циклы, в режиме PASSIVE процессор останавливается.

OMP_MAX_ACTIVE_LEVELS - контролирует максимальное число вложенных активных параллельных секций. Значение этой переменной должно быть целым не отрицательным числом:

setenv OMP_MAX_ACTIVE_LEVELS 2 [csh, tcsh]
export OMP_MAX_ACTIVE_LEVELS=2 [sh, ksh, bash]

OMP_THREAD_LIMIT - устанавливает макмимальное число нитей для всей OpenMP программы.



Вперед: 3.4. Встроенные процедуры и функции OpenMP
Назад: 3.2.13. Директива THREADPRIVATE
К содержанию: Оглавление