VS2013 - Enhanced Instruction Set
От: Videoman Россия https://hts.tv/
Дата: 01.10.19 15:09
Оценка:
Привет всем знатокам VS !
При сборке в VS 2013 у всех проектов параметр Enhanced Instruction Set в конфигурации 64 бита не был выставлен как "устанавлен по умолчанию". Причина: SSE и SSE2 — не поддерживался, т.к., естественно, данный набор инструкций поддерживался всеми 64 битными процами, а AVX не мог быть использован на некоторых серверных Xeon-ах у наших заказчиков (SSE 4.2 — максимум). Тем не менее, значение "по умолчанию" приводило к компиляции без AVX.
После перехода на VS 2017 и установке последних обновлений было обнаружено, что также обновился MS Build на всех машинах, который затронул сборку проектов от VS 2013. Проблема: теперь при сборке проектов под VS 2013 и VS 2017 не выставленное значение параметра Enhanced Instruction Set для 64 бит (по умолчанию) означает использовать набор инструкций AVX. Флаги SSE и SSE2 64-х битным компилятором не поддерживаются (соответственно получаем Illegal Instruction).
На отдельной билд-машине проблем нет. Но не удобно работать разработчикам у которых сразу стоит и VS 2013 и VS 2017. Что-то можно сделать в данной ситуации, или без отдельной системы с VS 2013 теперь никак ?
Отредактировано 01.10.2019 15:10 Videoman . Предыдущая версия .
Re: VS2013 - Enhanced Instruction Set
От: AndrewJD США  
Дата: 01.10.19 15:44
Оценка:
Здравствуйте, Videoman, Вы писали:

V>При сборке в VS 2013 у всех проектов параметр Enhanced Instruction Set в конфигурации 64 бита не был выставлен как "устанавлен по умолчанию". Причина: SSE и SSE2 — не поддерживался, т.к., естественно, данный набор


Это же вроде пофиксили в 15.7 Preview 4.
"For every complex problem, there is a solution that is simple, neat,
and wrong."
Re[2]: VS2013 - Enhanced Instruction Set
От: Videoman Россия https://hts.tv/
Дата: 02.10.19 08:35
Оценка:
Здравствуйте, AndrewJD, Вы писали:

AJD>Это же вроде пофиксили в 15.7 Preview 4.


Вполне возможно, но сейчас у меня 15.9.16 и проблема присутствует. Последние сборки наших продуктов, в которых все ОК, датируются 17.07.2019. После этого что-то изменилось в конфигурациях MS Build и код стал компилироваться под AVX. Наш код и настройки проектов централизованы и точно не менялись. Пока точнее, что происходит, сказать не могу, т.к., все выглядит как мистика какая-то .
В любом случае, буду очень признателен, если кто-то поможет понять в чем дело или как заставить 64-битный компилятор (под VS 2013 или VS 2017) не использовать AVX Instruction Set.
P.S. AVX используется даже в сборках с выключенной оптимизацией. (версия VS 2013 — 12.0.40639.0 Update 5)
Re[2]: VS2013 - Enhanced Instruction Set
От: Videoman Россия https://hts.tv/
Дата: 02.10.19 09:11
Оценка:
Здравствуйте, AndrewJD, Вы писали:

AJD>Это же вроде пофиксили в 15.7 Preview 4.


Да, вы правы. все починилось. Проблема оказалась как всегда не там где искали. В одном единственном проекте из стороннего SDK был принудительно выставлен флаг AVX.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.