Cache-oblivious algorithms

advertisement
Содержание

Введение в Cache-oblivious алгоритмы:
– Определение Cache-oblivious алгоритмов.
– Модель памяти компьютера.
– Cache-oblivious модель
– Примеры сache-oblivious алгоритмов:
• Сумма элементов массива.
• Разворот массива.

Cache-oblivious матричное перемножение:
– Cache-aware алгоритм.
– Cache-oblivious алгоритм.
– Результаты экспериментов.

Список литературы.
Н.Новгород, 2011 г.
Cache-oblivious algorithms
2 из 21
Введение в Cache-oblivious
алгоритмы
Н.Новгород, 2011 г.
Cache-oblivious algorithms
3 из 21
Cache-oblivious алгоритмы

Cache-oblivious алгоритмы (кэш-независимые алгоритмы):


Оптимальные cache-oblivious алгоритмы:


Алгоритмы не делают никаких предположений о размере кэша и кэш
линеек.
Cache-oblivious алгоритмы использующие кэш оптимальным образом.
Преимущества сache-oblivious алгоритмов:

Алгоритмы работают одинаково эффективно на различных машинах:

Различные иерархии памяти.

Различные размеры кэша.
Н.Новгород, 2011 г.
Cache-oblivious algorithms
4 из 21
Модель памяти компьютера
Размер памяти
CPU
L1
L2
L3
Основная
память
Жесткий диск
Скорость доступа к памяти
Н.Новгород, 2011 г.
Cache-oblivious algorithms
5 из 21
Cache-oblivious модель
Основная
память
Кэш
• Доступ к кэшу считается
бесплатным
•Память представлена в виде линеек
размером B.
• Размер кэша M. Количество линеек
в кэше M/B.
• Размер основной памяти считается
неограниченным.
• В результате кэш промаха из
основной памяти подгружается
M
B
B
Н.Новгород, 2011 г.
необходимая линейка.
• Если в кэше нет свободного места,
происходит замена одной из линек ,
которая находится в кэше.
Cache-oblivious algorithms
6 из 21
Уточнение определения

Cache-oblivious алгоритмы:



Алгоритмы не знающие значения B и M.
Оптимальные cache-oblivious алгоритмы:

MT(N) (memory transfers) – количество доступов к памяти для решения
задачи размером N.

Оптимальные cache-oblivious алгоритмы имеют минимальную оценку
MT(N).
Оптимальные cache-oblivious алгоритмы работают одинаково
оптимально для всех возможных B и M.
Н.Новгород, 2011 г.
Cache-oblivious algorithms
7 из 21
Примеры Cache-oblivious
алгоритмов
Н.Новгород, 2011 г.
Cache-oblivious algorithms
8 из 21
Сумма элементов массива
int res = 0;
for (int i = 0; i < N; i++) {
res += array[i]
}
1
2
3
4
i
N-1 N
MT(N) = O(N/B+1)
Н.Новгород, 2011 г.
Cache-oblivious algorithms
9 из 21
Разворот массива
for (int i = 0; i < N; i++) {
int tmp = array[i];
array[i] = array[N-i];
array[N-i] = tmp;
}
1
2
3
4
i
N-1 N
Если количество линек в кэше (M/B) >2 то:
MT(N) = O(N/B+1)
Н.Новгород, 2011 г.
Cache-oblivious algorithms
10 из 21
Cache-oblivious матричное
перемножение
Н.Новгород, 2011 г.
Cache-oblivious algorithms
11 из 21
Постановка задачи
 a11  a1n 
 b11  b1n 




A     B    
a  a 
b  b 
nn 
 n1
nn 
 n1
 c11  c1n 


C  A* B      
c  c 
nn 
 n1
n
где cij   aij * b ji
i 1

Будут рассмотрены:

Стандартная реализация.

Cache-aware реализация.

Cache-oblivious реализация.
Н.Новгород, 2011 г.
Cache-oblivious algorithms
12 из 21
Cache-aware реализация
for (int i=0;i<n/blockSize;i++)
for (int j=0;j<n/blockSize;j++)
for (int k=0;k<n/blockSize;k++)
MultiBlock( Aik, Bkj, Cij);
=
*
A
A11
A12
Н.Новгород, 2011 г.
A13
A21
A22
A23
Cache-oblivious algorithms
A31
A32
A33
13 из 21
Cache-oblivious

Рекурсивное перемножение элементов “Z-блоков”
матрицы, используя Z-order.
4 итерации Z-order’a.*
Пример 4ой итерации
Z-order’a.**
* Изображение с http://en.wikipedia.org/wiki/Z-order_curve
** Изображение из Prokop H., Cache-Oblivious Algorithms by Harald Prokop
Н.Новгород, 2011 г.
Cache-oblivious algorithms
14 из 21
Хранение матрицы
A
A11
A12
A21
MT ( N )  8 * MT ( N / 2)
A22
MT (c * M )  O( M / B)
N
N /2
...
...
N /2
...
O( M / B) O( M / B)
...
...
...
N3
N /2
...
M
3
2
M
*

B
N3
1
2
M *B
N3
MT ( N )  O(
)
M *B
O( M / B)
O(( N / M ) 3 )
Н.Новгород, 2011 г.
Cache-oblivious algorithms
15 из 21
Эксперименты
Н.Новгород, 2011 г.
Cache-oblivious algorithms
16 из 21
Тестовая система

Все эксперименты проводились на следующей машине:
–
–
–
–
–
–
Processor: Intel Core i5 M540 @ 2,53GHz.
L2 Cache (per Core): 256 KB.
L3 Cache: 3 MB.
RAM: 8Gb, DDR3 1333 MHz.
ОС: Mac OS X 10.7.2 (11C74)
Компилятор: i686-apple-darwin11-llvm-g++-4.2 (GCC) 4.2.1
(Based on Apple Inc. build 5658) (LLVM build 2336.1.00)
Н.Новгород, 2011 г.
Cache-oblivious algorithms
17 из 21
Результаты
4096
2048
1024
512
256
128
Сache-aware
64
Cache-oblivious
Стандартное умножение
32
16
8
4
2
t (c) 1
512
Н.Новгород, 2011 г.
1024
2048
Cache-oblivious algorithms
4096
18 из 21
Ускорение
7
6
5
4
Ускорение Сache-aware
Ускорение Cache-oblivious
3
2
1
0
128
256
Н.Новгород, 2011 г.
512
1024
2048
Cache-oblivious algorithms
4096
19 из 21
Спасибо за внимание!
???
Н.Новгород, 2011 г.
Cache-oblivious algorithms
20 из 21
Список литературы

Prokop H., Cache-Oblivious Algorithms by Harald Prokop. Massachusetts
Institute of Technology, 1999.

Demaine Erik D., Cache-Oblivious Algorithms and Data Structures. MIT
Laboratory for Computer Science.

MIT's Introduction to Algorithms, Lectures 22 and 23: Cache Oblivious
Algorithms. [http://www.catonmat.net/blog/mit-introduction-to-algorithmspart-fourteen/].
Н.Новгород, 2011 г.
Cache-oblivious algorithms
21 из 21
Download