RSS    

   Управление потоками данных в параллельных алгоритмах вычислительной линейной алгебры - (диплом)

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

Пусть все Аii — матрицы размерности mґm, тогда в системе из p=s процессоров

Положим p=4, m=10 и построим график Sp(n) при различных значениях отношения Tsend/Tmul.

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

Вычислим оптимальное число процессоров p’ и построим график Sp(n, m) при n=5000, m=10.

    Значение p’ определяется из уравнения
    , p і 1
    Отсюда
    Результаты эксперимента
    m
    t1(n, m), сек
    tp(n, m), p=2, сек
    Sp(n)
    1000
    2131, 162
    1097, 971
    1, 941
    1100
    2235, 178
    1142, 729
    1, 956
    1200
    3764, 320
    1931, 411
    1, 949
    1300
    4898, 564
    2506, 942
    1, 954
    1. 4. Ленточные матрицы
    Матрица А порядка n называется ленточной, если
    aij = 0, i – j > b1, j – i > b2

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

Заметим, что если полуширина ленты для А равна a, а для В равна b, то полуширина ленты для АВ в общем случае будет равна a+b.

Пусть А — матрица размерности nґn с полушириной ленты a, В — матрица размерности nґn с полушириной ленты a. Причем А разбита на блоков

Число ненулевых элементов матрицы B не превышает (2a+1)n, в блоке Ai — (2a+1)m. В результирующей матрице будет не более (4a+1)n ненулевых элементов.

В системе из p процессоров построим вычисление по следующей схеме: первый процессор вычисляет А1В, второй — А2В и т. д. Соответственно, матрицу А выгодно хранить по строкам, а матрицу В — по столбцам. В результате умножения получим матрицу, которая будет храниться в памяти по строкам.

На вычисление одного ненулевого элемента матрицы АВ затрачивается время не более (2a + 1)Tmul. Тогда

Видно, что ускорение Sp зависит от полуширины ленты a и не зависит от n.

Теперь вычислим оптимальное значение числа процессоров p’ и построим график функции Sp(a) при a=500.

    Значение p’ определяется из уравнения
    Отсюда
    Г Л А В А 2
    ПРЯМЫЕ МЕТОДЫ РЕШЕНИЯ ЛИНЕЙНЫХ СИСТЕМ
    Рассмотрим систему линейных уравнений
    Ax = b
    с невырожденной матрицей А размера nґn .
    2. 1. LU-разложение
    Постановка задачи

Построим разложение мтрицы A = LU, где L — нижнетреугольная матрица с единицами на главной диагонали, а U — верхнетреугольная матрица.

В качестве алгоритма LU-разложения выберем kij-форму с выбором главного элемента по строке (столбцу). Упрощенно алгоритм можно записать следующим образом

    для k = 1 до n-1
    для i = k+1 до n
    lik = aik/akk
    для j = k+1 до n
    aij = aij - likakj
    Распараллеливание и оценки производительности

Предположим вначале, что система состоит из p = n процессоров. Тогда один из возможных вариантов организации LU-разложения выглядит так. Пусть i-ая строка матрицы А хранится в процессоре i. На первом шаге первая строка рассылается всем процессорам, после чего вычисления

    (*)

могут выполняться параллельно процессорами Р2, … , Pn. На втором шаге вторая строка приведенной матрицы рассылается из процессора P2 процессорам P3, … , Pn, и т. д.

На k-ом шаге процессоры P1, … , Pk-1 простаивают, Pk выполняет нормировку и рассылку строки, Pk+1, … , Pn — вычисляют по формуле (*). Рассылка строки выполняется за время (n-k)(n-k)Tsend, нормировка — за время (n-k)Tmul. Параллельная модификация строк выполняется за время (n-k)Tmul. Таким образом

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

В ситуации, когда p

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

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

    В этом случае получим
    При достаточно больших значениях n

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

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

Передача данных происходит за время p(n-k)Tsend, вычисления — за время . Тогда

    При достаточно больших значениях n

