# gpu.cpp - WebGPU 기반 경량 GPU 컴퓨팅 라이브러리

> Clean Markdown view of GeekNews topic #15845. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=15845](https://news.hada.io/topic?id=15845)
- GeekNews Markdown: [https://news.hada.io/topic/15845.md](https://news.hada.io/topic/15845.md)
- Type: news
- Author: [xguru](https://news.hada.io/@xguru)
- Published: 2024-07-15T10:02:02+09:00
- Updated: 2024-07-15T10:02:02+09:00
- Original source: [github.com/AnswerDotAI](https://github.com/AnswerDotAI/gpu.cpp)
- Points: 11
- Comments: 1

## Summary

gpu.cpp는 C++에서 간단하게 범용 GPU 컴퓨팅을 가능하게 하는 경량 라이브러리로, 다양한 GPU에서 동작 가능한 코드를 작성할 수 있게 해줍니다. 이 라이브러리는 최소한의 API와 빠른 개발 반복을 목표로 하여, 개인용 기기에서의 광범위한 GPU 컴퓨팅을 보다 쉽게 만듭니다. 또한, GPU 알고리듬 개발, 신경망 모델 구현, 물리 시뮬레이션 등 다양한 분야에 활용될 수 있습니다.

## Topic Body

- C++에서 간단하게 범용 GPU 컴퓨팅을 가능하게 하는 경량 라이브러리  
- WebGPU 규격을 이용해 낮은 수준의 GPU 인터페이스를 제공함으로써 다양한 GPU에서 동작 가능한 코드를 작성할 수 있게 해줌   
- 즉, C++ 프로젝트에 GPU 코드를 삽입하여 Nvidia, Intel, AMD 및 기타 GPU에서 실행할 수 있게 되며, Vulkan, Metal, DirectX를 지원하는 대부분의 하드웨어에서 동일한 C++ 코드로 GPU 활용이 가능함  
  
### 기술적 목표: 경량화, 빠른 개발 반복, 적은 보일러플레이트 코드  
- 최소한의 API로 GPU 컴퓨팅에 필요한 전 범위를 다루는 것이 목표  
- 프로젝트 빌드가 거의 즉각적으로 이뤄지고, 컴파일/실행 주기가 5초 미만이 되도록 함  
- 표준 C++ 컴파일러 외에는 의존성과 툴링 부담을 최소화  
- 작은 API 표면과 최소한의 보일러플레이트 코드를 지향하며, 추상화 계층을 최소화해 gpu.cpp 라이브러리와 WebGPU API의 매핑이 명확하도록 구현  
- 구글의 Dawn WebGPU 구현체의 pre-built 바이너리를 제공함으로써 컴파일 시간을 단축시킴  
  - 현재는 Dawn 백엔드만 지원하나 향후 다른 WebGPU 구현체 지원 예정  
  
### gpu.cpp의 목표 사용자  
- 개인용 컴퓨팅 기기에서 이식성 높은 GPU 컴퓨팅이 필요한 프로젝트가 주 대상  
- GPU 알고리즘 개발, 신경망 모델의 직접 구현, 물리 시뮬레이션, 멀티모달 애플리케이션, 오프라인 그래픽스 렌더링, 기계학습 추론 엔진 등에 활용 가능  
- 개인용 기기에서의 광범위한 GPU 컴퓨팅을 보다 쉽게 만드는 것이 목표  
- 세밀한 데이터 이동과 GPU 코드 제어를 직접적으로 할 수 있게 해줌  
  
### gpu.cpp가 아닌 것  
- 고수준의 수치 컴퓨팅이나 기계학습 프레임워크, 추론 엔진이 아님 (그러한 구현을 지원하는 데는 사용될 수 있음)  
- WebGPU가 웹 브라우저 뿐 아니라 네이티브 구현체도 있다는게 중요("[WebGPU is Not Just About the Web](https://www.youtube.com/watch?v=qHrx41aOTUQ)")  
- 렌더링/그래픽스보다는 범용 GPU 컴퓨팅에 초점을 맞추고 있음  
  
### 한계점과 향후 계획  
- API 개선: 사용 사례를 통해 API 디자인을 발전시켜 나갈 예정  
- 브라우저 타겟 지원 예정  
- 재사용 가능한 커널과 셰이더 라이브러리화  
- 더 많은 사용 예제와 테스트 추가  
- llm.c의 커널을 WebGPU로 구현하는 것이 단기 목표 중 하나

## Comments



### Comment 27259

- Author: xguru
- Created: 2024-07-15T10:05:47+09:00
- Points: 1

프로젝트에 대한 소개는 [gpu.cpp: portable GPU compute for C++ with WebGPU](https://www.answer.ai/posts/2024-07-11--gpu-cpp.html) 요쪽이 좀 더 자세합니다.
