AMD가 내놓은 새로운 GPU 전략. OpenGPU


AMD는 GPU의 소프트웨어 계층을 근본적으로 변화시킵니다. GPU의 소프트웨어 계층을 위에서 아래까지 모두 오픈소스화하는 OpenGPU를 내세운 것입니다. OpenGPU로 개발자가 드라이버를 포함한 소프트웨어 계층을 수정하는 것이 가능하게 됩니다. 예를 들어 딥 러닝 신경망에 최적화된 자체 버전의 드라이버 같은 특정 용도에 최적화된 GPU 소프트웨어 층이 개발 가능하게 됩니다.

 

1.jpg

 

새로운 오픈 소스 소프트웨어 스택은 C 또는 C ++ 싱글 코드에서 CPU와 GPU 각각의 코드를 컴파일러가 자동으로 생성합니다. 또한 오픈 소스 화와 연동하여 AMD는 리눅스 플랫폼을 중시하는 전략도 세웠습니다. 또한 AMD는 기존의 APU(Accelerated Processing Unit)에 초점을 맞춘 HSA(Heterogeneous System Architecture) 전략을 수정해, 헤테로지니어스 GPU 및 APU를 HSA의 틀에서 같은 레벨로 다루도록 합니다.

 

전통적인 GPU의 프로그래밍 모델은 블랙박스 처리된 소프트웨어 스택 너머로 액세스하는 매우 한정된 것이었습니다. GPU의 지난 10년 동안의 진화는 간단히 말해서 두꺼운 소프트웨어 계층을 얇게 만들어 직접 액세스하는 방향으로 나아가는 것이었습니다. 이번 AMD의 오픈 소스 전략은 그 방향의 마지막 단계에 도달한 것입니다. 기존에는 기업 기밀이었던 부분까지 공개하고 직접 접근을 가능하게 함으로써 오픈 소스 커뮤니티의 지원을 받아 소프트웨어의 성능, 성숙도, 사용성 향상을 도모하려 하고 있습니다. 소프트웨어 개발에 투자하는 자금이 한정된 AMD가 기사 회생할 방법이라 할 수 있습니다.

 

 

보다 직접적인 액세스


그래픽에서 오픈 소스 전략은 지금까지의 단계를 되돌아 봤을 때 자연스러운 흐름이라고 AMD는 설명합니다. GPU 프로그래밍 모델은 기존에는 직접 GPU 액세스가 가능했던 게임 콘솔과, 블랙박스처럼 되어 두터운 소프트웨어 계층을 통해 GPU에 액세스하는 PC로 양분되어 있었습니다. 게임 개발은 하드웨어의 성능을 최대한 이끌어 내기 위해 직접 액세스하는 모델이 쓰였습니다. 라데온은 PC 뿐만 아니라 PS4, Xbox 360 / One, Wii U 등의 게임 콘솔에도 폭넓게 쓰였지만 프로그래밍 모델은 달랐습니다. 또한 각 플랫폼마다 코드를 공유할 수 없다는 문제도 있었습니다.

 

2.jpg

 

3.jpg

 

4.jpg

 

이 문제를 해결하기 위해 AMD는 PC에 보다 직접적인 액세스가 가능한 API인 맨틀을 발표했습니다. 그리고 여기에 자극을 받아 다이렉트 X 12와 벌칸 등의 API가 등장시켰습니다. 여기서 이 개념을 반전시켜 GPU를 더욱 직접적으로 컨트롤할 수 있게 하자는 것이 이번 오픈 소스라고 하네요. GPU가 대부분의 소프트웨어 계층 소스 코드 전체를 액세스할 수 있도록 하는 것입니다. 오픈 소스 개발자 커뮤니티의 지원을 받아 AMD 혼자선 할 수 없는 것을 실현합니다.

 

5.jpg

 

OpenGPU에는 로우 레벨 스택부터 상위 이펙트와 툴 라이브러리, SDK(Software Development Kit)까지가 포함됩니다. 게임 개발자들에게 잘 알려진 TressFX 같은 효과도 있습니다. 이러한 측면만 보면 AMD의 방법은 NVIDIA의 게임웍스를 따르는 것처럼 보입니다.

 

그러나 AMD는 계약을 체결하지 않은 개발자에게도 넓게 오픈됐다는 점이 다르다고 설명합니다. 공개되지 않았던 이펙트와 툴 라이브러리 소스에 액세스할 수 있도록 함으로서 개발자에게 자유도를 제공합니다. 이러한 리소스는 오픈 소스 커뮤니티에서 폭넓게 사용되고있는 GitHub를 통해 2016년 1월부터 호스트됩니다. 또 포털도 운영됩니다. 라이센스는 제한이 가장 느슨한 MIT 라이센스입니다.

 

