ВУЗ:
Рубрика:
85
данных из основания иерархической памяти в ее регистры. Особен-
но это становится актуальным при больших объемах обрабатывае-
мых данных, например, когда перемножаемые матрицы могут раз-
меститься целиком лишь в большом и медленном уровне иерархи-
ческой памяти.
Регисты
Кэш-память
Оперативная память
Диски
Ленты
Рис. 5.2 Иерархическая структура памяти компьютера
Рассмотрим, как может повлиять на разработку алгоритма нали-
чие кэш-памяти. Обычно обмен данными между основной памятью
и кэш-памятью относительно дорогостоящ. Поэтому, если какие-то
данные попали в быструю память, нужно стремиться их использо-
вать максимальным образом. Предположим, что размеры основной
памяти достаточно велики, чтобы вместить три массива матриц
, ,
A B C
, а кэш может вмещать
M
чисел с плавающей точкой, при-
чем
2
2
n M n
. Последнее неравенство означает, что в кэш-
памяти могут быть размещены два столбца или две строки пере-
множаемых матриц, но матрица целиком размещена быть не может.
Предположим также, что программист способен управлять движе-
нием данных.
Рассмотрим неблочную версию матричного умножения (рис. 5.1,
цикл
ijk
) с целью показать движение данных между уровнями па-
мяти и оценить количество передач данных:
do i = 1, n
! считываем строку i матрицы A в быструю память
do j = 1, n
! считываем элемент с
ij
в быструю память
! считываем столбец j матрицы B в быструю память
do k = 1, n
c(i, j) = c(i, j)+a(i, k)*b(k, j)
end do
Страницы
- « первая
- ‹ предыдущая
- …
- 83
- 84
- 85
- 86
- 87
- …
- следующая ›
- последняя »
