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 платформы Спасибо за внимание !!! Вопросы ?