2011-08-24 7 views
6

Ho un processore Xeon W3550 che dovrebbe supportare il set di istruzioni SSE4.2 ma quando provo a utilizzare qualsiasi cosa dopo SSE2 nel mio programma c, ricevo un errore del compilatore, ad es.Impossibile utilizzare SSSE3 sulla CPU abilitata

#error "SSE4.2 instruction set not enabled" 

Quando uso

$cat /procs/cpuinfo 

rileva tutte le pertinenti set di istruzioni SSE ma

$cpuid 

rileva solo SSE e SSE2.

Il mio sistema operativo è ubuntu 11.04 con kernel 2.6.38-11-generico.

Qualche idea su come risolvere questo problema? Grazie.

MODIFICA: un aggiornamento basato sul commento di Steve-o di seguito. I file di intestazione < * mmintrin.h> eseguono un controllo per la versione di sse a cui sono associati usando la direttiva del preprocessore #ifndef, ad es.

#ifndef __SSSE3__ 
#error "SSSE3 instruction set not enabled". 

Quindi credo che la domanda è: perché è questo tornando falso, nonostante la CPU sia SSSE3 abilitato.

+0

suona come una limitazione GCC, compilazione di istruzioni non è limitata alla piattaforma host o architettura. Si noterà solo il limite del processore in fase di esecuzione, con un errore di seg o simile. –

risposta

11

Hai provato a costruire con -msse4.2?

  • Il supporto per le funzioni integrate SSE4.2 e la generazione del codice sono disponibili tramite -msse4.2.
  • Sia il supporto SSE4.1 che SSE4.2 possono essere abilitati tramite -msse4.

http://gcc.gnu.org/gcc-4.3/changes.html

+1

No, non l'ho fatto. Questo ha funzionato perfettamente e il mio codice ora sta compilando e funzionando con successo usando i comandi SSE3, grazie! – NGaffney

+1

C'è anche '-march = native' che abiliterà le cose in base a ciò che la tua CPU supporta. – caf

Problemi correlati