21
. Параллельные методы и алгоритмы линейной алгебры Входные термины: MIMD-система с распределенной памятью; латентность коммуникационной сети; MPI; векторно-конвейерная ЭВМ; векторно-параллельная ЭВМ. Выходные термины: §1. . Базовые алгоритмы 1.1. Матрично-векторное произведение. Положим, что в качестве вычислительной системы используется MIMD-система с распределенной памятью, число процессоров в которой равно N>1. Пусть A- матрица ) * ( n m , x, b – векторы ) 1 * (n . Возможны два подхода к вычислению произведения Ax b = : использование представления произведения Ax в виде совокупности скалярных произведений = = )) , ( .. .......... ) , ( ) , ( 2 1 x a x a x a Ax b m , (1) где i a - i-я строка матрицы A, а ) , ( x a i - скалярное произведение i-й строки матрицы A на вектор x; использование линейных комбинаций столбцов матрицы А = = = n j j j a x Ax b 1 , (2) где j a - j-й столбец матрицы A, а j x - j-я компонента вектора x (так что результатом произведения j j a x является ) 1 * (n вектор, компоненты которого представляют собой произведение соответствующих компонент вектора j a на скаляр j x ). Параллельный алгоритм, основанный на использовании скалярных произведений. Положим для простоты записи, что число строк m матрицы A кратно количеству процессоров N в системе, т.е. что величина m кратна величине N (так что N m p = ). Тогда схему алгоритма можно представить в следующем виде. 1) Распределяем по процессорам строки матрицы A и компоненты вектора x так, как показано на Рис.1. 2) Параллельно на всех процессорах системы вычисляем скалярные произведения соответствующих строк матрицы А на вектор x: на процессоре 1 P - скалярные произведения 1 1 ) , ( b x a = ,…, p p b x a = ) , ( ;

параллельные методы и алгоритмы линейной алгебры

  • Upload
    yshilov

  • View
    4.540

  • Download
    8

Embed Size (px)

Citation preview

Page 1: параллельные методы и алгоритмы линейной алгебры

.Параллельные методы и алгоритмы линейной алгебры

Входные термины:• MIMD-система с распределенной памятью;• латентность коммуникационной сети;• MPI;• векторно-конвейерная ЭВМ;• векторно-параллельная ЭВМ.Выходные термины:

§1. .Базовые алгоритмы

1.1. Матрично-векторное произведение.Положим, что в качестве вычислительной системы используется MIMD-система с

распределенной памятью, число процессоров в которой равно N>1.Пусть A- матрица )*( nm , x, b – векторы )1*(n . Возможны два подхода к

вычислению произведения Axb = :• использование представления произведения Ax в виде совокупности

скалярных произведений

==

)),(

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

),(

),(

2

1

xa

xa

xa

Axb

m

, (1)

где ia - i-я строка матрицы A, а ),( xai - скалярное произведение i-й строки матрицы A на вектор x;

• использование линейных комбинаций столбцов матрицы А

∑=

==n

jjj axAxb

1

, (2)

где ja - j-й столбец матрицы A, а jx - j-я компонента вектора x (так что

результатом произведения jj ax является )1*(n вектор, компоненты которого

представляют собой произведение соответствующих компонент вектора ja на

скаляр jx ).

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

Положим для простоты записи, что число строк m матрицы A кратно количеству

процессоров N в системе, т.е. что величина m кратна величине N (так что N

mp = ). Тогда

схему алгоритма можно представить в следующем виде.1) Распределяем по процессорам строки матрицы A и компоненты вектора x так,

как показано на Рис.1.2) Параллельно на всех процессорах системы вычисляем скалярные произведения

соответствующих строк матрицы А на вектор x:

• на процессоре 1P - скалярные произведения 11 ),( bxa = ,…, pp bxa =),( ;

Page 2: параллельные методы и алгоритмы линейной алгебры

• на процессоре 1P - скалярные произведения 11 ),( ++ = pp bxa ,…, pp bxa 22 ),( =;

• ….

• на процессоре NP - скалярные произведения 1)1(1)1( ),( +−+− = pNpN bxa ,…,

mNpmNp bxa == =),( .3) Передаем на один из процессоров все вычисленные скалярные произведения и

формируем вектор b●

Рис.1. К схеме алгоритма матрично-векторного произведения, основанного на использовании скалярных произведений. Распределение строк матрицы A и компонент векторов X, b по процессорам NPPP ,...,, 21 системы.

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

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

