Составители:
Рубрика:
Конструкции Open MP в различных языках мало отличаются,
поэтому ограничимся языком Fortran.
Распараллеливание программы состоит в том, чтобы весь текст
разбить на последовательные и параллельные области.
В начальный момент порождается нить-мастер (или основ-
ная нить), которая начинает выполнение программы со стартовой
точки. Основная нить и только она исполняет все последователь-
ные области секции программы.
Для поддержки параллелизма используется схема
FORK/JOIN.
При входе в параллельную область основная нить порождает
дополнительные нити (выполняется операция FORK). После по-
рождения дополнительные нити нумеруются последовательными
натуральными числами, причем основная нить имеет номер 0; та-
ким образом, каждая нить получает свой уникальный номер. Все
порожденные нити выполняют одну и ту же программу, соответ-
ствующую параллельной области. При выходе из параллельной об-
ласти основная нить дожидается завершения работы остальных ни-
тей (выполняется операция JOIN), и дальнейшее выполнение про-
граммы осуществляется основной нитью.
В параллельной области все переменные в программе делятся
на два класса:
1) общие (shared – разделяемые);
2) локальные (private – собственные).
Общие переменные существуют в одном экземпляре для всей
программы и под одним и тем же именем доступны всем нитям.
Объявление локальной переменной приводит к порождению
многих экземпляров (по числу нитей) этой переменной под этим
именем – по одному собственному экземпляру для каждой нити.
Изменение какой-либо нитью значения своего экземпляра локаль-
ной переменной никак не влияет на изменение значений экземпля-
ров этой переменной в других нитях.
Понятия областей программы и классов переменных вместе с
порождением (расщеплением) и уничтожением (соединением) ни-
тей определяют общую идею написания программы с использова-
нием технологии Open MP.
136
Страницы
- « первая
- ‹ предыдущая
- …
- 133
- 134
- 135
- 136
- 137
- …
- следующая ›
- последняя »
