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

Void omp_set_dynamic(int dynamic_threads)



Функция действительна, если она вызывается в последовательной области, в противном случае поведение функции неопределенно. Если переменная dynamic_threads равна 0, то динамическое регулирование запрещено. Вызов функции omp_set_dynamic имеет приоритет перед переменной окружения OMP_DYNAMIC.

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

 

Функция omp_get_dynamic

Возвращает ненулевое значение, если динамическое изменение числа нитей разрешено, в противном случае возвращает 0.

Int omp_get_dynamic(void)

 

Функция omp_set_nested

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

Void omp_set_nested(int nested)

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

Стандарт OpenMP разрешает выполнять вложенные параллельные области последовательно, даже если вложенный параллелизм разрешен.

 

Функция omp_get_nested

Возвращает ненулевое значение, если вложенный параллелизм разрешен, и нулевое значение, если вложенный параллелизм запрещен.

Int omp_get_nested(void)

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

Лекция 11

Достоинства и недостатки организации параллельных вычислений на рбщей и распределенной памяти. Понятие модели распределенного глобального адресного пространства (PGAS). Основные понятия.

На эффективность параллельных приложений влияют три основных фактора:

  1. архитектура вычислительного комплекса (производительность ЦП, топология сети, быстродей-ствие коммуникаций и т.д.
  2. средства разработки парал-лельных программ (компиля-торы, библиотеки функций, программные средства иссле-дования эффективности и т.д.
  3. Особенности алгоритма задачи, возможность его распараллеливания, квалификация разработчиков

Достоинством организации параллельных вычислений на ВС с общей памятью, является использование без обменных средств распараллеливания, что значительно увеличивает производительность параллельного приложения при правильном обращении к общей памяти.

Недостатком организации параллельных вычислений на ВС с общей памятью, является доступ разных процессоров к общим данным и обеспечение, в этой связи, однозначности значений данных (cache coherence problem), т.е. необходимость выполнения явной синхронизации для обеспечения безопасного доступа к данным.

 

Достоинства организации параллельных вычислений на распределенной памяти:

1. Использование распределенной памяти упрощает задачу создания мультипроцессорных вычислительных систем.

2. Каждый процесс обладает собственными ресурсами и выполняется в собственном адресном пространстве, таким образом, данные, находящиеся на каждом процессе защищены от неконтролируемого доступа.

3. Универсальность, т.к. алгоритмы с передачей сообщений могут выполняться на большинстве сегодняшних суперкомпьютеров.

4. Легкость отладки.Отладка параллельных программ все еще остается сложной задачей. Однако процесс отладки происходит легче в программах с передачей сообщений. Это связано с тем, что самая распространенная причина ошибок заключается в неконтролируемой перезаписи данных в памяти. Модель с передачей сообщений, явно управляет обращением к памяти, и, тем самым, облегчает локализацию ошибочного чтения или записи в память.

Недостатки организации параллельных вычислений на распределенной памяти:

1. Каждый процессор вычислительной системы может использовать только свою локальную память, поэтому для доступа к данным, располагаемым на других процессорах, необходимо явно выполнять операции передачи сообщений (message passing operations).

2. Проблема эффективного использования распределенной памяти приводят к существенному повышению сложности параллельных вычислений.

 

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

1. на каждом вычислительном SMP узле порождается отдельный процесс. Процессы внутри узла обмениваются сообщениями через разделяемую память.

2. каждый вычислительный SMP узел захватывается монопольно одним процессом, внутри которого выполняется распараллеливание в модели "общей памяти", например с помощью директив OpenMP.

 







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