=

==

xA

xA

x

A

A

Axb

NN

............11

, (3)

Page 3: параллельные методы и алгоритмы линейной алгебры

где )*( Np -матрицы iA составлены из p соответствующих строк матрицы A.

Параллельный алгоритм, основанный на использовании линейных комбинаций столбцов матрицы А.

Положим для простоты записи, что число столбцов n матрицы A кратно количеству

процессоров N в системе, т.е. что величина n кратна величине N (так что N

nq = ). Тогда

схему алгоритма можно представить в следующем виде.1) Распределяем по процессорам столбцы матрицы A и компоненты вектора x так,

как показано на Рис.2.2) Параллельно на всех процессорах системы производим следующие вычисления:

2.1) вычисляем скалярные произведения соответствующих столбцов матрицы A на соответствующие компоненты вектора x:

• на процессоре 1P - произведения 11ax ,…, qq ax ;

• на процессоре 1P - произведения 11 ++ qq ax ,…, qqax 22 ;

• ….

• на процессоре NP - произведения 1)1(1)1( +−+− pNqN ax ,…, nNqnNq ax == ;2.2) вычисляем суммы полученных векторов:

• на процессоре 1P - сумму ∑

=

q

iiiax

1 ;

• на процессоре 1P - сумму∑

+=

q

qiiiax

2

1 ;

• на процессоре NP - суму ∑

+−=

Nq

qNiiiax

1)1( .3) Суммируем по схеме сдваивания векторы, полученные на каждом из

процессоров, либо передаем их все на один из процессоров, на котором выполняем это суммирование●

