Domanda

Ho aggiunto la configurazione x64 al mio progetto C ++ per compilare la versione a 64 bit di mia app. Tutto sembra bene, ma compilatore dà il seguente avviso:

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

C'è ottimizzazione SSE2 davvero non è disponibile per i progetti a 64 bit?

È stato utile?

Soluzione

Sembra essere tutti i processori a 64 bit ha SSE2. Dal momento che l'opzione del compilatore sempre attivata per impostazione predefinita non c'è bisogno di accenderlo manualmente.

Wikipedia :

  

istruzioni SSE : L'architettura AMD64 originale adottato Intel SSE e SSE2 come le istruzioni di base. istruzioni SSE3 sono stati aggiunti nel mese di aprile 2005. SSE2 sostituisce l'x87 istruzioni del set IEEE precisione 80-bit, con la scelta di IEEE a 32 bit o la matematica in virgola mobile a 64 bit. Questo fornisce operazioni a virgola mobile compatibile con molti altri moderne CPU. Le istruzioni SSE e SSE2 sono state estese anche ad operare su otto nuovi registri XMM. SSE e SSE2 sono disponibili in modalità a 32 bit nei moderni processori x86; tuttavia, se sono utilizzati in programmi a 32 bit, questi programmi funzionano solo su sistemi con processori che hanno la funzione. Questo non è un problema in programmi a 64 bit, come tutti i processori AMD64 hanno SSE e SSE2, in modo da utilizzare SSE e SSE2 istruzioni invece di istruzioni x87 non riduce l'insieme di macchine su cui possono essere eseguiti i programmi x64 . SSE e SSE2 sono generalmente più veloce di e duplicare la maggior parte delle caratteristiche delle istruzioni x87 tradizionali, MMX e 3DNow!.

Altri suggerimenti

ho capito l'avvertimento che appare se si sceglie SSE2, ma decorate la sua ancora sciocco. Tuttavia è ancora ottenere l'avviso se si seleziona / arch: AVX. Sono sicuro che otterrà fissato con SP1. Il suo solo un po 'di spam e un fastidio.

Il compilatore opzione / arch: AVX non funzionerà su vecchie CPU, quindi, è necessario garantire la vostra CPU supporta. Mi sono imbattuto in questo questioni quando ho dovuto ri-compilare il pacchetto 1.12 tensorflow per il mio vecchio CPU Xeon che non supporta.

Ho acceso / arch: SSE2 (come Kirill) postato sopra ma ottenere esattamente lo stesso problema. Il compilatore Microsoft emette un avviso (INFO) che questa opzione verrà ignorata.

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

Dalla documentazione di Microsoft la mia comprensione è che questa opzione è disponibile solo su x86 e che non ha senso per me.

Tuttavia su MSDN dice:

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

e che SSE viene utilizzato su x64 in ogni modo. Quindi ho appena rimosso l'opzione ora.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top