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

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

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

В модели FDVM пользователь вначале определяет многомерный массив виртуальных процессоров, на секции которого будут распределяться данные и вычисления. При этом секция может варьироваться от полного массива процессоров до отдельного процессора.

На следующем этапе определяются массивы, которые должны быть распределены между процессорами (распределенные данные). Эти массивы специфицируются директивами отображения данных (раздел 4). Остальные переменные (распределяемые по умолчанию) отображаются по одному экземпляру на каждый процессор (размноженные данные). Размноженная переменная должна иметь одно и то же значение на каждом процессоре за исключением переменных в параллельных конструкциях (см. раздел 5.1.3, 5.1.4 и 7.5).

Модель FDVM определяет два уровня параллелизма:

  • параллелизм по данным на секции массива процессоров;

  • параллелизм задач – независимые вычисления на секциях массива процессоров.

Параллелизм по данным реализуется распределением витков тесно-гнездового цикла между процессорами (раздел 5). При этом каждый виток такого параллельного цикла полностью выполняется на одном процессоре. Операторы вне параллельного цикла выполняются по правилу собственных вычислений (раздел 5.2).

Параллелизм задач реализуется распределением данных и независимых вычислений на секции массива процессоров (раздел 7).

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

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

Синтаксис директив FDVM описывается следующей БНФ формой:

is по определению

or альтернатива

[ ] необязательная конструкция

[ ]… повторение конструкции 0 или более раз

x-list x [ , x ]

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

directive-line

is CDVM$ dvm-directive

or *DVM$ dvm-directive

dvm-directive

is specification-directive

or executable-directive

specification-directive

is processors-directive

or align-directive

or distribute-directive

or template-directive

or pointer-directive

or shadow-directive

or dynamic-directive

or inherit-directive

or remote-group-directive

or reduction-group-directive

or task-directive

or heap-directive

or asyncid-directive

executable-directive

is realign-directive

or redistribute-directive

or parallel-directive

or remote-access-directive

or shadow-group-directive

or shadow-start-directive

or shadow-wait-directive

or reduction-start-directive

or reduction-wait-directive

or new-value-directive

or prefetch-directive

or reset-directive

or parallel-task-loop-directive

or map-directive

or task-region-directive

or end-task-region-directive

or on-directive

or end-on-directive

or f90-directive

or asynchronous-directive

or end-asynchronous-directive

or asyncwait-directive

Ограничения:

  • Cпецкомментарий directive-line подчиняется правилам написания комментария в фиксированной форме.

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

  • Исполняемые директивы должны находиться среди исполняемых операторов.

  • Любое выражение, входящее в директиву спецификации, должно быть выражением спецификации (см. Приложение 1, п.2.4).

Никакой оператор не может находиться среди строк продолжения директивы. Строка directive-line не может находиться внутри продолженного оператора. Ниже приводится пример директивы с продолжением. Отметим, что позиция 6 должна быть пробелом за исключением случая, когда она используется для обозначения продолжения.

CDVM$ ALIGN SPACE1( I, J, K )

CDVM$* WITH SPACE(J , K, I )

3. Массивы виртуальных процессоров. Директива PROCESSORS

Директива PROCESSORS определяет один или несколько массивов виртуальных процессоров.

Синтаксис.

processors-directive

is PROCESSORS processors-decl-list

processors-decl

is processors-name ( explicit-shape-spec-list )

explicit-shape-spec

is [ lower-bound : ] upper-bound

lower-bound

is int-expr

upper-bound

is int-expr

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

Разрешается использовать несколько массивов виртуальных процессоров разной формы при следующем условии: количество процессоров в каждом массиве должно быть равно значению встроенной функции NUMBER_OF_PROCESSORS ( ). Если два массива виртуальных процессоров имеют одинаковую форму, то соответствующие элементы этих массивов ссылаются на один виртуальный процессор.

Пример 3.1. Описание массивов виртуальных процессоров.

CDVM$ PROCESSORS P( N )

CDVM$ PROCESSORS Q( NUMBER_OF_PROCESSORS( ) ),

CDVM$* R(2, NUMBER_OF_PROCESSORS( )/2)

Значение N должно быть равно значению функции NUMBER_OF_PROCESSORS ( ).

Массивы процессоров являются локальными объектами процедуры. Массивы данных с атрибутами COMMON и SAVE могут быть отображены на локальные массивы виртуальных процессоров при следующем условии: при каждом вызове процедуры локальный массив процессоров имеет одно и то же определение.

4. Распределение данных

FDVM поддерживает распределение блоками (равными и неравными), наследуемое распределение, распределение динамических массивов и распределение через выравнивание.

4.1. Директивы DISTRIBUTE и REDISTRIBUTE

Синтаксис.

distribute-directive

is dist-action distributee dist-directive-stuff

or dist-action [ dist-directive-stuff ] :: distributee-list

dist-action

is DISTRIBUTE

or REDISTRIBUTE

dist-directive-stuff

is dist-format-list [ dist-onto-clause ]

distributee

is array-name

dist-format

is BLOCK

or GEN_BLOCK ( block-size-array )

or WGT_BLOCK ( block-weight-array , nblock)

or *

dist-onto-clause

is ONTO dist-target

dist-target

is processors-name [(processors-section-subscript-list )]

processors-section-subscript

is [ subscript ] : [ subscript ]

subscript

is int-expr

nblock

is int-expr

block-size-array

is array-name

block-weight-array

is array-name

Ограничения:

  • Длина списка dist-format-list должна быть равна количеству измерений массива. Т.е. для каждого измерения должен быть задан формат распределения.

  • Количество распределенных измерений массива (формат задан не *) должно быть равно количеству измерений dist-target.

  • Массив block-size-array в спецификации GEN_BLOCK, должен быть одномерным целочисленным массивом, размер которого равен размеру соответствующего измерения массива процессоров, а сумма значений его элементов равна размеру распределяемого измерения.

  • Массив block-weight-array в спецификации WGT_BLOCK, должен быть одномерным массивом типа DOUBLE PRECISION.

  • В одном списке dist-format-list не может быть указан формат GEN_BLOCK и формат WGT_BLOCK.

  • Директива REDISTRIBUTE может применяться только к массивам со спецификацией DYNAMIC.

  • Отсутствие dist-directive-stuff допустимо только в директиве DISTRIBUTE. В этом случае распределяемый массив может использоваться только после выполнения директивы REDISTRIBUTE.

Спецификация ONTO указывает массив или секцию массива виртуальных процессоров. Если спецификация ONTO не указана, то распределение осуществляется по базовому массиву виртуальных процессоров, который является параметром запуска программы на выполнение. Когда директива REDISTRIBUTE без спецификации ONTO выполняется в ON‑блоке, то распределение осуществляется на секцию массива процессоров этого ON‑блока (см. радел 7).

Несколько одинаково распределяемых массивов (A1, A2,…) можно распределить одной директивой вида

CDVM$ DISTRIBUTE dist-directive-stuff :: A1, A2, …

При этом массивы должны иметь одинаковое число измерений, но необязательно одинаковые размеры измерений.

Рассмотрим форматы распределения для одного измерения массива (одномерный массив A(N) ) и для одного измерения массива процессоров (одномерный массив R(P) ). Многомерные распределения рассматриваются в разделе 4.1.5.

4.1.1. Формат BLOCK

На каждом процессоре распределяется блок размером (N-1)/P +1 элементов. При некоторых соотношениях N и P несколько последних процессоров могут не содержать значений элементов массива.

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

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

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