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

ГОСЫ / Parallelnye_vychislenia

.pdf
Скачиваний:
179
Добавлен:
15.02.2016
Размер:
593.6 Кб
Скачать

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

Рассмотрим понятие полной параллельности на примере функции axpy(Z, a, X, Y). Очевидно, эта функция может быть выполнена на p-процессорах абсолютно параллельно, если каждый процесс будет иметь в своей памяти соответствующую компоненту векторов X, Y и результирующего вектора Z.

В случае Р<n (число процессов меньше длины векторов), можно сгруппировать компоненты векторов так, чтобы на каждом процессе оказалось k Pn компонент векторов (для простоты

предполагаем, что n – кратно P). Тогда, выполняя вычисления k компонент на каждом процессе, мы получим ускорение в Р раз. В общем случае ускорение на P-процессорной ЭВМ составит min(P,n).

Идентичность результата этой функции. Здесь обратим внимание, на то, что при параллельном выполнении функции результат будет точно таким же, как и при её последовательном исполнении

(т.е. при P=1).

Пример 2. Скалярное произведение векторов - функция vecvec_dot (a, X, Y) выполняет следующее действие a = X*Y где a – скаляр и X и Y – векторы размера n..

n 1

По определению скалярного произведения – это ( X iYi ) X 0Y0 X1Y1 ... X n 1Yn 1 . Предположим,

i 0

что компоненты векторов распределены по n процессам и результатом (значением а) должен обладать, только 0 процесс, в отличие от примера 1, где результат хранится как распределенный вектор Z на каждом процессе.

Распараллелить вычисление этой функции можно выполнив независимо k

n

операций

P

 

 

умножения с соответствующим сложением во временные переменные tmp_a, на каждом процессе. Потом, соответственно, просуммировать эти k временных переменных для получения окончательного результата на процессе 0.

Неполная параллельность этой функции.

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

Отсюда следуют следующие два свойства параллельных алгоритмов.

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

Свойство 5 – незначительное отличие численного результата у последовательного и параллельного

алгоритмов.

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

Общие особенности выбора способов распараллеливания.

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

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

11

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

12

6. Основные алгоритмические методы распараллеливания задач. Векторно-конвейерные и векторно-параллельные системы

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

Под крупноблочным распараллеливанием, понимается такой способ, который строго

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

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

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

Под конвейерным распараллеливанием понимается такой способ, который выстраивает цепочку вычислений каждым процессом по шагам, таким образом что i-тый шаг процесса Y, может начаться только после выполнения i-го шага процессом X. В таком случае процесс X

считается предшественником процесса Y, а Y – преемником. Упорядочивая процессы по шагу 1, мы получаем цепочку процессов обработчиков. При этом распараллеливание получается за счет того, что i+1 шаг процесса X может быть совмещен с шагом i процесса Y. Таким образом, получается, что все процессы начинают работу в разное время по мере готовности данных для них от предшественников, полностью совмещая выполнение множества промежуточных шагов, то тех пор пока первый предшественник не закончит свою работу.

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

Определение. Этап от окончания работы первого процесса до окончания последнего процесса называется участком торможения (на этом этапе после выполнения каждого шага из процесса обработки исключается один процесс).

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

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

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

13

Наилучшей аппаратной поддержкой конвейерного распараллеливания являются векторноконвейерные вычислительные системы, которые по классификации Флинна относятся к классу SIMD-систем. Основные принципы, заложенные в архитектуру векторно-конвейерных систем:

конвейерная организация обработки потока команд;

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

Длина обрабатываемых векторов в современных векторно-конвейерных системах составляет, как правило, 128 или 256 элементов. Основное назначение векторных операций состоит в распараллеливании выполнения операторов цикла, в которых обычно сосредоточена большая часть вычислительной работы.

Первый векторно-конвейерный компьютер Cray-1 появился в 1976 году. Архитектура этого компьютера оказалась настолько удачной, что он положил начало целому семейству компьютеров. Современные векторно-конвейерные системы имеют иерархическую структуру:

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

