
- •Лабораторная работа №3
- •2. Методические указания к лабораторной работе. Методы решения систем линейных уравнений Метод исключения (метод Гаусса)
- •Итерационный метод Гаусса-Зейделя
- •Итерационный метод Якоби
- •Блочный метод
- •Алгоритм выделения ветвей независимых операций в последовательной программе для её распараллеливания. Критерий выделения параллельных ветвей для машин класса мкмд (mimd)
- •3. Задание. Домашняя подготовка
- •Задание в лаборатории
- •4. Литература
- •Приложение 1. Варианты задания
- •Приложение 2. Содержание отчёта о выполнении лабораторной работы.
- •Приложение 3. Основные функции библиотекиMpi.
Блочный метод
Обращение матрицы путём разбиения на клетки.
Пусть имеем матрицу S порядкаT, которая разбита на четыре клетки. Будем искать обратную к ней матрицуS-1 также виде клеточной матрицы
S = |
( |
A |
B |
); |
C |
D |
S-1 = |
( |
K |
L |
); |
M |
N |
где A,K,DиN - квадратные матрицы порядков P и Q; P + Q= T.
Согласно требованию SS-1=E и правилу умножения клеточных матриц, должны иметь место следующие матричные равенства:
AK + BM = E; AL + BN = O; CK + DM = O; CL + DN = E;
Разрешая эту систему относительно K,L,M,N, можно получить следующие три набора 3 набора формул для вычисления искомых клеток:
-
I
II
III
K =(A - BD-1C)-1
N =(D - CA-1B)-1
K =(A - BD-1C)-1
M = -D-1CK
L = -A-1BN
M = -D-1CK
N = (D - CA-1B)-1
M = NCA-1
L = KBD-1
L = -A-1BN
K = A-1 - A-1BM
N = D-1 - D-1CL
Решение систем линейных уравнений методом разбиения на блоки
Пусть имеем систему линейных уравнений, решение которой необходимо свести к последовательности решений подсистем более низкого порядка.
Представим систему линейных уравнений в виде
( |
A11 |
A12 |
)( |
X1 |
) = ( |
B1 |
) |
=> |
A11X1 + A12X2 = B1 |
} |
A21 |
A22 |
X2 |
B2 |
A21X1 + A22X2 = B2 |
где A11, A22- квадратные матрицы, и хотя бы одна из них невырожденная,X1, X2 -векторы искомых неизвестных для подсистем, B1, B2- векторы свободных членов.
Решая систему линейных уравнений относительно X1 и X2получим
-
{
X1 = A11-1 (B1 - A12X2)
X2 =( A22 - A21 A11-1 A12)(B2 - A21 A11-1 B1).
Алгоритм выделения ветвей независимых операций в последовательной программе для её распараллеливания. Критерий выделения параллельных ветвей для машин класса мкмд (mimd)
При распараллеливании последовательного алгоритма, основным критерием при выделении в задаче параллельных является взаимная независимость операций входящих в алгоритм по входным и выходным данным.
Для того, чтобы проиллюстрировать вышесказанное рассмотрим небольшой пример:
Пусть имеется фрагмент текста исходной, последовательной программы.
-
№ операций
Операторы
1
2
3
4
5
6
7
A=1;
B=3;
C=8;
D=A+B*5;
X=6/(D*C-2*A);
Y=8*X/B;
Z=4+A+D;
Сразу необходимо обратить ваше внимание на то, что в правой колонке написаны операторы, а в левой колонке номераопераций. В действительности, при распараллеливании,всегда распараллеливаются операции, а не операторы. В нашем случае, ввиду отсутствия циклов и других управляющих операторов, номера операторов и операций совпадают.
Определим теперь исходя из критерия взаимонезависимости по данным, какие из операций могут выполнятся параллельно, а какие нет. Для этого просто составим таблицу использования данных.
Таблица 3.1
Переменная |
Номера операций | ||||||
1 |
2 |
3 |
4 |
5 |
6 |
7 | |
A |
O |
|
|
I |
I |
|
I |
B |
|
O |
|
I |
I |
|
|
C |
|
|
O |
|
I |
|
|
D |
|
|
|
O |
I |
|
I |
X |
|
|
|
|
O |
I |
|
Y |
|
|
|
|
|
O |
|
Z |
|
|
|
|
|
|
O |
-где I-означает что переменная является входной, аO-выходной в данной операции.
Для того чтобы выделить параллельные ветви в нашем фрагменте программы, надо определить взаимозависимость операций по данным. Во первых, параллельно не могут выполнятся операции где одни и те же переменные создаются (являются выходными) и используются (являются входными). Например: операции 2 и 4. Во вторых, при любом раскладе, данные не могут быть использованы до того, как они были инициализированы. Последнее условие влияет на распределение операций по ярусам графа ЯПФ. Все эти условия можно учесть, используя таблицу 3.1. Например: операция 5 может идти только после операции 2 из-за использования переменной Bв операции 4 при вычисленииD.
Ниже представлен получившийся граф ЯПФ фрагмента нашей программы (см. рис 3.1).
Рис.
3.1. Граф ЯПФ
В действительности, дело с выявлением параллельных ветвей обстоит не так уж просто. Достаточно вспомнить «многокилометровые» программные тексты с множеством условных операторов, циклов и многомерных структур данных. Далее, в следующем пункте, приведено более подробное описание критерия выделения параллельных ветвей в программе и описание алгоритма автоматизации этого процесса.