Вы находитесь на странице: 1из 3

1

Лекция 9

Ленточные матрицы
Большинство матриц, встречающихся на практике, являются разряженными, т.е. боль-
шая часть компонентов таких матриц является нулями. Одним из типов разряженных матриц
являются ленточные матрицы. Определение: матрица А порядка n (рассматриваем пока
квадратные матрицы) называется ленточной, если aij=0 при i-j>β2 и j-i>β1. Пример для n=5;
β1=2; β2=1:
 a11 a12 a13 0 0 
a a 22 a 23 a 24 0 
 21
 0 a32 a33 a34 a35 
 
 0 0 a 43 a 44 a 45 
 0 0 0 a54 a55 
Очень часто лента бывает симметричной, т.е. β1=β2=β. Число β называется полушири-
ной ленты.
Для двух рассмотренных методов умножения матрицы на вектор – скалярного умноже-
ния векторов и линейной комбинацией столбцов длины векторов изменяются от β+1 до
2β+1. Действительно:
 (a1 , X ) 
( a , X ) 
1) AX =  2 
 M 
 
( a n , X ) 
где ai - строки матрицы А; в симметричной матрице при β=1 они будут иметь вид:
a1 = [a11 , a12 , 0, 0K]; a2 = [a21 , a22 , a23 , 0, 0K]; ... an = [0, 0,K, an, n −1 , ann ];
n
2) AX = ∑ xi ai , где ai – столбцы имеют вид:
i =1
т.е.: ai
a1 = [a11 , a 21 , 0, 0K]T ; a2 = [a 21 , a 22 , a23 , 0, 0K]T ;...; a n = [0, 0,K, an, n −1 , a nn ]T ;
Для первого алгоритма, если предположить p=n (p-число процессоров, все n скалярные
произведения типа):
n
(ai , X ) = ∑ aij x j
j =1

будут выполняться параллельно. Если число процессоров p=n/k, то первые k скалярных про-
изведений можно выполнять на первом процессоре, вторые – на втором и т.д. Таким обра-
зом, степень параллелизма максимальная.
Для второго представления мы также можем распараллелить умножение векторов-
столбцов матрицы А на компоненты вектора X, но затем нам необходимо организовать сло-
жение результатов.
Что касается реализации на векторных компьютерах, то оба представления не эффек-
тивны, т.к. длины векторов малы. (от β+1 до 2β+1).

Высокопроизводительные вычислительные системы и параллельное программирование. Кудерметов Р.К.


2
Аналогичные выводы можно сделать для алгоритмов умножения матриц. Следует от-
метить, что при умножении двух квадратных матриц, полуширина ленты первой из которых
равна α, а полуширина второй - β, то полуширина матрицы произведения будет равна α+β.
При использовании алгоритмов средних и внешних произведений, длины векторов из-
меняются от α+1 до 2α+1. При использовании их двойственных алгоритмов соответственно
длины векторов изменяются от β+1 до 2β+1., поэтому при α<β имеет смысл использовать
двойственные алгоритмы средних и внешних произведений.
Алгоритм внутренних произведений (3а) и (4а) наиболее хорошо реализуются на па-
раллельных процессорах. При этом на каждом из процессоров реализуется соответствующее
скалярное произведение вектора-строки (столбца) матицы А на вектор-столбец матрицы В,
причём, реально необходимо вычислять лишь скалярное произведения, соответствующие
элементам ленты α+β.
Умножение по диагоналям
Как мы убедились выше, умножение ленточных матриц рассмотренными способами
крайне неэффективно на векторных компьютерах в силу больших размерностей матриц и
малой ширины лент. Проблема усугубляется, если в пределах лент встречаются нулевые
диагонали, да ещё и разнесённые на значительные расстояния. Определение: матрицы с от-
носительно небольшим числом нулевых диагоналей называются диагонально-разряженными
матрицами. К отмеченным трудностям работы с такими матрицами следует отнести и хра-
нение таких матриц в памяти. Естественно напрашивается способ хранения их по диагона-
лям, т.е. каждая диагональ может интерпретироваться как вектор, и хранится в виде вектора.
Рассмотрим умножение ленточной матрицы с симметричной лентой на вектор. Обозна-
чим как показано на схеме: А0 – главная диагональ, А-1 – первая диагональ ниже главной, А1 –
первая диагональ выше главной и т.д.
O .O .O 
A−1 .O O .O .O 
 
A− 2  O .O O .O .O A p
 
A− q  O O .O O .O A1
 O O .O O  A0
Для наглядности приведём пример для n=5:
 a11 a12 0 0 0   x1   a11 x1   a12 x2   0   0   0 
a
 21 a 22 a 23 0 0   x2  a 21 x1  a 22 x2  a 23 x3   0   0 
     
 0 a32 a33 a34 0  ⋅  x3  =  0  +  a32 x2  +  a33 x3  +  a34 x4  +  0  =
             
 0 0 a 43 a 44 a 45   x4   0   0  a 43 x3  a44 x4  a45 x5 
 0 0 0 a54 a55   x5   0   0   0   a54 x4   a55 x5 

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


 a11 x1   a12 x2   0 
a x   a x   a x 
 22 2   23 3   21 1 
 a33 x3  + a34 x4  + a32 x2 
     
a44 x4   a45 x5   a 43 x3 
 a55 x5   0  a54 x4 

Для обобщения на произвольные размеры введём обозначения: А0 – главная диагональ;


А1 - первая выше; А-1 - первая ниже и т.д.; x j = ( x j ,K, xn ); xn − j = ( x1 ,K xn − j ) . Тогда:

Высокопроизводительные вычислительные системы и параллельное программирование. Кудерметов Р.К.


3
^ ^ ^
AX = A0 X + A1 x 2 + ... + A p x p +1 + A−1 xn −1 + K + A− q xn − q
∨ ∨ ∨
^
где произведения означают покомпонентное умножение векторов, + - прибавление более
короткого вектора к первым компонентам более длинного, + - прибавление более короткого

вектора к последним компонентам более длинного. Для нашего примера при n=5 будет:
^
AX = A0 x + A1 x 2 + A−1 x4

Следует заметить, что этот способ работоспособен и для заполненных матриц, при этом
необходимо выполнить 2n-1 произведение векторов, а длины векторов изменяются от 1 до n.
Поскольку заполненные матрицы, как правило, не хранятся по диагоналям, а длины векторов
меняются от 1 до n, то для них этот способ неэффективен. С другой стороны, если матрица
ленточная и длины диагоналей n, n-1, n-2, то алгоритм ленточного умножения становится
максимально векторизуемым, т.е. имеет максимальную степень векторизации. Таким обра-
зом, существует некоторое значение ширины ленты β, для конкретной векторной машины,
при котором реализация ленточного умножения эффективна, а при значениях β*>β более
эффективна реализация методами линейных комбинаций (2а) или скалярных произведений
(1а).

Высокопроизводительные вычислительные системы и параллельное программирование. Кудерметов Р.К.

Вам также может понравиться