rtsIDr (1158449), страница 3

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

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

Абстрактная машина (родительская), представление которой задано ссылкой *AMViewRefPtr, на момент обращения к функции setpsw_ должна быть отображена.

Все процессоры системы, заданной ссылкой *PSRefPtr, должны входить в состав элементного пересечения текущей процессорной системы с процессорной системой, в которую отображена родительская абстрактная машина. Равное NULL значение указателя PSRefPtr или нулевое значение ссылки *PSRefPtr означают, что задаются веса координат элементов текущей процессорной системы.

  1. AMViewRefPtr = NULL или *AMViewRefPtr = 0.

Устанавливаемые веса координат процессоров, как и заданные при запуске системы поддержки, будут использоваться при отображении или переотображении всех представлений абстрактных машин в заданную процессорную систему (кроме тех, для которых функцией setpsw_ уже установлены или будут установлены свои веса координат процессоров).

Все процессоры системы, заданной ссылкой *PSRefPtr, должны входить в состав текущей процессорной системы. Равное NULL значение указателя PSRefPtr или нулевое значение ссылки *PSRefPtr означают, что задаются веса координат элементов текущей процессорной системы.

Вес координаты Pi i-го измерения процессорной системы задаётся значением

i-1

(PSSIZEk + Pi)-го

k=1

элемента массива CoordWeightArray. Число элементов массива CoordWeightArray с весами координат процессоров должно быть равно сумме размеров всех измерений многопроцессорной системы. Веса координат в массиве CoordWeightArray могут быть любыми вещественными положительными числами. При выполнении функции setpsw_ система поддержки корректирует каждый вес Pi делением его на минимальный вес координаты в массиве CoordWeightArray.

Если CoordWeightArray = NULL или CoordWeightArray[0] = 0, то в качестве устанавливаемых весов координат будут приняты веса, заданные параметрами запуска системы поддержки (для начальной процессорной системы), или единичные веса координат (для процессорной системы, не являющейся начальной).

Если CoordWeightArray[0] = 1, то веса всех координат будут установлены равными единице и не будут подвергнуты дальнейшей коррекции, т. е. будут приняты за оптимальные веса координат процессоров (см. ниже).

Функция возвращает нулевое значение.

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

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

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

WEIGHTcalc,i (Pi)

вычислительный вес координаты Pi i-го измерения многопроцессорной системы (заданный в предположении, что веса производительностей всех процессоров равны единице);

WEIGHTperf (P1, ... , Pi, ... , Pn)

вес производительности процессорного элемента (P1, ... , Pi, ... , Pn);

WEIGHTopt,i (Pi)

искомый оптимальный вес координаты Pi i-го измерения многопроцессорной системы.

Будем предполагать, что вес процессора, определяющий загрузку его данными и вычислениями:

  1. пропорционален весу производительности процессора;

  2. при любой производительности процессора равен произведению весов его координат.

Будем считать также, что "вклад" веса производительности процессора в веса его координат одинаков.

Поэтому значение веса производительности процессора WEIGHTperf(P1, ... ,Pi, ... ,Pn) требует увеличения вычислительного веса любой его координаты в WEIGHTperf1/n(P1, ... , Pi, ... , Pn) раз.

Поскольку при вычислении оптимального веса координаты Pi необходимо учитывать веса производительности всех процессоров с координатой Pi, требуемый WEIGHTopt,i(Pi) для любого Pi должен являться решением следующей задачи оптимизации (критерий  максимально равномерная загрузка процессоров):

MAX ( abs( WEIGHTopt,i(Pi) 

WEIGHTperf1/n(P1, ... ,Pi, ... Pn) *

0 p1 < pssize1
. . . . . . .. . . . . . .. .
0
pi-1 < pssizei-1
0
pi+1< pssizei+1
. . . . . . .. . . . . . .. .
0
pn < pssizen

WEIGHTcalc,i(Pi) ) ) MIN

Решение в области больших или равных единице вещественных чисел есть

WEIGHTopt,i (Pi) =

n

WEIGHTcalc,i (Pi) *

WEIGHTperf1/n (P1, ... ,Pi, ... Pn) /  PSSIZEk

