IPPM – что может быть лучше !?

реклама
IPPM – что может быть
лучше !?
Intel® Integrated Performance Primitives
for Intel® Architecture
Small Matrices
Близнюк Дмитрий
Август 2003
Немного о себе





Днепропетровский Национальный
Университет
Радиофизический факультет
Кафедра «Автоматизации проектирования»
Специальность «Технологии и средства
телекоммуникаций»
Работа бакалавра на тему:
«Телекоммуникационная система передачи
текстовых сообщений с защищенным
каналом данных на основе 3DES»
E-mail: bliznyukd@mail.ru , bliznyukd@list.ru
Цели
- Ознакомление с IPPM
- Применение на практике
- Получение сравнительной
характерискики производительности
функций
Что же такое IPPM ?
Математическая библиотека для работы с
малыми матрицами и векторами
Matrix
Vector
Stride что это такое и для
чего он нужен
Stride0
Stride1
Stride0
Stride2
Stride0
Stride2 Stride2
Stride0
Stride-пер. с англ.
«шаг»
S0 – расстояние
между объектами (в
байтах)
S1 – расстояние
между рядами (в
байтах)
S2 – расстояние
между элементами (в
байтах)
Указатели
S – указатель , для
упорядоченных массивов в
памяти последовательно
L – указатель на массив,
который содержит
указатели на каждый
индивидуальный объект
Р – указатель на массив
который содержит
указатели на любой
элемент объекта
Функции



Add
Subtract
Multiply
dest[i][j]= src1[i][j] + src2[i][j]
dest[i][j]= src1[i][j] - src2[i][j]
mdest [i][j] = src1[i][k] * src2[k][j]
k

Transpose
Trace
dest [i][j] = src1[j][i]
dest =  src1[i][i]

ForbNorm
dest 

i
 src1[i][ j]
i, j
Возникшие проблемы



Операционная
зависимость
Поиск
оптимального
количества прогона
Аппаратурная
зависимость
Методы решения проблем



Операционная
зависимость
Поиск
оптимального
количества прогона
Аппаратурная
зависимость



Большое
количество раз
прогона кода
Неравномерная
прогонка кода
Не решили
Результаты для функции
Multiply
Отношение произвводительностей (по данным)
4
Отношение производительносте (реальная)
COMMON/IPP
4,5
4
3,5
3
2,5
COMMON/IPP
3,5
3
2,5
2
2
1,5
1
0,5
0
1,5
1
0,5
0
6
20
34
48
62
76
90
104
118
132
146
160
174
188
6
20
34
48
62
76
N*N (размерность матрицы)
Производительность функций для комманды MULTIPLY
CPE
6000
IPP
5000
COMMON
4000
3000
2000
1000
0
6
90
104
118
N*N (размер матрицы)
20
34
48
62
76
90
104
118
132
N*N (размерность матрицы)
146
160
174
188
132
146
160
174
188
Результаты для функции
Transpose
Отношение произвводительностей (по данным)
4,5
4
3,5
3
2,5
2
1,5
1
0,5
0
Отношение производительносте (реальная)
4,5
4
3,5
3
2,5
2
1,5
1
0,5
0
COMMON/IPP
6
20
34
48
62
76
90
104
118
132
146
160
174
188
COMMON/IPP
1
15
29
43
57
N*N(размерность матрицы)
71
Производительность функций для комманды TRANSPOSE
CPE
45
40
35
30
25
20
15
10
5
0
IPP
COMMON
6
20
85
99
113
127
N*N (размерность матрицы)
34
48
62
76
90
104
118
N*N(размерность матрицы)
132
146
160
174
188
141
155
169
183
Результаты для функции
Trace
Отношение произвводительностей (по данным)
Отношение производительносте (реальная)
2,5
3
COMMON/IPP
COMMON/IPP
2,5
2
2
1,5
1,5
1
1
0,5
0,5
0
0
6
20
34
48
62
76
90
104
118
132
146
160
174
188
6
20
34
48
62
76
N*N (размерность матрицы)
Производительность функций для комманды TRACE
CPE
0,4
0,35
IPP
0,3
COMMON
0,25
0,2
0,15
0,1
0,05
0
37
90
104
118
132
N*N (размерность матрицы)
51
65
79
93
107
121
135
N*N (размерность матрицы)
149
163
177
191
146
160
174
188
Результаты для функции
FROBNORM
Отношение произвводительностей (по данным)
Отношение производительносте (реальная)
COMMON/IPP
4,5
4
3,5
3
2,5
2
1,5
1
0,5
0
6
20
34
48
62
76
90
104
118
132
146
160
174
COMMON/IPP
4,5
4
3,5
3
2,5
2
1,5
1
0,5
0
6
188
20
34
48
62
76
Производительность функций для комманды FROBNORM
CPE
25
IPP
20
COMMON
15
10
5
0
6
90
104
118
132
N*N (размерность матрицы)
N*N (размерность матрицы)
20
34
48
62
76
90
104
118
132
N*N (размерность матрицы)
146
160
174
188
146
160
174
188
Непредвиденное!!!
Производительность функций для комманды ADD
CPE
250
200
IPP
COMMON
150
100
Просчитанные
результаты для
функций ADD и
SUBTRACT
50
0
6
20
34
48
62
76
90
104
118
132
146
160
174
188
N*N (размерность матрицы)
Производительность функций для комманды SUBTRACT
CPE
250
IPPM
200
COMMON
150
100
50
0
6
21
36
51
66
81
96
111
126
N*N (размерность матрицы)
141
156
171
186
Реальные результаты для
функций ADD и SUBTRACT
Отношение производительносте (реальная)
2,5
COMMON/IPP
Функция
ADD
2
1,5
1
0,5
0
6
20
34
48
62
76
90
104
118
132
146
160
N*N (размерность матрицы)
Отношение производительносте (реальная)
COMMON/IPP
2,5
2
Функция
SUBTRACT
1,5
1
0,5
0
6
20
34
48
62
76
90
104
118
132
N*N* (размерность матрицы)
146
160
174
188
174
188
Выводы:



При использовании библиотеки IPP
производительность программного кода в
среднем возрастает в 1.5 – 1.9 раза по
сравнению с референс кодом
Использование диспетчера для библиотеки
IPP приводит к полной оптимизации кода
под определенную платформу, что дает
больше возможностей для программиста
Использование откомпилированных
программ легко переносятся на любые
Intel платформы
Спасибо за внимание !!!
Вопросы ?
Скачать