본문 바로가기
IT/Hardware/Graphics

GK110을 공개한 엔비디아의 전략

by 에비뉴엘 2012. 6. 30.
반응형

●프로그래밍 확장이 눈에 띄는 GK110 
 
NVIDIA는, Kepler(케플러) 세대의 플래그쉽 GPU 「GK110」의 베일을 마침내 벗겼다. 그렇다고 해도, 제공시기는, GK110의 HPC(High Performance Computing) 향해 제품 「Tesla K20」가 2012년 제 4/4분기로 아직 앞의 이야기다. GK110/Kepler의 신기능도, 금년 늦게 릴리스 후보판이 나오는 CUDA 5.0(현상은 프리뷰)가 없으면 사용할 수 없는 것이 많다. 그러나, 엿볼 수 있는 기능만을 봐도, GK110가 야심적인 GPU인 것을 알 수 있다.

 NVIDIA는, 미 샌노제로 개최하고 있는 동사의 기술 컨퍼런스 「GPU Technology Conference(GTC)」로, GK110와 Kepler 아키텍쳐의 지금까지 밝혀지지 않았던 기능을 분명히 했다.그 중에는, GPU내에서 스레드드 생성을 행하는 「Dynamic Parallelism」, 「Hyper-Q」, 「NVIDIA VGX」플랫폼과 게다가 클라우드 플랫폼 「GeForce GRID」가 포함된다. Hyper-Q와 Dynamic Parallelism은, GK110 이후의 Kepler 패밀리의 기능이 된다.

 이것들은 모두, GPU의 프로그램성이나 GPU의 성능 효율을 끌어올려 또 GPU의 적용 범위를 펼치는 것을 가능하게 하는 기술이다.무엇보다, CPU측이 보았을 경우, 벌써 CPU에서는 실장되고 있는 기술이, 간신히 GPU에 들어간다고도 말할 수 있다.역을 말하면, CPU와 GPU가 또 한 걸음 가까워져, 그 만큼 GPU가 사용하기 쉽게 된다고 볼 수 있다.

 NVIDIA는, Kepler 아키텍쳐에서는, 그래픽스 전용의 GeForce GTX 680(GK104)을 최초로 릴리스 했다.GK104는, 300평방 mm이하의 다이에 256-bit폭의 메모리인터페이스를 탑재한, GPU로서는 미드레인지클래스의 칩이다.그에 대하고, 이번 발표된 GK110는, 500평방 mm클래스의 다이에 384-bit폭메모리인터페이스와 최근의 고급 지향 GPU인것 같은 사양이 되고 있다.

 
GK110의 다이사진

●프로세서 클러스터 SMX의 레이아웃이 다른 케플러패밀리 
 
NVIDIA GPU의 프로세서 클러스터의 최소단위인 「SMX(Streaming Multiprocessor eXtreme)」는, GF110 다이상에서 분별이 된다.다만, 다이 사진상의 SMX는, GK104와 GK110로 크게 레이아웃이 다르다.중앙 부분의 레이아웃은 공통되고 있으므로, 그것을 맞추어 동등이라고 추측되는 스케일로 해 늘어놓은 것이 위의 그림이다.비교하면, GK110의 SMX가 수십 퍼센트인가 그 이상 크다고 추측된다.이것은, 배정도 연산 유닛등이 강화되었기 때문이다.

 GK104계는 「Kepler1」아키텍쳐로 불리는데 대하고, GK110는 「Kepler2」라고 불리고 있다.NVIDIA의 전생대의 Fermi(페르미) 아키텍쳐에서는, 고급 지향의 GF100/110계로 그것 이하의 그래픽스를 위한 제품에서는, 프로세서 코어 부분의 아키텍쳐가 차이가 났다.이번도, Kepler1와 Kepler2에서는, 프로세서 코어의 아키텍쳐가 다르다.또, SMX로부터 전체의 die size를 산출하면, 적게 추측해도 500평방 mm전후가 된다.따라서, NVIDIA GPU의 한계에 가까운 die size를 유지하는 노선은, Kepler 세대라도 건재라는 것이 된다.

 아래는, GK110의 SMX의 블럭도다.GK104와의 큰 차이는, 64개의 배정도(DP) 연산 유닛이 더해지고 있는 점에 있다.이 배정도 유닛은 단정도 연산은 할 수 없다.단정도 전용의 연산 유닛은 192개로, 전체는 4 리젼에 크게 헤어져 있다.덧붙여서, Kepler 마이크로 아키텍쳐의 특징인 얕은 파이프라인이나 스케줄링의 부분적인 소프트웨어에의 이행은, Kepler 패밀리 전체로 공통되고 있다고 보여진다. 


GK110의 SMX 



케플러의 SMX와 페르미의 SM비교


케플러와 페르미의 아키텍쳐의 차이 

