РОССИЯ 

Intel Integrated Performance Primitives

Немного о Intel Integrated Performance Primitives (IPP)

Intel IPP - это набор кросс-платформенных библиотек, содержащих большое количество высокопроизводительных функций, которые могут быть использованы для аудио-, видео-кодеков (например, H.263, MPEG-4), сжатия изображений (JPEG и JPEG2000), обработки изображений (двумерных массивов), обработки сигналов (одномерных массивов или векторов), сжатия естественной речи, систем компьтерного зрения, криптографических приложений, а также вспомогательные математические функции. Необходимость создания такого набора функций напрямую вытекает из современных реалий разработки прикладного программного обеспечения:

Действительно, многим разработчикам требуется реализовать одну и ту же функциональность. А с ростом количества аппаратных платформ доля низкоуровневых (ассемблерных) реализаций уменьшилась значительно. Intel IPP содержит набор низкоуровневых процедур, которые позволяют эффективно исполняться мультимедийным инструкциям на любом процессоре.

Структура Intel IPP

Примитивы в Intel IPP могут быть разделены на три основных группы по типу обрабатываемых данных:

Функции из 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 используются следующие типы оптимизаций:

Существует четыре способа включения функциональности Intel IPP в приложение:

Для эффективного исполнения на любом аппаратном обеспечении целесообразно использовать динамическая линковку. В этом случае программа после запуска определяет процессор и подставляет в места вызова функций бинарный код из соответствующей библиотеки:
При использовании статической линковки достигается меньший размер программы, но ценой жесткой привязки к типу процессора. Смешанная линковка, по сути, является статической, но при этом позволяет уменьшить размер исполняемого файла.

Более детальное описание Intel IPP можно найти в книжке "Intel Integrated Performance Primitives: How to Optimize Software Applications Using Intel IPP" или на сайте www.intel.com


© Лаборатория Параллельных информационных технологий НИВЦ МГУ
Rambler's Top100