인텔·엔비디아·AMD…병렬컴퓨팅 ‘삼국지’

컴퓨터의 성능을 가늠하려면 중앙처리장치(CPU) 성능을 보면 된다. CPU는 컴퓨터를 구동할 때 가장 기본이 되는 두뇌다. 그래픽카드의 그래픽처리장치(GPU)는 어떨까. 게임의 3D 그래픽을 그려주는 도구로 생각하는 것이 일반적이지만, 전문가 영역에서는 GPU가 게임 외에 범용적인 컴퓨팅 기술에까지 활용되고 있다.

화학 연구 분야에서 운동하는 분자의 충돌을 실험하기 위한 애플리케이션을 상상해볼 수 있다. 분자가 다른 분자와 충돌 후 어떻게 움직이는지 등을 연구하는 식이다. 계산 자체는 매우 단순하지만, 경우의 수가 무한하기 때문에 계산량은 방대하다. 기상 변화를 예측한다든가 암호를 해독하는 기술, 동영상 인코딩 속도 가속 등의 분야에서도 GPU가 유용하게 쓰인다.

쉽게 설명하면, 부동소수점 연산과 같이 단순하지만, 양이 많고 반복적인 계산을 CPU가 아닌 GPU에 넘기는 식이다. 복잡한 계산은 CPU가 담당하고, 덩치는 크지만 단순한 계산은 수많은 GPU가 담당하니 계산에 쏟아야 하는 시간이 단축되고, 결과적으로 컴퓨팅 효율을 높인다는 개념이다.

이처럼 GPU를 단순히 그래픽을 처리하기 위해 쓰는 것이 아닌 일반적인 컴퓨팅 영역에 활용하는 것을 GPGPU(General Purpose Processing on Graphics Processing Units)라고 부른다. GPU와 CPU를 모두 이용해 전체 컴퓨팅 성능을 획기적으로 높이는 것은 병렬컴퓨팅, 혹은 이기종(헤테로지니어스) 컴퓨팅이라고 말한다.

공교롭게도 인텔과 엔비디아, AMD가 비슷한 시기에 병렬컴퓨팅 환경을 위한 제품을 내놨다. 인텔은 ‘제온 파이 프로세서’를, 엔비디아는 2세대 막시무스 제품군을 소개했다. AMD도 GPU 기반 파이어프로 시리즈로 병렬컴퓨팅 시장을 이끌고 있다. 병렬컴퓨팅 기술 분야도 인텔과 엔비디아, AMD가 삼파전 구도를 짠 모양이다.

인텔, 기존 명령어 그대로 이용하는 게 특징

슈퍼컴퓨터나 전문가용 워크스테이션 플랫폼에서 병렬컴퓨팅 기술은 이미 AMD나 엔비디아가 그래픽처리장치(GPU)를 이용해 이끌어온 분야다. 유독 인텔만 GPU를 활용한 병렬컴퓨팅 기술에 관해 모르쇠로 일관하는 듯 보였다. 인텔의 GPU 프로젝트 ‘라라비(Larrabee)’는 지난 2009년 중단됐다.

이 같은 시점에서 인텔이 지난 11월13일, ‘제온 파이 프로세서’를 소개한 것은 의미심장하다. 라라비 프로젝트 이후 3년 만에 들고 온 병렬컴퓨팅 기술이기 때문이다. 엔비디아나 AMD와 달리 GPU 기반 프로세서가 아니라 인텔의 x86 기반 매니코어(MIC) 아키텍처에 기반을 뒀다는 점은 구별해야 하지만, 인텔도 병렬컴퓨팅 시장에 본격적으로 들어갈 채비를 마친 셈이다.

인텔의 제온 파이 프로세서는 엔비디아나 AMD의 제품처럼 GPU 기반이 아니다. x86에 기반을 두고 있다. 제온 파이 프로세서에 쓰인 코어는 옛 인텔 펜티엄 프로세서에 쓰인 ‘P54C’ 코어다. 60개의 x86 코어를 대용량 병렬컴퓨팅 기술에 도입하겠다는 전략이다.

