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

malyshkin_ve_korneev_vd_-_parallelnoe_programmirovanie_multikompyuterov

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

исполнения ресурсов, включая ПЭ, входной и

выходной буферы.

PARDO M,I

READ (10'I) A

READ (20'I) B

PASS 0, A, I, AAP, MIN

PASS 0, B, I, BAP, MIN

Считываются во входной буфер входные данные формируемого процесса и пересылаются в память ПЭ.

EID

Как только I-й процесс исполнит оператор EID,

(I+1)-й процесс сможет использовать входной буфер для ввода своих данных в память управляющей ЭВМ

CALL VADD (AAP, 1, BAP, 1, CAP, 1, M)

Программа VADD I-го процесса загружается в ПЭ для исполнения, но не исполняется.

WAITR

PASS I, CAP, 0, C, MIN

EXEC

WAITP

WRITE (30'I) C

BOD

178

Как только I-й процесс исполнит оператор BOD, (I+1)-й процесс сможет использовать выходной буфер.

PAREND

Выполнение фрагмента программы от PARDO до

PAREND происходит следующим образом. Вначале вводятся входные данные I-го процесса в память управляющей ЭВМ и вводятся в память ПЭi. Затем

формируется

программа I-го процесса и вводится

в

память

ПЭi.

Сформируется

следующая

результирующая программа I-го процесса в памяти

ПЭ (понятно, что вместо параметров заданы их значения):

PASS 0, A, I, AAP, MIN

PASS 0, B, I, BAP, MIN

EID

VADD (AAP, 1, BAP, 1, CAP, 1, M)

WAITR

PASS I, CAP, 0, C, MIN

По оператору EXEC программа I-го процесса запускается на счет, а программа управляющей ЭВМ “зависает” в ожидании на операторе WAITPR.

Программа I-го процесса начинается с выполнения операторов PASS, пересылающих входные данные I-

179

го процесса в ПЭi. Затем исполняется оператор

EID. Оператор сообщит управляющей ЭВМ, что I-й

процесс освободил входной буфер, он может быть использован (I+1)-м процессом для ввода своих данных. Когда программа I-го процесса завершит выполнение оператора EID, начнется исполнение

программы VADD в ПЭi, а параллельно с этим управляющая ЭВМ начнет исполнение (I+1)-й

итерации цикла PARDO-PAREND. При этом

незавершенная I-я итерация составляет ожидающий процесс, который продолжит исполнение после выполнения условия ожидания.

Далее, (I+1)-я итерация цикла PARDO-

PAREND

введет

входные

данные

(I+1)-го

процесса,

сформирует

программу

(I+1)-го

процесса

в памяти ПЭi+1. Предположим, что

выходной

буфер еще

занят I-м процессом. Будет

сформирована только

частичная программа, потому

что выходной буфер

к этому моменту не может

быть захвачен:

 

PASS 0, A, I+1, AAP, MIN

PASS 0, B, I+1, BAP, MIN

EID

Оператор EID стартует выполнение программы

(I+1)-го процесса в памяти ПЭi+1. Параллельно с

180

работой I-го процесса (I+1)-й процесс введет свои входные данные из памяти управляющей ЭВМ в память ПЭi+1. Если к этому моменту выполнение I-

го процесса в ПЭi не завершилось, то (I+1)-й

процесс выполнит оператор EID и зависнет на ожидании освобождения выходного буфера I

процессом. Параллельно может стартовать (I+2)-я

итерация цикла PARDO-PAREND, которая начнет работу по формированию (I+2)-го процесса. Когда

I-й процесс исполнит оператор BOD, тогда может продолжиться приостановленное исполнение (I+1)-

яитерация цикла. Продолжится формирование

(I+1)-го процесса, в памяти

ПЭi+1 будет

доформирован следующий фрагмент программы

(I+1)-го процесса:

VADD (AAP, 1, BAP, 1, CAP, 1, M)

WAITR

PASS I+1, CAP, 0, C, MIN

и начнется исполнение этого фрагмента в ПЭi+1.

Каждый процесс pi программы состоит из фрагментов in1

-ввод данных в память управляющей ЭВМ, put1 - передача входных данных из памяти управляющей ЭВМ в память ПЭ, run1

-исполнение программы в ПЭ, geti - передача результата из памяти ПЭ в память управляющей ЭВМ, outi - пересылка данных

181

из памяти управляющей ЭВМ во внешнюю память. Временнáя

диаграмма (рис. 5.11) исполнения системы процессов может

выглядеть так:

ПЭi+2

 

 

 

 

pi+2

 

ini+2

put

runi+2

geti+2 outi+2

 

 

ПЭi+1

 

 

 

pi+1

 

ini+1

puti+1

runi+1

geti+1 outi+1

 

 

 

ПЭi

 

 

pi

 

pi+3

 

 

ini+3 puti+3

runi+3 geti+3 outi+3

 

ini put runi geti outi

 

Рис. 5.11.

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

в) С использованием операторов SECT - захватить некоторый ресурс - и POST - освободить ранее захваченный ресурс,

разделение ресурсов может быть выполнено еще более эффективно.

Первая половина программы совпадает с

программой примера б).

Памяти хватает только для одного входного и

одного выходного буферов.

182

PARDO M, I

SECT

Некоторый ресурс захвачен, здесь на самом деле имеется ввиду входной буфер.

I-ый процесс продолжает выполнение, вводя свои входные данные в захваченный буфер. (I+1)-ый процесс должен будет здесь задержаться, т.к.

нет другого экземпляра этого ресурса.

READ (10'I) A

READ (20'I) B

PASS 0, A, I, AAP, MIN

PASS 0, B, I, BAP, MIN

POST

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

CALL VADD (AAP, 1, BAP, 1, CAP, 1, M)

CALL APWR

SECT

Захвачен выходной буфер

PASS I, CAP, 0, С, MIN

Как только I-й процесс пройдет SECT, (I+L)

процесс может выполняться до оператора SECT,

используя тот же процессор

EXEC

183

WRITE (30'I) C

POST

Выходной буфер освободился

PAREND

Структура коммутаций крупноблочного иерархического линейного мультикомпьютера фиксирована и это позволяет обеспечивать переносимость прикладных программ, написанных на Ине также тем, что оператор PASS, определяющий взаимодействие между процессами, реализуется по разному в зависимости от реализации межпроцессорного интерфейса:

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

будут исполняться без изменений и в мультикомпьютере, в

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

184

VI. ОТОБРАЖЕНИЕ АЛГОРИТМОВ НА РЕСУРСЫ МУЛЬТИКОМПЬЮТЕРА

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

6.1.Статическая задача

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

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

изображается ориентированным графом процессов (рис. 6.1.а).

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

(коммутационными каналами).

Параллельная программа составляется из фрагментов,

каждый из которых определяет программу выполнения процесса.

185

Эти фрагменты загружаются в процессорные элементы мультикомпьютера в соответствии с отображением М и

запускаются на исполнение. Компилятор системы программирования должен уметь формировать процессы, строить отображение М и определять загрузку программ процессов в ПЭ мультикомпьютера в соответствии с этим отображением. При переносе параллельной программы на другой мультикомпьютер

(с другим числом ПЭ и другой коммутационной сетью)

отображение М должно строиться заново. Таким образом, именно алгоритмы конструирования отображения М в первую очередь ответственны за обеспечение переносимости параллельной программы.

y[i]

 

 

b

d

e

b

t[i]

 

 

 

 

 

 

 

x[i]

 

 

a

c

 

 

 

 

 

 

a

 

d

e

 

 

 

 

 

 

 

 

 

r[i]

 

 

z[i]

c

s[i]

 

 

 

 

 

 

 

 

 

Рис. 6.1.а

 

 

Рис.

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

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

186

Свойство 1. Взаимодействующие процессы должны отображаться в один и тот же ПЭ либо в соседние ПЭ (связанные физическими линками).

Свойство 2. Все ПЭ должны быть загружены работой примерно одинаково, одновременно начинать работу и одновременно ее завершать.

Замечание 1. Как обычно, качество отображения М оценивается некоторым функционалом. Время выполнения параллельной программы Т, потребляемые ресурсы R

мультикомпьютера могут служить примерами такого функционала. Свойства 1 и 2 одновременно выполнимы с приемлемым качеством далеко не всегда. Всегда, однако,

существуют отображения, удовлетворяющие свойствам 1 и 2,

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

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

187

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