6.jpg

 

7.jpg

 

8.jpg

 


GPU 컴퓨팅이 오픈 소스 전략의 진정한 목적


AMD 오픈 소스 전략의 진짜 목적은 그래픽보다 컴퓨팅입니다. GPU를 CPU처럼 취급하고 GPU 컴퓨팅의 프로그래머에게 직접적이고 자유도가 높은 GPU 액세스를 제공합니다.

 

AMD는 GPU 컴퓨팅에서의 오픈 소스 전략을 이미 SC15 슈퍼 컴퓨터 학회에서 Boltzmann Initiative란 이름으로 부분적이나마 발표한 적이 있습니다. 아래 슬라이드는 통계 역학의 시조로 유명한 19세기의 과학자 루트비히 볼츠만으로, 현재 딥 러닝 신경망의 시조 알고리즘인 볼츠만 머신의 유래가 된 인물입니다. 볼츠만의 이름을 땄다는 점에서 딥 러닝 GPU 컴퓨팅을 노리는 의도가 명확하게 보입니다.

 

9.jpg

 
볼츠만 사업은 3가지 부분으로 구성됩니다. 외장 그래픽을 위한 로우 레이턴시 GPU 컴퓨팅용 리눅스 드라이버, GPU와 CPU를 통합한 오픈 소스 C ++ 컴파일러 Heterogeneous Compute Compiler (HCC), CUDA에서 C ++로 변환하여 AMD GPU에서 실행시킬 수 있도록 해주는 Heterogeneous-compute Interface for Portability (HIP)입니다.

 

여기서 포인트는 3개입니다. 우선 지금까지 HSA는 APU를 중심에 놨던 AMD가 HSA를 지원하는 GPU 컴퓨팅에 최적화된 드라이버를 별도의 GPU에서 제공한다는 것입니다. APU 위주에서 APU와 외장 그래픽의 두 축을 둔다는 것이 전략적인 변화를 상징합니다. AMD는 9월에 조직 개편을 통해 개별 GPU 사업인 Radeon Technologies Group(RTG)을 편성했습니다. 외장 GPU를 중시하는 조직 변경과 연계 된 움직임입니다.

 

두번째는 OpenCL에 초점을 맞췄던 AMD가 C ++도 적극적으로 지원하는 방향을 명확히 했다는 것입니다. 하드웨어 적으로는 AMD 라데온 R9 290(하와이) 시절부터 C ++를 지원하는 방향이었으나, 새로운 컴파일러 제공을 통해 더욱 명확해졌습니다. 세번째는 단일 소스에서 CPU와 GPU의 두 코드를 만들어 헤테로지니어스 프로그래밍을 더욱 쉽게 하자는 것입니다.

 

 

CLANG 프론트 엔드 / LLVM 백엔드 인프라를 활용


AMD의 오픈 소스 컴파일러 스택은 CLANG / LLVM 오픈 소스 컴파일러 인프라에 기반합니다. C ++ 단일 소스 코드에서 Heterogeneous Compute Compiler (HCC) C / C ++ 컴파일러 프론트 엔드가 중간 코드에 위치합니다. LLVM 백엔드가 미들 랭기쥐로서 GPU 네이티브에 최적화 컴파일합니다. GCN (Graphics Core Next) 어셈블러로 최적화하고자하는 프로그래머를 위해 GCN 어셈블러 액세스도 제공합니다. 아래의 슬라이드에서 왼쪽에 나온 프론트 엔드의 흐름이 됩니다.

 

슬라이드의 오른쪽은 드라이버 스택의 실행 흐름으로서 Heterogeneous Compute Compiler (HCC) 런타임에서 낮은 레이턴시 드라이버 스택에 전달합니다. 드라이버의 핵심인 커널 모드 드라이버(KMD) AMDGPU가 GPU 하드웨어에 가장 가까운 층에 있습니다. AMD는 KMD도 오픈 소스화할 것이라 밝히고 있습니다. 즉 GPU를 완전히 노출시키는 것입니다.

 

10.jpg

 


리눅스를 주요 플랫폼으로


AMD의 이번 오픈소스 전략에서 또 다른 중요한 점은 리눅스를 중시한다는 자세를 밝힌 것입니다. 오픈 소스니까 당연하다고 할 수 있지만 앞으로는 리눅스를 윈도우와 같은 수준으로 취급할 것이라고 AMD는 설명합니다. AMD는 HPC와 데이터 센터에서 임베디드 및 모바일까지 확산되는 리눅스를 앞으로 핵심적인 존재로 취급하려 합니다. AMD 자체의 기업 전략이 PC 시장에 의존하는 것에서 서버 및 임베디드을 향해 넓힐 수 있으며, 이를 위해서 리눅스는 필수적인 소프트웨어 플랫폼입니다.

 

