Я ищу математические библиотеки SIMD (предпочтительно с открытым исходным кодом) для SSE и AVX. Я имею в виду, например, если у меня есть регистр AVX v с 8 значениями float, я хочу, чтобы sin (v) сразу возвращал грех из всех восьми значений.
AMD имеет библиотеку propreitery, LibM http://developer.amd.com/tools/cpu-development/libm/, которая имеет некоторые SIMD-математические функции, но LibM использует только AVX, если обнаруживает FMA4, который Intel У CPU нет. Также я не уверен, что он полностью использует AVX, поскольку все имена функций заканчиваются на s4 (d2), а не s8 (d4). Это дает лучшую производительность, чем стандартные математические библиотеки на процессорах Intel, но это не намного лучше.
Intel имеет SVML как часть этого компилятора С++, но пакет компилятора очень дорог в Windows. Кроме того, Intel калечит библиотеку на процессорах, отличных от Intel.
Я нашел следующую библиотеку AVX, http://software-lisc.fbk.eu/avx_mathfun/, которая поддерживает несколько математических функций (exp, log, sin, cos и SinCos). Это дает очень быстрые результаты для меня, быстрее, чем SVML, но я не проверял точность. Он работает только с единой плавающей точкой и не работает в Visual Studio (хотя это было бы легко исправить). Он основан на другой библиотеке SSE.
Есть ли у кого-нибудь другие предложения?
Изменить: я нашел поток SO, у которого много ответов на эту тему Векторизованные функции Trig в C?