11 điểm bởi xguru 2024-07-15 | 1 bình luận | Chia sẻ qua WhatsApp
  • Thư viện nhẹ cho phép thực hiện tính toán GPU đa dụng một cách đơn giản trong C++
  • Cung cấp giao diện GPU mức thấp dựa trên đặc tả WebGPU, giúp có thể viết mã chạy được trên nhiều GPU khác nhau
  • Nghĩa là có thể nhúng mã GPU vào dự án C++ để chạy trên Nvidia, Intel, AMD và các GPU khác; đồng thời có thể khai thác GPU bằng cùng một mã C++ trên hầu hết phần cứng hỗ trợ Vulkan, Metal, DirectX

Mục tiêu kỹ thuật: gọn nhẹ, lặp phát triển nhanh, ít mã boilerplate

  • Mục tiêu là bao phủ toàn bộ những gì cần thiết cho tính toán GPU với API tối thiểu
  • Hướng tới việc build dự án gần như tức thì, với chu kỳ biên dịch/thực thi dưới 5 giây
  • Giảm tối đa phụ thuộc và gánh nặng tooling ngoài trình biên dịch C++ tiêu chuẩn
  • Theo đuổi bề mặt API nhỏ và lượng mã boilerplate tối thiểu, đồng thời giảm thiểu tầng trừu tượng để việc ánh xạ giữa thư viện gpu.cpp và API WebGPU được rõ ràng
  • Cung cấp binary pre-built của triển khai Dawn WebGPU của Google để rút ngắn thời gian biên dịch
    • Hiện tại chỉ hỗ trợ backend Dawn, nhưng dự kiến sẽ hỗ trợ các triển khai WebGPU khác trong tương lai

Đối tượng người dùng mục tiêu của gpu.cpp

  • Chủ yếu nhắm tới các dự án cần tính toán GPU có tính di động cao trên thiết bị máy tính cá nhân
  • Có thể dùng cho phát triển thuật toán GPU, tự triển khai mô hình mạng nơ-ron, mô phỏng vật lý, ứng dụng đa phương thức, kết xuất đồ họa ngoại tuyến, và các engine suy luận máy học
  • Mục tiêu là giúp việc tính toán GPU trên thiết bị cá nhân ở quy mô rộng trở nên dễ dàng hơn
  • Cho phép trực tiếp kiểm soát chi tiết việc di chuyển dữ liệu và mã GPU

gpu.cpp không phải là gì

  • Không phải framework tính toán số hay máy học cấp cao, cũng không phải engine suy luận (dù có thể được dùng để hỗ trợ xây dựng các triển khai như vậy)
  • Điều quan trọng là WebGPU không chỉ có trong trình duyệt web mà còn có cả triển khai native ("WebGPU is Not Just About the Web")
  • Tập trung vào tính toán GPU đa dụng hơn là rendering/graphics

Hạn chế và kế hoạch sắp tới

  • Cải tiến API: sẽ tiếp tục phát triển thiết kế API thông qua các trường hợp sử dụng thực tế
  • Dự kiến hỗ trợ target trình duyệt
  • Xây dựng thư viện kernel và shader có thể tái sử dụng
  • Bổ sung thêm nhiều ví dụ sử dụng và bài kiểm thử
  • Một trong các mục tiêu ngắn hạn là triển khai các kernel của llm.c bằng WebGPU

1 bình luận

 
xguru 2024-07-15

Phần giới thiệu về dự án được trình bày chi tiết hơn ở bài này: gpu.cpp: portable GPU compute for C++ with WebGPU.