Clang производит более медленный код, когда AVX включен?

Я использую Xcode 4.5.2 с «Компилятором Apple LLVM 4.1» (Clang).

Я попытался скомпилировать код, который в значительной степени зависит от встроенных функций SSE с включенным AVX (пока нет функций _mm256 * и переменных __m256), и получил более медленный код, чем я получаю, когда включен только SSE 4.2.

Есть ли этому какое-то разумное объяснение?


person Yoav    schedule 04.11.2012    source источник
comment
Если вы используете какие-либо библиотечные функции SSE, переключение между SSE с кодировкой VEC (как в AVX) и устаревшим SSE без использования vzeroupper может привести к серьезным задержкам. Кроме того, это должно быть быстрее, потому что VEC закодировал инструкции с тремя операндами. Я получил 10% прирост чистого 128-битного кода благодаря перекомпиляции для AVX.   -  person Gunther Piez    schedule 05.11.2012
comment
Спасибо. Как проверить, есть ли в коде такие функции переключения (может быть, они взяты из сторонней библиотеки, которую я использую)?   -  person Yoav    schedule 05.11.2012


Ответы (1)


В настоящее время в LLVM обнаружены ошибки, связанные с производительностью AVX, например, такие как эта.

Полный список ошибок, связанных с avx, можно найти здесь.

person Yoav    schedule 05.11.2012