Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Организация и исследование эффективных вычислений для решения задач аэроакустики на кластерных архитектурах (магистерская диссерта / Буренков С. Организация и исследование эффективных вычислений для решения задач аэроакустики на кластерных архитектурах.doc
Скачиваний:
86
Добавлен:
28.06.2014
Размер:
2.27 Mб
Скачать

3.5. Исследование обменных взаимодействий в модели передачи сообщений

Организация вычислительного процесса в MPI строится по принципу обмена информацией между процессорами-исполнителями. Все обмены можно разделить на две категории – массовые обменные взаимодействия и точечные обмены.

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

Произведением двух прямоугольных матриц иназывается матрица

:.

Умножение матриц предполагает выполнение операций умножения и столько же операций сложения исходных матриц. При умножении квадратных матриц размераколичество выполненных операций имеет порядок [15]. Известны последовательные алгоритмы умножения матриц, обладающие меньшей вычислительной сложностью. Примером такого алгоритма может служить алгоритм Штрассена. Этот алгоритм при выполнении матричного умножения требует выполнения числа операций, что дает заметный выигрыш на больших плотных матрицах уже начиная сn = 64[16].

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

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

Широко используется блочный подход в задаче матричного умножения. Так, алгоритмы Фокса и Кэннона [11] нацелены на то, чтобы в каждый текущий момент времени, подзадачи содержали лишь часть необходимых для проведения расчетов данных, а доступ к остальной части данных обеспечивался бы при помощи передачи данных между процессорами. Серьезным недостатком обоих алгоритмов является требование: размерность блока должна быть равна квадратному корню из количества исполнителей.

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

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

Рис. 3.3. Иллюстрация блочного способа матричного умножения

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

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

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

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

Первый режим – наличие или отсутствие проверки нулевых блоков. Как и в задаче решения СЛАУ, такая проверка способна обеспечить существенное ускорение за счет игнорирования «лишних» межблочных операций умножения.

Второй режим – задание размерности блоков. Этот режим поможет проследить влияние «зернистости» разбиений на временные показатели решения задачи в модели передачи сообщений.

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

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

Рис. 3.4. Организация обменов при последовательно-параллельном матричном умножении

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

На рис. 3.5 представлены графики времени умножения матриц и в зависимости от размерности блоков, на которые проводилось их разбиение в процессе умножения. Эксперимент проводился на ПК с процессором IntelCore2T6600 (2.20GHz), ОЗУ 4 ГБ.

Рис. 3.5. Зависимости времени решения параллельной реализации от размерности блоков при умножении матриц и

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

На рис. 3.6 изображен аналогичный график для матриц и.

Рис. 3.6. Зависимости времени решения параллельной реализации от размерности блоков при умножении матриц и.

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

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