fdvmLDr (1158337), страница 11

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

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

. . .

С распределение вычислений (блоков операторов) по задачам

CDVM$ TASK_REGION MB

CDVM$ ON MB( 1 )

CALL JACOBY( A1, B1, M, N1+1 )

CDVM$ END ON

CDVM$ ON MB( 2 )

CALL JACOBY( A2, B2, M1+1, N2+1 )

CDVM$ END ON

CDVM$ ON MB( 3 )

CALL JACOBY( A3, B3, M2+1, N2+1 )

CDVM$ END ON

CDVM$ END TASK_REGION

10 CONTINUE

7.7. Фрагмент динамической многообластной задачи

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

С NA - максимальное количество областей

PARAMETER ( NA=20 )

CDVM$ PROCESSORS R( NUMBER_OF_PROCESSORS( ) )

С память для динамических массивов

REAL HEAP(100000)

С размеры динамических массивов

INTEGER SIZE( 2, NA )

С массивы указателей для А и В

CDVM$ REAL, POINTER ( :, : ) :: PA, PB, P1, P2

INTEGER P1, P2, PA(NA), PB(NA)

CDVM$ TASK PT ( NA )

CDVM$ ALIGN :: PB, P2

CDVM$ DISTRIBUTE :: PA, P1

. . .

NP = NUMBER_OF_PROCESSORS( )

С распределение массивов по задачам

С динамическое размещение массивов и выполнение отложенных директив

С DISTRIBUTE и ALIGN

IP = 1

DO 20 I = 1, NA

CDVM$ MAP PT( I ) ONTO R( IP : IP+1 )

PA(I) = ALLOCATE ( SIZE(1,I), HEAP )

P1 = PA(I)

CDVM$ REDISTRIBUTE ( *, BLOCK ) ONTO PT( I ) :: P1

PB(I) = ALLOCATE ( SIZE(1,I), HEAP )

P2 = PB(I)

CDVM$ REALIGN P2( I, J ) WITH P1( I, J )

IP = IP + 2

IF( IP .GT. NP ) THEN IP = 1

20 CONTINUE

. . .

С распределение вычислений по задачам

CDVM$ TASK_REGION PT

CDVM$ PARALLEL ( I ) ON PT( I )

DO 50 I = 1,NA

CALL JACOBY( HEAP(PA(I)), HEAP(PB(I)), SIZE(1, I), SIZE(2, I) )

50 CONTINUE

CDVM$ END TASK_REGION

Массивы (области) циклически распределяются на секции из 2-х процессоров. Если NA > NP/2 , то на некоторые секции будет распределено несколько массивов. Витки циклов, распределенные на одну секцию, будут выполняться последовательно в модели параллелизма по данным.

8. COMMON и EQUIVALENCE

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

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

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

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

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

Пример 8.1. Явно распределяемый массив в COMMON блоке.

Описание в главной программе.

PROGRAM MAIN

CDVM$ DISTRIBUTE B ( *, BLOCK )

COMMON /COM1/ X, Y(12), B(12,30)

Описание в подпрограмме. Ошибка: другое количество компонент.

SUBROUTINE SUB1

CDVM$ DISTRIBUTE B1 ( *, BLOCK )

COMMON /COM1/ X, Y(12), Z, B1(12,30)

Описание в подпрограмме. Ошибка: другое распределение массива.

SUBROUTINE SUB2

CDVM$ DISTRIBUTE B2 ( BLOCK, BLOCK )

COMMON /COM1/ X, Y(12), B2(12,30)

Описание в подпрограмме. Ошибка: другая конфигурация массива.

SUBROUTINE SUB3

CDVM$ DISTRIBUTE B3 ( *, BLOCK )

COMMON /COM1/ X, Y(12), B(30,12)

Описание в подпрограмме. Нет ошибок.

SUBROUTINE SUB4

CDVM$ DISTRIBUTE B4 ( *, BLOCK )

COMMON /COM1/ X, Y(12), B(12,30)

