문제

C ++ 프로젝트에 X64 구성을 추가하여 64 비트 버전의 앱을 컴파일합니다. 모든 것이 잘 보이지만 컴파일러는 다음과 같은 경고를 제공합니다.

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

64 비트 프로젝트에는 SSE2 최적화가 실제로 제공되지 않습니까?

도움이 되었습니까?

해결책

64 비트 프로세서에는 SSE2가 모두있는 것 같습니다. 컴파일러 옵션은 항상 기본적으로 전환되므로 수동으로 켜지 필요가 없습니다.

에서 위키 백과:

SSE 지침: 원래 AMD64 아키텍처는 Intel의 SSE 및 SSE2를 핵심 지침으로 채택했습니다. SSE3 지침은 2005 년 4 월에 추가되었습니다. SSE2는 X87 명령 세트의 IEEE 80 비트 정밀도를 IEEE 32 비트 또는 64 비트 플로팅 포인트 수학을 선택하여 대체합니다. 이것은 다른 많은 현대 CPU와 호환되는 부동 소수점 작동을 제공합니다. SSE 및 SSE2 지침은 8 개의 새로운 XMM 레지스터에서 작동하도록 확장되었습니다. SSE 및 SSE2는 최신 X86 프로세서에서 32 비트 모드로 제공됩니다. 그러나 32 비트 프로그램에 사용되는 경우 해당 프로그램은 기능이있는 프로세서가있는 시스템에서만 작동합니다. 이것은 64 비트 프로그램에서는 문제가되지 않습니다. 모든 AMD64 프로세서가 SSE 및 SSE2를 가지므로 X87 지침 대신 SSE 및 SSE2 명령을 사용해도 X64 프로그램을 실행할 수있는 시스템 세트를 줄이지 않습니다. SSE 및 SSE2는 일반적으로 전통적인 X87 명령어, MMX 및 3DNOW!의 대부분의 기능보다 더 빠르며 대부분의 기능을 복제합니다.

다른 팁

SSE2를 선택하면 경고가 나타나는 것을 이해합니다. 그러나 선택 /아치 : AVX를 선택하면 경고를받습니다. SP1로 고정 될 것이라고 확신합니다. 그것은 약간 스팸과 성가심입니다.

컴파일러 옵션 /아치 : AVX는 이전 CPU에서 작동하지 않으므로 CPU가 지원해야합니다. 지원하지 않는 이전 Xeon CPU의 1.12 텐서 플로우 패키지를 다시 컴파일해야했을 때이 문제를 해결했습니다.

위에 게시 한 /아치 : SSE2 (Kirill)가 켜졌지만 정확히 같은 문제를 겪었습니다. Microsoft 컴파일러는이 옵션이 무시 될 것이라는 경고 (정보)를 발행합니다.

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