Pergunta

Eu adicionei configuração x64 ao meu projeto de C ++ para compilar versão do meu aplicativo de 64 bits. Tudo parece bem, mas compilador dá o seguinte aviso:

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

Existe otimização SSE2 realmente não está disponível para projectos de 64 bits?

Foi útil?

Solução

Parece ser todos os processadores de 64 bits tem SSE2. opção do compilador Desde sempre ligado por padrão há necessidade de ligá-lo manualmente.

A partir Wikipedia :

instruções SSE : A arquitetura AMD64 original adoptado SSE e SSE2 da Intel como instruções básicas. instruções SSE3 foram adicionados em abril de 2005. SSE2 substitui precisão de 80 bits IEEE do conjunto de instruções x87 com a escolha de qualquer IEEE matemática de ponto flutuante de 32 bits ou de 64 bits. Isso proporciona operações de ponto flutuante compatíveis com muitos outros processadores modernos. As instruções SSE e SSE2 também foram estendidos para operar nos oito novos registros XMM. SSE e SSE2 estão disponíveis no modo de 32 bits em processadores x86 modernos; no entanto, se eles são usados ??em programas de 32 bits, esses programas só irá funcionar em sistemas com processadores que possuem o recurso. Este não é um problema em programas de 64 bits, como todos os processadores AMD64 têm SSE e SSE2, portanto, usando SSE e SSE2 instruções em vez de x87 instruções não reduz o conjunto de máquinas nas quais x 64 programas podem ser executados . SSE e SSE2 são geralmente mais rápido do que, e duplicar a maioria das características das instruções tradicionais x87, MMX e 3DNow!.

Outras dicas

Eu entendo o aviso que aparece se você escolher SSE2, althought o seu ainda bobo. No entanto, você ainda obter o aviso se você selecionar / arch: AVX. Eu tenho certeza que ele vai ficar fixo com SP1. Seu apenas um spam pouco e um aborrecimento.

A opção de compilador / arch: AVX não vai trabalhar em CPUs antigas, portanto, você precisa garantir que seus suportes de CPU TI. Corri para este problemas quando eu tive que re-compilar o pacote 1,12 tensorflow para o meu CPU Xeon antigo, que não suporta.

Eu tenho ligado / arch: SSE2 (como Kirill) postado acima, mas recebendo exatamente o mesmo problema. O compilador Microsoft emite um aviso (INFO) que esta opção será ignorada.

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

A partir da documentação Microsoft meu entendimento é que esta opção só está disponível em x86 e que não faz sentido para mim.

No entanto, em MSDN diz:

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

e que SSE é usado em x64 de qualquer maneira. Daí eu só removeu a opção agora.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top