fdvmDDr (1158419), страница 3

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

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



void initVariantNames ( )

Функция инициализирует таблицу признаков вершин дерева разбора.

void initLibNames ( )

Функция инициализирует таблицу имен функций системы поддержки Lib‑DVM.

void initDVM ( )

Функция вставляет символы функций Lib-DVM в Таблицу символов.

void initMask ( )

Эта функция обнуляет маску использования функций Lib-DVM. Функции компилятора, генерирующие вызовы функций библиотеки Lib-DVM устанавливают соответствующий элемент маски равным 1. Операторы объявления создаются только для замаскированных (используемых в процедуре) функций Lib-DVM.

void TempVarDVM ( SgStatement *func )

func

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

Функция помещает в Таблицу символов символы следующих служебных переменных:

integer

dvm000(...)

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

integer

hpf000(...)

- массив, используемый для подготовки аргументов и
запоминания результатов функций Lib-DVM
(используется только в HPF-DVM программе)

integer

i0000m(0:0)

- база для адресации распределенных массивов типа
integer

real

r0000m(0:0)

- база для адресации распределенных массивов типа
real

double precision

d0000m(0:0)

- база для адресации распределенных массивов типа
double precision

logical

l0000m(0:0)

- база для адресации распределенных массивов типа
logical

complex

c0000m(0:0)

- база для адресации распределенных массивов типа
complex

integer

i000io(1000)

- буфер для ввода-вывода распределенных массивов
типа integer

real

r000io(1000)

- буфер для ввода-вывода распределенных массивов
типа real

double precision

d000io(1000)

- буфер для ввода-вывода распределенных массивов
типа double precision

logical

l000io(1000)

- буфер для ввода-вывода распределенных массивов
типа logical

complex

c000io(1000)

- буфер для ввода-вывода распределенных массивов
типа complex

integer

idvm00

- do-переменные для реализации ввода-вывода

idvm01

распределенных массивов

. . .

idvm07

integer

i000bf(...)

- буфер удаленных данных типа integer

real

r000bf(...)

- буфер удаленных данных типа real

double precision

d000bf(1000)

- буфер удаленных данных типа double precision

logical

l000bf(1000)

- буфер удаленных данных типа logical

complex

c000bf(1000)

- буфер удаленных данных типа complex

void DeclareVarDVM ( SgStatement *lstat )

lstat

- указатель на оператор

Создает операторы объявления служебных переменных, используемых в процедуре:

  • заголовков распределенных массивов,

  • do-переменных, используемых для реализации ввода-вывода распределенных массивов,

  • переменных для адресации распределенных массивов (память DVM),

  • common блока для памяти DVM,

  • буферных массивов для удаленных данных,

  • буферных массивов для ввода-вывода распределенных массивов,

  • переменных типа группа (SHADOW_GROUP,REDUCTION_GROUP, и т.п.),

  • массивов процессоров и задач,

  • массивов для аргументов и результатов функций Lib-DVM,

  • функций Lib-DVM,

и вставляет их в процедуру вслед за оператором lstat (последним оператором спецификации или оператором, предшествующем DATA ).

(См. TempVarDVM( )).

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

void GenDistArray (

SgSymbol
int
SgExpression
SgStatement

*das,
idisars,
*ps
*stdis );

das

- указатель на символ распределенного массива

idisars

- правила отображения (форматы распределения) хранятся в
элементах служебного массива dvm000 : dvm000(idisars),
dvm000(idisars+1),...

ps

- указатель на выражение, являющееся ссылкой на массив
процессоров

stdis

- указатель на оператор DISTRIBUTE

Генерирует операторы для создания объекта системы Lib-DVM и размещения в памяти массива, объявленного с атрибутом DISTRIBUTE, а также всех массивов, непосредственно или косвенно выровненных на него, и вставляет эти операторы перед первым исполняемым оператором процедуры.

void GenAlignArray (

align
align
int
int

*node,
*root,
nr
iaxis );

node

- указатель на вершину дерева выравнивания, которая
соответствует массиву с атрибутом ALIGN

root

- указатель на вершину дерева выравнивания, на который
выравнивается массив node

nr

- число правил выравнивания

iaxis

- правила выравнивания (AxisArray(nr), CoefArray(nr),
ConstArray(nr)) хранятся в элементах служебного массива
dvm000 : dvm000(iaxis),

dvm000(iaxis+1),...

Генерирует операторы для создания объекта системы Lib-DVM и отведения памяти для массива с атрибутом ALIGN и вставляет эти операторы перед первым исполняемым оператором процедуры.

void doAlignRule_1 ( int rank )

rank

- размерность массива

Генерирует операторы для инициализации 3 массивов правил выравнивания:

AxisArray(i) = 1

CoeffArray(i) = 1

ConstArray(i) = 1 , i=1, rank