объединение конвейеров операций составляет конвейерное функциональное устройство ;

объединение конвейерных функциональных устройств составляет векторно-конвейерный процессор,

несколько векторно-конвейерных процессоров (от 2 до 16/32/64 и т.д.), объединенных общей памятью, образуют вычислительный узел;

несколько вычислительных узлов, объединенных сетью образуют MPP-систему.

Затрагивая понятие векторизации вычислений, необходимо отметить другой пример SIMD-систем

- векторно-параллельные вычислительные системы . В отличие от векторно-

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

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

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

14

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

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

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

Критериями выбора заданий из очереди и их исполнения являются:

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

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

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

Прежде чем отправить задачу на ВС для выполнения необходимо сформировать заявку. Заявка – это текстовый файл, который содержит набор макроинструкций, которые определяют требуемые для решения задачи ресурсы. Обязательными являются

1)max время выполнения задачи (процессорное время), по истечении которого задача будет удалена и процесс решения прекращен, не зависимо от того, решена задача или нет. 2) объем требуемой оперативной памяти на узле. Каждый вычислительный узел состоит из нескольких процессоров, с определенным объемом оперативной памяти. Задача может использовать всю совокупную ОП на выделенном для нее узле или ее часть.

3)задание конфигурации использования вычислительного узла. Обычно эта информация задается в следующем виде: кол-во узлов : кол-во процессоров на узле.

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

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

15

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

терминалы

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

заявки

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Инструментальный сервер

 

 

 

 

Очередь заявок

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Вычислительный узел 1 (процессоры)

Вычислительный узел 2 (процессоры)

….

Вычислительный узел N (процессоры)

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

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

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

Диспетчер активизируется при наступлении одного из трех событий:

1.по признаку "конец задания",

2.по признаку "процессор свободен" и

3.по прерыванию в моменты времени kτ, k = 0, 1, 2 ....

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

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

При входе в диспетчер, проверяется, наступил ли момент времени kτ, k = 0, 1, .... для переконфигурации ВС в плане определения свободных узлов. Если время наступило, то выполняется переконфигурация. Если время не наступило, то проверяется, произведено ли включение диспетчера по признакам "конец задания" или "процессор свободен". Если на данном процессоре выполнялось задание, и его выполнение было приостановлено (по разным причинам, например, обработка более приоритетного процесса ОС), то производится восстановление задания и процесс его выполнения продолжается. Если ранее прерванных заданий нет, а это признак "конец задания", то идет обращение к очереди заданий с выборкой очередного задания на исполнения.

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

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

16

8. Понятие балансировки нагрузки процессов. Статическая и динамическая балансировка.

Масштабируемость задачи.

Масштабируемость задачи – это пропорциональное увеличение объема задачи с увеличением числа процессоров.

Наличие масштабируемости задач является важным свойством тестовых систем оценки производительности параллельных ВС.

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

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

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

Если предположить, что f не обязательно константа в законе Амдаля, а может уменьшаться при увеличении p, то теоретически можно получить неограниченное ускорение S, несмотря на наличие

последовательного участка. Например, если f kp , то

S ≤

 

 

1

 

 

 

 

 

 

p

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

k

k 1

k

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

k

 

 

 

 

p

 

 

 

 

 

 

 

 

 

 

 

 

 

p

 

 

 

 

 

p

 

 

p

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

и при стремлении p к бесконечности мы можем получить пропорциональное ускорение S(p) ≈ a . p,

где a < 1.0.

Балансировка алгоритма задачи.

Балансировка алгоритма задачи – это обеспечение равномерной (примерно одинаковой) вычислительной нагрузки процессоров.

Алгоритм задачи из нашего примера - поэлементного сложения массивов будет сбалансирован при 2)-ом способе распределения элементов.

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

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