AMD의 리눅스 드라이버 모델은 커널 모드 AMDGPU가 기반이 됩니다. 오픈 소스지만 수정은 업스트림에서 AMD로 돌아가는 구조입니다. AMDGPU는 2015년 이후 AMD APU와 GPU를 모두 커버하는 기반 커널 드라이버가 됩니다.

 

11.jpg

 

12.jpg

 

13.jpg

 

AMDGPU 드라이버는 다양한 리눅스 배포판에서 지원되며 우분투나 페도라에 통합됩니다. AMD는 현재 리눅스 오픈 소스 라데온 사용자 모드 드라이버(UMD)와 폐쇄적인 카탈리스트 사용자 모드 드라이버를 제공하고 있습니다. 이들은 각각 다른 커널 모드 드라이버를 사용하고 있습니다. 그러나 앞으론 통합된 AMDGPU 오픈 소스 커널 모드 드라이버가 됩니다. 따라서 새로운 GPU는 신속하게 오픈 소스 세계에서도 사용할 수 있게 됩니다. 오픈 소스화와 별개로 액세스에 이전과 같은 제약은 없습니다.

 

또한 AMDGPU의 기반 커널 모드 드라이버에서 오픈 소스 사용자 모드 드라이버와 폐쇄 사용자 모드 드라이버를 모두 지원합니다. 폐쇄 모드는 OpenGL 등이 있습니다. 오픈 여부에 관계 없이 모두 동일한 기반 런타임 및 HSA 커널을 사용합니다.

 

 

AMD 혼자선 어려운 GPU 소프트웨어. 성숙된 사회의 도움을 기다리는 중


오픈 소스에는 다양한 장점이 있습니다. AMD는 개발 단계에서 AMD의 새로운 소프트웨어 인프라의 장점으로 아래의 슬라이드를 꼽았습니다.

 

14.jpg

 

소스 코드에 에러가 있을 경우 NVIDIA의 NVCC 컴파일러는 무엇이 에러인지를 지적할 뿐입니다. 반면 AMD의 HCC 컴파일러는 에러를 체크한 후 정확한 맞춤법을 추천할 수 있습니다. 이것은 HCC의 프런트 엔드 CLANG 컴파일러가 뛰어난 맞춤법 검사기를 가지고 때문입니다. CLANG는 C, C ++ Objective-C와 같은 언어를 컴파일하고 LLVM 백엔드 컴파일러에 전달하는 오픈 소스 컴파일러입니다. 오픈 소스 컴파일러 인프라를 기반으로하고 있기에 풍부한 오픈소스 커뮤니티의 지원을 받을 수 있습니다. 작은 경우처럼 보이나 이런 섬세한 부분까지 충실하게 만드는 것이 큰 장점입니다.

 

또한 AMD는 오픈소스에 따라 드라이버 최적화가 진행되어 점차 성능이 향상된다고 설명합니다. 또한 오픈 커뮤니티의 버그 수정이 업스트림 진행돼 품질을 향상시키고 보안 취약점의 발견 속도도 빨라지며 보안도 개선된다고 합니다. 즉 오픈 소스 커뮤니티의 이점을 GPU의 최하층의 소프트웨어 스택에까지 누리도록 하는 방식입니다. 커뮤니티의 지원을 받아 AMD 혼자선 어려운 소프트웨어 계층의 성숙을 가속화 하자는 구상입니다.

 

15.jpg

 


AMD의 오픈 소스 전략은 냉정한 것 같으나 사실 전환점이되는 자료입니다. 폐쇄적인 GPU 소프트웨어 모델에서 벗어날 수 있기 때문입니다. GPU가 CPU 계열로 진화해 나가는 흐름에서 소프트웨어 모델의 전환점이 됩니다. AMD의 의도대로 AMD GPU 소프트웨어 스택의 진화와 성숙이 촉진될 수 있을지는 앞으로의 진전을 기다릴 필요가 있습니다.
기글하드웨어(http://gigglehd.com/zbxe)에 올라온 모든 뉴스와 정보 글은 다른 곳으로 퍼가실 때 작성자의 허락을 받아야 합니다. 번역한 뉴스와 정보 글을 작성자 동의 없이 무단 전재와 무단 수정하는 행위를 금지합니다.