2007년 11월 22일 목요일

Intel 교육

어제 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.