Nvidia의 Ian Buck을 만나보세요
오늘 시간 내주셔서 감사합니다. 몇 가지 기본 사항부터 시작하겠습니다. 독자들에게 자신과 현재 Nvidia에서 하고 있는 일에 대해 조금 이야기해 보시지 않겠습니까?
저는 Nvidia의 GPU 컴퓨팅 소프트웨어 디렉터입니다. 저의 주요 초점은 시스템 소프트웨어, 개발자 도구, 언어 및 컴파일러 방향, 라이브러리, 대상 응용 프로그램 및 알고리즘을 포함하는 완전한 GPU 컴퓨팅 플랫폼을 구축하고 발전시키는 것입니다. 훌륭한 팀의 도움으로 우리는 최종 사용자 소프트웨어를 개발하고 Nvidia 내에서 GPU 컴퓨팅의 방향을 설정합니다.
처음부터 시작하지 않겠습니까? GPGPU에 대한 관심이 5살 때 시작되지 않았다고 생각합니다. 실제로 GPGPU에 관심을 갖게 된 계기가 된 Princeton이나 Stanford의 사건은 무엇이었습니까?
나는 프린스턴 시절에 GPU 컴퓨팅에 손을 댔고 당시 SGI O2였던 그래픽 하드웨어에서 열 대류와 유체 시뮬레이션을 실험했습니다. 상황이 너무 제한적임에도 불구하고 그것을 정당화하기가 어려웠습니다.
스탠포드에서 박사 학위 연구를 하는 동안 GPU 컴퓨팅을 진지하게 살펴보기 시작했습니다. 스탠포드에서 나는 연구 커뮤니티의 다른 사람들과 함께 프로그래밍 가능한 그래픽의 자연스러운 발전이 GPU가 보다 범용적인 프로세서로 진화했다는 것을 깨달았습니다. 우리는 요점을 증명하는 데 도움이 되도록 DX9급 GPU 하드웨어를 사용한 레이 트레이싱에 대한 최초의 SIGGRAPH 논문 중 하나를 작성했습니다. 작업에 대해 매우 동기를 부여한 것은 모든 사람의 PC에서 사용할 수 있는 이 범용 프로세서가 CPU보다 훨씬 빠른 무어의 법칙의 세제곱 성능 성장률을 따르고 있다는 것이었습니다. 이것은 다음과 같은 질문을 던졌습니다. PC가 오늘날보다 훨씬 더 많은 컴퓨팅 마력을 갖는다면 무엇을 할 수 있을까요? 컴퓨터 비전, AI, 데이터 마이닝 및 그래픽뿐 아니라 계산 과학을 위한 전체 게임 체인저입니다.
브룩과의 역할은 무엇이었나요?
GPU에서 광선 추적 기능에 대한 작업을 마친 후 스탠포드에서 저의 연구 초점은 GPU 컴퓨팅에 적합한 프로그래밍 모델을 이해하는 것으로 전환되었습니다. 그 당시 다른 많은 사람들이 GPU가 다양한 응용 프로그램에서 뛰어나다는 것을 보여주었지만 GPU를 컴퓨팅 장치로 생각하는 방법에 대한 좋은 프레임워크나 프로그래밍 모델이 없었습니다. 당시 GPU에 애플리케이션을 이식하려면 컴퓨터 그래픽 박사 학위가 필요했습니다. 그래서 저는 GPU의 그래픽을 보다 일반적인 프로그래밍 개념으로 추상화한 GPU 컴퓨팅을 위한 프로그래밍 언어를 정의하는 것을 목표로 Brook 프로젝트를 시작했습니다. Brook의 기본적인 프로그래밍 개념은 유사한 작업이 필요한 데이터 요소의 모음인 “스트림”이었습니다. 브룩은 결국 스탠포드에서 제 박사 학위 논문이 되었습니다.
귀하의 작업은 Stanford Streaming Super Computer인 Merrimac에서 시작되었습니다. 이것이 Tesla와 다른 점은 무엇입니까?
Brook의 프로그래밍 모델 개념은 GPU에만 적용되지 않았습니다. Stanford에서 우리는 Brook 프로그래밍 모델의 두 가지 다른 구현을 작업했습니다. 하나는 GPU용이고 다른 하나는 Stanford에서 개발된 연구 아키텍처인 Merrimac용입니다. Merrimac의 일부로 개척된 많은 아이디어는 범용 컴퓨팅을 위해 GPU를 개선할 수 있는 방법에 영향을 미쳤습니다. 또한 Stanford에서 Merrimac의 수석 연구원이었던 Bill Dally가 현재 Nvidia의 수석 과학자라는 점에 유의해야 합니다.
CUDA는 Gelato에 뿌리를 두고 있습니까? GPGPU의 첫 번째 학문적 탐구는 무엇이었습니까? 최초의 상용화된 사용은 어떻습니까?
스탠포드에서 연구를 마치면서 CUDA를 시작했습니다. Nvidia는 이미 내 연구를 매우 지원했으며 사물의 하드웨어 측면에서 GPU 컴퓨팅을 더 잘 활성화할 수 있는 가능성을 분명히 보았습니다. 저는 2005년에 CUDA 프로젝트를 시작하기 위해 Nvidia에 합류했습니다. 당시에는 저와 다른 엔지니어 한 명이 있었습니다. 우리는 이제 이 프로젝트를 오늘날의 조직으로 성장시켰고 오늘날 Nvidia GPU의 핵심 구성 요소입니다.
www.gpgpu.org는 2002년으로 거슬러 올라가는 GPU 컴퓨팅의 멋진 역사를 제공합니다.
현재 AMD는 Brook을 GPGPU의 프로그래밍 언어로 선택하는 반면 Nvidia는 CUDA 확장이 포함된 C를 사용합니다. 둘의 강점/약점을 어떻게 비교하시겠습니까?
Nvidia를 시작으로 우리는 DX9급 하드웨어가 달성할 수 있는 것에 크게 기반을 둔 Brook의 기본적인 설계 결정 중 일부를 다시 검토할 기회가 있었습니다. 주요 제한 사항 중 하나는 메모리 모델의 제약으로 프로그래머가 상당히 제한된 메모리 액세스 패턴을 중심으로 알고리즘을 매핑해야 했습니다. CUDA 확장이 있는 C를 사용하여 이러한 제약을 완화했습니다. 기본적으로 프로그래머는 방대한 스레드 풀을 받았고 원하는 방식으로 메모리에 액세스할 수 있었습니다. 이 개선 사항과 몇 가지 다른 사항을 통해 GPU에서 완전한 C 언어 의미 체계를 구현할 수 있었습니다.