Зафиксируем p=4 и построим графики функции Sp(n) при различных значениях отношения Tsend/Tmul.

Вычислим оптимальное число процессоров p’ и построим график функции Sp(n) при n=5000.

    Значение p’ найдем из уравнения
    , p і 1
    Отсюда получаем .
    Результаты эксперимента
    n
    t1(n), сек
    tp(n), p=2, сек
    Sp(n)
    1000
    450, 975
    309, 948
    1, 455
    1100
    600, 691
    408, 078
    1, 472
    1200
    780, 679
    554, 960
    1, 408
    1300
    993, 420
    689, 396
    1, 441
    2. 2. Решение треугольных систем
    Постановка задачи

После выполнения LU-разложения нужно решать треугольные системы.

    Ly = b, Ux = y

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

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

    для i = 1 до n
    для j = 1 до i-1
    bi = bi – Lijyj
    yi = bi/Lii
    Распараллеливание

Пусть вычислительная система состоит из p процессоров, а размерность матрицы L равна n. Разобьем матрицу L на блоки в соответствии с рисунком

Все блоки (кроме, может быть, двух последних) состоят из строк. Также на p блоков разбиваются вектора y и b.

Далее, пусть блок S1 расположен в памяти процессора P1, блоки L2 и S2 — в памяти процессора P2 и т. д. Перед началом вычислений блок bk пересылается процессору Pk, k = 1...p.

    Рассмотрим первый шаг алгоритма решения системы.
    1. Процессор P1 решает систему S1y1=b1
    2. Найденный вектор y1 пересылается процессорам P2, …, Pp

3. Процессор Pk (k=2...p) пересчитывает вектор bk по формуле

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

Будем считать, что матрица L уже распределена по процессорам. В противном случае выгоднее решать систему последовательным способом.

    На одном процессоре задача размерности n решается за время

Оценим время выполнения k-ой итерации в системе из p процессоров

    Тогда

Зафиксируем p=4 и построим графики функции Sp(n) при различных значениях отношения Tsend/Tmul.

Вычислим оптимальное число процессоров p’ и построим график функции Sp(n) при n=1500.

    Значение p’ найдем из уравнения
    , p і 1
    Отсюда получаем .
    Результаты эксперимента

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

    2. 3. QR-разложение
    Постановка задачи
    Рассмотрим ортогональное приведение матрицы A
    A = QR

где Q —ортогональная, а R — верхнетреугольная матрицы. В качестве алгоритма решения задачи выберем преобразование Хаусхолдера. На последовательных компьютерах преобразование Хаусхолдера выполняется примерно в два раза медленне, чем LU-разложение. Поэтому данный метод редко используется для решения СЛУ, однако он широко используется при вычислении собственных значений.

Пусть A — матрица nґn. Рассмотрим запись алгоритма на псевдокоде

    для k = 1 до n-1
    ,
    uTk = (0, …, 0, akk – sk, ak+1, k, …, ank)
    akk = sk
    для j = k+1 до n
    aj = gkukaj, aj = aj - ajuk
    Распараллеливание
    Первый шаг алгоритма выглядит следующим образом
    Послать первый столбец матрицы А всем процессорам

Вычислить s1 в процессоре 1 и переслать его всем процессорам. Пересчитать матрицу А во всех процессорах в соответствии с алгоритмом Хаусхолдера.

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

Пусть А — матрица размерности nґn. И пусть система состоит из p процессоров, причем n=pm.

Распределим матрицу А по процессорам в соответствии со столбцовой циклической схемой хранения.

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

Пересылка начальных данных выполняется за время n2Tsend, пересылка результата — за время n2Tsend. Поэтому

Зафиксируем p=4 и построим графики функции Sp(n) при различных значениях отношения Tsend/Tmul.

    Построим график функции Sp(n) при n=2000.
    Результаты эксперимента
    n
    t1(n), сек
    tp(n), p=2, сек
    Sp(n)
    1300
    1787, 780
    1406, 593
    1, 271
    1400
    2242, 265
    1719, 528
    1, 304
    1500
    2762, 694
    2126, 785
    1, 299
    1600
    4085, 485
    2969, 102
    1, 376
    Г Л А В А 3
    ИТЕРАЦИОННЫЕ МЕТОДЫ РЕШЕНИЯ ЛИНЕЙНЫХ УРАВНЕНИЙ
    3. 1. Метод Якоби
    Постановка задачи
    Пусть А — невырожденная матрица nґn и нужно решить систему
    Ax = b,

