11P by xguru 4달전 | favorite | 댓글 1개
  • 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")
  • 렌더링/그래픽스보다는 범용 GPU 컴퓨팅에 초점을 맞추고 있음

한계점과 향후 계획

  • API 개선: 사용 사례를 통해 API 디자인을 발전시켜 나갈 예정
  • 브라우저 타겟 지원 예정
  • 재사용 가능한 커널과 셰이더 라이브러리화
  • 더 많은 사용 예제와 테스트 추가
  • llm.c의 커널을 WebGPU로 구현하는 것이 단기 목표 중 하나

프로젝트에 대한 소개는 gpu.cpp: portable GPU compute for C++ with WebGPU 요쪽이 좀 더 자세합니다.