Относительно алгоритма, основанного на использовании линейных комбинаций столбцов матрицы А, справедливо замечание, аналогичное замечанию 1. Заметим также, что в алгоритме, основанном на использовании скалярных произведений, каждое из произведений ],1[, NixAi ∈ (см. формулу (3)) может быть с равным успехом вычислено с помощью алгоритма, основанного на использовании линейных комбинаций столбцов матрицы iA .

Page 4: параллельные методы и алгоритмы линейной алгебры

Рис.2. К схеме алгоритма матрично-векторного произведения, основанного на использовании линейных комбинаций столбцов матрицы A. Распределение столбцов матрицы A и компонент вектора x по процессорам NPPP ,...,, 21 системы.

Оценка эффективности алгоритма вычисления матрично-векторного произведения.

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

Для простоты записи положим, что время выполнения умножения и сложения двух чисел с плавающей запятой на процессорах NPPP ,...,, 21 одинаково и равно t . Положим

также, что mn = . Тогда время вычисления одного скалярного произведения ii bxa =),(

есть tnn ))1(( −+ и вычислительные затраты calT каждого из указанных процессоров равны

tN

nptnnTcal

2

2))1(( ≈−+= .

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

расходов на прием np компонентов соответствующих векторов ia , прием n компонентов вектора x и передачу p компонентов результирующего вектора b. Таким образом (см. главу 1.2)

RlnN

nSRlpnnpSTcom /)(2/)(2

2

++≈+++= ,

где диаметр коммуникационной сети принят равным единице, S – латентность коммуникационной сети, l – длина вещественного числа в байтах, R- пропускная способность канала связи в [байт/с].

Итого, время выполнения рассматриваемого алгоритма на N процессорах можно оценить величиной

Page 5: параллельные методы и алгоритмы линейной алгебры

≈NT +tN

n2

2 RlnN

nS /)(2

2

++ ,

а время выполнения алгоритма на одном процессоре - величиной tnntnnT 2

1 2))1(( ≈−+= .

Положим, что ][10*10 9 ct −= , l=32. Допустим, кроме того, латентность

коммуникационная сеть ][10*50 6 cS −= , а ее пропускная способность

]/[10*80 6 сбайтR = . Заметим, что примерно такими параметрами обладает сеть, построенная по технологии SCI, в которой для обмена данными используется MPI. На аппаратном уровне пропускная способностью такой сети достигает примерно 400[Мбайт/c] (при использовании в узловом процессоре 32-разрядной шины PCI с частотой 33 МГц).

Для ускорения рассматриваемого алгоритма в результате имеем следующее выражение

NnNnn

Nn

T

TS

NN 522

21

10)(40020

20

+++≈= ,

которое иллюстрирует Рис.3.

Рис.3. Ускорение алгоритма вычисления матрично-векторного произведения с использованием MPI.

Рисунок показывает чрезвычайно низкую эффективность рассмотренного алгоритма: на 4-х, 8-и и 16-и процессорных системах имеет место замедление вычислений; на 64-х процессорной вычислительной системе ускорение не превышает 3. Рисунок получен с помощью следующей MATLAB-программы:

n=100:100:1000;t=10*10.^(-9);l=32;S=50*10.^(-6);R=80*10.^6;N=2;for i=1:1:5 N=N*2; T1=2*t*n.^2;

Page 6: параллельные методы и алгоритмы линейной алгебры

TN=(2*t*n.^2)./N+2*S+(((n.^2)./N+n)*l)./R; SN=T1./TN; hold on; plot(n,SN);end

Влияние на ускорение пропускной способности коммуникационной сети иллюстрирует Рис.4, при построении которого принято, что ]/[10*400 6 сбайтR = (пропускная способность максимально возможна для технологии SCI). Рисунок показывает примерно троекратное повышение ускорения.

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

Рис.4. Ускорение алгоритма вычисления матрично-векторного произведения без использования MPI.

1.2. Матричное умножение.Пусть A- матрица )*( ml , B – матрица )*( nm . Рассмотрим задачу вычисления

произведения этих матриц ABC = , где C – матрица )*( nl . Алгоритм вычисления произведения AB может быть построен на основе

рассмотрения этого произведения в виде совокупности n произведений матрицы A на столбец матрицы B и использовании предыдущих результатов данного параграфа. Однако при вычислении этого произведения чаще используется блочное представление матриц A, B, C.

Положим для простоты записи, что размеры матриц nml ,, кратны числу процессоров в системе N. Тогда матрицу C можно представить в виде

Page 7: параллельные методы и алгоритмы линейной алгебры

=

=

==

∑∑

∑∑

==

==

N

iNiiN

N

iiiN

N

iNii

N

iii

NNN

N

NNN

N

BABA

BABA

BB

BB

AA

AA

ABC

1,,

11,,

1,,1

11,,1

,1,

,11,1

,1,

,11,1

...

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

...

...

..........

...

...

..........

...

=

NNN

N

CC

CC

,1,

,11,1

...

...........

...

, (4)

где N

lp = ,

N

mq = ,

N

nr = и размерность каждого из блоков матриц A,B, С равна,

соответственно )*( qp , )*( rq , ( rp * ) Из (4) следует, что блок kjC , матрицы C есть сумма N матричных произведений j-ой строки блоков матрицы A на k-й столбец блоков матрицы B:

∑=

=N

ikiijkj BAC

1,,, , ],,1[ Nj ∈ ],1[ Nk ∈ . (5)

Схема параллельного алгоритма, основанного на блочном представлении матриц.

1) Распределяем по процессорам блоки матриц A, B так, как показано на Рис.52) Параллельно на всех процессорах системы производим вычисление компонент

соответствующих блоков матрицы C:

• на процессоре 1P - блоков kC ,1 , ],1[ Nk ∈ , образующих первую строку блоков матрицы C;

• на процессоре 1P - блоков kC ,2 , ],1[ Nk ∈ , образующих второю строку блоков матрицы C;

• ….

• на процессоре NP - блоков kNC , , ],1[ Nk ∈ , образующих строку N блоков матрицы C;

3) Передаем на один из процессоров все вычисленные блоки и формируем матрицу (4)●

4)Относительно рассмотренного алгоритма также справедливо замечание,

аналогичное замечанию 1. Заметим, кроме того, что легко предложить множество модификаций данного алгоритма:

• вместо строкового распределения блоков матрицы A по процессорам, можно .использовать распределение по столбцам;

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

• и т.д.Заметим, что рассмотренная задача вычисления матрично-векторного

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

Page 8: параллельные методы и алгоритмы линейной алгебры

Рис.5. К схеме алгоритма матричного умножения на основе блочного представления матриц. Распределение блоков матриц A, B по процессорам NPPP ,...,, 21

системы. iA -i-ая строка блоков матрицы A.

Page 9: параллельные методы и алгоритмы линейной алгебры

Входные термины:• MIMD-система с распределенной памятью;• балансировка загрузки.Выходные термины:• слоистая схема хранения матрицы;• циклическая слоистая схема хранения матрицы.

§2. Прямые методы решения систем линейных алгебраических . .уравнений Метод исключения Гаусса

