intel integrated performance primitives

Библиотека Intel Integrated Performance Primitives (Intel IPP) поддерживает многоядерные процессоры, содержит в себе оптимизированные функции для обработки мультимедийных данных, поддерживает Intel и AMD процессоры и работает под операционными системами Windows, Linux и Mac OS X. Intel IPP — небольшая библиотека, спроектированная для создания мультимедийных приложений и приложений обработки данных.

Содержание

Возможности [ править | править код ]

Intel IPP включает в себя следующие функции:

  • кодирование и декодирование видео;
  • кодирование и декодирование аудио;
  • JPEG/JPEG2000
  • машинное зрение;
  • криптография;
  • сжатие данных;
  • преобразование цвета;
  • обработка изображения;
  • трассировка луча/визуализация;
  • обработка сигналов;
  • кодирование речи;
  • распознавание речи;
  • обработка строк;
  • векторная/матричная математика;

Библиотека использует расширенные наборы инструкций процессора MMX, SSE, SSE2, SSE3, SSSE3, SSE4 и многоядерные процессоры.

Структура библиотеки [ править | править код ]

Intel IPP разделен на три основные группы: сигналы (линейный массив данных или вектор), изображения (двухмерный массив для типичных цветовых пространств) и матрицы (nxm массивы для матричных операций).

Половина функций для матричных операций, треть для обработки сигналов и оставшиеся для изображений. Функции Intel IPP разделены на 4 типа данных: 8u (8-битные беззнаковые), 8s (8-битные со знаком), 16s, 32f (32-битные с плавающей точкой), 64f и т. д. Как правило, разработчики приложений работают только с одним доминирующим типом данных для большинства функций обработки, и только в конце обработки производят преобразование в выходной формат.

Именование IPP функции подчиняется предсказуемой строгой схеме.

История [ править | править код ]

Версия 5.2 была представлена 5 июня 2007 г., в код были добавлены примеры сжатия данных, поддержка новых видео-кодеков, поддержка 64-битных приложений для Mac OS X, поддержка приложений Windows Vista, и новые функции для трассировки луча и визуализации.

Integrated Performance Primitives
Developer(s) Intel
Stable release
Written in C/C++
Operating system Linux, macOS, Microsoft Windows, Android
Type Library or framework
License Proprietary, freeware [1]
Website software .intel .com /intel-ipp,%20https: //software .intel .com /en-us /intel-ipp

Intel Integrated Performance Primitives (Intel IPP) is a multi-threaded software library of functions for multimedia and data processing applications, produced by Intel. [2]

The library supports Intel and compatible processors and is available for Linux, macOS, Windows and Andro >[2]

Contents

Features [ edit ]

The library takes advantage of processor features including MMX, SSE, SSE2, SSE3, SSSE3, SSE4, AVX, AVX2, AVX-512, AES-NI and multi-core processors. [3] Intel IPP includes functions for:

Intel IPP is div >[3]

Half the entry points are of the matrix type, a third are of the signal type and the remainder are of the image and cryptography types. Intel IPP functions are div >[3]

Немного о 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 являются 3×1, 4×1, 5×1, 6×1, Nx1, 3×3, 4×4, 5×5, 6×6. В то время как 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 в приложение:

  • динамическая линковка;
  • статическая линковка;
  • смешанная линковка (продвинутая статическая);
  • динамическая линковка с дополнительными возможностями.

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

Оцените статью