MSVC 2017 поддерживает автоматическую диспетчеризацию процессора?

Я читал на нескольких сайтах, что MSVC может выдавать инструкции AVX, когда используется архитектура SSE2, и обнаруживать время поддержки поддержки AVX. Это правда?

Я тестировал различные циклы, которые определенно выиграли бы от поддержки AVX / AVX2, но при запуске в отладчике я не мог найти какие-либо инструкции AVX.

Когда используется / arch: AVX, то он генерирует инструкции AVX, но, конечно, он вылетает на процессорах, которые его не поддерживают (проверено), поэтому также не обнаруживает время выполнения. Я мог бы использовать встроенные функции AVX, и он успешно создавал бы инструкции AVX из них. Есть идеи?

1 ответ

Я связался с командой VC++, и ответ "нет". Отчеты об ошибках, связанные в комментариях под вопросом, показывают только обычные ошибки, а не ошибки в генераторе кода автоматической отправки.

Таким образом, если указано /arch:SSE2 (по умолчанию), VC++ может автоматически отправлять только SSE4. Это единственная форма автоматической диспетчеризации, которая в настоящее время поддерживается. Другими словами, VC++ не может автоматически отправлять AVX/AVX2.

Другие вопросы по тегам