Пусть A- заданная невырожденная матрица )*( nn , b – известный )1*(n -вектор, а x – неизвестный )1*(n -вектор. Рассмотрим систему линейных алгебраических уравнений

bAx = . (1)Положим, что матрица A является плотной.

Простейший вариант метода исключения Гаусса.Прямой ход метода исключения Гаусса имеет вид:

1) Итерация 1. Находим в первом столбце первый ненулевой элемент 0

1,ka

матрицы 0A (если такой элемент отсутствует, то матрица – вырожденная и вычисления заканчиваются). Здесь 0A - расширенная ( )1(* +nn )-матрица системы (1), т.е.

=0A

00,

01,

01

0,1

01,1

...

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

...

nnnn

n

baa

baa.

2) Если 1≠k , то меняем местами строки 1 и k матрицы 0A .

3) Из каждого элемента i-строки матрицы 0A вычитаем величину 01,1

01,

a

ai, ],2[ ni ∈ ,

т.е. полагаем

010

1,1

01,01 a

a

aaa i

ii −= , ],2[ ni ∈ , (2)

где ia - i-строка матрицы A . При этом для всех ],2[, nii ∈ элемент в первом столбце обращается в ноль.

4) Итерация 2. В полученной матрице 1A зафиксируем первую строку и первый столбец. Для оставшейся ( )*)1( nn − )-матрицы повторим шаги 1 – 3. В результате получится ( )1(* +nn )-матрица 2A .

5) Итерация 3. В матрице 2A зафиксируем две первых строки и два первых столбца. Для оставшейся ( )1(*)2( −− nn )-матрицы повторим шаги 1 – 3. В результате получится ( )1(* +nn )-матрица 3A .

6) И т.д.После завершения n итераций система (1) преобразуется к системе вида

Page 10: параллельные методы и алгоритмы линейной алгебры

Заметим, что в последней формуле игнорирована перестановка элементов вектора x в результате прямого хода исключения Гаусса.

Обратный ход метода исключения Гаусса. 1) Итерация 1. Из n-го уравнения системы (3) имеем

nnn

nn

n a

bx

,

= . (4)

2) Итерация 2. Из формулы (4) и (n-1)-го уравнения системы (3) имеем

nnn

nn

nnnn

n a

xabx

1,1

,111

−−

−−−

−= . (5)

3) И т.д●

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

Заметим, что метод исключения Гаусса устойчив, в частности, если матрица A – симметрична и положительно определена и является матрицей с диагональным преобладанием.

Параллельные алгоритмы метода исключения Гаусса.Положим прежде, что количество процессоров в MIMD-системе с распределенной

памятью N равно n и данные распределены по процессорам так, как показано на Рис.1.

Схема простейшего алгоритма метода исключения Гаусса.Прямой ход.1) Итерация 1. Рассылаем первую сроку матрицы 0A процессорам nPPP ,...,, 32 .

2) По формуле (2) Параллельно на каждом из процессоров iP вычисляем

компоненты строки 1ia матрицы 1A , ],2[ ni ∈ .

3) Итерация 2. Рассылаем вторую сроку матрицы 1A процессорам nPPP ,...,, 43 .

4) По формуле (2) Параллельно на каждом из процессоров iP

вычисляем компоненты строки 2ia матрицы 2A , ],3[ ni ∈ .

5) И т.д.Обратный ход.6) Итерация 1. По формуле (4) на процессоре nP вычисляем величину nx .

7) Посылаем эту величину процессорам 121 ,...,, −nPPP .

8) Итерация 2. По формуле (5) на процессоре 1−nP вычисляем величину 1−nx .

9) Посылаем эту величину процессорам 221 ,...,, −nPPP .10) И т. д●

Page 11: параллельные методы и алгоритмы линейной алгебры

Рис.1. К схеме параллельного алгоритма метода исключения Гаусса. Распределение строк матрицы A, и элементов вектора b по процессорам nPPP ,...,, 21 системы. iA -i-ая строка матрицы A.

Заметим прежде, что по завершении работы рассмотренного алгоритма все компоненты вектора x окажутся на процессоре 1P .

