Creative Commons License

Intel 교육 IT



어제 IntelBestInfra가 함께한 Software Optimization on Intel Architecture(Linux)를 듣고 왔다. 몇몇가지 정리를 하자면 아래와 같다.

인텔에서 제작한 최신 C/C++ 컴파일러(ICC 10 - 2007년 11월 21일 기준)는 인텔에서 출시한 모든 CPU에 추가된 확장명령코드를 이용해 최적화를 할 수 있다. 다른 컴파일러들이 귀찮아서 거의 안 하는 짓꺼리를 인텔 컴파일러는 이 꽉 깨물고 최적화해준다. 뭐, 가장 볼만한게 Loop Vectorization을 해서 SIMD로 기계어 만들어내고 그걸 CPU에 집어넣으니, GCC의 x86코드보다 훨 빠르다!라는 것. 당연하지. (GCC는 범용 컴파일러. 많은 종류 CPU를 소화할 수 있지만 그만큼 특화가 어렵고, 같이 제공하는 GLIBC 역시 특화한 라이브러리에 비해 느린 편이다.)

뱀발:
관계자 설명에 의하면, 인텔은 최신 머신에 대해 최고 컴파일러를 빨리 내놓을 뿐, 최소 6개월 정도면 GCC에서도 비슷한 수준으로 최적화하는 컴파일러를 만들어낸다고 한다. 장사를 하자고 말자고? 어짜피 인텔은 H/W회사지 S/W회사가 아니다. 컴파일러 장사를 하기보단, 자사 CPU에서 이런 식으로 동작시키면 좀더 빠르게 동작해요를 홍보하기 위한 것이지. 뭐... 이게 중요한게 아니고...
인텔 컴파일러 장점은
  1. GCC/GLIBC와 거의 완벽하게 호환(확장기능까지!)하기때문에 소스코드를 고칠 노력 없이 컴파일 옵션만으로도 더 나은 성능을 맛 볼 수 있다. 게다가 각종 Object/Library 파일도 호환한다.
  2. 몇몇가지 자주 쓰이는 수치관련 라이브러리를 최적화하여 만들어 제공한다. 예로 기본 math대신에 imf라이브러리를 이용하면 좀더 좋은 성능을 맛볼 수 있다.
  3. 원한다면 소스에서 컴파일러 디렉티브를 이용해 최적화요소를 컴파일러에게 직접 지시할 수도 있다.
  4. 컴파일러가 내뿜는 최적화 요소 정보가 GCC보다 훨씬 많고 다양해서 실제 코드를 고쳐서 최적화를 할 때 많은 도움이 된다.
  5. 모든 자료는 인텔홈페이지나 컴파일러패키지에 함께 제공한 문서에 기술했으며, 맛보기를 위해 무료로 한 달 라이센스를 발급하고 있다.
  6. 자매품 VTune 같은 프로파일러 많은 애용 부탁한다는...
교육 대부분은 컴파일러 옵션을 바꿔가면서 gcc/icc로 컴파일한 3D 랜더러 성능과 matrix multiply 성능 개선을 보여주었다. gcc와 크게는 20% 이상 차이를 보였으며, 컴파일 옵션을 잘못주면 오히려 gcc보다 성능이 떨어지는 것을 볼 수 있었다.

뱀발: 장점만 썼는데, 눈에 띄는 단점은 없어보인다. 라이센스 비용도 4~50만원 선이고, 개인이 사기엔 좀 비싸지만 회사 입장에서는 가격대 성능비가 좋게 나올 것 같다. 배워두면 어디든 쓴다고 하지만, 내 업무요건에 이 화려한 기술을 쓸 일은 거의 없을 것 같다. 내 업무 요건 가운데 가장 필요한 것은 I/O를 줄이는 것이겠지.

결론: 3D게임을 만드는 회사(또는 산술계산이 많은 연구소)는 Intel용 application를 만들 때는 반드시 Intel Compiler로 컴파일하라. 머리 싸매지 않아도 20%정도 효율을 맛볼 수 있을 것이다.

Powered by ScribeFire.


덧글

  • object 2007/11/22 11:56 #

    Simdization은 정말 재밌고도 멋진 테크닉이죠.
  • 샘이 2007/11/22 12:56 #

    object// 네, loop 하나를 만들더라도 정신 바짝차리게 하는 테크닉이죠~!!
  • chadr 2007/11/22 19:13 # 삭제

    amd에서 지원 안한다면?
  • 샘이 2007/11/22 22:16 #

    chadr// SIMD가 MMX나 SSEx, 3DNow! 같은 기술은 크로스라이센싱으로 양 사에서 지원할 수 있지 않나? 별 일 없으면 인기 있는 플랫폼(인텔CPU)에서 구현한거 갖다 쓰지 않겠어?
  • chadr 2007/11/22 23:29 # 삭제

    라이센스 문제라기 보단.. 확장 명령셋들이라서 같은 인텔 프로세서에서도 지원하고 안하는게 있으니..
    그게 문제가 될거 같은데..
  • 샘이 2007/11/23 09:14 #

    chadr// 확실히 SSE3 명령셋으로 컴파일하니 SSE2까지 지원하는 CPU에선 돌아가지 않더군. 뭐, 그런 것쯤이야...
※ 이 포스트는 더 이상 덧글을 남길 수 없습니다.

Google Adsense

Google Adsense

Google Analytics



C로그팬박스