Главная » Просмотр файлов » Параллельное программирование на языке Fortran DVM

Параллельное программирование на языке Fortran DVM (1158280), страница 3

Файл №1158280 Параллельное программирование на языке Fortran DVM (Параллельное программирование на языке Fortran DVM) 3 страницаПараллельное программирование на языке Fortran DVM (1158280) страница 32019-09-18СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 3)

Если Li = hi , то

i = li

Рассмотрим следующий цикл копирования

REAL A(N1,N2,N3), B(N1,N3)

DO 10 I1 = 1, N1

DO 10 I2 = 2, N3-1

10 A(I1, 5, I2+1) = B(I1, I2-1)

Этому циклу соответствует следующий оператор копирования

A( :, 5, 3:N3 ) = B( :, 1:N3-2 )

Асинхронное копирование

Асинхронное копирование позволяет совместить передачу данных между процессорами с выполнением других операторов.

Асинхронное копирование определяется комбинацией директивы начала копирования (ASYNCHRONOUS ID) и директивой ожидания окончания копирования (ASYNCWAIT ID). Соответствие директив определяется одним идентификатором ID.

Для асинхронного копирования нужно:

  • объявить директивой CDVM$ ASYNCID < идентификатор> отдельный идентификатор для каждой пары директив асинхронного копирования;

  • перед циклом записать директивы F90 - операторы копирования с префиксом F90

CDVM$ F90 <оператор копирования>;

  • перед циклом и перед директивами F90 указать директиву начала копирования

CDVM$ (ASYNCHRONOUS ) < идентификатор> c идентификатором из директивы ASYNCID ;

  • После цикла указать директиву

CDVM$ END ASYNCHRONOUS

  • перед использованием присвоенных значений убедиться в завершении (дождаться завершения) операции копирования директивой

CDVM$ ASYNCWAIT < идентификатор> c идентификатором из директивы ASYNCID.

Пример

REAL A(N1,N2,N3), B(N1,N3)

DO 10 I1 = 1, N1

DO 10 I2 = 2, N3-1

10 A(I1, 5, I2+1) = B(I1, I2-1)

можно специфицировать как асинхронное копирование следующим образом.

CDVM$ ASYNCID TR

REAL A(N1,N2,N3), B(N1,N3)

. . .

CDVM$ ASYNCHRONOUS TR

CDVM$ F90 A( :, 5, 3:N3 ) = B( :, 1:N3-2 )

DO 10 I1 = 1, N1

DO 10 I2 = 2, N3-1

10 A(I1, 5, I2+1) = B(I1, I2-1)

CDVM$ END ASYNCHRONOUS

. . .

последовательность операторов,

которая выполняется на фоне передачи данных

. . .

CDVM$ ASYNCWAIT TR

3.7 Многомерные массивы

При локализации данных с помощью директивы ALIGN для многомерных массивов необходимо указывать индексы выравниваемых элементов массивов по всем измерениям.

На предмет наличия удаленных данных достаточно анализировать только распределенные измерения массивов. Локальные измерения полностью распределены на каждом процессоре и по этим измерениям не существует удаленных данных. Каждое распределенное измерение, по которому существуют удаленные данные, должно быть учтено при спецификации удаленных данных в соответствии с разделами 3.5.2 - 3.5.4.

3.8 COMMON и EQUIVALENCE

Массивы, распределяемые по умолчанию, могут без ограничений использоваться в COMMON блоках и операторах EQUIVALENCE.

Массивы, распределяемые директивами DISTRIBUTE и ALIGN, не могут использоваться в операторах EQUIVALENCE. Кроме того, эти массивы не могут ассоциироваться с другими объектами данных. Явно распределяемые массивы могут быть компонентами COMMON блока при следующих условиях:

  • COMMON блок должен быть описан в главной программной единице.

  • Каждое описание COMMON блока должно иметь одно и то же количество компонент, а соответствующие компоненты - последовательности памяти одинакового размера.

  • Если компонентой COMMON блока является явно распределяемый массив, то объявления массива в разных программных единицах должны специфицировать один и тот же тип данных и одинаковую конфигурацию. Директивы DISTRIBUTE и ALIGN для этого массива должны иметь идентичные параметры.

3.9 Процедуры

Вызов процедуры из параллельного цикла