Легко видеть, что рассмотренная схема простейшего алгоритма метода исключения Гаусса порождает проблему сильной несбалансированности загрузки процессоров системы. Действительно, после завершения первой итерации прямого хода процессор 1P простаивает вплоть последней итерации обратного хода. Аналогично, после завершения второй итерации прямого хода процессор 2P простаивает вплоть итерации )1( −n

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

Модификации простейшего алгоритма метода исключения Гаусса.Рассмотрим более реалистичную ситуацию, когда nN < - количество уравнений

системы (1) превышает количество процессоров в вычислительной системе. Для простоты

записи положим, что pN

n = .

Слоистая схема хранения матрицы A. При этом первые p строк матрицы A можно расположить на процессоре 1P , вторые p строк - на процессоре 2P . И т.д. В данном случае первый процессор будет простаивать после p итераций, второй процессор – после 2p – итераций. И т.д. Однако в здесь можно организовать параллельные вычисления и пересылки данных, что несколько повышает сбалансированность загрузки процессоров. Так после завершения процессором 1P первой итерации возможно параллельное

вычисление этим процессором компоненты строки 22a матрицы 2A и посылка строки 1

1a

процессорам nPPP ,...,, 32 .

Page 12: параллельные методы и алгоритмы линейной алгебры

Циклическая слоистая схема хранения матрицы A. При этом строки матрицы A размещаются на процессорах следующим образом:

• процессор 1P - строки 1, 1+N , 12 +N ,…, 1)1( +− Np ;

• процессор 1P - строки 2, 2+N , 22 +N ,…, 2)1( +− Np ;• …….• процессор NP - строки p, 2+p , p2 ,…, pN /

Такая схема хранения практически снимает проблему несбалансированности загрузки процессоров.

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

Если A является симметричной положительно определенной матрицей, то вместо гауссового исключения часто используется разложение Холесского, когда матриц A представляется в виде TLLA = , где L- нижняя треугольная матрица. Для решения системы (1) также применяется представление матрицы A в виде QRA = , где Q – ортогональная, а R – верхняя треугольная матрицы. Представление QRA = может быть получено с помощью преобразования Хаусхолдера и преобразования Гивенса.

В вычислительной практике, например, при решении краевых задач для уравнений в частных производных методом конечных разностей и методом конечных элементов, возникают СЛАУ с разреженными (ленточными) матрицами A. Решение таких задач может быть получено с помощью метода исключения Гаусса и упомянутых выше других прямых методов. Разработано также множество специальных прямых методов, ориентированных на ленточные системы, например, блочные методы, метод циклической редукции и пр. Отметим, что при решении ленточных СЛАУ как на последовательных, так и на параллельных вычислительных системах, для хранения матрицы A целесообразно использовать не двумерный )*( nn массив, а совокупность одномерных массивов для хранения отличных от нуля диагоналей матрицы A, либо один одномерный массив, в котором диагонали матрицы A хранятся последовательно друг за другом.

Page 13: параллельные методы и алгоритмы линейной алгебры

Входные термины:•Выходные термины:• синхронные итерации;• асинхронные итерации.

§3. . .Итерационные методы Метод Якоби

Пусть A- заданная матрица невырожденная )*( nn с отличными от нуля диагональными элементами, b – известный )1*(n -вектор, а x – неизвестный )1*(n -вектор. Рассмотрим систему линейных алгебраических уравнений

bAx = . (1)

Метод Якоби.Представим матрицу А в виде суммы ее диагональной части

==

nna

a

a

AdiagD

,

2,2

1,1

......00

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

0...0

0...0

)(

и внедиагональной части

−−

−−−−

=−=

0...

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

......0

......0

2,1,

,21,2

,12,1

nn

n

n

aa

aa

aa

ADB .

В этих обозначениях итерационная формула метода Якоби имеет вид,1 dHxx rr +=+ ,....2,1,0=r , (2)

где )*( nn -матрица BDH 1−= , а )1*(n -вектор bDd 1−= , 0x - начальное приближение к решению системы (1).

Нам далее понадобится далее представление формулы (2) в виде ,),(1

ir

iri dxhx +=+ ,....2,1,0=r ,

где 1+rix , id - i-е элементы векторов

1+rx , d , соответственно; ),( ri xh - скалярное

произведение строки ih матрицы H на вектор rx , В качестве условия окончания итераций (2) обычно используется условие

ε≤− rAxb , (3)

где )( rAxb − - невязка решения СЛАУ (1) на r-ой итерации, ε - заданный скаляр

(требуемая точность решения), векторная норма • в формуле (3) - евклидова норма

2

1

)( rii

n

i

r xabAxb −=− ∑=

(4)

или норма r

iiAxb xAbni

r −∈

=− max],1[

. (5)

Здесь- ia - строка матрицы А, ib - i-й элемент вектора b.

Page 14: параллельные методы и алгоритмы линейной алгебры

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

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

Теорема 2 Если матрица BDA −= симметрична и положительно определена, то итерации метода Якоби сходятся при любом начальном приближении 0x тогда и только тогда, когда матрица BD + положительно определена●

Напомним, что матрица А называется матрицей со строим диагональным преобладанием, если для всех ],1[ ni ∈ имеет место неравенство

∑≠=

>n

ijjjiii aa

,1,, .

Распараллеливание метода Якоби.Положим для простоты записи, что число строк (и столбцов) n матрицы A кратно

количеству процессоров N в системе, т.е. что величина n кратна величине N (так что

N

mp = ). Положим также для определенности, что в качестве векторной нормы в условии

окончания итераций (3) используется евклидова норма (4).Поскольку вычисление компонент матрицы BDH 1−= и вектора bDd 1−=

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

Схема параллельного варианта метода Якоби.1) Распределяем по процессорам элементы матрицы A и компоненты векторов

