Алгоритмы параллельных вычислений и программирование. Бурова И.Г - 134 стр.

UptoLike

Вывод: Результат работы фрагмента (В) зависит от последо-
вательности срабатыватывания вложенных циклов, поэтому без ис-
пользования дополнительных средств синхронизации вычислений
предложенный вариант распараллеливания применять нельзя.
Рассмотрим теперь следующий фрагмент программы:
DO 10 i=1,n
10 U(i)=Funct(i)
где Funct функция пользователя. Для того, чтобы ответить на
вопрос, являются ли итерации цикла независимыми, нужно опре-
делить:
1) используются ли значения массива U в теле функции Funct,
и если нет, то:
2) нет ли там вызовов процедур или функций, прямо или кос-
венно использующих массив U.
В некоторых случаях такая проверка исключительно сложна,
особенно в случаях, когда разные части массива используются в
разных аспектах: одни для чтения, другие для присваивания. В
таких случаях ответить на поставленный вопрос возможно лишь в
процессе исполнения.
Для эффективного анализа ситуации компилятору нужны
"подсказки", которые могут выражаться различным образом:
1) специальными директивами,
2) новыми языковыми конструкциями,
3) специальными библиотечными процедурами.
§ 2. Введение в технологию Open MP
В технологии Open MP за основу берется последовательная
программа. Для созания параллельной версии пользователю пред-
ставляются наборы:
1) директив,
2) процедур,
3) переменных окружения.
Стандарт Open MP разработан для языков Fortran и C (Fortran
77, 90, 95 и C, C++) и поддерживается производителями всех боль-
ших параллельных систем. Реализации стандарта доступны в UNIX
и в среде Windows NT.
135