●2880개로 추정되는 CUDA 코어


 칩 전체를 보면, Kepler 초대의 GK104는 294평방 mm의 다이로 트랜지스터 카운트는 3.54 B(35.4억), 8개의 SMX를 탑재해, 합계의 단정도 부동 소수점 연산 유닛(CUDA 코어) 수는 1,536개를 센다.그에 대하고, 공개된 GK110는 7.1 B(71억) 트랜지스터로, NVIDIA의 Jen-Hsun Huang(젠센・후안) 씨(Co-founder, President and CEO)에 의하면 「현시점에서 가장 복잡한(트랜지스터 카운트가 많다) 칩」이라고 한다.

 GK110의 공개된 다이 사진을 보면 SMX의 수는 15개.GK110의 SMX의 부동 소수점 연산 유닛은 192개이므로, 합계의 단정도 연산 유닛(CUDA 코어) 수는 2,880개의 계산이 된다.다만, 제품에서는 제품 비율 확보를 위해서 SMX가 1개 무효로 될 가능성이 있어, 그 경우는 CUDA 코어수가 줄어 든다.아래의 슬라이드에 있는 Tesla K10는, GK104 베이스의 Tesla로, 이쪽은 GTC시에 정식 발표되었다. 



GK104의 Tesla K10
 
성능 레인지는 HPC 전용의 Tesla K20로, Fermi 세대의 Tesla에 대해서 배정도 부동 소수점 연산 퍼포먼스로 3배로 발표되고 있다.Fermi 베이스의 「Tesla M2090」의 배정도 성능은 666 GFLOPS이므로, Tesla K20는 2 TFLOPS 이상의 배정도 성능을 가지는 계산이 된다.

 GK110에서는, 배정도의 성능은 단정도의 3분의 1으로, 15 SMX의 경우는칩 전체로 960개의 배정도 연산 유닛이 된다.그 때문에, 3배 성능을 달성한다고 하면, 1 GHz인가 그 이상으로 동작시킬 필요가 있다.그 경우, 단정도의 퍼포먼스는 6 TFLOPS 근처가 된다.

 덧붙여서, GK104에서는, 2개의 SMX로 1개의 GPC(Graphics Processing Cluster)를 구성하고, 래스터라이저등을 공유하는 구조가 되고 있다.그러나, GK110의 다이를 보면, 3개의 SMX로 세트가 되어 있는 것처럼 보인다.전체의 SMX수도 15인 것을 생각하면, GPC는 3개의 SMX로 구성되어 있을 가능성이 있다.아래는 GK110의 전체 구성이다.



GK110의 전체 구성 

●CUDA 5.0로 제휴하는 GK110의 신기능 
 
 GTC로의 Jen-Hsun Huang씨의 키노트 스피치에서는, GK110의 발표와 합하고, Kepler의 지금까지 밝혀지지 않았던 기능이나, GK110와 함께 도입되는 신기능이 소개되었다.그 중에서도 중요한 것은, GPU측에서의 동적인 스렛드 생성에 의한 Dynamic Parallelism이다.이것에 의해서, CUDA 5로의 동적 링커의 서포트가 가능하게 되어, 구조적으로 복잡한 프로그램이 용이하게 되었다.프로그래밍 모델이나 퍼포먼스에 큰 영향을 주는 중요한 확장이 되고 있다.NVIDIA의 Mark Harris씨(Chief Technologist, GPU Computing)는 「Dynamic Parallelism은 CUDA 5의 가장 익사이팅한 기능이다」라고 말했다.

GPU측에서 동적인 스렛드 생성에 의한 Dynamic Parallelism

 
 원래, GPU에서는 동적인 오브젝트 인 킹이 할 수 없었던 것자체가, 통상의프로그래밍의 상식으로부터 하면 놀라는 것일지도 모르다.그러나, 이것은, CPU로부터 커넬을 다운로드해 실행한다고 하는 GPU의 coprocessor적인 실행 모델이기 때문에다.종래의 GPU는, 자신에서는 커넬을 시작할 수 없기 때문에, 새로운 커넬을 시작하려고 할 때마다 CPU로 처리를 되돌리지 않으면 안 되었다.그 때문에, Fermi 아키텍쳐까지는, 네스트 하는 복잡한 프로그램이나 시뮬레이션으로의 공간 메쉬 분해의 최적화 등은 어려웠다.

 그러나, GK110에서는, 어느 스렛드로부터도 GPU 자신으로 커넬을 시작할 수 있게 된다.그 때문에, GK110에서는, 그러한 종래로는 어려웠던 프로그램이 용이하게 되어, 퍼포먼스 최적화도 용이하게 된다.키노트 스피치나 CUDA의 세션에서는 그 예로서 유체 시뮬레이션으로의 아래의 슬라이드의 예가 나타났다.