0, xb так, как показано на Рис.1.2) Параллельно на всех процессорах системы вычисляем соответствующие строки

ih матрицы H, а также соответствующие элементы id вектора d:

• на процессоре 1P - строки 1h ,…, ph и элементы 1d ,…, pd ;

• на процессоре 2P - строки 1+ph ,…, ph2 и элементы 1+pd ,…, pd 2 ;

• ….

• на процессоре NP - строки 1)1( +− pNb ,…, mNpb = и элементы 1)1( +− pNd ,…, mNpd = .3) Параллельно на всех процессорах выполняем очередную итерацию.

3.1) Вычисляем соответствующие компоненты вектора 1+rx :

• на процессоре 1P - компоненты 11

+rx ,…,1+r

px ;

• на процессоре 2P - компоненты 11

++

rpx ,…,

12

+rpx ;

• ….

• на процессоре NP - компоненты1

1)1(+

+−r

pNx ,…,1+=

rnNpx .

3.2) Вычисляем соответствующие суммы в норме (4):

• на процессоре 1P - сумму ∑=

+−p

i

rii xab

1

21 )( ;

• на процессоре 2P - компоненты ∑+=

+−p

pi

rii xab

2

1

21 )( ;

• ….

Page 15: параллельные методы и алгоритмы линейной алгебры

• на процессоре NP - компоненты ∑=

+−=

+−nNp

pNi

rii xab

1)1(

21 )( .

3.3) Передаем с каждого из процессоров NPPP ,...,, 21 полученные компоненты

вектора 1+rx каждому из остальных процессоров.

3.4) Передаем с каждого из процессоров NPPP ,...,, 21 указанные в п. 3.2 суммы на один из процессоров системы.

4) Вычисляем на указанном процессоре значение нормы (4) и проверяем выполнение условия (3).

5) Если условие (3) выполнено, то заканчиваем вычисления. Иначе, переходим на п. 3 для выполнения следующей итерации●

Рис.1. К схеме параллельного варианта метода Якоби. Распределение элементов матрицы A и компонент векторов b, 0x по процессорам NPPP ,...,, 21 системы.

В рассмотренной параллельной схеме метода Якоби на каждой итерации процессор

