Библиотека функций ОреnМР
Int omp_get_nested (void); — возвращает значение OMP_ NESTED. void omp set_nested (int nested); — устанавливает новое значение переменной ОМР_ NESTED. Int omp_get_dynamic (void); — возвращает значение OMP DYNAMIC. void omp set dynamiefint пит); — устанавливает новое значение переменной OMPDYNAMIC. Void отр destroy nestJockfompnestJockJ *lock); — уничтожить множественный замок (перевести… Читать ещё >
Библиотека функций ОреnМР (реферат, курсовая, диплом, контрольная)
double omp_get_wtime (void); - возвращает текущее время. double omp_get_wtick (void); - возвращает размер тика таймера. int omp_get_thread пит (void); - возвращает номер потока. int omp_getmax threads (void); — возвращает максимально возможное количество потоков для следующей параллельной области.
int omp_get threadJimitfvoid); — возвращает значение OMP THREADLIMIT.
void omp set пит threads (int пит); - устанавливает новое значение переменной OMPNUMTH READS.
int omp_get_num_procs (void); - возвращает количество процессоров/ядер.
int omp_get_dynamic (void); - возвращает значение OMP DYNAMIC. void omp set dynamiefint пит); - устанавливает новое значение переменной OMPDYNAMIC.
int omp_get_nested (void); - возвращает значение OMP_ NESTED. void omp set_nested (int nested); - устанавливает новое значение переменной ОМР_ NESTED.
int omp in_parallel (void); - возвращает 0, если функция вызвана из последовательной области, и 1, если из параллельной.
int omp_get max active levels (void); - возвращает значение переменной OMPMAXACTIVELEVELS.
void omp set_max activeJevelsfint max);); - устанавливает новое значение OMP_MAX_ACTIVE_LEVELS.
int omp_get_level (void); - возвращает глубину вложенности параллельных областей.
int omp_get_ancestor_thread_num (int level); - возвращает номер потока, породившего текущую параллельную область.
int отр_get team_size (int level); — возвращает для заданного параметром level уровня вложенности параллельных областей количество потоков, порождённых одним родительским потоком.
int omp_get_activejevelfvoid); - возвращает количество вложенных параллельных областей, обрабатываемых более чем одним потоком.
Следующая группа функций используется для синхронизации параллельно выполняющихся потоков с помощью так называемых замков (lock).
void отрJnitJock (ompJockj *lock); - создать (инициализировать) простой замок.
void omp_init_nest_lock (omp_nest_lock_t *lock); - создать замок с множественными захватами.
void отр destroy_lock (omp lock_t *lock); - уничтожить простой замок (перевести в неинициализированное состояние).
void отр destroy nestJockfompnestJockJ *lock); — уничтожить множественный замок (перевести в неинициализированное состояние).
void отр set lock (omp lock t *lock); - захватить простой замок (если замок уже захвачен другим потоком, то данный поток переводится в ждущее состояние).
void отр_set_nestJock (omp nestJockj Hock); - захватить множественный замок (если замок уже захвачен другим потоком, то данный поток переводится в ждущее состояние; если замок захвачен этим же потоком, то увеличивается счетчик захватов).
void отр_unsetJock (ompJockJ Hock); - освободить простой замок (если есть потоки, ждущие его освобождения, то один из них, выбираемый случайным образом, захватывает этот замок и переходит в состояние выполнения).
void отр_unset_nestJock (ompJockj Hock); — уменьшить на 1 количество захватов множественного замка (если количество захватов стало равно нулю и есть потоки, ждущие его освобождения, то один из них, выбираемый случайным образом, захватывает этот замок и переходит в состояние выполнения).
int отрJestjockfompJockJ Hock); - попытаться захватить простой замок (если попытка не удалась, т. е. замок уже захвачен другим потоком, то возвращается 0, иначе возвращается 1).
int отр test nestJockfompJockj *lock); — попытаться захватить множественный замок (если попытка не удалась, т. е. замок уже захвачен другим потоком, то возвращается 0, иначе возвращается новое значение счетчика захватов).