유체 시뮬레이션의 예
 
왼쪽과 같이 그리드가 드문드문한 경우는, 퍼포먼스는 높지만 정도가 낮아진다.한가운데와 같이그리드가 조밀한 경우는, 정도는 높아지는 것의 퍼포먼스는 낮아진다.그러나, 오른쪽의 예의 같게 그리드의 사이즈를 아다프티브로 바꾸고, 정도가 필요한 부분만큼 그리드를 세세하게 하면, 최적인 퍼포먼스로 최적인 정도를 얻을 수 있다.

 키노트 스피치에서는, 구체적인 예로서 은하계와 안드로메다 은하의 충돌의 천체 시뮬레이션의 데모가 행해졌다.30만 미만의 보디를 리얼타임에 시뮬레이트 하는 이 데모는, Dynamic Parallelism으로 가능하게 되었다고 한다.

Dynamic Parallelism에 의해서 실현된 시뮬레이션
 
NVIDIA의 기자 회견에서 Huang씨는 다음과 같이 말했다.

 「은하 충돌의 알고리즘에서는, 엔지니어가 1년 이상 Fermi에 이식하려고 해 왔다.그러나, Kepler에서는, Dynamic Parallelism의 기능 위해(때문에), 그는 주말까지의 사이에 이식이 가능하게 되었다.복잡한 네스트 한 알고리즘의 이식에서는, Dynamic Parallelism은 매우 강력하다」.

●GPU프로그래밍을 바꾸는 Dynamic Parallelism 
 물론, 메쉬의 최적화 뿐만이 아니라, Dynamic Parallelism의 혜택은, 더 폭넓은 분야에서 얻을 수 있다.아래는 CUDA 5의 세션으로 나타난 코드예다.왼쪽은 종래 아키텍쳐로, GPU측에서 커넬을 시작할 수 없기 때문에, GPU로부터 일단 CPU에 태스크를 되돌리고, CPU로부터 커넬을 발행시키고 있다.그것이 오른쪽의 Kepler가 되면, GPU 측에 일단 던지면, 이후는 GPU측에서 커넬을 시작해 실행해, 마지막에 CPU로 동기에 돌려줄 때까지는, CPU와의 사이의 교환이 없어져 있다.CPU와 GPU의 사이에서의 번잡한 데이터 교환이 감소해, CPU가 그 만큼, 보다 긴 시간 프리가 되어 있다.


CUDA의 코드예


Bill Dally씨
 NVIDIA의 Bill Dally씨(Chief Scientist)는 다음과 같이 설명했다.

 「Dynamic Parallelization는 매우 중요하다.지금까지는, GPU에 작은 스렛드아레이가 많이 있는 코드를 이식하려고 하는 경우에 문제에 직면하고 있었다.스렛드아레이로부터 다음의 스렛드아레이에 가는 경우에, CPU와 GPU의 사이를 왔다 갔다 하지 않으면 안 되었기 때문이다.그러나, 이번은, 각 스렛드가 다음의 스렛드를 생성할 수 있게 되기 위해, GPU 코딩으로 필요했던 코드가 불필요하게 된다」.

 Dynamic Parallelism에 의해서 CUDA 5에서는, 동적으로 오브젝트를 호출해 링크시킬 수 있게 되었다.바꾸어 말하면, GPU로 실행중의 커넬로부터, 별도인 커넬을 호출하는 것이 가능하게 되었다.종래의 Fermi까지의 GPU에서는, 컴파일러로 라이브러리를 정적으로 결합해 실행 파일에 빌드 할 필요가 있었다.그러나, Kepler에서는 동적으로 로드할 수 있게 되었기 때문에, 라이브러리의 효율적인 활용이 가능하게 된다.

CUDA 5에서는 동적으로 오브젝트를 호출해 링크할 수 있다

 
 Dynamic Parallelism으로 NVIDIA가 실현되고 있는 것은, 종래, CPU상의 드라이버 소프트웨어로 행하고 있던 기능의 GPU에의 혼잡이라고 생각할 수도 있다.이것은, CPU 코어를 통합한 제품이(모바일 이외에서는) 아직 앞인 NVIDIA에 있어서, 보다 중요한 기능이기도 하다.무엇보다, GPU는 그래픽스에서는, 이전부터 다소는 비슷한 일을 하고 있었다.

 Dynamic Parallelism은,프로그래밍의 측면에서는 Kepler의 중요한 신기능으로 노력을 큰폭으로 생략할 수 있다.그 만큼이 아니고, GPU의 가동률을 올려 커넬 실행의 병렬성을 높여 GPU와 CPU의 load balancing을 용이하게 해, 전체의 퍼포먼스 업도 실현된다.그리고, GPU가, 보다 CPU에 가까워진 것을 상징하고 있다.
반응형

댓글