iP , ],1[ ni ∈ должен, во-первых, передать всем остальным процессорам системы свою

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

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

компонент вектора x. Т.е. в качестве не полученных компонент вектора 1+rx можно использовать значения этих компонент, полученные на предыдущей итерации.

При использовании синхронных итераций и евклидовой нормы (4) в условиях окончания итераций (3), приходится на каждой итерации вычислять и передавать на один из процессоров системы соответствующие части суммы в норме (4) – см. пп. 3.2, 3.4. Это обстоятельство может значительно снизить эффективность метода. Уменьшить количество обменов можно, если использовать асинхронные итерации и норму (5). В этом случае в качестве условия окончания итераций на процессоре iP , ],1[ ni ∈ следует использовать условие

ε≤−+−∈

rjj xAb

ippijmax

],1)1[(,

Page 16: параллельные методы и алгоритмы линейной алгебры

т.е. проверять выполнение условия (3) только для «своих» компонентов вектора 1+rx .Для решения методом Якоби ленточных систем разработаны различные

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

варианты метода Гаусса-Зейделя, метода последовательной верхней релаксации и их модификации, ориентированные на решение ленточных СЛАУ.

Page 17: параллельные методы и алгоритмы линейной алгебры

Входные термины:•Выходные термины:•

§4. . .Методы минимизации Метод сопряженных направлений

Пусть A- заданная матрица невырожденная симметричная положительно определенная )*( nn , b – известный )1*(n -вектор, а x – неизвестный )1*(n -вектор. Рассмотрим систему линейных алгебраических уравнений (СЛАУ)

bAx = . (1)Легко показать, что решение СЛАУ (1) эквивалентно отысканию минимума

квадратичной формы

xbAxxxQ TT −=2

1)( . (2)

Действительно, поскольку матрица A положительно определена, необходимым и достаточным условием минимума функции )(xQ является условие 0)( =∇ xQ . Дифференцируя выражение (2) по x по правилам дифференцирования вектор-функций, получим 0)( =−=∇ bAxxQ .

Решение задачи многомерной безусловной оптимизации )()( *min xQxQ

nRx

=∈

(3)

может быть получено многими итерационными методами, например, методом Гаусса-Зейделя, методом наискорейшего спуска, методом сопряженных направлений и пр. Известно, что в случае квадратичной функции )(xQ решение задачи (3) методом сопряженных направлений может быть получено за n итераций (в точной арифметике). Поэтому ограничимся рассмотрением этого метода.

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

одномерной локальной минимизации вида

min1R∈λ

=+ )( pxQ λ )( * pxQ λ+ , (4)

где *λ - длина шага, обеспечивающая минимум функции (2) вдоль некоторого направления p, исходя из точки x.

Поскольку Q(x) – квадратичная функция, задачу (4) легко решить аналитически. Действительно, из (2) последовательно имеем

2

1)()( =+= pxQQ λλ =−−++ )()()( pxbpxApx TT λλλ

pbxbAppAxpApxAxx TTTTTT λλλλ +−+++ 2

2

1

2

1

2

1

2

1.

Так как произведение ApxT есть скаляр, а матрица A симметрична, справедливо

следующее соотношение AxpApxApx TTTT == )( . Аналогично, поскольку pbT , xbT -

скаляры, имеем bppb TT = , bxxb TT = . Отсюда и из предыдущего соотношения следует, что

=)(λQ =+−++ bpbxAppAxpAxx TTTTT λλλ 2

2

1

2

1)2(

2

1)(

2

1 2 bAxxbAxpApp TTT −+−+ λλ .

Page 18: параллельные методы и алгоритмы линейной алгебры

Вследствие того, что матрица А положительно определена, коэффициент AppT при 2λ положителен. Поэтому полученный квадратный трехчлен достигает минимума при выполнении условия 0)()( **' =−+= bAxpAppQ TTλλ , из которого имеем

),(

))(,()(*

App

bAxp

App

bAxpT

T −=−=λ . (5)

Пусть neee ,...,, 21 - )1*(n единичные векторы - орты используемой системы

координат. Найдем выражение для длины шага *λ , обеспечивающего минимум функции

(2) вдоль направления ie , ],1[ ni ∈ . Поскольку в векторе ie все компоненты, кроме i-ой

компоненты, равны нулю, а i-ая компонента равна единице, то, легко видеть, iiiTi aAee ,= ,

ii

n

jijji

Ti bxabxabAxe −=−=− ∑

=

),()(1

, и выражение (5) приобретает вид

iTi

Ti

Aee

bAxe )(* −=λ =

ii

ii

a

bxa

,

),( −.

Таким образом, если исходя из точки x , делается шаг в направлении ie до достижения минимума функции Q(x) в этом направлении, то получается точка

iii

iii e

a

bxaxexy

,

* ),( −+=+= λ .

Схема метода сопряженных направлений.1) Задаем начальную точку 0x .2) Выполняем n шагов минимизации функции Q(x) методом Гаусса-Зейделя -

последовательно для ni ,...,2,1= находим точки

=+= −i

iii exx λ1i

ii

ii

ii ea

bxax

,

11 ),( −

+−

− . (6)

3) Исходя из точки nx , еще раз находим минимум функции Q(x) вдоль первого

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

=+= ++1

11 exx nnn λ 11,1

11 ),(e

a

bxax

nn −

+ . (7)

4) Исходя из точки 1+nx , находим минимум функции Q(x) вдоль вектора

