Скачиваний:
19
Добавлен:
11.04.2015
Размер:
87.11 Кб
Скачать

68.Отображение топологии решетки на гиперкуб

Отображение топологии решетки на гиперкуб может быть выполнено в рамках подхода, использованного для кольцевой структуры сети. Тогда для отображения решетки 2r×2s на гиперкуб размерности N = r + s можно принять правило, что элементу решетки с координатами (ij), будет соответствовать процессор гиперкуба с номером

G(ir) || G(js),

где операция || означает конкатенацию кодов Грея

70. 6. Умножение матриц

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

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

Обозначим  Отсюда следует, что  .

Рассмотрим параллельный алгоритм умножения матриц и оценим время его работы.

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

Обозначим  Сравнивая  и  , получим:  Имеем, что время, затрачиваемое на умножение матриц с помощью параллельного алгоритма, в  раз меньше, чем при использовании последовательного.

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

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

Рисунок 4. Схема распределения работ при параллельном умножении матриц.

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

71.. Решение системы линейных уравнений методом Гаусса

В алгоритме, представленном в данном пункте, исходная матрица коэффициентов A и вектор правых частей F разрезаны горизонтальными полосами, как показано на рис. 1.11. Каждая полоса загружается в соответствующий компьютер: нулевая полоса – в нулевой компьютер, первая полоса – в первый компьютер, и т. д., последняя полоса – в p1 компьютер. В примере предполагается, что матрица коэффициентов A и вектор правых частей F разрезаны на части заранее и каждая ветвь считывает свои части с дисковой памяти. Здесь, в примере, каждая ветвь генерирует свои части матрицы. Схемы распределения данных по компьютерам приведены ниже.

Требуется найти решение системы линейных алгебраических уравнений:

a11x1 + a12x2 +  … + a1nxn = f1

a21x2 + a22x2 +  … + a2nxn = f2

. . . . . . . . . . . . . .

an1x1 + an2x2 +  … + annxn = fn

В алгоритме, представленном здесь, исходная матрица коэффициентов A и вектор правых частей F разрезаны горизонтальными полосами, как показано на рис. 1.11. Каждая полоса загружается в соответствующий компьютер: нулевая полоса – в нулевой компьютер, первая полоса – в первый компьютер, и т. д., последняя полоса – в p1 компьютер.

Рис. 1.11.  Разрезание данных для параллельного алгоритма 1 решения СЛАУ методом Гаусса

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

 После прямого хода полосы матрицы A в каждом узле будут иметь вид (рис. 1.12)

Рис. 1.12.  Вид полос после прямого хода в алгоритме 1 решения СЛАУ методом Гаусса.

Пример приведен для четырех узлов; $ – вещественные числа.

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

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

72

Соседние файлы в папке otvety_na_voprosy