MSVC 2017 поддерживает автоматическую диспетчеризацию процессора?
Я читал на нескольких сайтах, что MSVC может выдавать инструкции AVX, когда используется архитектура SSE2, и обнаруживать время поддержки поддержки AVX. Это правда?
Я тестировал различные циклы, которые определенно выиграли бы от поддержки AVX / AVX2, но при запуске в отладчике я не мог найти какие-либо инструкции AVX.
Когда используется / arch: AVX, то он генерирует инструкции AVX, но, конечно, он вылетает на процессорах, которые его не поддерживают (проверено), поэтому также не обнаруживает время выполнения. Я мог бы использовать встроенные функции AVX, и он успешно создавал бы инструкции AVX из них. Есть идеи?
1 ответ
Я связался с командой VC++, и ответ "нет". Отчеты об ошибках, связанные в комментариях под вопросом, показывают только обычные ошибки, а не ошибки в генераторе кода автоматической отправки.
Таким образом, если указано /arch:SSE2 (по умолчанию), VC++ может автоматически отправлять только SSE4. Это единственная форма автоматической диспетчеризации, которая в настоящее время поддерживается. Другими словами, VC++ не может автоматически отправлять AVX/AVX2.