Intel Integrated Performance Primitives
Немного о Intel Integrated Performance Primitives (IPP)
Intel IPP - это набор кросс-платформенных библиотек, содержащих большое количество высокопроизводительных функций, которые могут быть использованы для аудио-, видео-кодеков (например, H.263, MPEG-4), сжатия изображений (JPEG и JPEG2000), обработки изображений (двумерных массивов), обработки сигналов (одномерных массивов или векторов), сжатия естественной речи, систем компьтерного зрения, криптографических приложений, а также вспомогательные математические функции. Необходимость создания такого набора функций напрямую вытекает из современных реалий разработки прикладного программного обеспечения:
- существует определённый набор вычислительно сложных функций, которые требуются для приложений;
- разработчики вынуждениы производить тщательную оптимизацию этих функций для получения необходимой производительности;
- процесс оптимизации сложен и занимает длительное время.
Действительно, многим разработчикам требуется реализовать одну и ту же функциональность. А с ростом количества аппаратных платформ доля низкоуровневых (ассемблерных) реализаций уменьшилась значительно. Intel IPP содержит набор низкоуровневых процедур, которые позволяют эффективно исполняться мультимедийным инструкциям на любом процессоре.
Структура Intel IPP
Примитивы в Intel IPP могут быть разделены на три основных группы по типу обрабатываемых данных:
- "сигналы" (термин условный и используется для обозначения одномерных данных) (IPPS);
- "изображения" (двумерные массивы цветовых данных) (IPPI);
- матрицы небольшой размерности (массивы NxM) (IPPM).
Функции из Intel IPP, предназначенные для работы с небольшими матрицами, практически совпадают с функциями из Intel Math Kernel Library (MKL). Разница только в размерах матриц. Типичными размерами для Intel IPPM являются 3x1, 4x1, 5x1, 6x1, Nx1, 3x3, 4x4, 5x5, 6x6. В то время как Intel MKL больше подходит для работы с матрицами бОльших размеров.
Существует также логический подраздел, отвечающий за криптографические операции (IPPCP) и структурно входящий в первый домен. Независимо от того, в какой домен входит функция, она может быть классифицирована по степени специфичности:
Принципы работы и примеры использования Intel IPP
Каждая функция из Intel IPP имеет несколько вариантов, оптимизированных под различные архитектуры процессоров. В Intel IPP используются следующие типы оптимизаций:
- оптимизация кода на С (px);
- оптимизация кода для процессоров Intel Pentium III с использованием Streaming SIMD Extensions (a6);
- оптимизация кода для процессоров Intel Pentium 4 с использованием Streaming SIMD Extensions 2 (w7);
- оптимизация кода для процессоров Intel Pentium 4 с использованием Streaming SIMD Extensions 3 (t7);
- оптимизация кода для процессоров Intel Xeon с использованием Intel EM64T (m7);
- оптимизация кода для процессоров Intel Itanium и Itanium 2 (i7);
Существует четыре способа включения функциональности Intel IPP в приложение:
- динамическая линковка;
- статическая линковка;
- смешанная линковка (продвинутая статическая);
- динамическая линковка с дополнительными возможностями.
Более детальное описание Intel IPP можно найти в книжке "Intel Integrated Performance Primitives: How to Optimize Software Applications Using Intel IPP" или на сайте www.intel.com
© Лаборатория Параллельных
информационных технологий НИВЦ МГУ