병렬 컴퓨팅, 스트림 처리, 실시간 셰이딩 언어, 프로그래머블 그래픽 처리 장치에 대한 정부 지원 학술 연구가 어떻게 GPU 컴퓨팅과 현대 AI 혁명의 토대를 마련했는지 추적한다.

Federal Funding of Academic Research
병렬 컴퓨팅, 스트림 처리, 실시간 셰이딩 언어, 그리고 프로그래머블 그래픽 처리 장치(GPU)에 대한 정부 지원 학술 연구는 GPU 컴퓨팅의 발전으로 직접 이어졌다.
By William J. Dally and Pat Hanrahan
게시일 2026년 4월 13일
크레딧: Getty Images; pngwing
병렬 컴퓨팅, 스트림 처리, 실시간 셰이딩 언어, 그리고 프로그래머블 그래픽 처리 장치(graphics processing units, GPUs)에 대한 정부 지원 학술 연구는 GPU 컴퓨팅의 발전으로 직접 이어졌다. GPU는 현대 데이터센터에서 사용되며, 현재의 인공지능(AI) 혁명을 가능하게 했다. GPU를 만드는 Nvidia는 이제 세계에서 가장 가치 있는 기업이 되었다. 이러한 컴퓨팅의 변혁과 그에 따른 경제적 가치는 30년이 넘는 정부 지원 연구에 의해 가능해졌다. 정부 지원은 핵심적인 기술 혁신 다수의 개발을 도왔을 뿐 아니라, 이 기술을 산업계로 전달한 대규모 학생 집단의 양성도 가능하게 했다.
이 글은 GPU 컴퓨팅의 기원을 추적한다. 먼저 GPU 컴퓨팅이 기반하고 있는 기술들(병렬 컴퓨팅, 병렬 그래픽 시스템, 프로그래머블 셰이더, 스트림 처리)의 발전을 설명하고, 이어서 이 기술이 어떻게 Nvidia와 다른 기업들로 이전되어 현대 기계학습에 적용되기에 이르렀는지를 자세히 다룬다.
GPU 컴퓨팅은 병렬 컴퓨팅, 병렬 그래픽 시스템, 스트림 처리에 관한 선행 연구를 기반으로 한다. 이러한 기술들은 30년이 넘는 정부 지원 학술 연구를 통해 개발되었다.
Parallel computing. 컴퓨팅을 배울 때 우리는 중앙처리장치(CPU)가 명령어의 순서를 하나씩 차례대로 실행한다고 배운다. 실제로는 칩 안에 수십억 개의 트랜지스터가 병렬로 스위칭하고, 배선으로 연결되어 있다. 스위치와 배선은 물리적 컴퓨터의 기본 구성 요소이며 동시에 동작한다. 더욱이 트랜지스터 스위칭은 매우 적은 에너지를 소모하는 반면, 배선을 따라 이루어지는 통신은 훨씬 더 많은 에너지를 소모한다. 통신에는 신호를 한 지점에서 다른 지점으로 보내기 위한 전력이 필요하며, 그 전력은 거리와 함께 증가하고, 특히 한 칩과 다른 칩 사이에서 신호를 주고받을 때 매우 커진다. 순차 컴퓨터가 병렬 컴퓨터보다 사고하기는 쉬울지 몰라도, 순차 컴퓨터 역시 동시에 스위칭하는 트랜지스터와 동시에 정보를 전송하는 배선으로 구현되어야 한다. 순차 컴퓨터는 많은 트랜지스터를 사용해 병렬로 결과를 계산한 다음, 이 결과들을 순차 실행과 일치하는 방식으로 정교하게 조립한다. 실행이 순차적이라는 환상을 만들어내야 하는 이 필요성은 전력과 성능 양측면에서 비효율적이다. 사용 가능한 트랜지스터 수가 증가할수록 이 비효율성도 커진다. 현대 반도체 기술에서 컴퓨터를 구축하는 자연스러운 방식은 병렬 컴퓨터를 설계하는 것이다. GPU가 CPU보다 효율적인 이유는 GPU가 대규모 병렬 컴퓨터이기 때문이다.
GPU 컴퓨팅은 병렬 컴퓨팅에 관한 선행 연구 위에 구축되었다. 모든 병렬 컴퓨터와 마찬가지로, GPU에서 실행되는 병렬 작업 또는 스레드들은 서로 동기화하고 통신해야 한다. 한 스레드가 다른 스레드가 생성한 데이터를 사용하려면 통신이 필요하다. 올바른 값이 소비되도록 데이터가 사용 가능해졌음을 알리려면 동기화가 필요하다. 병렬 컴퓨팅, 동기화, 통신의 많은 기초는 정부 지원 학술 연구를 통해 발전했다. Caltech에서 Chuck Seitz가 이끈 DARPA 지원 Cosmic Cube 프로젝트는 병렬 컴퓨팅의 기초 다수를 개발했다.35 이 프로젝트에서 개발된 하드웨어는 Intel iPSC, Delta, Paragon 기계들의 모델이 되었고, 초기 Department of Energy ASCI 기계들 중 여러 대에도 기반이 되었다.6 Cosmic-C 프로그래밍 언어는 비동기 메시지 전달과 집합 연산을 도입했으며, 이는 이후 message passing interface(MPI) 형태로 대형 병렬 기계를 프로그래밍하는 표준이 되었다.29
Massachusetts Institute of Technology(MIT)에서 진행된 DARPA 지원 J-Machine10 및 M-Machine21 프로젝트는 저오버헤드 통신 및 동기화 메커니즘과 현대 상호연결 네트워크의 많은 핵심 요소를 개발했다. 이러한 메커니즘은 병렬성을 매우 세밀한 단위로 활용할 수 있게 했으며, 10개 또는 20개의 명령어만으로도 스케줄 가능한 작업 단위가 될 수 있었다. J-Machine의 여러 기능은 Cray T3D24 및 T3E34 컴퓨터에 직접 채택되었다.
병렬 컴퓨팅의 역사는 이 특정한 역사적 흐름을 넘어 매우 풍부하다. 여기에서 완전한 개관을 제시할 공간은 없다. 좋은 리뷰로는 Culler 외.9를 참고할 수 있다.
모든 고성능 컴퓨팅과 마찬가지로 GPU 컴퓨팅도 이 유산에 크게 의존한다. 이는 노드 간 통신을 위해 MPI를 사용하고, 이러한 노드들을 연결하기 위해 상호연결 네트워크를 사용하며, 이 연구 과정에서 개발된 많은 통신 및 동기화 메커니즘을 병렬 계산의 조정에 활용한다.
Parallel graphics systems. 전통적인 병렬 컴퓨팅이나 슈퍼컴퓨터만큼 널리 알려져 있지는 않지만, 병렬 그래픽 및 영상 컴퓨터 역시 오랜 역사를 가지고 있다. 영상을 처리하고 생성하는 일에는 막대한 계산이 필요하다. 예를 들어, 초당 백만 명령어를 수행하는 컴퓨터(1MIPS)가 100만 화소 이미지의 각 픽셀에 하나의 산술 연산을 적용한다면, 그 컴퓨터는 이미지 하나를 처리하는 데 1초가 걸린다. 영화와 게임을 위한 3D 가상 세계 렌더링은 영상 처리보다 픽셀당 훨씬 더 많은 차수의 계산을 필요로 한다. 예를 들어 현대 영화용으로 생성되는 이미지는 픽셀당 약 10억 회의 부동소수점 연산을 요구한다. 따라서 실제로 유용하려면 그래픽과 영상 처리는 고성능 병렬 슈퍼컴퓨터를 필요로 한다. 이러한 컴퓨터는 대규모 데이터 집합에 걸쳐 계산을 병렬화한다.
초기의 DARPA 지원 연구 노력 중 하나는 Stanford에서 Jim Clark이 이끈 Geometry Engine이었다.7 Geometry Engine은 3D 그래픽 워크스테이션 개발을 선도한 기업 Silicon Graphics의 설립으로 이어졌다. SGI의 하드웨어 아키텍처와 OpenGL 소프트웨어 라이브러리는 현대 GPU 아키텍처를 정의했다. 또 다른 주목할 만한 정부 지원 연구는 University of North Carolina에서 Henry Fuchs와 그의 협력자들이 이끈 Pixel Planes 계열의 고성능 그래픽 시스템이었다.22 사실 Pixel Planes 5는 128 x 128 이미지 위에서 병렬 계산을 수행하는 상당히 일반적인 단일 명령어 다중 데이터(SIMD) 컴퓨터였다. 초기 병렬 그래픽 및 영상 컴퓨터의 다른 예로는 NASA Massively Parallel Processor(MPP),1 Ikonas Graphics Systems,15 그리고 Pixar Image Computer가 있다.27
초기 GPU는 초기 SGI 워크스테이션과 유사한 고정 기능 그래픽 파이프라인을 구현했다. GPU라는 용어는 전체 OpenGL 그래픽 파이프라인을 단일 칩에 구현하는 것이 가능해졌을 때 Nvidia가 도입했다. 1999년에 소개된 Nvidia Geforce 256은 1,700만 개의 트랜지스터로 구성되었으며, 상업적으로 이용 가능한 최초의 GPU였다.
그보다 앞서 Hanrahan은 Pixar에 있을 때 사실적인 이미지를 생성하는 시스템인 RenderMan을 개발했다. 이 시스템은 카메라로 촬영한 실사와 매끄럽게 결합될 수 있는 이미지를 생성할 수 있게 함으로써 영화 산업에 혁명을 일으켰다. RenderMan의 핵심 구성 요소는 셰이딩 언어였으며, 이를 통해 사용자는 복잡한 재질과 조명을 모델링하도록 시스템을 확장할 수 있었다.
최초의 GPU는 고정 기능 파이프라인을 구현했지만, 실제로는 프로그래머블 구성 요소들로 만들어져 있었다. 안타깝게도 이 처리 요소들은 시스템마다, 세대마다 달랐다. 필요한 것은 이식 가능한 프로그래밍 모델이었다. GPU의 주요 응용 분야가 컴퓨터 게임이었으므로, 게임 개발자들이 새로운 조명 및 셰이딩 효과를 만들 수 있도록 RenderMan 셰이딩 언어를 GPU에 맞게 변형하는 것이 자연스러워 보였다.
Stanford에서는 DARPA 지원 프로젝트 하에 당시의 GPU를 위한 실시간 셰이딩 언어(RTSL)가 설계되고 구현되었다. 셰이딩 언어 프로그램은 이제 셰이더라고 불린다. 박사후 연구원이었던 Bill Mark가 Stanford RTSL 설계를 주도했고, 이후 Nvidia에 합류하여 또 다른 Stanford 출신 대학원생 Kurt Akeley와 함께 그 기술을 발전시켜 Cg 셰이딩 언어를 만들었다. Cg는 Microsoft의 HLSL과 OpenGL의 GLSL 개발로 이어졌다.
이 초기 셰이딩 언어들이 과학 계산의 많은 알고리즘을 구현할 만큼 충분히 유연하다는 사실은 곧바로 인식되었다. 연구자들은 행렬-행렬 곱셈, 선형 해법기, 유체 흐름 해법기, 분자동역학과 같은 알고리즘을 셰이더에서 실행하도록 채택했다. 이는 GPGPU(General-Purpose GPU) 컴퓨팅 운동으로 이어졌다.28,36
Stream processing. Stanford에서 이루어진 DARPA 및 DOE 지원의 Imagine 스트림 프로세서와 Merrimac 스트리밍 슈퍼컴퓨터 연구는 스트림 처리를 발전시켰다. 스트림 처리는 산술 집약도(계산 대 대역폭의 비율)를 증가시키는 병렬 컴퓨팅의 한 형태이다. 앞서 언급했듯이, 프로세서가 소비하는 전력의 대부분은 통신에 사용된다. 특히 칩 간 신호 전송은 전력 소모가 매우 크다. 오프칩 통신은 온칩 통신보다 훨씬 느리기도 하다. 스트림 처리는 메모리 대역폭 필요성을 줄이는 두 가지 핵심 아이디어를 포함한다. 첫째는 생산자-소비자 지역성을 활용하여 한 단계인 생산자가 그 결과를 다음 단계인 소비자에게 메모리에 쓰고 읽는 과정 없이 직접 전달하는 것이다. 두 번째 주요 아이디어는 계산을 커널이라 불리는 함수들로 조직하는 것이었다. 각 커널은 데이터 패킷을 받아 그 패킷에 대해 함수를 실행하고, 또 다른 데이터 패킷을 출력한다. 함수 안의 산술 연산 수는 메모리 읽기 및 쓰기 횟수보다 많다. 이 두 기술은 메모리 접근 횟수를 크게 줄이고 스트림 처리 아키텍처의 효율을 향상시킨다.
스트림 프로세서에서 계산은 데이터 스트림을 생산하고 소비하는 커널들로 조직되었다. 생산 커널은 출력 스트림을 스트림 레지스터 파일(SRF)에 기록한다. 소비 커널은 데이터를 메모리에 쓰거나 읽을 필요 없이 SRF에서 직접 입력을 읽는다. 스트림의 배치 크기와 SRF의 용량을 맞추도록 적절한 스케줄링을 수행하면, 이러한 조직은 응용이 매우 높은 산술 집약도(산술 대 메모리 대역폭 비율)를 지속적으로 유지할 수 있게 했다.
Imagine Stream Processor를 설계하고 구축하기 위한 DARPA 지원 프로젝트는 1997년 MIT에서 시작되었고 같은 해 후반 Stanford로 옮겨졌다.12,23,26 Imagine은 신호 및 영상 처리 워크로드를 겨냥한 그래픽 및 미디어 프로세서였다. 이는 로컬 레지스터 파일을 갖춘 여러 개의 병렬 산술 유닛, 중앙 스트림 레지스터 파일, 그리고 메모리 시스템으로 구성되었다. 커널은 스트림 레지스터 파일에서 스트림을 읽고, 중간 결과를 로컬 레지스터 파일을 통해 전달하며, 출력 스트림을 다시 스트림 레지스터 파일에 써서 다음 커널이 읽을 수 있게 했다.
Imagine을 프로그래밍하기 위해 Stream-C 프로그래밍 언어가 개발되었다. 이 언어는 커널과 스트림을 기술하기 위한 구성 요소들로 C 프로그래밍 언어를 확장한 것이다. 수많은 그래픽,32 신호 처리, 그리고 영상 처리33 응용들이 아키텍처를 조정하고 평가하기 위해 개발되었다. 텍스처 매핑 래스터 그래픽에서의 성능은 동시대 고정 기능 GPU에 필적했다.
DARPA 책임연구자 회의에서 이 글의 저자들은 이 기술이 고성능 컴퓨팅에 적용될 수 있음을 깨닫고 Merrimac 프로젝트를 구상했다. Stanford DOE ASCI Center의 컴퓨터과학(CS) 부문은 고성능 컴퓨팅에 대한 이 접근법을 추구하도록 방향이 전환되었다. 이 센터의 연례 보고서는 스트림 처리 발전의 훌륭한 역사 자료를 제공한다.a
Merrimac 아키텍처11는 스트림 처리를 과학 응용에 맞게 적응시키기 위해 정의되었다. Imagine에 비한 주요 변화는 과학 계산에 필요한 데이터형(FP64와 같은 것들)의 추가, 대규모 문제를 처리하기 위해 상호연결 네트워크로 연결된 다중 노드로 아키텍처를 확장한 점, 그리고 합리적인 고장률 하에서 대규모 계산을 지원하기 위한 여러 복원성 기능17의 추가였다.
Stream-C 프로그래밍 언어는 Brook으로 발전했다.2 Brook의 핵심 아이디어는 스트림 프로그래밍의 개념과 보다 전통적인 데이터 병렬 컴퓨팅을 결합하는 것이었다. 높은 산술 집약도를 유지하기 위해 커널 함수가 핵심 처리 기본 단위가 되었다.
Brook은 2000년대 초반 GPU를 대상으로 하도록 개조되었다.3 이 GPU들은 프로그래머블 버텍스 및 프래그먼트 셰이더를 실행했다. 셰이더는 커널을 구현했지만 명령어 수와 레지스터 수가 제한적이었다. map, reduce/scan, filter, gather, scatter 같은 일반적인 데이터 병렬 프로그래밍 기본 연산들은 저수준 그래픽 셰이더 위에 가상 데이터 병렬 컴퓨터를 구축함으로써 구현되었다. 이러한 추상화는 다수의 기존 병렬 알고리즘을 GPU에서 실행할 수 있게 했고, 초기 셰이더의 한계는 점차 제거되었다.
높은 산술 집약도로 계산을 수행하는 커널의 초기 응용 사례로 좋은 예는 현대 신경망 알고리즘의 기반이 되는 조밀 행렬-행렬 곱셈이다. 행렬-행렬 곱셈을 수행할 때는 두 개의 n××n 행렬을 읽고 하나의 n××n 행렬을 써야 한다. 이 행렬 곱셈에는 n 3 번의 곱셈 및 누산이 필요하다. 따라서 산술 집약도는 O(n) 이다. 이 사실은 잘 알려져 있으며, 캐시를 가진 CPU를 위해 행렬 곱셈을 블로킹하는 효율적인 방법으로 이어진다. 블로킹은 GPU에서 실행될 때도 잘 작동한다.19
Stanford ASCI Center의 수치과학자들은 여러 과학 코드를 Brook으로 포팅해 Merrimac 시뮬레이터에서 실행했다. 여기에는 계산 유체 역학,20 자기유체역학, 그리고 n-체 시뮬레이션이 포함되었다.16 n-체 시뮬레이션은 효율적인 GPU 응용의 좋은 예다. 한 쌍의 원자 사이의 힘은 천체물리 시뮬레이션에서는 중력 법칙으로 주어지지만, 결합되지 않은 원자들 사이의 상호작용은 Lennard-Jones 퍼텐셜(또는 더 복잡한 경험적 퍼텐셜)로 근사된다. 이러한 함수들은 많은 산술 연산을 필요로 한다. 이러한 시뮬레이션에서는 인접 원자들이 “neighbor list”에 저장된다. 분자동역학 시뮬레이션은 곧바로 GPU의 주요 응용이 되었다.14
GPU와 스트림 프로세서의 핵심 특징은 여러 형태의 하드웨어 병렬성을 갖고 있다는 점이다. 각 GPU는 많은 코어로 구성된다. 각 코어는 SIMD 처리 유닛(일반적으로 폭 32)을 포함한다. 여기에 더해 각 코어는 멀티스레드이다. GPU는 원래 게임 응용을 위해 개발되었으며, 그 성능은 삼각형에 텍스처를 얼마나 효율적으로 적용할 수 있는지에 좌우되었다는 점을 떠올려 보자. 텍스처 매핑은 삼각형 내부의 각 픽셀 프래그먼트에 대해 텍스처 좌표를 계산하고, 그 좌표를 사용해 이미지에서 값을 가져오는 작업을 포함한다. 이러한 텍스처 fetch는 공간적 지역성은 있지만 시간적 지역성은 거의 없다. 공간적 지역성은 작은 캐시로 처리할 수 있지만, 일관성이 부족하기 때문에 캐시는 시간적 지역성을 처리할 수 없다. 효율적인 텍스처 매핑을 위해서는 GPU가 이러한 텍스처 fetch의 지연을 숨길 수 있어야 했다. 초기 GPU는 프래그먼트가 텍스처를 요청하면 그 프래그먼트의 실행을 중지하고 즉시 다른 프래그먼트의 처리를 시작하는 방식으로 이를 수행했다. 이는 멀티스레딩의 단순화된 형태이며, GPU가 동시에 많은 병렬 스레드를 실행하고 있어야 함을 의미한다. 총 작업 수는 코어 수에 SIMD 산술 유닛 수(워프라 부름)와 스레드 수를 곱한 값이다. Blackwell B200 GPU는 384개의 streaming multiprocessor(SM)를 가진다. 각 SM은 32개 스레드로 이루어진 64개의 상주 워프를 가진다. 따라서 이 GPU에서는 786,432개의 작업이 동시에 실행된다.
Technology transfer. 스트림 처리 아키텍처와 프로그래밍 시스템은 사람의 이동을 통해 Stanford에서 Nvidia로 이전되었다. Nvidia의 아키텍트였던 John Nickolls는 스트림 처리에 대해 듣고 2003년에 Bill Dally를 Nvidia의 NV50 아키텍처 자문으로 영입했다.31 (NV50은 2006년에 G80으로 출시되었다.) 스트림 프로세서의 여러 특징이 이 아키텍처에 통합되었다. NV50의 “shared-memory”는 Imagine과 Merrimac의 SRF 기능을 수행했다.
Merrimac 프로젝트의 대학원생이자 Brook의 주 개발자였던 Ian Buck은 2004년에 Nvidia에 합류했다. Ian은 John Nickolls와 함께 Brook을 CUDA로 발전시키는 작업을 했다.30 CUDA는 Brook과 Cg(그래픽 셰이딩 언어)의 장점을 통합했으며, Brook 프로그래머들의 피드백도 반영했다. Stanford에서 Nvidia로 기술이 어떻게 이전되었는지는 한 발표 자료에 설명되어 있다.4 프로젝트의 또 다른 대학원생 Mike Houston은 AMD에 합류해 자사 GPU용 프로그래밍 언어로 Brook을 직접 사용했다. G80(NV50)과 CUDA는 2006년 Supercomputing에서 발표되었다.
2006년 CUDA가 출시되었을 때 병렬 프로그래밍을 이해하는 사람은 거의 없었고, GPU 스트림 프로그래밍을 이해하는 사람은 더더욱 드물었다. 이 인력 부족을 극복하기 위해 Wen-Mei Hwu와 David Kirk는 교수들을 대상으로 CUDA 프로그래밍 강좌를 가르치며 GPU 컴퓨팅을 전파했다.25 이 강좌에 참석한 교수진은 이후 수천 명의 학생들에게 CUDA를 통한 병렬 프로그래밍을 가르쳤다. Cosmic Cube, J-Machine, M-Machine에서 차용한 병렬 컴퓨팅 기술은 GPU 내부에서 여러 SM을 조정하는 데에도, 대규모 문제를 해결하기 위해 다중 노드 GPU 시스템이 구축되면서 GPU들 사이에서도 적용되었다.
Enabling AI. 현대 기계학습은 세 가지 핵심 요소, 즉 대규모 데이터세트, 많은 층과 가중치를 가진 큰 모델, 그리고 가중치를 최적화할 계산 능력에 의존한다. 핵심 알고리즘(심층 신경망, 합성곱 신경망, 역전파를 이용한 학습, 확률적 경사 하강법)은 모두 1980년대 또는 그 이전부터 존재해 왔다. PASCAL18과 Imagenet13 같은 대규모 라벨링 데이터세트는 2000년대 초에 등장했다. 텍스트를 벡터 공간에 임베딩하는 것과 같은 최근의 발전은 자연어에 대한 딥러닝을 가능하게 했다. Transformers(attention is all you need)37는 은닉 상태를 가진 학습하기 어려운 순환 신경망을, 이력을 다룰 수 있으면서 학습하기 쉬운 신경망으로 대체했다. GPU 컴퓨팅은 방대한 데이터세트를 사용한 대규모 네트워크 학습을 경제적으로 가능하게 했다. 이 능력이 한 번 입증되자(Alexnet, GPT), AI의 역량은 빠르게 향상되었다. AI의 빠른 채택은 GPU 컴퓨팅 시스템 개선에 더 큰 추진력을 제공했다.
Nvidia에서의 기계학습 또한 학계와 산업계의 시너지에 의해 가능해졌다. 2010년 아침 식사 자리에서 저자 중 한 명(Dally)과 Andrew Ng 사이에 나눈 대화는 GPU 위에서 심층 신경망을 구축하기 위한 Nvidia와 Stanford의 공동 프로젝트 시작으로 이어졌다.8 Bryan Catanzaro가 Nvidia 측 프로젝트를 이끌었다. 이 프로젝트 동안 개발된 소프트웨어는 CuDNN5이 되었고, 이는 Nvidia GPU에서 딥러닝을 위한 즉시 사용 가능한 라이브러리를 제공함으로써 딥러닝의 대중화를 이끌었다.
현대 기계학습을 가능하게 한 GPU 컴퓨팅의 배후 기술들은 상당 부분 30년에 걸친 정부 지원 학술 연구 덕분에 개발되었다. 병렬 컴퓨팅, 병렬 그래픽 시스템, 스트림 처리 연구가 GPU 컴퓨팅의 토대를 마련했다. 이 연구 프로젝트들 동안 훈련받은 많은 학생들이 산업계에 진출하여 기술을 이전하고 혁신적인 제품 개발에 활용했다. Stanford의 스트림 처리 프로젝트에서 GPU 컴퓨팅으로의 이전은 매우 직접적이었으며, 학술용 Brook 언어는 CUDA로 발전했고 스트림 프로세서의 기능들은 G80 GPU에 통합되었다. 컴퓨트 셰이더를 갖춘 GPU가 제공한 효율적이고 프로그래밍이 쉬우며 매우 높은 성능의 컴퓨팅 플랫폼은 현재의 기계학습 혁명을 가능하게 했고, 이는 이미 한동안 उपलब्ध해 있던 알고리즘과 데이터를 보완하는 마지막 핵심 요소를 제공했다.
고 John Nickolls는 Stanford의 스트림 처리 기술을 Nvidia로 이전하는 데 결정적인 역할을 했다. Scott Rixner, Brucek Khailany, Ujval Kapasi, John Owens, Jung Ho Ahn, Peter Mattson, Abishek Das, Jinyung Namkoong, Brian Towles, Andrew Chang, Ben Mowery는 Imagine 프로젝트에 기여했다. 이 학생들 중 몇몇과 함께 Mattan Erez, Ian Buck, Mike Houston, Timothy Knight, Nuwan Jayasena, Francois Labonte, Jayanth Gummaraju, Ben Serebrin, Binu Mathew가 Merrimac 프로젝트에 기여했다. 이 학생들 중 몇몇은 Tim Foley, Daniel Horn, Jeremy Sugarman, Kayvon Fatahalian과 함께 Brook 개발에도 기여했다. Kekoa Proudfoot, Bill Mark, Kurt Akeley, Ravi Glanville, Randy Fernando, Mark Kilgard는 RTSL과 Cg 개발에 기여했다. David Kirk와 Wen-Mei Hwu는 CUDA 프로그래밍 보급에 힘썼다. Massimilano Fatica, Vijay Pande, Eric Darve, Juan Alanso, Alan Wray, Tim Barth는 Merrimac에서 초기 과학용 Brook 응용들을 개발했다. DARPA, DoE, NSF, Intel, Sun, SGI, NVIDIA, AMD의 연구비 지원이 이 작업을 뒷받침했다.
* 1.Batcher, K.Design of a massively parallel processor. _IEEE Transactions on Computers_ C-29, 9 (1980), 836–840.
* 2.Buck, I.Brook Spec v0. 2. Stanford University (2003)
* 3.Buck, I. et al.Brook for GPUs: Stream computing on graphics hardware. _ACM Transactions on Graphics_ 23.3 (2004), 777–786.
* 4.Buck, I.From Brook to GPUs. In _Proceedings of the GPU Technology Conf._ (2009); [https://www.nvidia.com/content/GTC/documents/1001_GTC09.pdf](https://www.nvidia.com/content/GTC/documents/1001_GTC09.pdf)
* 5.Chetlur, S. et al.CuDNN: Efficient primitives for deep learning. arXiv:1410.0759 (2014).
* 6.Christon, M. et al.ASCI Red—Experiences and Lessons Learned with a Massively Parallel TeraFLOP Supercomputer. No. SAND-97-0463C; CONF-9706112-1. Sandia National Lab. (SNL-NM), (1997).
* 7.Clark, J.The geometry engine: A VLSI geometry system for graphics. In _Proceedings of ACM SIGGRAPH Computer Graphics_ 16, 3 (1982), 127–133.
* 8.Coates, A. et al.Deep learning with COTS HPC systems. In _Proceedings of the Intern. Conf. on Machine Learning. PMLR_ (2013).
* 9.Culler, D. et al._Parallel Computer Architecture: A Hardware/Software Approach_. Gulf Professional Publishing (1999).
* 10.Dally, W. et al.The J-machine: A retrospective. _Proceedings of the 1998 Intern. Symp. on Comp. Arch. (ISCA-98)_(1998), 54–58.
* 11.Dally, W. et al.Merrimac: Supercomputing with streams. In _Proceedings of the 2003 ACM/IEEE Conf. on Supercomputing_(2003).
* 12.Dally, W. et al.Stream processors: Programmability and efficiency: Will this new kid on the block muscle out ASIC and DSP?_ACM Queue_ 2.1 (2004), 52–62.
* 13.Deng, J. et al.Imagenet: A large-scale hierarchical image database. In _Proceedings of the IEEE Conf. on Computer Vision and Pattern Recognition_(2009).
* 14.Elsen, E. et al.N-body simulations on GPUs. arXiv:0706.3060(2007).
* 15.England, N.A graphics system architecture for interactive application-specific display functions. _IEEE Computer Graphics and Applications_ 6, 1 (1986), 60–70.
* 16.Erez, M. et al.Analysis and performance results of a molecular modeling application on Merrimac. In _Proceedings of the 2004 ACM/IEEE Conf. on Supercomputing_.
* 17.Erez, M. et al.Fault tolerance techniques for the Merrimac streaming supercomputer. In _Proceedings of the 2005 ACM/IEEE Conf. on Supercomputing_.
* 18.Everingham, M. et al.The PASCAL visual object classes challenge: A retrospective. _Intern. J. of Computer Vision_. 111, 1 (2015), 98–136.
* 19.Fatahalian, K., Sugerman, J., and Hanrahan, P.Understanding the efficiency of GPU algorithms for matrix-matrix multiplication. In _Proceedings of the ACM SIGGRAPH/EUROGRAPHICS Conf. on Graphics Hardware_(2004).
* 20.Fatica, M., Jameson, A., and Alonso, J.STREAMFLO: An Euler solver for streaming architectures. In _Proceedings of the 42nd AIAA Aerospace Sciences Meeting and Exhibit_(2004).
* 21.Fillo, M. et al.The M-machine multicomputer. _Intern. J. of Parallel Programming_ 25, 3 (1997), 183–212.
* 22.Fuchs, H. et al.Pixel-planes 5: A heterogeneous multiprocessor graphics system using processor-enhanced memories. In _Proceedings of ACM SIGGRAPH Computer Graphics_ 23, 3 (1989), 79–88.
* 23.Kapasi, U. et al.The Imagine stream processor. In _Proceedings of the IEEE Intern. Conf. on Computer Design: VLSI in Computers and Processors_(2002).
* 24.Kessler, R. and Schwarzmeier, J.CRAY T3D: A new dimension for Cray Research. _Digest of Papers. COMPCON Spring_(1993), 176–182.
* 25.Kirk, D. and Hwu, W. _Programming Massively Parallel Processors: A Hands-On Approach_. Morgan Kaufmann (2016).
* 26.Khailany, B. et al.Imagine: Media processing with streams. _IEEE Micro_ 21, 2 (2002), 35–46.
* 27.Levinthal, A. et al.Parallel computers for graphics applications. In _Proceedings of the 2nd Intern. Conf. on Architectural Support for Programming Languages and Operating Systems_(1987), 193–198.
* 28.Luebke, D. et al.GPGPU: General-purpose computation on graphics hardware. In _Proceedings of the 2006 ACM/IEEE Conf. on Supercomputing_(2006), 206.
* 29.MPI: A Message-Passing Interface Standard. Technical Report. University of Tennessee (1994).
* 30.Nickolls, J. et al.Scalable parallel programming with CUDA. _ACM_ _Queue_ 6, 2 (2008), 40–53.
* 31.Nickolls, J. and Dally, W. The GPU computing era. _IEEE Micro_ 30, 2 (2010), 56–69.
* 32.Owens, J. et al.Polygon rendering on a stream architecture. In _Proceedings of the ACM SIGGRAPH/EUROGRAPHICS Workshop on Graphics Hardware_(2000).
* 33.Owens, J. et al.Media processing applications on the Imagine stream processor. In _Proceedings of the IEEE Intern. Conf. on Computer Design: VLSI in Computers and Processors_(2002).
* 34.Scott, S.Synchronization and communication in the T3E multiprocessor. In _Proceedings of the 7th Intern. Conf. on Architectural Support for Programming Languages and Operating Systems_(1996), 26–36.
* 35.Seitz, C.The cosmic cube. _Commun ACM_ 28, 1 (1985), 22–33.
* 36.Thompson, C. et al.Using modern graphics architectures for general-purpose computing: A framework and analysis. In _Proceedings of ACM/IEEE MICRO-35_(2002).
* 37.Vaswani, A. et al.Attention is all you need. _Advances in Neural Information Processing Systems_ 30(2017).
* [a](https://cacm.acm.org/federal-funding-of-academic-research/the-origins-of-gpu-computing/)[https://web.stanford.edu/group/cits/pubs/reports.html](https://web.stanford.edu/group/cits/pubs/reports.html)
About the Authors
William J. Dally는 미국 캘리포니아주 산타클라라 Nvidia Corporation의 수석 과학자이자 연구 담당 수석 부사장이며, 미국 캘리포니아주 스탠퍼드 Stanford University 전기공학 및 컴퓨터과학 겸임교수이다.
Pat Hanrahan은 미국 캘리포니아주 스탠퍼드 Stanford University 전기공학 및 컴퓨터과학 Canon 명예교수이다.
CACM에 글 제출하기
CACM은 컴퓨팅 커뮤니티와 관련성과 가치를 지닌 주제에 대한 비청탁 원고 제출을 환영한다.
방금 읽은 글
View in the ACM Digital Library
이 저작물은 Creative Commons Attribution International 4.0 License에 따라 라이선스가 부여된다.
© 2026 저작권은 소유자/저자에게 있다.
10.1145/3778248
Real-Time Computer Vision with OpenCV
Artificial Intelligence and Machine Learning
Deterministic Record-and-Replay
Software Engineering and Programming Languages
Accelerating GPU Betweenness Centrality