9. Процедуры

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

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

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

  • директив FDVM;

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

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

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

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

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

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

Наследуемое распределение описывается директивой

inherit-directive

is INHERIT dummy-array-name-list

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

Директивы REDISTRIBUTE и REALIGN могут применяться к формальным аргументам, если фактический и формальный аргументы имеют атрибут DYNAMIC.

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

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

Особым случаем является распределенный локальный массив с атрибутом SAVE. Для этого массива должны выполняться следующие условия:

  • Директива DISTRIBUTE или ALIGN имеет идентичные параметры при каждом вызове процедуры.

  • Массив не может использоваться в директивах REDISTRIBUTE и REALIGN.

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

SUBROUTINE DIST( A, B, C, N )

CDVM$ PROCESSORS PA ( ACTIVE_NUM_PROCS( ) )

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 ) ONTO PA

. . .

END

10. Ввод-вывод

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

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

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

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

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

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

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

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

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

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

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

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

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

Использование операторов ввода-вывода в задачах. Если каждая задача (on-block) использует собственные файлы, то для ввода-вывода действуют вышеуказанные ограничения. Если несколько задач используют один файл, то возникают дополнительные отличия от стандарта Фортрана 77. При работе с файлом последовательного доступа все задачи осуществляют ввод с начала файла, а при выводе записи разных задач размещаются в файле в непредсказуемом порядке.

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

11. Совместимость с HPF

Директивы распределения данных базируются на следующих директивах HPF2: DISTRIBUTE, REDISTRIBUTE, ALIGN, REALIGN, PROCESSORS, TEMPLATE, DYNAMIC, SHADOW и INHERIT. Семантика и синтаксис директив имеют следующие ограничения:

  • Директивы DISTRIBUTE и REDISTRIBUTE имеют только форматы распределения: BLOCK, GEN_BLOCK и *.

  • В директивах ALIGN и REALIGN нет выравнивания по триплету.

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

  • Не допускается использование оператора EQUIVALENCE для распределенных массивов.

Директивы распределения вычислений семантически являются подмножеством соответствующих директив HPF2. В частности директива PARALLEL является подмножеством директивы INDEPENDENT в HPF2.

Директивы спецификации удаленных данных не имеют аналогов в HPF2. , т.к. предполагается, что компилятор HPF2 автоматически определяет оптимальный доступ к удаленным данным.

Следовательно, множество директив FDVM может автоматически трансформироваться во множество директив HPF2.

12. Отличие версии FDVM 2.0 от версии FDVM 1.0

Версия FDVM 1.0 является подмножеством версии FDVM 2.0. Дополнительно определены следующие возможности:

  • Модель динамических массивов. Эта модель может быть автоматически трансформирована для выполнения в языках F77, FDVM и HPF (раздел 4.2).

  • Параллелизм задач (раздел 7).

  • Форматы GEN_BLOCK и WGT_BLOCK для распределения массивов (разделы 4.1.2, 4.1.3).

  • Распределение цикла с регулярной зависимостью по данным (раздел 6.2.4).

  • Более точная спецификация удаленных данных, обеспечивающая эффективный доступ к ним (раздел 6.3).

  • Совмещение счета и обмена данными (разделы 6.2.5, 6.3.3, 6.4.2).

Литература

  1. Message-Passing Interface Forum, Document for a Standard Message-Passing Interface, 1993. Version 1.0.

  2. OpenMP Consortium: OpenMP Fortran Application Program Interface, Version 1.0, October 1997.

  3. High Performance Fortran Forum. High Performance Fortran Language Specification. Version 1.0

  1. High Performance Fortran Forum. High Performance Fortran Language Specification. Version 2.0, January 31, 1997.

  2. ANSI X3.9-1978 Programming Language Fotran. New York 1978.

Приложение 1. Синтаксис

2.2. Синтаксис директив FDVM

directive-line

is CDVM$ dvm-directive

or *DVM$ dvm-directive

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

Список файлов учебной работы

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