Процедура, вызываемая из параллельного цикла, не должна иметь побочных эффектов и содержать обменов между процессорами (прозрачная процедура). Как следствие этого, прозрачная процедура не содержит:

  • операторов ввода-вывода;

  • директив Fortran DVM;

  • присваивание значений переменным COMMON блоков.

Вызов процедуры вне параллельного цикла

Если фактическим аргументом является явно распределенный массив (DISTRIBUTE или ALIGN), то он должен передаваться без изменения формы. Это означает, что фактический аргумент является ссылкой на начало массива, а соответствующий формальный аргумент имеет конфигурацию, полностью совпадающую с конфигурацией фактического аргумента.

Формальные аргументы

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

Явное распределение описывается директивами DISTRIBUTE и ALIGN со следующим ограничением: формальный аргумент может быть выровнен только на другой формальный аргумент. Явное распределение формального аргумента означает, что пользователь должен перед вызовом процедуры обеспечить распределение фактического аргумента в точном соответствии с распределением формального аргумента.

Наследуемое распределение массива С (формального аргумента) описывается директивой:

CDVM$ INHERIT C

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

Локальные массивы

Локальные массивы могут распределяться в процедуре директивами DISTRIBUTE и ALIGN. Локальный массив может быть выровнен на формальный аргумент. Директива DISTRIBUTE распределяет локальный массив на ту подсистему процессоров, на которой была вызвана процедура (текущая подсистема).

Для распределенного локального массива с атрибутом SAVE директивы DISTRIBUTE или ALIGN имеют идентичные параметры при каждом вызове процедуры.

Пример Распределение локальных массивов и формальных аргументов.

SUBROUTINE DIST( A, B, C, N )

DIMENSION A(N,N), B(N,N), C(N,N), X(N,N), Y(N,N)

C явное распределение формального аргумента

CDVM$ DISTRIBUTE A ( *, BLOCK )

C выравниваемый формальный аргумент

CDVM$ ALIGN B( I, J ) WITH A( I, J )

C наследуемое распределение формального аргумента

CDVM$ INHERIT C

C выравнивание локального массива на формальный аргумент

CDVM$ ALIGN X( I, J ) WITH C( I, J )

C распределение локального массива

CDVM$ DISTRIBUTE Y ( *, BLOCK )

. . .

END

3.10Ввод-вывод

Для организации ввода-вывода данных в программена языке Fortran DVM используются операторы стандарта Фортран 77.

Fortran DVM допускает только ограниченную форму операторов ввода-вывода для распределенных массивов:

  • Список ввода-вывода должен состоять только из одного имени распределенного массива и не может содержать других объектов ввода-вывода.

  • В операторах ввода-вывода по формату допускается только формат, задаваемый *.

  • Список управляющей информации не должен содержать параметры ERR, ЕND и IOSTAT.

  • В списке управляющей информации допускается использование только размноженных переменных.

Не разрешается использовать операторы ввода-вывода распределенных массивов в параллельном цикле.

На операторы ввода-вывода размноженных данных распространяются следующие ограничения:

  • Список управляющей информации не должен содержать параметры ERR и ЕND.

  • Допускается лишь следующая упрощенная форма списка с неявным циклом:

(A(i1,i2,...,I), I = n1,n2)

при вводе размноженного массива неопределенного размера.

Оператор ввода, оператор INQUIRE, а также любой другой оператор ввода-вывода с управляющим параметром IOSTAT не должны использоваться в параллельном цикле.

Программа на языке Fortran DVM, выполняющая бесформатный ввод-вывод распределенных массивов, в общем случае не совместима с последовательной программой на Фортране 77. Данные, записанные одной программой, не могут быть прочитаны другой, вследствие разницы длин записей.

4Компиляция, выполнение и отладка DVM-программ

4.1 Что такое DVM-программа?

Параллельная программа представляет собой обычную последовательную программу, в которую вставлены DVM-директивы, определяющие ее параллельное выполнение.

DVM-директивы записываются виде специального комментария

CDVM$ <директива-DVM> ,

который в последовательной программе воспринимается как комментарий.

DVM-программа – это один или несколько файлов с исходными текстами на языке Fortran DVM, имеющих расширение .fdv.

4.2 Настройка DVM-системы

