CPUCPU를 사용하여 다양한 벤치 마크 테스트를 실행하여 gcc의 속도와 관련하여 다양한 최적화 작업을 수행하려고합니다. 저는 -O1, -O2 및 -O3에 익숙하지만 -msse가 적절한 최적화라고 들었습니다. -msse는 정확히 무엇입니까? 나는 또한 -msse가 64 비트 아키텍처에서 기본값이라는 것을 보았습니다. 사용하지 않는 것과 사용하지 않는 것의 차이점을 비교하려면 어떻게 비활성화해야합니까?-msse 사용 안 함
답변
http://www.justskins.com/forums/gcc-option-msse-and-128289.html
SSE (http://it.wikipedia.org/wiki/Streaming_SIMD_Extensions) 이름이 말하는 것처럼 그들은의 vectorial 부동의 일종 빠른 펜티엄 3 이후 프로세서에 존재하는 SSE 명령어는 포인트 계산. 그들은 모든 64 비트 프로세서에서 사용할 수 있습니다. 왜 우리는 그것을 비활성화해야합니까?
-msse와 -msse2 중에서 선택할 수 있습니다. SSE2는 다른 강력하고 매우 빠른 벡터 명령어를 추가하는 SSE를 기반으로 구축 된 또 다른 명령어 세트입니다.
펜티엄 3에는 SSE가 있고 32 비트 프로세서입니다. 대신 SSE2가 현대적이며, 여전히 32 비트 프로세서 인 Pentium 4는 SSE2를 사용합니다.
-msse
은 SSE 명령어의 생성을 활성화합니다. 모든 64 비트 프로세서 (x86-64)에는이 프로세서가 있지만 일부 구형 32 비트 프로세서 (IA-32)에는 이러한 지침이 없습니다. 이것이 GCC의 기본 설정 이유입니다.
SSE
명령어는 벡터 연산 및 부동 소수점과 관련이 있습니다. 범용 코드에서 자동 벡터화의 기회가 거의 없다는 것을 고려하면 부동 소수점을 사용하면 관찰 할 수있는 유일한 차이점이 있습니다.
는 SSE 명령어를 사용하지 않도록 우리는 32 비트 및 64 비트 컴파일 사이의 전환을 포함하여 벤치 마크의 다양한 조합을 시도하고, 그래서 우리는 -msse 할 것 비활성화 무엇을보고 그냥 궁금하다 -mno-sse
펜티엄 3에는 있지만 32 비트 프로세서입니다. SSE2는 대신 현대적이며 모든 32 비트 프로세서에는 있지만 일부는 가지고 있습니다. 펜티엄 4는 32 비트 프로세서이지만 SSE2가 있습니다. –
@Salvatore 무슨 뜻인지 잘 모르겠습니다. 386에서 Pentium II까지의 모든 Intel IA32 프로세서는 SSE가없는 32 비트 프로세서입니다. 내 대답은 분명히 하겠지만 모든 x86-64 프로세서에는 SSE가 있지만 모든 IA32 프로세서에는 그렇지 않습니다. SSE의 확장으로서 SSE2는 물론 SSE를 지원하는 프로세서의 서브 세트에 의해서만 지원됩니다. –
예 정확한 :) 지금은 나에게 아주 분명하다. –
- 1. UIPickerView 사용 안 함
- 2. SessionStateModule 사용 안 함
- 3. Quicklook 사용 안 함
- 4. 장치 사용 안 함
- 5. 알림 사용/사용 안 함
- 6. edittext 사용/사용 안 함
- 7. iframe에서 스크롤 사용 안 함
- 8. android에서 마이크 사용 안 함
- 9. as3로드시 buttonmode 사용 안 함
- 10. MvcSiteMapProvider 캐싱 사용 안 함
- 11. 스크롤보기에서 UIButton 사용 안 함
- 12. Vim에서 ':'문자 사용 안 함
- 13. Restkit, 캐싱 사용 안 함
- 14. Word에서 SaveAs 사용 안 함
- 15. StyleCop 규칙 사용 안 함
- 16. Zend_Form_Element_Multicheckbox에서 이스케이프 사용 안 함
- 17. 모든 XML보기 사용 안 함
- 18. symfony2 형식 사용 안 함
- 19. TreeView에서 SelectedImageIndex 사용 안 함
- 20. red5에서 jmx 사용 안 함
- 21. 스크롤 사용 안 함 UIWebView
- 22. 전체 UIView 사용 안 함
- 23. 계측 라이브러리 사용 안 함
- 24. PHP ipv6 사용 안 함
- 25. ClickListener 이벤트 사용 안 함
- 26. ToolStripMenu 항목 사용 안 함
- 27. ListBox 항목 사용 안 함
- 28. Windows에서 인터럽트 사용 안 함
- 29. 코드별로 버튼 사용 안 함
- 30. 디버깅 출력 사용 안 함
를 사용합니다. – erasmuss22
'-msse','-msse2','-msse3','-msse4.1','-msse4.2' 중에서 선택할 수 있습니다. "실제"사용을 위해 특정 확장 대신 CPU 생성만을 대상으로 설정하는 것이 좋습니다. – millimoose
SSE 명령어는 memset 및 memcpy의 일부 최적화 된 버전에서만 사용되거나 컴파일러가 더 나은 최적화가 될 수 있음을 이해할 수 있지만 sse 및 sse2는 거의 사용되지 않는 메모리 정렬과 같은 많은 요구 사항을 가지고 있습니다. -msse 또는 -mno-msse를 사용하여 프로그램을 컴파일해도 아무런 효과가 없다면 놀랄 일이 아닙니다. –