Вперед: 3.4.2. Подпрограммы синхронизации с использованием механизма замков
Назад: 3.4. Встроенные процедуры и функции OpenMP
К содержанию: Оглавление


3.4.1. Подпрограммы для работы с переменными окружения

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

C/C++:

#include <omp.h>
void omp_set_dynamic(int dynamic_threads)

Fortran:

SUBROUTINE OMP_SET_DYNAMIC(scalar_logical_expression)

Функция вызывается в последовательной области программы. В языке Фортран подпрограмма, вызванная с параметром равным .TRUE., разрешает динамическое изменение числа нитей в параллельной области, если параметер равен .FALSE., то изменение числа нитей запрещено. В языках C/C++ если значение параметра не равно 0, то динамическое изменение разрешено, в противном случае запрещено. Функция OMP_SET_DYNAMIC имеет приоритет перед переменной окружения OMP_DYNAMIC.

OMP_GET_DYNAMIC - определяет разрешено или запрещено динамическое изменение числа нитей в параллельной области.

C/C++:

#include <omp.h>
int omp_get_dynamic(void)

Fortran:

LOGICAL FUNCTION OMP_GET_DYNAMIC( )

В языке Фортран значение .TRUE. означает, что динамическое изменение числа нитей разрешено, а значение .FALSE. - запрещено. В языках C/C++, если возвращается значение не 0, то динамическое изменение разрешено, в противном случае запрещено.

OMP_SET_NUM_THREADS - устанавливает число нитей в параллельном участке.

C/C++:

#include <omp.h>
void omp_set_num_threads(int num_threads)

Fortran:

SUBROUTINE OMP_SET_NUM_THREADS(scalar_integer_expression)

Функция вызывается в последовательном участке и имеет приоритет перед переменной окружения OMP_NUM_THREADS. Если динамическое изменение числа нитей разрешено, то вызов функции определяет максимальное число нитей в участке, если запрещено, то задается точное значение числа нитей.

OMP_GET_NUM_THREADS - возвращает число нитей в текущем параллельном участке.

C/C++:

#include <omp.h>
int omp_get_num_threads(void)

Fortran:

INTEGER FUNCTION OMP_GET_NUM_THREADS( )

OMP_GET_MAX_THREADS - возвращает максимальное значение числа нитей в текущем параллельном участке.

C/C++:

#include <omp.h>
int omp_get_max_threads(void)

Fortran:

INTEGER FUNCTION OMP_GET_MAX_THREADS( )

OMP_GET_THREAD_NUM - функция возвращает номер вызвавшей ее нити.

C/C++:

#include <omp.h>
int omp_get_thread_num(void)

Fortran:

INTEGER FUNCTION OMP_GET_THREAD_NUM( )

Переменная, которой будет присваиваться значение функции, должна быть описана как PRIVATE в параллельной области. При вызове функции из последовательной области будет возвращаться 0.

OMP_GET_NUM_PROCS - функция возвращает число процессоров, доступных программе.

C/C++:

#include <omp.h>
int omp_get_num_procs(void)

Fortran:

INTEGER FUNCTION OMP_GET_NUM_PROCS( )

OMP_IN_PARALLEL - определяет сделан ли вызов из параллельной области программы.

C/C++:

#include <omp.h>
int omp_in_parallel(void)

Fortran:

LOGICAL FUNCTION OMP_IN_PARALLEL( )

В языке Фортран возврат .TRUE. означает, что вызов сделан из параллельной области, в противном случае возвращается .FALSE. В языках C/C++, если вызов сделан из параллельной области, то возвращается не 0.

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

C/C++:

#include <omp.h>
void omp_set_nested(int nested)

Fortran:

SUBROUTINE OMP_SET_NESTED(scalar_logical_expression)

В языке Фортран подпрограмма, вызванная с параметром равным .TRUE., разрешает вложенный параллелизм, если параметр равен .FALSE., то вложенный параллелизм запрещен. В языках C/C++ если значение параметра не равно 0, то вложенный параллелизм разрешен, в противном случае запрещен. Функция OMP_SET_NESTED имеет приоритет перед переменной окружения OMP_NESTED. По умолчанию вложенный параллелизм запрещен.

OMP_GET_NESTED - определяет разрешен или запрещен вложенный параллелизм

C/C++:

#include <omp.h>
int omp_get_nested(void)

Fortran:

LOGICAL FUNCTION OMP_GET_NESTED( )

В языке Фортран значение .TRUE. означает, что вложенный параллелизм разрешен, а значение .FALSE. - запрещен. В языках C/C++, если возвращается значение не 0, то вложенный параллелизм разрешен, в противном случае запрещен.

В стандарте OpenMP 3.0 в связи с появлением дополнительных переменных окружения добавлено еще 15 новых встроенных функций, список которых приведем без обсуждения:

OMP_SET_SCHEDULE,
OMP_GET_SCHEDULE,
OMP_SET_MAX_ACTIVE_LEVELS,
OMP_GET_MAX_ACTIVE_LEVELS,
OMP_GET_LEVEL,
OMP_GET_ANCESTOR_THREAD_NUM,
OMP_GET_TEAM_SIZE,
OMP_GET_ACTIVE_LEVEL,
OMP_IN_FINAL,
OMP_INIT_NEST_LOCK,
OMP_DESTROY_NEST_LOCK,
OMP_SET_NEST_LOCK,
OMP_UNSET_NEST_LOCK,
OMP_TEST_NEST_LOCK.



Вперед: 3.4.2. Подпрограммы синхронизации с использованием механизма замков
Назад: 3.4. Встроенные процедуры и функции OpenMP
К содержанию: Оглавление