Здавалка
Главная | Обратная связь

Структурированный блок



Подробно директива orderedрассматривалась выше в теме разделения работ с конструкцией for.

 

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

Переменные окружения управляют выполнением параллельного кода. Механизм присвоения значений переменным окружения определяется правилами ОС. Изменение значений после начала выполнения программы игнорируются.

Переменные среды:

· OMP_SCHEDULE устанавливает способ планирования и размер порции при выполнении циклов,

· OMP_NUM_THREADS устанавливает число порождаемых при выполнении программы нитей,

· OMP_DYNAMIC разрешает или запрещает динамическое регулирование числом нитей,

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

 

1. OMP_SCHEDULE - применяется только к директивам for и рассмотрен выше в теме разделения работ.

 

2.OMP_NUM_THREADS - значение должно быть положительным. Действие переменной зависит от того, допускается ли динамическое регулирование числа нитей.

Если динамическое регулирование запрещено, то значение переменной равно числу нитей, определенных на момент начала выполнения программы, пока это число явным образом не изменится в течение выполнения программы путем вызова функции omp_set_num_threads().

Если динамическое регулирование числа нитей разрешено, значение переменной среды рассматривается как максимальное число нитей, доступных для использования. Значение по умолчанию зависит от реализации OpenMP.

Оптимально количество порождаемых нитей не должно превосходить величины, равной произведению числа процессоров на число ядер.

Пример: export OMP_NUM_THREADS=16

3. OMP_DYNAMIC -разрешает или запрещает динамическое регулирование количества порождаемых нитей для выполнения параллельных блоков программы. Значение переменной может быть TRUE или FALSE.

Если значение переменной TRUE, то число нитей, используемых для выполнения параллельной области, может регулироваться для оптимального использования ресурсов системы.

Если значение переменной FALSE, динамическое регулирование запрещено. Значение по умолчанию зависит от реализации OpenMP.

Пример: export OMP_DYNAMIC = TRUE

 

4. OMP_NESTED -разрешает или запрещает вложенный параллелизм. Если значение переменной TRUE - вложенный параллелизм разрешен; если FALSE -вложенный параллелизм запрещен. По умолчанию - FALSE.

Пример: export OMP_NESTED = TRUE

Стандартные функции OpenMP

Прототипы функций OpenMP находятся в файле <omp.h>,используются для управления состоянием среды выполнения параллельной программы и синхронизации работы потоков.

  • omp_set_num_threads.
  • omp_get_num_threads.
  • omp_get_max_threads.
  • omp_get_thread_num.
  • omp_get_num_procs.
  • omp_in_parallel.
  • omp_set_dynamic.
  • omp_get_dynamic.
  • omp_set_nested.
  • omp_get_nested

Функция omp_set_num_threads

Устанавливает число нитей для выполнения параллельной области.







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.