0 p1 < pssize1 k=1
. . . . . . . . . . . . ki
0
pi-1< pssizei-1
0
pi+1< pssizei+1
. . . . . . . . . . . .
0
pn< pssizen

Использование оптимальных весов координат процессоров для неравномерного распределения элементов представления абстрактной машины (и, как следствие, элементов распределённого массива и витков параллельного цикла) рассмотрено в п.5.7.

Кроме рассмотренной ранее функции setpsw_, вычислительные веса координат процессоров могут быть заданы с помощью функций

.long genbli_(

PSRef
AMViewRef
AddrType

long

*PSRefPtr,
*AMViewRefPtr,
AxisWeightAddr[],

*AxisCountPtr );

и

.long genbld_(

PSRef
AMViewRef
AddrType

long

*PSRefPtr,
*AMViewRefPtr,
AxisWeightAddr[],

*AxisCountPtr );

Параметры PSRefPtr и AMViewRefPtr этих функций аналогичны одноимённым параметрам функции setpsw_. Веса координат процессоров задаются в отдельном для каждого измерения процессорной системы массиве, адрес которого содержится в массиве AxisWeightAddr: i-й элемент массива AxisWeightAddr является приведённым к типу AddrType указателем на массив с весами координат процессоров (i+1)-го измерения заданной процессорной системы. Функция genbli_ предполагает представление весов координат процессоров в виде целых положительных чисел (integer), а функция genbld_  в виде положительных вещественных (double).

Нулевое значение i-го элемента массива AxisWeightAddr означает, что для (i+1)-го измерения процессорной системы будут установлены веса координат процессоров, равные весам, заданым параметрами запуска системы поддержки (для начальной процессорной системы), или равные единице (для процессорной системы, не являющейся начальной).

Параметр *AxisCountPtr (неотрицательное целое число) задаёт количество элементов в массиве AxisWeightAddr. Его значение не может превосходить размерности заданной процессорной системы. Недостающие до размерности процессорной системы элементы массива AxisWeightAddr будут считаться нулевыми. В частности, равное нулю значение параметра *AxisCountPtr означает, что веса всех координат всех процессоров будут установлены либо единичными, либо равными весам, заданным в параметрах запуска системы поддержки.

Функции возращают нулевые значения.

Замечание. Выполнение функций genbli_ и genbld_ сводится к обращению к функции

.long genblk_(

PSRef
AMViewRef
AddrType

long

long

*PSRefPtr,
*AMViewRefPtr,
AxisWeightAddr[],

*AxisCountPtr,

*DoubleSignPtr ); ,

первые четыре параметра которой идентичны одноимённым параметрам функций genbli_ и genbld_, а последний, *DoubleSignPtr, является ненулевым признаком представления весов координат процессоров в виде вещественных положительных чисел (double).

4.6Задание весов координат процессоров по весам их загрузки

.long setelw_ (

PSRef
AMViewRef
AddrType
long
long

*PSRefPtr,
*AMViewRefPtr,
LoadWeightAddr[],
WeightNumber[],
*AddrNumberPtr );

*PSRefPtr

ссылка на процессорную систему, для элементов которой устанавливаются веса координат.

*AMViewRefPtr

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

LoadWeightAddr

массив, i-й элемент которого является приведённым к типу AddrType указателем на массив с координатными весами загрузки процессоров для (i+1)-го измерения процессорной системы, заданной ссылкой *PSRefPtr.

WeightNumber

массив, i-й элемент которого содержит число элементов (координатных весов загрузки) в массиве, указатель на который задан в LoadWeightAddr[i].

*AddrNumberPtr

число элементов в массивах LoadWeightAddr и WeightNumber.

Функция setelw_ определяет вычислительные веса координат элементов процессорной системы, заданной ссылкой *PSRefPtr, и затем устанавливает их с помощью функции setbld_ (см.п.4.5).

Установленные веса координат процессоров будут использованы только при отображении или переотображении заданного представления абстрактной машины в заданную процессорную систему.

Абстрактная машина (родительская), представление которой задано ссылкой *AMViewRefPtr, на момент обращения к функции setelw_ должна быть отображена.

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

Равное NULL значение указателя PSRefPtr или нулевое значение ссылки *PSRefPtr означают, что задаются веса координат элементов текущей процессорной системы.

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

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

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