Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

malyshkin_ve_korneev_vd_-_parallelnoe_programmirovanie_multikompyuterov

.pdf
Скачиваний:
63
Добавлен:
28.03.2016
Размер:
3.12 Mб
Скачать

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

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

Замечание 2. Свойство 3 ограничивает минимальное количество ресурсов, нужных для выполнения программы.

Однако при конструировании параллельной программы,

реализующей алгоритм, экономия ресурсов вычислителя обычно не является первоочередным критерием. Если программе минимально требуется для исполнения 3 ПЭ, но на

10 ПЭ она исполняется в 20 раз быстрее, то последнее отображение и может оказаться наилучшим в конкретном случае. Как правило, задача конструирования подходящего отображения М является сложно решаемой многокритериальной задачей, с которой (не слишком хорошо)

справляются применением различных эвристик.

Замечание 3. Выполнение свойства 1 нужно для того,

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

188

другой пойдет транзитом через промежуточные ПЭ, что

связано обычно с большими затратами ресурсов и

значительной потерей времени.

Замечание 4. Худший случай невыполнения свойства 2

тот, когда n ПЭ начинают одновременно исполнять загруженные в них процессы и недолгое время t1 работают параллельно, затем n-1 ПЭ останавливаются (например, для размещенных в них процессов не выработаны еще входные данные), а один ПЭ еще долгое время t2 работает. В

завершение все n ПЭ работают параллельно в течении короткого времени t3. Если обозначить абсолютный простой ПЭ O=(n-1)*t2, а абсолютную полезную загрузку мультикомпьютера W=nt1+t2+nt3, то понятно, что относительная загрузка мультикомпьютера WL=W/(O+W)

стремится к 1/n с увеличением t2 при небольших t1 и t3.

Освободить n-1 простаивающих ПЭ на время t2 для выполнения другой работы с тем, чтобы затем их снова захватить, нельзя ввиду опасности дедлока как следствие попытки дозахвата ресурса. Поэтому простой O=(n-1)*t2

практически неизбежен. Понятно, что накопить безопасно

(дозахватить по частям, удовлетворяя условие банкира) n-1

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

в момент, когда программа p1 попробует дозахватить нужные

189

ей n-1 ПЭ, ещё несколько параллельных программ p2,…, p m

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

разделяя его ресурсы. Для такого дозахвата ПЭ программа p1

вначале должна получить максимальный приоритет по доступу к ПЭ, чтобы никакая другая программ не могла оспорить её право на освободившиеся ПЭ, после чего переходит в состояние ожидания свободных ПЭ. Если одна из исполняющихся программ pr, 2rm, завершилась и освободила свои kr ПЭ, эти kr ПЭ захватываются программой p1. Если kr<n, то p1 остается в состоянии ожидания до завершения следующей программы. И так до тех пор, пока таким накопительным способом не наберёт нужные ей n-1

ПЭ. Понятно, что это ожидание может быть сколь угодно большим. Но конечно, как это часто бывает в программировании, существует теоретически такой крайний случай, когда t2>>t1+t3, и в момент дозахвата ни одна из программ p2,…, p m не владеет ПЭ. На реальной смеси задач (в

обычном мультипрограммном режиме эксплуатации мультикомпьютера) этот случай мало вероятен.

Замечание 5. Свойства 1 и 2 выполнимы одновременно далеко не всегда. На рис. 6.2.а изображен граф операций массового алгоритма, а на рис. 6.2.б - структура коммуникационной сети мультикомпьютера. Если предположить, что время выполнения всех процессов

190

примерно одинаково, то для отображения М (рис. 6.2.б)

процесс d должен передавать данные транзитом через ПЭ b и c, а следовательно и программа будет выполняться с большими затратами времени и ресурсов на коммуникации.

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

x[i]

 

 

 

 

a

b

c

a

 

 

 

 

 

 

b

c

d

e

 

d

e

 

Рис. 6.2.а

 

 

Рис. 6.2.б

