Задание переменных окружения с помощью функций runtime OpenMP
В программах, написанных на C/C++ с использованием OpenMP, существуют следующие возможности задания переменных окружения, определяющих режимы работы параллельных частей программ.
С помощью вызова функции
(void) omp_set_num_threads(int num_threads)можно задать число потоков в области параллельных вычислений, т. е. определить значение переменной окружения OMP_NUM_THREADS. При завершении работы эта функция не возвращает в программу никаких значений.
Функция
int omp_get_num_threads()напротив, возвращает в программу целочисленное значение, равное количеству параллельных потоков в текущий момент времени.
Следующая функция
int omp_get_max_threads()возвращает в программу целочисленное значение, равное максимальному количеству параллельных потоков, которое может быть возвращено функцией omp_get_num_threads.
Для определения номера параллельного потока в текущий момент времени программы можно воспользоваться функцией
int_omp_get_thread_num()Она возвращает целочисленное значение в диапазоне от 0 до OMP_NUM_THREADS-1.
Определить количество процессоров, доступных программе в текущей точке, можно с помощью функции
int omp_get_num_procs()Следующая функция позволяет идентифицировать, в какой области программы (параллельной или последовательной) в текущий момент времени проводятся вычисления
(int/logical) omp_in_parallel()Она возвращает значение TRUE или 1 в точке параллельной области программы и FALSE или 0 в точке последовательной области программы.
Задать или отменить динамический режим работы программы можно, воспользовавшись функцией
(void) omp_set_dynamic( TRUE | FALSE )Для задания динамического режима следует использовать параметр TRUE, а для его отмены - параметр FALSE. При этом в списке переменных окружения определяется или удаляется переменная окружения OMP_DYNAMIC или задается ее значение, соответственно равное TRUE или FALSE.
Следующая функция позволяет идентифицировать, какой режим работы параллельной части программы (динамический или статический) осуществляется в текущий момент времени при вызове функции
(int/logical) omp_get_dynamic()Эта функция возвращает значение TRUE или 1, если режим динамический, и FALSE или 0 в случае статического режима.
Задать или отменить вложенный режим параллельной обработки процессов в параллельной области программы можно с помощью функции
(void) omp_set_nested( TRUE | FALSE )Она устанавливает или отменяет вложенный режим параллельной обработки. При этом в списке переменных окружения определяется или удаляется переменная окружения OMP_NESTED либо задается ее значение, соответственно равное TRUE или FALSE.
Следующая функция позволяет идентифицировать, установлен или нет вложенный режим параллельной обработки в момент вызова функции
(int/logical) omp_get_nested()Эта функция возвращает значение TRUE или 1 для вложенного режима параллельной обработки и значение FALSE или 0 при отсутствии такового.
При обращении ко всем вышеперечисленным функциям в заголовки программ на языке С/С++ необходимо включать строку:
#include <omp.h>Дата добавления: 2015-02-03; просмотров: 874;