, которые используются как аргументы функции align( ) системы поддержки Lib‑DVM.

int doAlignRule (

SgSymbol
SgStatement
int

*alignee,
*algn_st,
iaxis );

alignee

- указатель на символ выравниваемого массива

algn_st

- указатель на оператор ALIGN

iaxis

- индекс элемента служебного массива dvm000 , в котором
хранится AxisArray(1)

Функция генерирует операторы для создания массивов правил выравнивания, которые используются в качестве аргументов функции align( ) системы поддержки Lib-DVM.

Функция возвращает число правил выравнивания (длину списка align-source-list в директиве ALIGN).

void AlignTree ( align *root )

root

- указатель на корень дерева выравнивания

Осуществляет просмотр дерева выравнивания, создает распределенный массив для каждой вершины дерева, вызывая функцию GenAlignArray().

int doDisRuleArrays (

SgExpression
SgExpression

*dist_format,
*aster );

dist_format

- список форматов распределения

aster

- указатель на выражение * или нулевой указатель

Функция генерирует операторы для создания 2 массивов правил отображения, которые используются как аргументы (AxisArray, DistrParamArray) функций distr( ) и redis( ) системы поддержки Lib-DVM.

Функция возвращает индекс элемента массива dvm000 , хранящего первое правило отображения (AxisArray(1)).

void RedistributeArray (

SgSymbol
int
SgExpression
int
SgExpression
SgStatement

*das,
idisars,
*ps
sign
*dasref
*stdis );

das

- указатель на символ перераспределяемого массива

idisars

- правила отображения (форматы распределения) хранятся в
элементах служебного массива dvm000 : dvm000(idisars),
dvm000(idisars+1),...

ps

- указатель на выражение, являющееся ссылкой на массив
процессоров

sign

- признак, определяющий надо ли обновлять значения элементов
перераспределяемого массива

dasref

- указатель на выражение, являющееся ссылкой на
перераспределяемый массив

stdis

- указатель на директиву REDISTRIBUTE

Генерирует оператор для перераспределения массива:

dvm000(i) = redis(...)

и вставляет его в процедуру вместо директивы REDISTRIBUTE.

Для массива, объявленного директивой ALIGN или DISTRIBUTE в форме

*DVM$ DISTRIBUTE :: …

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

void RealignArray (

SgSymbol
SgSymbol
int
int
int
SgStatement

*als,
*tgs,
iaxis
nr
new_sign,
*stal );

als

- указатель на символ массива, который выравнивается заново

tgs

- указатель на символ массива, на который выравнивается als

iaxis

- правила выравнивания хранятся в элементах служебного массива
dvm000 : dvm000(iaxis),

dvm000(iaxis+1),...

nr

- число правил выравнивания

new_sign

- признак, определяющий надо ли обновлять значения элементов
перераспределяемого массива

stal

- указатель на директиву REALIGN

Генерирует оператор, для того чтобы заново выровнять массив:

dvm000(i) = realn(...)

и вставляет его в процедуру вместо директивы REALIGN.

void AllocateArray (

SgStatement
distribute_list

*stmt,
*distr );

stmt

- указатель на оператор с вызовом функции ALLOCATE

distribute_list

- список директив DISTRIBUTE

Анализируется POINTER-переменная в левой части оператора присваивания stmt. Если она имеет атрибут DISTRIBUTE, тогда вызывается функция AllocDistArray( ), иначе вызывается функция AllocAlignArray( ).

void AllocateDistArray (

SgSymbol
SgExpression
SgStatement
SgStatement

*p,
*desc,
*stdis
*stmt );

p

- указатель на символ POINTER-переменной

desc

- указатель на дескриптор (дескриптор –
вектор размеров измерений динамического массива)

stdis

- указатель на директиву DISTRIBUTE, специфицирующую p

stmt

- указатель на оператор с вызовом функции ALLOCATE:
p = ALLOCATE(desc,...)

Генерирует операторы для создания объекта системы Lib-DVM и отведения памяти для динамического массива с атрибутом DISTRIBUTE, а также для всех массивов, непосредственно или косвенно выровненных на него, и вставляет эти операторы вместо оператора stmt.

void AllocateAlignArray(

SgSymbol
SgExpression
SgStatement

*p,
*desc,
*stmt );

p

- указатель на символ POINTER-переменной

desc

- указатель на дескриптор (дескриптор –
вектор размеров измерений динамического массива)

stmt

- указатель на оператор с вызовом функции ALLOCATE:
p = ALLOCATE(desc,...)

Генерирует операторы для создания объекта системы Lib-DVM и отведения памяти для массива, объявленного с атрибутами ALIGN и POINTER, а также для всех массивов, выровненных на него, и вставляет эти операторы в процедуру вместо оператора stmt.

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

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

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