Как отключить использование встроенных функций в Eigen (которые определяют, какая инструкция для pikc для этой архитектуры) - PullRequest
0 голосов
/ 08 июня 2018

Я работаю над набором тестов Eigen и замечаю слишком много встроенных функций, которые прямо указывают точную инструкцию, которая будет использоваться для этой конкретной архитектуры, вместо того, чтобы дать свободу компилятору выбирать, какая инструкция лучше всего подходит для этого исходного кода,Может кто-нибудь помочь мне, как я могу отключить использование встроенных в Eigen?

1 Ответ

0 голосов
/ 08 июня 2018

Чтобы отключить явную векторизацию и посмотреть, что делает компилятор с авто-векторизацией, вы можете скомпилировать с помощью -DEIGEN_DONT_VECTORIZE.Я также рекомендую компилировать с -DNDEBUG (если вы уверены, что ваш код функционально корректен).И иногда -ffast-math или, по крайней мере, -fassociative-math могут помочь компилятору найти лучшие возможности оптимизации.

Хотя автоматическая векторизация, безусловно, становится лучше, я бы не ожидал ничего волшебного, хотя ( всегда сравнивайтесгенерированная сборка - и тест!)

Кроме того, компиляторы не обязаны строго использовать инструкции, соответствующие используемым встроенным функциям, если они находят функционально эквивалентные инструкции: https://godbolt.org/g/bEJNXZ

...