Есть ли ARM-эквивалент Intel IPP? - PullRequest
9 голосов
/ 02 марта 2012

Определенные рабочие нагрузки типа DSP, по-видимому, показывают очень значительное улучшение производительности на процессорах Intel x86 x86_64, когда они связаны с библиотекой Intel IPP.

Хотите знать, есть ли что-то подобное на стороне ARM?Особенно это может работать в ARM9, ARM11 и Cortex-A8 / A9 (не обязательно с тем же уровнем повышения производительности).

Наконец, этот следующий вопрос, возможно, не является правильным / приемлемым здесь, поэтому моды пожалуйстаоставляю комментарий, и я могу его отредактировать.

Я пытался прочитать Лицензионное соглашение IPP, но неясно, продается ли коммерческая лицензия IPP на Linux, продающаяся за 199 долларов США + налогидает право на одну личную копию (но, возможно, для коммерческого использования) библиотеки, или можно связать свое приложение с этой библиотекой и продать ее для коммерческой выгоды?Или для этого нужна другая лицензия?Не удалось найти место на сайте Intel, где можно было бы задать этот вопрос (ничего похожего на контактные продажи)!

Ответы [ 4 ]

8 голосов
/ 11 сентября 2012

Существует также ARM-спонсируемый проект с открытым исходным кодом Ne10 , который первоначально охватывает небольшой набор функций с плавающей запятой, векторной арифметики и матричных манипуляций.

6 голосов
/ 02 марта 2012

Есть несколько ответов на ваш вопрос, в зависимости от того, как вы на него смотрите.

Intel IPP - это библиотека с множеством предварительно подготовленных функций для выполнения общих задач, таких как быстрое преобразование Фурье и тому подобное. В сообществе открытого исходного кода есть определенные библиотеки, которые делают то же самое, посмотрите:

и многие другие. Не все эти библиотеки поставляются с оптимизацией для различных ядер ARM.

Второй угол вашего вопроса - зачем вам что-то, что работает на существенно разных ядрах ARM. В процессорах семейства Cortex A у вас есть (необязательно!) Инструкции ARM NEON SIMD, которые (например, MMX / SSE / AltiVec) могут одновременно принимать набор данных и применять к ним несколько операций. Это уменьшает количество инструкций, необходимых для обработки объема данных. Семейство ARM11xx имеет нечто подобное, но гораздо более ограниченное, называемое VFP3. Семейству ARM9xx действительно не хватает такого рода оптимизаций. Кроме того, в архитектуре ARM есть Thumb и Thumb2, что может привести к уменьшению размера и ускорению кода.

Конечным результатом является то, что оптимизированные библиотеки, которые действительно работают на множестве ядер ARM, должны будут иметь несколько реализаций одного и того же алгоритма для разных рабочих нагрузок. Это увеличит размер библиотеки. Вы готовы заплатить эту цену?

4 голосов
/ 10 сентября 2012

На iOS есть ускоренная среда, оптимизированная для ARM с использованием SIMD, где это возможно. См. Документацию Apple здесь .

0 голосов
/ 01 сентября 2017

А как насчет OpenMAX / OpenKode?

https://en.wikipedia.org/wiki/OpenMAX

https://www.khronos.org/openkode/

Мне интересно, пытался ли кто-нибудь переопределить IIPP в OSS (даже если его просто заглушить?)

...