111 xxe n

n −= ++ - вычисляем координаты точки

=+=≈ +++

1212*

nnn exxx λ 1

11

111

),(

))(,(+

++

+ −+ n

nn

n eAee

bAxex ● (8)

Заметим, что в соотношении (6) векторы 1, −ii xx различаются только значениями i-

ой компоненты. Аналогично, в (7) векторы nn xx ,1+ различаются только значениями первой компоненты.

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

(1) методом сопряженных направлений (при достаточно больших n остальными операциями можно, очевидно, пренебречь):

• для вычисления (6), (7) необходимо вычисление скалярного произведения строки ia матрицы A на соответствующий вектор x – всего (n+1) скалярных произведений;

Page 19: параллельные методы и алгоритмы линейной алгебры

• для вычисления (8) необходимо вычисление произведений матрицы A на вектор 1x и на вектор 1+ne , а также вычисление скалярных произведений

))(,( 11 bAxen −+ , ),( 11 ++ nn Aee - итого два матрично-векторных произведения и

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

распараллеливанию вычисления указанных скалярных произведений и матрично-векторных произведений. Положим для простоты записи, что порядок n системы (1) кратен количеству

процессоров N в системе, т.е. что величина n кратна величине N, так что N

mp = .

Схема простейшего параллельного варианта метода сопряженных направлений.1) Распределяем по процессорам элементы матрицы A и компоненты векторов

0, xb так, как показано на Рис.1.2) Параллельно на всех процессорах системы вычисляем соответствующие части

скалярного произведения ),( 01 xa :

• на процессоре 1P - суму ∑=

p

jjj xa

1

0,1 ;

• на процессоре 2P - суму ∑+=

p

pjjj xa

2

1

0,1 ;

• ….;

• на процессоре NP - суму ∑+−=

Np

pNjjj xa

1)1(

0,1 ;

3) Каждый из процессоров системы посылает каждому из остальных процессоров вычисленную часть скалярного произведения ),( 0

1 xa . На этой основе каждый из процессоров формирует все указанное скалярное произведение и по формуле (6) при i=1 вычисляет вектор 1x ;

4) Аналогично пп.2, 3 производится вычисление вектора 2x .5) …..6) Аналогично пп.2, 3 производится вычисление вектора nx .7) Аналогично пп.2, 3 по формуле (7) производится вычисление вектора 1+nx .8) Параллельно на всех процессорах системы вычисляем соответствующие

компоненты произведений 1Ax , 1+nAe , а также соответствующие части

скалярных произведений ))(,( 11 bAxen −+ , ),( 11 ++ nn Aee :

• на процессоре 1P - компоненты 11 )( xaAx jj = , ],1[ pj ∈ произведения

1Ax , компоненты 11 )( ++ = njjn eaAe , ],1[ pj ∈ произведения 1+nAe , а затем

сумму ∑=

+ −p

jjjn bAxe

1

11 )()( и сумму ∑

=++

p

jjnjn Aee

111 )()( ;

• на процессоре 2P - компоненты 11 )( xaAx jj = , ]2,1[ ppj +∈

произведения 1Ax , компоненты 11 )( ++ = njjn eaAe , ]2,1[ ppj +∈

произведения 1+nAe , а затем сумму ∑+=

+ −p

pjjjn bAxe

2

1

11 )()( и сумму

∑+=

++

p

pjjnjn Aee

2

111 )()( ;

• ….;

Page 20: параллельные методы и алгоритмы линейной алгебры

• на процессоре NP - компоненты 11 )( xaAx jj = , ],1)1[( NppNj +−∈

произведения 1Ax , компоненты 11 )( ++ = njjn eaAe , ],1)1[( NppNj +−∈

произведения 1+nAe , а затем сумму ∑+−=

+ −Np

pNjjjn bAxe

1)1(

11 )()( и сумму

∑+−=

++

Np

pNjjnjn Aee

1)1(11 )()( .

9) Каждый из процессоров системы посылает одному из процессоров вычисленные суммы. На этой основе указанный процессоров по формуле (8) формирует вектор 2+nx ●

Рис.1. К схеме простейшего параллельного варианта метода сопряженных направлений. Распределение элементов матрицы A и компонентов векторов b, 0x по

процессорам NPPP ,...,, 21 системы.

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

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

Page 21: параллельные методы и алгоритмы линейной алгебры