2012-05-18 2 views
5

Nehalam/westmere 인텔 마이크로 아키텍처 CPU에서 작업하고 있습니다. 이 아키텍처에 대한 코드를 최적화하고 싶습니다. GCC의 특수 컴파일 플래그 또는 C 코드가있어 코드의 런타임 성능을 향상시키는 데 도움이됩니까?주어진 CPU 아키텍처에서의 최적화를위한 GCC 옵션

이미 -o3을 사용하고 있습니다.

Language of the Code - C 
Platform - Linux 
GCC Version - 4.4.6 20110731 (Red Hat 4.4.6-3) (GCC) 

내 코드에는 부동 소수점 비교가 있으며 백만 시간이 넘습니다.

코드가 이미 최적화 된 것으로 가정하십시오.

+5

당신이 문서와 인터넷 검색을보고 얻을 결과에 잘못은 무엇? – jthill

+0

http://gcc.gnu.org/onlinedocs/gcc/Option-Summary.html – Jay

+0

@jthill은이 perticular 아키텍처에 대한 어떤 것도 얻을 수 없었습니다. 그래서 우리는 인텔 컴파일러와 같은 구체적인 것이 있는지 궁금합니다. –

답변

14

실제로 사용 중지 된 모든 활성화 된 최적화를 직접 분석 할 수 있습니다.

gcc -O3 -Q --help=optimizers | grep disabled 

을 그리고 여전히 비활성화되어 the gcc documentation 영향을 성능에 따라 할 수있는 플래그에 대해 읽어 : 컴퓨터에서 실행합니다.

16

첫째,이 같은 최신 프로세서에서 실제로 이익을 얻고 싶다면 최신 버전의 컴파일러를 설치해야합니다. 몇 년 전에 4.4가 나왔고, 여전히 유지 보수 상태로 보이더라도 새로운 최적화 코드가 백 포트되어 버렸습니다. (현재 버전은 4.7입니다.)

Gcc에는 일반적으로 컴파일 아키텍처에 최적화 된 코드 인 -march=native이 생성되어야하는 catch-all 최적화 플래그가 있습니다. -O3과 함께 필요한 모든 것입니다.

은 (그리고이 사이트에 미래의 질문에 대한 완전한 영어 문법과 문장 부호를 사용하십시오.)

+1

호스트 용으로 구축하지 않은 경우'-march = nehalem','-march = sandybridge','-march = haswell','-march = bdver1 '-march = silvermont' 등을 사용합니다. 구식 CPU에서 오류를 일으키는 명령 세트 확장을 사용하지 않고 특정 CPU를 조정하려면'-mtune'을 사용하십시오. 예를 들어'-march = nehalem -mtune = haswell'은'-msse4.2 -mpopcnt -mtune = haswell'의 약어입니다. –

5

당신은 -march=... 옵션을 추가 할 수 있습니다. ...in the i386/x86_64 options for GCC here으로 기술 된 CPU 아키텍처와 가장 가까운 것 (사소한 차이가있을 수 있음)으로 대체해야합니다.

corei7 (원하는 버전)은 GCC 4.6 이상에서만 사용할 수 있기 때문에 core2을 사용합니다. arch list for GCC 4.6 here을 참조하십시오.

0

당신이 정말 corei7를 지원하지 않습니다 너무 오래된 GCC를 사용하려는 경우, 당신은 -mtune을 사용할 수는 바르셀로나에게 =

관련 문제