программное обеспечение параллельных вычислений

 

механика оптимизации

 
 

Механика оптимизации В фирме Alliant распараллеливание рассматривается как некоторая форма оптимизации и в отсутствии параметра -О в команде вызова компилятора не делается никаких попыток оптимизации.

Оптимизация может быть ограничена (например, только векторизацией) путем добавления определенных букв после параметра -О. Если параметр -О опущен, то все директивы компилятора игнорируются. Директивы компилятора в программе начинаются с первой колонки ком-бинацией символов CVD$. Это означает, что другими компиляторами для языка Фортран они ftyjsyi рассматриваться как комментарии, что повышает мобильность программ. Буква, непосредственно следующая за знаком $, говорит о том, применима ли эта директива только к следующему за ней циклу DO (в этом случае используется буква L) или она относится ко всей оставшейся части исходного файла (в этом случае используется буква G).

Ключевое слово, записанное начиная с седьмой колонки, определяет разрешение или запрещение оптимизации. По умолчанию вызов подпрограммы внутри цикла препятствует распараллеливанию тела цикла, начиная с точки вызова. Директива CVD$L CNCALL отвергает это правило, позволяя такие циклы выполнять в параллельном режиме. Директива оказывает действие только на следующий за ней цикл, так как после знака $ записана буква L.

Этой директивой программист утверждает, что данная подпрограмма может запускаться параллельно с другими выполнениями этой же подпрограммы или других подпрограмм, вызванных в том же цикле. Параллельные задачи могуть создаваться с помощью вызова подпрограммы в цикле DO, которому непосредственно предшествует упомянутая выше директива CNCALL.

Подпрограмме может быть передан индекс цикла, с помощью которого в ней может определяться номер соответствующей итерации, что позволяет каждой итерации выполняться независимо и, если необходимо, с использованием оператора IF и вычисляемого оператора GOTO. Такая под программа может даже вызвать другие подпрограммы, которые будут продолжать параллельное выполнение. С помощью директивы CDV$G N0C0NCUR можно запретить параллельное выполнение всех циклов вплоть до конца исходного файла.

 
 
 
Copyright (c) 2009. Использование материалов данного сайта возможно только при проставлении активной, не закрытой от индексации гиперссылки. http://soft-tlt.ru