Задача статического (до начала вычислений) конструирования отображения М не имеет хорошего общего технологичного решения и требует таких знаний об алгоритмах (к примеру,

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

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

191

программе содержится итеративный счет или обработка записей файла, число которых заранее неизвестно.

Следовательно, величина загрузки ПЭ статически определяется весьма и весьма приблизительно. Понятно, что такая неопределенность может привести (и приводит) к

неудачным решениям

Замечание 7. Пусть в программе есть циклический участок,

считывающий и обрабатывающий записи файла. Для обработки каждой записи файла порождается отдельный процесс. Число итераций порождающего процессы цикла зависит от размера файла и не известно до начала вычислений.

Следовательно, количество процессов на этапе конструирования отображения М вообще неизвестно. В

дополнение к этому, все порожденные процессы могут иметь существенно разное время выполнения, а конкретные временà исполнения процессов неизвестны и не могут быть известны.

По этой причине при конструировании отображения М приходится пользоваться нечёткой информацией вида "время выполнения операции а значительно больше времени выполнения операции b". В условиях такой неопределенности вообще не приходится ожидать конструирования отображения

М хорошего качества.

Замечание 8. В случае, когда мультикомпьютер содержит в своем составе не универсальные (специализированные) ПЭ, не

192

всякий процесс может быть назначен на исполнение на любой ПЭ. Такого сорта ограничения на комбинаторные задачи построения расписаний [11, 12] обычно самым негативным образом сказываются на качестве построенного отображения

М.

6.2. Статическое построение отображения М.

Существует множество различных постановок задачи построения расписаний. Здесь рассмотрен простой её вариант в приложении к планированию заданий с учетом требуемых ресурсов1.

Пусть заданы m боксов (bin) B1, B2, …, B m, каждый объёмом c. Пусть также даны n единиц хранения p1, p2, …, p n,

объем каждого pi, 1≤i≤n, обозначим r(pi). Предполагается, что i r(pi)≤c. Все pi надо так разместить в Bi, чтобы некоторый функционал Φ достиг экстремума2.

Можно сформулировать 3 проблемы:

 

 

 

P1. Для фиксированного c

найти

минимальное

число боксов m, в которые

могут

быть

упакованы все pi.

Это, например,

случай

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

минимизировать число используемых для решения задачи

1E.Coffman, J.Leung, D.Ting. Bin-Packing Problems and their Applications in Storage and Processor Allocation. Computer Performance, K.M.Chandy and M.Reiser (eds), North Holland Publishing Company, 1977, p. 327-339

2Такие задачи ещё называются задачами построения расписаний

193

процессоров, чтобы успеть её решить к заданному

моменту времени.

P2. Для фиксированного m найти минимальное c

такое, что все pi могут быть упакованы в m

боксов. Это случай, когда надо найти минимальную

производительность процессорных элементов

мультикомпьютера с m процессорами, достаточную для

решения задачи в заданное время.

P3.

Для

фиксированных

m

и

c

найти

 

максимальное n'≤n

 

такое, что n'

единиц

 

хранения могут быть упакованы в m боксов.

 

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

 

быть максимально использован (задача пакетной

 

обработки).

 

 

 

 

 

 

Здесь

Bi

трактуются

как

процессорные

элементы

мультикомпьютера,

c – объём имеющихся в каждом Bi

ресурсов,

pi

процессы,

которые

должны

быть

исполнены на

мультикомпьютере и запрашивают для своего исполнения некоторое количество ресурсов r(pi). Каждое конкретное назначение pi на Bi задаёт отображение М (расписание).

Допускаются отображения, в которых суммарный запрос ресурса в каждом Bi не превышает c.

194

Все три проблемы NP-полны [13] и для их решения должны использоваться алгоритмы нахождения приближенного решения.

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

Рассмотрим сначала алгоритм построения множества всех допустимых расписаний для случая m=n. Каждое расписание представляется n-кой (набором) вида (p1,p2,…,p n), где p1 в первой позиции набора означает назначение процесса p1 на исполнение на процессор B1 и так далее. Пусть на качество допустимых расписаний не накладываются никакие ограничения, на каждый процессор назначается только один процесс. В число допустимых расписаний попадает, например, (p1,p1,…,p 1). Тогда все множество допустимых расписаний строится тем же алгоритмом прибавления единицы, каким строятся все n-ричные числа от нуля до nn-1. Число всех допустимых расписаний в данном случае равно nn.

В программировании обычно m>>n. Поэтому надо разрешать назначение на один процессор нескольких процессов

195

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

({p1,p2}, {p3,p4}, …,{p n-1,pn}). Множества допустимых расписаний,

конечно, очень велики и на практике работать с ними нельзя.

Ограничения задачи могут значительно сократить множество допустимых расписаний. Для параллельных программ естественным является ограничение, чтобы каждый процесс был назначен не более чем на один процессор3, при этом расписания типа (p1,p1,…,p 1), ({p1,p2}, {p1,p3},…,{p n-1,pn}) становятся не допустимыми. Другое ограничение связано с учетом информационных зависимостей. Если она существует, например,

между процессами p1 и p2, и процессоры B1 и B2 соседние

(связаны физическим линком), а процессоры B1 и B3 не являются соседними, то расписания типа ({p1,p2}, {p3},…,{p n}) и ({p1}, {p2,p3},…,{p n}) допустимы (информационно зависимые процессы назначены на один или соседние процессоры), а расписание ({p1}, {p3}, {p2},…,{p n}) – не допустимо. Такие сокращения множества допустимых расписаний очень полезны для уменьшения затрат на получение решения, так как отбраковка расписания происходит ещё на этапе его конструирования, часть расписаний не строится вообще, и значение функционала не вычисляется.

3 Ограничение естественное, если не надо обеспечивать высокую надежность вычислений. В противном случае оно недопустимо

196

К сожалению, добавление новых ограничений при попытке сократить множество допустимых расписаний нередко быстро приводит к отсутствию решения (не существует расписания, удовлетворяющего всем ограничениям). В таком случае пытаются ослабить какие-то ограничения. Например,

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

Такие стратегии используют некоторое дополнительное знание о задаче. Рассмотрим следующий пример. Пусть заданы m

идентичных процессоров B1, B2, …, B m. Каждый процессор Bi, 1≤i≤ m, имеет оперативную память размером ½Bi½. Заданы информационно независимые процессы p1, p2, …, p n, здесь pj:(mj,tj), каждый процесс pj, 1≤j≤n, требует для своего исполнения память объемом mj, время исполнения tj. Необходимо построить

(субоптимальное) расписание с приемлемым временем исполнения. Несколько процессов могут быть назначены в процессор Bi, если их суммарный запрос памяти не превышает

½Bi½.

197

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]