2010-03-23 1 views
7

GCC와 인텔 ICC의 차이점을 알고 싶습니다. 최적화 수준 및 특정 프로세서 아키텍처에 관한 내용입니다. 저는 GCC 4.1.2 20070626과 Linux 용 ICC v11.1을 사용하고 있습니다.ICC vs GCC - 최적화 및 CPU 아키텍처

ICC의 최적화 수준 (O1에서 O3)은 GCC와 어떻게 다른가요?

ICC는 다른 아키텍처 (IA-32, Intel64 및 IA-64)를 특별히 처리 할 수 ​​있습니다. 나는 GCC가 비슷하다고 생각하는 -march 컴파일러 옵션을 가지고 있지만 사용하는 옵션 목록을 찾을 수 없다는 것을 읽었다. 64 비트 인 Intel Xeon X5570을 사용하고 있습니다. 64 비트 Intel CPU 용 응용 프로그램을 제공 할 수있는 다른 GCC 컴파일러 옵션이 있습니까?

감사합니다.

감사합니다, 레인

답변

1

참조하는 아키텍처 (IA-64는 아이테니엄, 그리고 당신은 하나를 가질 확률이 낮다에 적용되는 모든 옵션의 전체 목록과 설명에 대한 GCC 설명서, ie386 and x86-64 Options 섹션 3.17.15 그것들의).

이 상황에서 가장 중요한 옵션

은 다음과 같습니다

  • -m64 64 비트 코드를 생성;
  • -march= 특정 CPU 유형에 대한 지침을 생성하십시오. 및
  • -mtune= 특정 CPU 유형에 대한 코드를 조정하십시오.
-1

조정 옵션 코드를 분해 차이

+0

이 코드는 그가 이미 작성한 코드에만 적용되며 앞으로 작성하는 코드에는 적용되지 않으므로 매우 유용한 대답은 아닙니다. –

+2

및 존재하지 않는 코드의 GCC 또는 ICC 최적화 알고리즘의 효율성을 어떻게 측정합니까? –

1

ICC -O2 -unroll2 참조는 -03 -ffast-수학 -fno-CX 한정 범위 -funroll - 루프 GCC 대략 동등 - param max-unroll-times = 2 -O1은 어느 컴파일러에서도 simd 자동 벡터화를 활성화하지 않으므로 그 차이가 줄어 듭니다. icc 및 gcc는 모두 64 비트 모드를 대상으로 별도로 작성된 컴파일러를 제공합니다. 두 gcc 컴파일러가 모두 설치되어 있으면 위의 -m64에 대한 조언이 지원됩니다. icc는 두 경로가 모두 설치되어있는 경우 경로 설정 스크립트를 사용하여 경로를 선택하도록 선택할 것입니다. -march = native는 빌드 시스템의 전체 명령 세트를 사용하는 gcc 옵션입니다. icc는 이것을 관찰 할 수 있지만 -xHost 옵션과 동등합니다. 이 질문의 시점에서, icc 옵션은 인텔 CPU에서만 작동했을 수 있습니다.