2011-08-24 1 views
6

SSE4.2 명령어 세트에 대한 지원이 있어야하는 Xeon W3550 프로세서가 있지만 C 프로그램에서 SSE2를 지나치게 사용하면 컴파일러 오류가 발생합니다. 내가사용 가능한 CPU에서 SSSE3을 사용할 수 없습니다

$cat /procs/cpuinfo 

를 사용하는 경우

#error "SSE4.2 instruction set not enabled" 

는 모든 관련 SSE 명령어 세트를 감지하지만

$cpuid 

는 SSE와 SSE2를 감지합니다.

내 운영 체제는 우분투 11.04 (커널 2.6.38-11- 일반)입니다.

해결 방법에 대한 의견이 있으십니까? 감사.

EDIT : 아래 Steve-o의 의견에 기반한 업데이트. 헤더 파일 < * mmintrin.h>는 #ifndef 전 처리기 지시문을 사용하여 연관된 sse 버전을 확인합니다.

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

은 그래서 질문은 왜 SSSE3가 활성화되는 CPU에도 불구하고 다시 거짓오고 다음 것 같다.

+0

는 GCC 제한과 같은 지침의 컴파일이 호스트 플랫폼 또는 아키텍처에 한정되지 않고, 소리. seg 결함 또는 이와 유사한 상태로 런타임시 프로세서 제한을 알 수 있습니다. –

답변

11

-msse4.2으로 건물에 가보습니까?

  • SSE4.2 기본 제공 함수 및 코드 생성에 대한 지원은 -msse4.2를 통해 사용 가능한 입니다.
  • -msse4를 통해 SSE4.1 및 SSE4.2를 모두 지원할 수 있습니다.

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

+1

아니요. 이것은 완벽하게 작동하고 내 코드는 이제 SSE3 명령을 사용하여 컴파일되고 성공적으로 실행됩니다. 감사합니다! – NGaffney

+1

'-march = native' 또한 CPU가 지원하는 것을 기반으로 할 수 있습니다. – caf