인텔의 기존 x86 프로세서와 제온 파이 프로세서는 어떤 차이점이 있을까. 예를 들어 기존 인텔 제온 프로세서는 ‘아웃오브오더’와 같은 하드웨어 지원 기술이 통합돼있다. 한 번에 여러 개의 명령어를 처리하는 기술인데, 코어에서 차지하는 비중이 크다. 제온 파이 프로세서는 이 같은 기술을 뺐다. 쉽게 말해 제온 파이 프로세서의 설계 철학은 코어를 작게 만들어 자체적인 성능은 다소 줄이는 대신 여러 개의 프로세서를 엮어 전반적인 병렬컴퓨팅을 성능을 올리는 쪽으로 초점이 맞춰져 있다.

제온 파이 프로세서는 기존 x86 코어를 그대로 병렬컴퓨팅 환경에 적용할 수 있다는 점에서 장점이 명확하다. 기존 인텔 제온 프로세서 환경에서 쓰던 명령어를 그대로 이용할 수 있다는 점이다. 개발자 입장에서 장점이 많다. 시스템에서 병렬컴퓨팅을 지원하는 애플리케이션을 구현하기 위해 새로운 개발 방법을 배울 필요가 없기 때문이다.

나승주 인텔코리아 이사는 “기존 제온 프로세서를 쓰던 사용자들은 제온 파이 프로세서를 도입하기 위해 새로운 환경을 공부할 필요는 없다”라며 “프로그램 개발자 처지에서 편리하게 병렬컴퓨팅을 위한 애플리케이션을 개발하고 운용할 수 있다”라고 설명했다.

이 같은 특징은 병렬컴퓨팅 후발주자인 인텔에 유리한 점이다. 제온 파이 프로세서를 활용할 수 있는 애플리케이션이 없다면, 아무리 많은 GPU 코어도 무용지물이다. 인텔은 병렬컴퓨팅 시장 후발주자인 만큼 애플리케이션 확산에 노력을 기울일 예정이다. 인텔이 지난 11월13일, 서울에서 개최한 제온 파이 프로세서 출시 간담회에서 가장 열정적으로 전하고자 했던 메시지도 이 같은 문제를 의식한 듯 보인다. 인텔은 제온 파이 프로세서를 이용할 수 있는 애플리케이션을 쉽게 개발할 수 있다는 점을 강조했다.

인텔의 병렬컴퓨팅 애플리케이션은 범용적으로 많이 쓰이는 ‘C++’나 ‘포트란’ 등 개발도구로 개발할 수 있다. 엔비디아가 쿠다(CUDA)를 이용하고 있고, AMD가 오픈CL을 이용하는 것과 구별된다. 범용적인 프로그래밍 언어를 이용해 애플리케이션을 개발할 수 있다면, 쿠다나 오픈CL과 같은 새로운 기술을 배우지 않아도 된다는 장점이 있다. 인텔은 범용적인 개발 환경을 통해 애플리케이션 생태계를 확장하겠다는 의지다.

인텔 ‘제온 파이 프로세서’

엔비디아, 소비전력 감소와 성능 향상에 초점

엔비디아는 비교적 일찍부터 병렬컴퓨팅 기술을 시장에 도입한 업체다. GPU를 활용한 엔비디아의 병렬컴퓨팅 기술 역사는 지난 2006년 겨울로 거슬러 올라간다. 당시 쿠다1.0을 소개했었는데, 지금은 쿠다5.0을 발표해 운영하고 있다.

쿠다는 엔비디아의 병렬컴퓨팅 기술을 이용할 수 있도록 돕는 도구다. 병렬컴퓨팅 기술을 이용하려면 하드웨어뿐만 아니라 이를 활용할 수 있는 애플리케이션이 필수적인데, 쿠다가 그 역할을 담당한다. 엔비디아는 병렬컴퓨팅 GPU 하드웨어와 개발도구를 모두 포함해 쿠다라고 부르고 있다.

