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

 

программное обеспечение языка Фортран

 
 

В этом разделе описываются некоторые вопросы параллельной обработки, связанные с использованием различных видов расширения языка Фортран. Цель состоит в рассмотрении на относительно высоком уровне вопросов и задач, с которыми могут встретиться программисты, желающие использовать эту стратегию при применении параллельных машин. Использование языка Фортран - хорошо испытанный подход к проектированию алгоритмов и программированию.

Однако параллельная обработка имеет свой собственный набор ограничений, которые также необходимо учитывать. В этом разделе мы попытаемся показать, что согласование между ними в лучшем случае затруднительно. К наиболее существенным относятся следующие особенности параллельного программирования: o часто встречаются неповторяемые ошибки; o корректный результат не позволяет делать вывод о корректности программы; o обычные методы отладки могут дать искаженную информацию; o перенос на параллельные системы существующих программ требует почти полного и всестороннего их пересмотра.

Некоторые из рассматриваемых здесь работ были выполнены на вычислительно? системе Denelcor HEP, остальные - проведены на суперЭВМ CRAY Х-МР. Расширения Фортрана в этих двух системах несколько отличаются друг от друга, но для целей нашего обсуждения их можно считать весьма близкими. В обоих вариантах предусмотрен базовый механизм для инициации параллельных процессов. Например, в ЭВМ HEP подпрограмма может быть вызвана либо с помощью оператора CALL, либо с помощью оператора CREATE. В последнем случае вызвавшая программа (подпрограмма) продолжает свое выполнение, а вызванная подпрограмма становится отдельно выполняемым процессом. Принципиально то, что программист полностью ответственен за то, какие операции будут выполняться параллельно. Очень инетересно смоделировать на компьютере дизайн спальни. Связь между процессами в обеих системах осуществляется с использованием разделяемых данных. Обе системы предоставляют программисту средства для организации критических секций. Главное здесь, что на программиста ложится вся забота о том, чтобы при каждом использовании этих средств действительно был обеспечен надежный доступ к разделяемым данным. После столь беглого обзора представим несколько примеров параллельных задач, с которыми нам приходилось встречаться.

Пример 1. Назначение работ.

Эта программа была написана для вычисления определенного интеграла функции одной переменной в пределах от А до В. Простейший параллельный алгоритм для решения этой задачи состоит в разбиении интервала интегрирования на N подынтервалов и приписывании каждому подынтервалу отдельного процесса. Каждый такой процесс может выполняться независимо, реализуя некоторый алгоритм, например правило трапеций, при вычислении интеграла для своего подынтервала. При своем завершении каждый процесс входит в критическую секцию и прибавляет свою часть результата к значению разделяемой глобальной переменной. При образовании всех процессов программа дает каждому процессу уникальный идентифицирующий его номер, который можно использовать для определения подынтервала, соответствущего данному процессу. Для этого используется следующий фрагмент программы на Фортране:

DO 100 I * 1 , N CREATE CALC (I) 100 CONTINUE

В каждом процессе CALC используется формула

(В - А) / N * (I - 1) + А для нахождения левой границы подынтервала.

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

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