fdvmPDr (1158423)

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

Текст из файла

19


Институт прикладной математики им. М.В.Келдыша

Российская Академия наук

Компилятор Fortran DVM

Эскизный проект

Март, 2000

Оглавление

1 Функции компилятора 3

2 Состав компилятора 3

3 Принципы реализации 4

4 Трансляция FDVM программы 4

4.1 Распределенные массивы 4

4.2 Трансляция директив спецификации 5

4.2.1 Директива PROCESSORS 5

4.2.2 Директивы отображения данных 6

4.2.3 Директива TASK 8

4.2.4 Директивы REMOTE_GROUP и REDUCTION_GROUP 8

4.3 Трансляция исполняемых директив и операторов 9

4.3.1 Директива PARALLEL 9

4.3.2 Директивы PREFETCH и RESET 13

4.3.3 Директива MAP 13

4.3.4 Конструкция TASK_REGION 14

4.3.5 Конструкция параллельного цикла по задачам 14

4.3.6 Другие директивы FDVM 14

4.3.7 Директивы отладки 15

4.3.8 Операторы ввода-вывода 16

5 Трансляция HPF-DVM программы 17

5.1 Оператор присваивания и другие исполняемые операторы вне цикла INDEPENDENT 17

5.2 Директива INDEPENDENT 18

1Функции компилятора

Язык Fortran DVM (FDVM) является расширением языка Фортран 77 для параллельного программирования. Расширение оформлено в виде специальных комментариев (директив DVM), которые аннотируют последовательную программу на языке Фортран 77.

Компилятор транслирует параллельную FDVM программу в программу на языке Фортран 77 с вызовами функций системы поддержки параллельного выполнения (Lib-DVM). Система поддержки Lib-DVM написана на языке C и использует средства MPI для обеспечения межпроцессорного взаимодействия.

По требованию пользователя компилятор FDVM генерирует расширенный код для отладки и анализа производительности. Специальный режим компиляции предназначен для генерации «последовательной» программы, игнорируя директивы DVM.

Компилятор FDVM транслирует также программы, написанные на языке HPF-DVM, который является подмножеством HPF.

2Состав компилятора

Процесс компиляции состоит из трех фаз.

Сначала производится синтаксический анализ программы на исходном языке и формируется ее внутреннее представление (.dep файл), которое состоит из дерева грамматического разбора, таблицы символов и таблицы типов.

Вторая фаза предполагает анализ и реструктурирование внутреннего представления FDVM программы. Каждая директива DVM заменяется последовательностью обращений к функциям системы поддержки Lib-DVM. На этой фазе осуществляются следующие действия:

  • генерация обращений к функциям и операторов присваивания значений этих функций;

  • создание операторов объявлений служебных переменных, используемых для передачи аргументов, запоминания значения функций, буферизации ввода-вывода и адресации распределенных массивов;

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

При этом, может потребоваться реструктурирование графа управления, когда новый оператор включается в программу (перемещение и замена меток, замена оператора логический IF конструкцией IF...THEN...ENDIF и т.п.).

Третья фаза – это генерация кода на Фортране 77, соответствующего ре-структурированному внутреннему представлению.

3Принципы реализации

В качестве инструментального средства разработки компилятора FDVM используется система Sage ++.

Синтаксический анализатор системы Sage++ для Фортрана, который базируется на GNU Bison версии языка YACC, расширен средствами обработки директив DVM.

Программа «back-end» написана на языке C++ с использованием библиотеки классов Sage++. Она просматривает программу в лексическом порядке и заменяет каждую директиву DVM последовательностью вызовов функций Lib-DVM.

Генерация нового кода на Фортране 77 осуществляется посредством функции unparse( ) класса File из библиотеки классов Sage++.

4Трансляция FDVM программы

4.1Распределенные массивы

Массив с атрибутом DISTRIBUTE или ALIGN называется распределенным массивом. Память для элементов таких массивов отводится системой поддержки Lib‑DVM. Система поддержки отводит память на каждом процессоре для локальной секции массива в соответствии с форматом распределения массива, заданным директивой DISTRIBUTE, и для теневых граней, объявленных в директиве SHADOW.

Распределенный массив адресуется относительно базы, объявляемой посредством операторов:

integer i0000m(0:0)

common /mem000/ i0000m

real r0000m(0:0)

equivalence (i0000m,r0000m)

Коэффициенты адресации и смещение вычисляется функцией системы поддержки (align()) и запоминается в дескрипторе распределенного массива, называемом заголовком массива. Память для заголовка массива отводится в программе пользователя. Компилятор FDVM удаляет из программы пользователя описание распределенного массива и включает в нее описание заголовка массива как одноименного целочисленного вектора из 2*N+2+NR элементов, где N – размерность массива, а NR – число слов памяти, отводимой для заголовков буферов удаленных данных. Так например, если A является распределенным массивом, то оператор описания

real A(L1:U1,L2:U2,...,LN:UN)

заменяется оператором

integer A(2*N+2+NR)

Компилятор линеаризует каждую ссылку на элемент распределенного массива