В рабочую директорию, в которой находится DVM-программа, необходимо переписать файл запуска dvm-команд ( dvm или dvm.bat) и файл usr.par из директории dvm_sys/user DVM-системы.

В файле запуска dvm-команд определены переменные окружения, которые могут быть изменены пользователем. Наиболее часто корректируется переменная dvmoutfile, определяющая имя файла, в который направляется вывод задачи пользователя. По умолчании вывод идет на экран.

В файле usr.par перечислены наиболее часто корректируемые параметры из базового набора параметров DVM-системы. При помощи параметра StatBufLength можно изменять размер буфера статистики. Например, если параметр IsTimeVariation задать равным единице, то буфер статистики будет использоваться также и для накопления информации о временах запуска и завершения всех коллективных операций, и поэтому его размер следует увеличить.

DVM-система имеет параметры, управляющие системой поддержки, работой динамического отладчика, сбором статистики. В документах [3,4] можно найти описание всех параметров DVM-системы и указания по составлению своих наборов параметров и файлов запуска dvm-команд, содержащих различные значения переменных окружения.

4.3 Методика отладки DVM-программ

Под отладкой DVM-программ подразумеваются два различных вида деятельности :

  • функциональная отладка, целью которой является достижение правильности функционального выполнения программы;

  • отладка эффективности, целью которой является достижение требуемого уровня эффективности параллельного выполнения программы.

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

4.3.1Функциональная отладка программы

Функциональную отладку программ рекомендуется проводить на тестовых данных в следующей последовательности шагов.

4.3.1.1Последовательное выполнение и отладка средствами стандартного компилятора с языка Fortran

DVM-директивы являются комментариями языка Fortran для стандартных компиляторов, поэтому DVM-программа обрабатывается ими как обычная последовательная программа Это позволяет отлаживать ее как обычную последовательную программу (в режиме игнорирования DVM-директив) с использованием привычных средств отладки.

4.3.1.2Компиляция. Получение готовой программы

Получение готовой программы (выполняемого файла) осуществляется в три этапа:

  • конвертация программы на Fortran DVM в программу на языке Fortran с получением одноименного файла (файлов) с расширением .f;

  • компиляция полученного на предыдущем этапе файла (файлов) стандартным компилятором с языка Fortran;

  • связывание полученного объектного модуля (модулей) с библиотеками программ, используемых пользователем (если есть), и с библиотекой Lib-DVM – системой поддержки выполнения параллельных DVM-программ.

Команда конвертации и компиляции DVM-программы имеет вид:

dvm f <имя DVM-программы>

где:

dvm

префикс (имя файла запуска DVM-команд);

<имя DVM-программы>

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



Результат работы: файлы <имя DVM-программы>.f и готовая программа (выполняемый файл <имя DVM-программы>) в текущей директории. Если конвертор обнаружил ошибки, то файл <имя DVM-программы>.f и соответственно готовая программа не создаются. Список диагностических сообщений приведен в приложении 2.

4.3.1.3Динамический контроль DVM-указаний

Динамический контроль DVM-указаний позволяет проверить корректность распараллеливания программы посредством DVM-указаний, и основан на моделировании параллельного выполнения DVM-программы во время ее последовательного выполнения на одном процессоре.

Динамический контроль позволяет выявлять ошибки следующих типов:

  1. Необъявленная зависимость по данным в параллельном цикле.

  2. Использование в параллельном цикле или после выхода из него приватных переменных без их предварительной инициализации.

  3. Запись в переменные, доступные только на чтение.

  4. Использование редукционных переменных после запуска асинхронной редукции, но до ее завершения.

  5. Необъявленный доступ к нелокальным элементам распределенного массива.

  6. Запись в теневые грани массива.

  7. Чтение теневых элементов массива до завершения операции их обновления.

  8. Модификация нелокального элемента распределенного массива в последовательной части программы.

  9. Выход за пределы распределенного массива.

  10. Запись в буфер удаленного доступа.

Для динамического контроля программы ее следует сначала скомпилировать в режиме получения отладочного варианта параллельной программы.

Команда получения отладочного параллельного варианта имеет вид:

dvm fpdeb <имя DVM-программы>

Характеристики

Список файлов книги

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6547
Авторов
на СтудИзбе
300
Средний доход
с одного платного файла
Обучение Подробнее