Для сравнения произвольных алгоритмов используем какой-либо исходный последовательный алгоритм, который получается из исходной задачи.
Умножение матрицы 4х4 на вектор 4х1 с помощью 5 СП (систолических процессоров) и использованием матрицы, повёрнутой на 135 градусов, занимает 14 тактов:
Буфер1 Буфер2 модель магазинной памяти (очереди)
B4
B3
B2
B1
A44
A34
0
A24
A33
A14
A23
A32
A13
A22
A12
A21
A11
Процессорное поле
Рис. Модель памяти при вычислении умножения матрицы на вектор с помощью СП. Вычисления начнутся с СП, помеченного кружочком. Шестой СП – резервный.
Матрица А записывается в следующем виде (как ленточная 5-диагональная матрица):
Аппаратным способом умножение реализуется поворотом этой матрицы на 135 градусов. Таким образом, диагонали встают вертикально, и появляется возможность для каждого СП работать с одной диагональю.
В указанной модели памяти значения из буфера1 каждый такт подаются по одному на СП, и далее по цепочке в фазе коммуникации между ними по стрелкам. На выходе из цепочки значения подаются каждый такт по одному в итоговые ячейки и там продвигаются.
Схема продвижения данных по процессорам:
Такт1
B1
Такт2
B1
Такт3
B2
B1
Такт4
B2
B1*a11
………………………………………………………………. и т.д.
Всего при непосредственном подсчёте – 14 тактов.
Алгоритмы
Операция *
Операция +
Операция ->(пересылка)
Последовательный
4*4
(4 элемента в 4 столбцах)
4*4
6*4*4
Параллельный
Время передачи данных для задачи умножения матрицы 4х4 на вектор 4х1
Реализация умножения с накоплением:
а -> рег1
b -> рег2
рег1 * рег2 -> c
c -> рег1
S -> рег2
рег1 + рег2 -> S
Итого (3 + 3) операции на умножение с накоплением.
Критерии сравнения параллельных и последовательных алгоритмов:
Абсолютное время выполнения
Ускорение вычислений
Потенциально возможное ускорение вычислений
Для последовательного алгоритма используется 1 ПЭ, его ускорение будет 1. Для параллельного в данной задаче используется 5 ПЭ, и теоретически возможное максимальное ускорение – в 5 раз. Однако процессорное время используется не полностью, притом процессоры работают через один, поэтому на самом деле ускорение меньше.
Вычислим приблизительное ускорение параллельного алгоритма с 5 СП. Пусть:
(в процентах)
Тогда
то есть на малых данных преимущества параллельного алгоритма не сказываются.
Качественный критерий
I –неправильный результат
II – область оптимистического ускорения: алгоритм можно улучшить
III – область нормального ускорения
IV – область оптимистического ускорения: алгоритм можно улучшить
log25 = 2.3 (примерно), то есть полученный результат 1.8 находится в области пессимистического ускорения, и алгоритм можно улучшить.