A(I1,I2, ..., IN)

, заменяя ее выражением

N

r0000m(A(N+2) + I1 +  A(N-j+2) * Ij )

i=2

Структура заголовка массива приводится на Рис.1.

1

указатель на структуру Lib-DVM

2

C1

коэффициенты

3

C2

адресации

. . .

элементов

N+1

CN

массива

N+2

смещение

N+3

L1

нижние

N+4

L2

границы

. . .

измерений

2*N+2

LN

массива

2*N+3

счетчик удаленных ссылок

память для

. . .

заголовков буферов

удаленных данных

Рис.1. Структура заголовка массива в FDVM.

Первые N+2 элемента заголовка инициализируются функцией системы поддержки align( ) и обновляются функциями realn( ) и redis( ). Для запоминания значений нижних границ измерений массива компилятор вставляет операторы присваивания в программу пользователя.

4.2Трансляция директив спецификации

4.2.1Директива PROCESSORS

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

*DVM$ PROCESSORS P(NP1,…,NPr)

заменяется оператором

INTEGER P

А также, в программу включается (непосредственно перед первым исполняемым оператором) следующий сегмент операторов:

* получение вектора размеров измерений процессорной системы

size(1) = NP1

. . .

size(r) = NPr

* создание процессорной системы

P = psview(ps,r,size,0)

Ссылки на функции NUMBER_OF_PROCESSORS ( ) и ACTIVE_NUM_PROCS( ) заменяются ссылками на функцию Lib-DVM

getsiz(getps(-1), 0) и getsiz(getps(0), 0) ,

соответственно.

4.2.2Директивы отображения данных

Директивы спецификации DISTRIBUTE, ALIGN и TEMPLATE определяют дерево отображения распределенных массивов. Анализируя директивы спецификации, компилятор FDVM строит деревья отображения и генерирует операторы для создания распределенных массивов:

Например, следующие директивы

REAL A(100), B(100), C(100,100), D(100)

*DVM$ TEMPLATE T(100,100)

*DVM$ DISTRIBUTE T (BLOCK, BLOCK)

*DVM$ ALIGN A(I) WITH T(I,*)

*DVM$ ALIGN B(I) WITH T(*,I)

*DVM$ DISTRIBUTE C (BLOCK, BLOCK)

*DVM$ DISTRIBUTE D (GEN_BLOCK(NB)) ONTO P

задают следующее дерево выравниваний:

A B

\ /

T

Для создания распределенного объекта генерируется следующая последовательность операторов:

  • для шаблона выравнивания T

* получение вектора размеров измерений шаблона

size(1) = размер-N-ого-измерения

. . .

size(N) = размер-1-ого-измерения

* создание представления абстрактной машины

iamv = crtamv(am,N,size,...)

* отображение представления абстрактной машины на процессорную систему

it = distr(iamv,ps,...)

где am – ссылка на текущую абстрактную машину,

ps – ссылка на текущую процессорную систему.

  • для массива A с атрибутом ALIGN

* запоминание нижних границ измерений распределенного массива

* в его заголовке

A(N+3) = L1

. . .

A(2*N) = LN

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

it = crtda(A,i0000m,N,...)

. . .

* выравнивание (отображение) распределенного массива

it = align(A,iamvt,N,...)

  • для массива C с атрибутом DISTRIBUTE

* получение вектора размеров измерений массива

size(1) = размер-N-ого-измерения

. . .

size(N) = размер-1-ого-измерения

* создание представления абстрактной машины

iamv = crtamv(am,N,size,...)

* отображение представления абстрактной машины на процессорную систему

it = distr(iamv,ps,...)

* запоминание нижних границ измерений распределенного массива

* в его заголовке

C(N+3) = L1

. . .

C(2*N) = LN

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

it = crtda(C,i0000m,N,...)

. . .

* выравнивание (отображение) распределенного массива

it = align(C,iamv,N,...)

  • для массива D с атрибутом DISTRIBUTE (формат GEN_BLOCK):

* получение вектора размеров измерений массива

size(1) = размер-N-ого-измерения

. . .

size(N) = размер-1-ого-измерения

* создание представления абстрактной машины

iamv = crtamv(am,N,size,...)

* установка весов элементов процессорной системы

it = genbli(ps,iamv,NB,…)

* отображение представления абстрактной машины на процессорную систему

it = distr(iamv,ps,...)

* запоминание нижних границ измерений распределенного массива

* в его заголовке

C(N+3) = L1

. . .

C(2*N) = LN

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

it = crtda(D,i0000m,N,...)

. . .

* выравнивание (отображение) распределенного массива

it = align(D,iamv,N,...)

Операторы для создания распределенных объектов вставляются в программную единицу перед первым исполняемым оператором.

Для динамического массива, адресуемого с помощью переменной POINTER, генерируется такая же последовательность операторов, но она вставляется в программу вместо оператора:

pointer= ALLOCATE(...).

Секция массива HEAP:

HEAP( I : I+header-size-1)

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

Тип файла документ

Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.

Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.

Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.

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

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