Балансировка нагрузки (Load Balancing) применяется для оптимизации выполнения распределённых (параллельных) вычислений, путем равномерной нагрузки вычислительных узлов. При неравномерной нагрузки балансировка должна обеспечивать механизм переноса (migration – миграцию) части вычислений с наиболее загруженных вычислительных узлов на менее загруженные.

17

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

Кроме того, в случае неоднородности вычислительных систем необходимо учесть, что:

разные вычислительные узлы могут обладать разной производительностью;

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

Статическая и динамическая балансировки Статическая балансировка выполняется до начала выполнения распределенного приложения и в

большинстве классов задач не эффективна.

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

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

Оценка загрузки каждого процесса.

Принятие решений о балансировке.

Перемещение данных.

Оценка загрузки процесса может быть выполнена несколькими способами.

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

Второй - состоит в анализе вычислительного пространства задачи, т.е. измерении загрузки каждого процесса при выполнении задачи по определенным критериям. Этот метод можно сочетать с аналитическим методом оценки.

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

Критерий должен:

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

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

Дисбаланс загрузки может определяться синхронно и асинхронно.

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

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

Перемещение объектов

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

18

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

1) Передача неделимых данных от одного процессора всем остальным процессорам сети

Операция передачи данных от одного процесса всем является одним из наиболее часто выполняемых коммуникационных действий. В зависимости от объема данных процессы могут выполнять передачу неделимых (атомарных) блоков информации или передачу в виде пакета блоков. Рассмотрим временные характеристики выполнения широковещательной передачи данных для неделимых блоков и пакета блоков на примере некоторых топологий сети.

Обозначим через

m - объем передаваемых данных в некоторых единицах, например в байтах, р - количество процессоров,

tн - время начальной подготовки сообщения для передачи, который включает поиск маршрута в сети, формирование буфера передачи и т.д.;

tс - время передачи служебных данных между двумя соседними процессорами (т.е. для

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

tк - время передачи единицы данных по одному каналу передачи, длительность подобной передачи определяется пропускной способностью сети.

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

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

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

Лучшие показатели имеет топология типа гиперкуба.

2) Передача пакетов данных от одного процессора всем остальным процессорам сети

Для топологии кольца алгоритм рассылки может быть получен путем логического представления кольцевой структуры сети в виде гиперкуба. На первом этапе, процессор-источник сообщения передает данные процессору, находящемуся на расстоянии p/2 от исходного процессора. На втором этапе оба процессора, уже имеющие рассылаемые данные после первого этапа, передают сообщения процессорам, находящиеся на расстоянии p/4 и т.д. Время выполнения рассылки в этом случае будет определяться как

19

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

Для топологии решетки-тора алгоритм рассылки аналогичен методу передачи неделимых сообщений. Время выполнения рассылки в этом случае будет определяться как

Для гиперкуба алгоритм рассылки алгоритм рассылки также аналогичен методу передачи неделимых сообщений.

3) Передача неделимых данных от всех процессоров всем процессорам сети

Операция передачи данных от всех процессоров всем процессорам сети (allgather, broadcast) является обобщением двухточечной операции передачи. Подобные операции широко используются при реализации матричных вычислений.

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

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

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

одной и той же горизонтали формируются укрупненные сообщения размера , объединяющие все сообщения горизонтали). Время выполнения этапа

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

Общая длительность операции рассылки определяется соотношением:

Для гиперкуба алгоритм множественной рассылки сообщений может быть получен путем обобщения алгоритма передачи данных для топологии типа реше тки на размерность гиперкуба N. В этом случае, схема коммуникации состоит в следующем. На каждом этапе i, 1≤ i≤N, выполнения алгоритма используются все процессоры сети, которые обмениваются своими данными со своими соседями по i размерности и формируют объединенные сообщения. Время операции рассылки может быть получено при помощи выражения

4) Передача пакетов данных от всех процессоров всем процессорам сети.

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

20

Соседние файлы в папке ГОСЫ