Вопрос

Я добавил конфигурацию x64 в свой проект C++ для компиляции 64-разрядной версии моего приложения.Все выглядит нормально, но компилятор выдает следующее предупреждение:

`cl : Command line warning D9002 : ignoring unknown option '/arch:SSE2'`

Неужели оптимизация SSE2 действительно недоступна для 64-битных проектов?

Это было полезно?

Решение

Кажется, все 64-битные процессоры имеют SSE2.Поскольку опция компилятора всегда включена по умолчанию, нет необходимости включать ее вручную.

От Википедия:

Инструкции ССЕ:Исходная архитектура AMD64 использовала Intel SSE и SSE2 в качестве основных инструкций.Инструкции SSE3 были добавлены в апреле 2005 года.SSE2 заменяет 80-битную точность IEEE набора команд x87 на выбор 32-битной или 64-битной математики с плавающей запятой IEEE.Это обеспечивает операции с плавающей запятой, совместимые со многими другими современными процессорами.Инструкции SSE и SSE2 также были расширены для работы с восемью новыми регистрами XMM.SSE и SSE2 доступны в 32-битном режиме в современных процессорах x86;однако, если они используются в 32-битных программах, эти программы будут работать только в системах с процессорами, имеющими эту функцию.Это не проблема в 64-битных программах. поскольку все процессоры AMD64 имеют SSE и SSE2, использование инструкций SSE и SSE2 вместо инструкций x87 не уменьшает набор машин, на которых можно запускать программы x64. SSE и SSE2 обычно быстрее и дублируют большинство функций традиционных инструкций x87, MMX и 3DNow!.

Другие советы

Я понимаю предупреждение, которое появляется, если вы выберете SSE2, хотя это все равно глупо.Однако вы все равно получите предупреждение, если выберете /arch:AVX.Я уверен, что это будет исправлено с SP1.Это просто спам и раздражение.

Параметр компилятора /arch:AVX не будет работать на старых процессорах, поэтому вам необходимо убедиться, что ваш процессор его поддерживает.Я столкнулся с этой проблемой, когда мне пришлось перекомпилировать пакет тензорного потока 1.12 для моего старого процессора Xeon, который не поддерживает.

Я включил /arch:SSE2 (как Кирилл), опубликованный выше, но столкнулся с точно такой же проблемой.Компилятор Microsoft выдает предупреждение (INFO), что этот параметр будет проигнорирован.

Command line warning D9002 : ignoring unknown option '/arch:SSE2'

Из документации Microsoft я понимаю, что эта опция доступна только на x86, и для меня это тоже не имеет смысла.

Однако в MSDN говорится:

/arch:SSE and /arch:SSE2 are only available when you compile for the x86 platform.

и что SSE в любом случае используется на x64.Поэтому я просто удалил эту опцию сейчас.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top