인텔이 제온 파이 프로세서를 발표하면서 강조한 부분이 바로 범용적인 애플리케이션 개발 환경이었다. 엔비디아의 쿠다 환경은 범용적인 개발 환경은 아니다. 애플리케이션 개발자들이 새로 배워야 하는 기술이기 때문이다. 엔비디아가 쿠다 환경을 알리기 위해 대학교 연구원들과 전문 사용자를 상대로 교육과 세미나를 진행하는 까닭이다.

이주석 엔비디아코리아 상무는 “AMD는 오픈CL을 지원하고, 인텔은 범용 개발 환경을 지원하는 것과 비교해 엔비디아는 쿠다에 집중하고 있다”라며 “쿠다 개발도구의 컴파일 소스코드를 공개하고, 무료로 지원하는 등 개발자들이 더 편리한 환경에서 병렬컴퓨팅 최적화 애플리케이션을 개발할 수 있도록 돕고 있다”라고 설명했다.

2006년부터 기술을 도입한 덕분에 지금은 병렬컴퓨팅 애플리케이션 개발 환경에서 쿠다는 비교적 일반적으로 쓰이고 있다는 점도 엔비디아 기술을 돋보이게 한다.

엔비디아의 GPU 기반 병렬컴퓨팅 발전 철학도 짚어보자. 성능 향상에만 초점이 맞춰져 있는 것은 아니다. 엔비디아는 코어 개수를 늘려 성능을 높이는 것 외에도 프로세서 사이의 병목현상을 해결해 성능을 올리는 기술을 도입했다. 소비 전력을 낮추는 것도 엔비디아의 장기적인 병렬컴퓨팅 기술 전략이다.

병목현상을 줄이는 기술은 엔비디아의 최신 아키텍처 케플러부터 적용됐다. GPU와 CPU가 서로 의사소통할 때 PCI 슬롯 수준에서 병목현상이 일어나는데, 이 때문에 이론보다 낮은 성능을 낸다. 엔비디아는 GPU가 CPU를 거치지 않고 직접 다른 GPU 코어와 의사소통할 수 있는 기술을 적용했다. ‘동적 병렬(다이나믹 패럴렐리즘)’과 같은 기술도 케플러 아케텍처부터 적용됐다. 병렬컴퓨팅 기술을 단순하게 만드는 데 도움이 되는 기술이다.

이주석 상무는 “병렬컴퓨터 시스템이 소비하는 전력을 낮추는 문제도 엔비디아가 계속 고민하는 부분”이라며 “병목현상을 줄이고, 코어 개수를 늘려 성능을 높이면서도 전기를 절약하는 시스템을 개발하는 것이 엔비디아의 기본적인 연구 방향”이라고 소개했다.

엔비디아는 11월 들어 최신 병렬컴퓨팅 프로세서 ‘K20′ 시리즈를 출시했다. GPU 코어가 2496개 적용된 제품이다. 배정밀도 연산 성능이 1.17테라플롭스, 단일 정밀도 연산 성능은 3.52테라플롭스에 이른다. 숫자만 봐서는 성능이 어느 정도인지 감이 잘 잡히지 않는데, 다른 슈퍼컴퓨터와 비교해보자.

예를 들어 기상청이 약 7년 전 도입한 슈퍼컴퓨터 2호기는 12테라플롭스 성능을 낸다. 당시 기상청은 이 시스템을 마련하는 데 약 500억원을 들였다. 하지만 지금은 단 4개의 K20 병렬컴퓨팅 프로세서만으로도 꾸밀 수 있다. 슈퍼컴퓨터 세상의 격세지감을 느낄 수 있는 대목이다.

슈퍼컴퓨터만이 아니다. 제조업체의 산업 디자이너가 많이 쓰는 캐드(CAD) 데이터도 점차 실제 사진과 가깝게 발전하고 있다. 영화의 컴퓨터그래픽(CG)도 사실과 구분하기 어렵다. 그래픽 기술의 데이터양이 많아졌다는 뜻이다. 엔비디아의 GPU 병렬컴퓨팅 기술은 과학 연구실이나 슈퍼컴퓨터뿐만 아니라 다양한 분야에서 막대한 양의 데이터를 처리하기 위해 쓰이고 있다.

