cdvmPDr (1158404), страница 3

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

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

rg=0;

RMG_##rg=0;

3.4.5Удаленные ссылки

Удаленные ссылки заменяются на ссылки к соответствующему буферу.

3.5Редукционные операции

3.5.1Директива REDUCTION_GROUP

Контекст и синтаксис.

DVM(REDUCTION_GROUP) void * red-group-id;

Выход компилятора.

RedGroupRef red-group-id;

Замечание. Исходное описание заменено.

3.5.2Поддиректива REDUCTION

Контекст и синтаксис.

DVM( PARALLEL | TASK_REGION ... ;

REDUCTION [ red-group-id : ] red-operation...

... ) ...

Выход компилятора.

DVM_CREATE_RG(rg, (

DVM_RVAL(...) | DVM_RLOC(...) // for each operation

...

));

loop creation and mapping

DVM_REDUCTION20(loopid,rg); // insert to the group

loop headers and body

[ DVM_END_REDUCTION(); ] // synchronous reduction

Замечание. Макрокоманда DVM_CREATE_RG(rg,rvs) расширяется в

if(rg==0) rg=crtrg_(1,1);

(void)rvs;

Макрокоманда DVM_REDUCTION(loopid,rvs) расширяется в

{ RedGroupRef DVM_RG;

LoopRef DVM_LP0=0;

PSSpaceRef DVM_PSSpace=DVM_LP##loopid;

DVM_RG=crtrg_(1, 1);

(void)rvs;

DVM_INSERT_RV();

Макрокоманда DVM_REDUCTION20(loopid, rg) расширяется в

{ RedGroupRef DVM_RG=rg;

LoopRef DVM_LP0=0;

PSSpaceRef DVM_PSSpace=DVM_LP##loopid;

DVM_INSERT_RV();

rg=DVM_RG;}

Макрокоманда DVM_INSERT_RV() расширяется в

while(CDVM_TOP!=CDVM_BOTTOM) {

insred_( &DVM_RG, (RedRef*)CDVM_TOP, &DVM_PSSpace, 1);

}

Макрокоманда DVM_END_REDUCTION() расширяется в

{strtrd_(&DVM_RG);

waitrd_(&DVM_RG);

delrg_(&DVM_RG);}

}

3.5.3Редукционные переменные и операции

Контекст и синтаксис.

DVM(...; REDUCTION ... MAX(red-var) ... )

DVM(...; REDUCTION ... MIN(red-var) ... )

DVM(...; REDUCTION ... SUM(red-var) ... )

DVM(...; REDUCTION ... PROD(red-var) ... )

DVM(...; REDUCTION ... AND(red-var) ... )

DVM(...; REDUCTION ... OR(red-var) ... )

DVM(...; REDUCTION ... MAXLOC(red-var,loc-var) ... )

DVM(...; REDUCTION ... MINLOC(red-var,loc-var) ... )

Выход компилятора.

DVM_RVAR(rf_MAX,var,t,l)

DVM_RVAR(rf_MIN,var,t,l)

DVM_RVAR(rf_SUM,var,t,l)

DVM_RVAR(rf_PROD,var,t,l)

DVM_RVAR(rf_AND,var,t,l)

DVM_RVAR(rf_OR,var,t,l)

DVM_RLOC(rf_MAX,var,t,l,loc-var)

DVM_RLOC(rf_MIN,var,t,l,loc-var)

Замечание. Параметр t -- это код типа переменной (rt_INT, rt_LONG, rt_FLOAT, rt_DOUBLE). Параметр l -- это число элементов в red-var (если это массив) или 1. Макрокоманда DVM_RVAR(f,v,t,l) расширяется в

crtred_(f, &(v), t, l, 0, 0, 1)

Макрокоманда DVM_RLOC(f,v,t,l,loc) расширяется в

crtred_(f, &(v), t, l, &(loc), sizeof(loc), 1)

3.5.4Директива REDUCTION_START

Контекст и синтаксис.

DVM(REDUCTION_START red-group-id);

Выход компилятора.

DVM_REDUCTION_START(red-group-id);

