2017-01-04 8 views
3

Мой вопрос в том, как я могу отключить только оптимизацию автоинъекции SIMD (сохранение других оптимизаций режима выпуска) в Visual Studio 2015 для:Как отключить только оптимизацию автоинъекции SIMD в Visual Studio 2015 (для C++)?

1) весь скомпилированный проект;

2) для частей кода.

В первом случае я хотел бы узнать, как отключить его для всего проекта. Во втором случае я хотел бы знать, возможно ли это сделать и для определенных областей кода, аналогично тому, что возможно для всех оптимизаций при использовании #pragma optimize("", off) и #pragma optimize("", on).

Целью этого является сравнение производительности некоторого оптимизированного вручную кода с автоматизированной векторизации SIMD компилятора.

+0

Отключение поддержки SSE не хватает? – MSalters

+0

Вы не можете сделать это на x64, так как все x64 имеет SSE2 как минимум. – Mysticial

+0

@Mysticial Итак, вы имеете в виду, что я могу это сделать, только если я компилирую для x86? – blipblop

ответ

1

Авто-векторный инструмент Visual C++ автоматически включается при построении с /O2 или /Ox.

Чтобы посмотреть, что он делает, с /Qvec-report:1 или /Qvec-report:2.

Вы можете отключить его для конкретных контуров с помощью #pragma loop(no_vector)

См MSDN

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

Для получения дополнительной информации см это blog series, это video и Auto-Vectorization Cookbook

+0

Спасибо за ответ. Где именно вы нашли цитату выше? Я не нашел ни одной из ссылок, которые вы включили (также не в Поваренной книге). Может быть, вы упустили ссылку? – blipblop

+0

Это не цитата, как в стороне. Нет документального компилятора, который просто отключает автоинтервализатор. –