엔비디아 테슬라 GPU로 꾸며진 슈퍼컴퓨터 순위 1위 ‘타이탄’. 미국 오크리지 국립연구소에서 운영 중이다.

AMD, 사용자와 가까운 병렬컴퓨팅 기술

인텔의 병렬컴퓨팅 기술은 우선 슈퍼컴퓨터 시장에 초점을 맞췄다. 엔비디아는 슈퍼컴퓨터와 전문가용 워크스테이션 시장에 집중하고 있다. 이와 비교하면 AMD의 병렬컴퓨팅 기술은 훨씬 더 사용자와 가깝다. AMD는 개인용 슈퍼컴퓨팅 기술이라고 부른다. CPU와 GPU를 통합한 프로세서 개발을 주도한 것도 AMD다. AMD가 만들고 있는 PC용 프로세서 제품군을 떠올리면 된다. AMD의 트리니티 시리즈 프로세서는 슈퍼컴퓨터나 고성능 워크스테이션은 아니지만, CPU와 GPU의 병렬컴퓨팅 기술을 가까이에서 경험할 수 있는 제품들이다.

슈퍼컴퓨터나 워크스테이션 환경에 적합한 제품도 있다. AMD도 11월 들어 서버에 어울리는 그래픽카드 ‘파이어프로’ 시리즈를 소개했다. AMD가 발표한 자료를 보면, 파이어프로 S10000 프로세서는 배정밀도 연산 성능이 1.48테라플롭스, 단일정밀도 연산 성능은 5.91테라플롭스 수준이다. 그래픽카드의 메모리는 6GB다.

AMD의 파이어프로 프로세서는 특히 슈퍼컴퓨터의 자원을 공유하는 기술에 집중한 제품이다. 높은 성능을 내는 슈퍼컴퓨터에 네트워크를 통해 접속해 하드웨어를 나눠 쓸 수 있도록 하는 기술이다.

클라우드 게임 환경을 생각해보자. 클라우드 게임 서비스는 사용자가 가진 기기를 통해 게임 서버에 접속해 게임을 즐기는 기술이다. 사용자의 기기는 게임을 즐기기 위해 높은 성능을 내는 장비를 가질 필요가 없다. 게임 그래픽을 계산해주는 역할을 게임 서버가 담당하기 때문이다. 게임 서버의 게임 구현 능력을 공유하는 개념이다.

하지만 AMD는 해결해야 할 숙제가 많이 남아 있다. AMD의 GPU 병렬컴퓨팅 개발 환경은 오픈CL이다. 엔비디아의 쿠다처럼 도입 시기가 비교적 빨랐던 것도 아니고, 인텔처럼 범용적인 개발 환경을 지원하는 것도 아니다. AMD의 GPU 병렬컴퓨팅 기술을 활용할 수 있는 애플리케이션 생태계가 상대적으로 작다는 얘기다.

AMD가 개발자를 포섭하기 위해 ‘AMD 퓨전 개발자 대회(AFDS)’를 개최하는 등 AMD의 GPU 병렬컴퓨팅 기술과 오픈CL 알리기에 적극적으로 나서고 있는 이유가 여기에 있다. 지난 6월, CPU와 GPU 기술을 가진 업체를 모아 병렬컴퓨팅협의회를 만들기도 했는데, 이름하여 ‘이기종 시스템 아키텍처(Heterogeneous System Architecture, HSA)’ 재단이다. HSA 재단은 병렬컴퓨팅을 위한 통합된 하드웨어 기술을 정의하고, 개발자가 병렬컴퓨팅 기술을 이용할 수 있는 애플리케이션을 개발할 수 있도록 지원하는 것이 목표다.

AMD의 ‘파이어프로’ GPU

기술을 이야기하지만, 사람을 생각합니다. [트위터] @Sideway_s, [페이스북] facebook.com/sideways86, [구글+] gplus.to/sideway [e메일] sideway@bloter.net

  • 구글플러스
  • 블로터닷넷 아카데미, 북스, 컨퍼런스 그리고 블로터TV

    아카데미 | Academy

    북스 | Books