Замечание. Выполнимая директива конвертируется в оператор. Макрокоманда DVM_REDUCTION_START(rg) расширяется в

strtrd_((RedGroupRef*) &rg)

3.5.5Директива REDUCTION_WAIT

Контекст и синтаксис.

DVM(REDUCTION_WAIT red-group-id);

Выход компилятора.

DVM_REDUCTION_WAIT(red-group-id);

Замечание. Выполнимая директива конвертируется в оператор. Макрокоманда DVM_REDUCTION_WAIT(rg) расширяется в

waitrd_((RedGroupRef*) &rg);

delrg_((RedGroupRef*) &rg);

rg=0;

3.6Неявные конструкции

3.6.1Создание и удаление распределенных массивов

Контекст и синтаксис.

array = malloc(dim1 *...* dimr * elem-size);

free( array );

Выход компилятора. Генерируются все или часть следующих операторов в зависимости от описания массива array.

[ DVM_CREATE_TEMPLATE(am,t,r,di); // implicit template ]

[ DVM_ONTO(ps,k,ls,hs); // target system ]

[ DVM_DISTRIBUTE(amv,ps,k,axs); // distribute template ]

[ DVM_GENBLOCK(am,ps,k,gbs); // GENBLOCK parameters ]

DVM_MALLOC(arr,r,len,dim,lw,hw,redis) // initialize array handler

[ DVM_ALIGN(arr,base,k,i,a,b) // align with template ]

Замечание. Макрокоманда DVM_MALLOC(arr,r,len,dim,lw,hw,redis) расширяется в

{crtda_( arr, 0, NULL, r, len, dim, 0, redis, lw, hw );

}

Макрокоманда DVM_ALIGN(arr,base,k,i,a,b) расширяется в

{align_( arr, &(base), i, a, b);

}

Макрокоманда DVM_FREE(arr) расширяется в

(delda_(arr));

3.6.2Статические распределенные массивы

Контекст и синтаксис.

DVM(DISTRIBUTE | ALIGN...)

element-type array-id "["const-dim"]"...;

Выход компилятора. Стандартная последовательность создания массива как и в случае malloc.

Замечание. Для глобальных описаний неявный malloc вставляется в начало функции main. Для локальных -- перед первым оператором блока.

3.6.3Доступ к распределенным данным

Контекст и синтаксис. Обычные ссылки на элементы массивов array[ind1]...[indr] с распределенным array. Допускается также специальная форма ссылок в виде макрокоманд array(ind1,...,indr) для моделирования динамических массивов.

Выход компилятора.

DAElm<r>(type,array-id,ind1,...indr)

Замечание. Это макрокоманды RTL.

3.6.4Собственные вычисления

Контекст и синтаксис.

lhs=rhs; // assignement

Выход компилятора.

if(DVM_ISLOCAL(lhs)) {

lhs = rhs ; }

DVM_ENDLOCAL();

Замечание. Оператор собственных вычислений это присваивание распределенному массиву в нераспределенной ветки программы. Оно должно "охраняться" проверкой локальности элемента. Макрокоманда DVM_ISLOCAL(a,r,ind) расширяется в

tstelm_(a, ind)

Макрокоманда DVM_ENDLOCAL() расширяется в

dskpbl_()

3.6.5Инициализация и завершение параллельного выполнения

Контекст и синтаксис.

int main( int argc, char ** arg)

{

declarations...

first-statement

...

[ exit(rc); ]

...

return rc;

}

Выход компилятора.

int main( int argn, char ** args)

{

declarations...

DVM_INIT(0,argn,args); // initialization of RTL

[ implicit static array creation ]

[ tracing of initialized variables ]

[ other implicit actions ]

first-statement

...

[ DVM_EXIT(rc); ] // exit through RTL

...

DVM_RETURN(rc); // exit through RTL

}

Замечание. Для генерации корректной программы функция main должна принимать параметры командной строки (которые затем будут переданы RTL) и должна завершаться оператором return или exit. Макрокоманда DVM_INIT(argn,args) расширяется в

{rtl_init(0L,argn,args);

}

Макрокоманда DVM_RETURN(r) расширяется в

{lexit_(r);}

Макрокоманда DVM_EXIT(r) расширяется в

{lexit_(r);}

3.6.6Функции ввода-вывода

Компиляция функций ввода-вывода сводится к переименованию функции iofun на ее RTL аналог dvm_iofun. Единственным исключением являются функции fread() и fwrite(), когда они применяются к распределенному массиву. В это случае массив читается или пишется целиком. Остальные параметры игнорируются.

3.7Отладочные расширения

3.7.1Анализатор производительности. Циклы

Контекст и синтаксис.

[ DVM(PARALLEL... ) ]

DO(var,first,last,step) // or

FOR(var,times)

loop-body

Выход компилятора.

BPLOOP(n) // for parallel loop or

BSLOOP(n) // for sequential loop

code for loop

ELOOP(n)

Замечание. Параметр n это порядковый номер цикла для идентификации парных команд. Множество циклов, для которых генерируются эти макрокоманды, зависит от параметров командной строки (-e1 ... -e4). Макрокоманда DVM_BPLOOP(n) расширяется в

bploop_(n);

Макрокоманда DVM_BSLOOP(n) расширяется в

bsloop_(n);

Макрокоманда DVM_ELOOP(n) расширяется в

eloop_(n, line);

3.7.2Анализатор производительности. Интервалы

Контекст и синтаксис.

DVM(INTERVAL [ int-expr ] )

{ C-statements }

Выход компилятора.

DVM_BINTER(n,v)

{ code for statements }

DVM_EINTER(n)

Замечание. Параметр n это порядковый номер цикла для идентификации парных команд. Если int-expr отсутствует, то параметр v будет иметь некоторое стандартное значение. Макрокоманда DVM_BINTER(n,v) расширяется в

binter_(n, v)

Макрокоманда DVM_EINTER(n) расширяется в

einter_(n,line )

3.7.3Отладчик. Трассировка данных

Контекст и синтаксис. Любая ссылка на обычную или распределенную переменную var в операторах СИ или инициализация переменной.

Выход компилятора.

DVM_STVA(type,rt,var,base,rhs) // lh-side of assignement

DVM_LDV(type,rt,var,base) // for read access

DVM_STV(type,rt,var,base) // to register initialization

Замечание. Множество ссылок, для которых генерируются эти макрокоманды, зависит от параметров командной строки (-d1 ... -d4). Макрокоманда DVM_LDV(type,rt,var,base) расширяется в

*(type*) ( ( DVM2A((long)&(var),rt) &&

dldv_(&CDVM_TOP[1],

(AddrType *)&CDVM_TOP[0],

(long *) base, #var, -1) && 0) ? 0 :

)

Макрокоманда DVM_STV(type,rt,var,base) расширяется в

( DVM2A((long)&(var), rt),

dprstv_(&CDVM_TOP[1], (AddrType *)&CDVM_TOP[0],

(long *) base, #var, -1),

dstv_())

Макрокоманда DVM_STVA(type,rt,var,base,rhs) расширяется в

( DVM2A((long)&(var), rt),

dprstv_(&CDVM_TOP[1], (AddrType *)&CDVM_TOP[0],

(long *) base, #var, -1),

(*(type *)(CDVM_TOP[0]) = rhs),

dstv_())

Такая ужасная конструкция появилась в результе попытки переноса под MS Visual-C 5.0. -- Необычный порядок вычисления операции-запятая.

3.7.4Отладчик. Трассировка вычислений

Контекст и синтаксис. Любой цикл или конструкция TASK_REGION.

Выход компилятора.

parallel loop creation

DVM_PLOOP(n,r,ls,hs,ss) // or DVM_SLOOP(n)

loop-headers

DVM_ITER(r,vars)

code for loop body

DVM_ENDLOOP(n)

для цикла или

DVM_BTASK(n) // in TASK_REGION header

...

DVM_ETASK(n)

ON-block or ON-loop body

...

DVM_NTASK(ind) // end of TASK_REGION construct

для конструкции TASK_REGION.

Замечание. Макрокоманда DVM_PLOOP(n,r,ls,hs,ss) расширяется в

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

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

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