где диагональные элементы aii матрицы А ненулевые. Тогда метод Якоби в матричной форме имеет вид

    xk+1 = Hxk + d, k = 0, 1, …, H = D-1B, d = D-1b,

где D = diag(a11, …, ann), B = D – A и указано начальное значение х0.

Конечно, метод Якоби сходится не всегда. Приведем две стандартные теоремы сходимости.

Теорема. Если матрица А имеет строгое диагональное преобладание или является неприводимой с диагональным преобладанием, то итерации метода Якоби сходятся при любом начальном приближении х0.

Теорема. Если матрица A = D – B симметрична и положительно определена, то итерации метода Якоби сходятся при любом начальном приближении х0 тогда и только тогда, когда матрица D + B положительно определена.

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

    где .
    Распараллеливание

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

    , ,

Припишем блоки H1, d1, xk1 процессору Р1, блоки H2, d2, xk2 — процессору Р2 и т. д. Тогда соответствующие компоненты вектора х можно вычислять параллельно по схеме:

    Шаг 1. Переслать на i-й процессор Hi, di, x0.

Шаг 2. На к-й итерации i-й процессор выполняет следующие действия: хiк+1 = Hixik + di

    переслать xik+1 остальным процессорам
    получить недостающие компоненты вектора xk+1

проверить условие сходимости и, если условие выполнено, установить “флаг” Шаг 3. Если хотябы один флаг не установлен, то перейти к следующей итерации (Шаг 2).

    Шаг 4. Передать результат.
    Оценки производительности

Для простоты будем считать, что n = pm. Оценим время выполнения одной итерации метода Якоби.

    Далее, пусть метод сошелся за k шагов. Тогда

Из последней формулы несложно установить, что если число итераций , то каким бы большим небыло значение n, нам все равно не удастся достичь ускорения Sp і 2.

Зафиксируем p=4, k=500 и построим график функции Sp(n) при различных значениях отношения Tsend/Tmul.

Кривая, которой соответствует значение Tsend/Tmul=1000 никогда не поднимется выше 1, т. к. число итераций k слишком мало.

Вычислим оптимальное число процессоров p’ и построим график функции Sp(n, k) при n=5000, k=500.

    Значение p’ найдем из уравнения
    , p і 1

Отсюда . Как и следовало ожидать, при больших значениях k значение p’ практически не зависит от k (уже при k=100 отношение ).

    Результаты эксперимента
    n
    t1(n), сек
    tp(n), p=2, сек
    Sp(n)
    1000
    489, 634
    333, 535
    1, 468
    1100
    608, 457
    404, 232
    1, 505
    1200
    832, 035
    514, 840
    1, 616
    1300
    857, 569
    559, 942
    1, 531
    1400
    992, 017
    661, 823
    1, 499
    ЗАКЛЮЧЕНИЕ

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

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

    Литература

Ортега Дж. Введение в параллельные и векторные методы решения линейных систем. - М. : Мир, 1991.

Водяхо А. И. , Горнец Н. Н. , Пузанков Д. В. Высокопроизводительные системы обработки данных. - М. : Высшая школа, 1997.

Бэбб Р. Программирование на параллельных вычислительных системах. - М. : Мир, 1991.

Белецкий В. Н. Многопроцессорные и параллельные структуры с организацией асинхронных вычислений. Киев: Наукова думка, 1988.

http: //parallel. ru. Информационно-аналитический центр по параллельным вычислениям.

Страницы: 1, 2, 3, 4, 5


Новости


Быстрый поиск

Группа вКонтакте: новости

Пока нет

Новости в Twitter и Facebook

                   

Новости

© 2010.