Как я могу определить, использует ли моя программа SSE2 (с помощью оптимизации gcc)? - PullRequest
2 голосов
/ 17 ноября 2011

У меня есть программа на C ++, которая компилируется в gcc (gcc версии 4.5.1) с флагом -O3. Я думаю о том, стоит ли делать SSE2-версию этой программы (или, по крайней мере, самой загруженной). Однако я обеспокоен тем, что компилятор уже сделал это с помощью автоматической векторизации.

Вопрос : Как мне определить (а) использует ли моя программа SSE / SSE2 и (b) сколько времени уходит на использование SSE / SSE2 (т.е. профилирование)?

1 Ответ

1 голос
/ 17 ноября 2011

Самый простой способ определить, получаете ли вы какую-либо выгоду от векторизации компилятора, - это запустить код с флагом -ftree-vectorize и без него и сравнить результаты.

-O3 автоматически активирует эту опцию. Так что вы можете попробовать его в -O2.

Чтобы увидеть, какие петли были векторизованы, а какие нет, и почему, вы можете добавить опцию -ftree-vectorizer-verbose.

Последний вариант, конечно, это посмотреть на сборку. Очень легко идентифицировать векторизованный код в сборке.

...