Tính năng mới trong WebGPU (Chrome 134)

François Beaufort
François Beaufort

Ngày xuất bản: 26 tháng 2 năm 2025

Cải thiện khối lượng công việc học máy bằng nhóm con

Sau một năm phát triển và thử nghiệm, tính năng nhóm con của WebGPU cho phép tính song song ở cấp SIMD hiện đã có. Tính năng này cho phép các luồng trong một nhóm công việc giao tiếp và thực thi các phép toán tập thể, chẳng hạn như tính tổng các số và cung cấp một phương thức hiệu quả để chia sẻ dữ liệu giữa các luồng. Hãy xem đề xuất ban đầumục nhập chromestatus.

Để tham khảo, Google Meet đã ghi nhận tốc độ tăng từ 2,3 đến 2,9 lần khi so sánh hiệu suất của các nhóm con với các tích số nguyên được đóng gói cho các chương trình đổ bóng nhân ma trận-vectơ trên một số thiết bị trong quá trình bản dùng thử theo nguyên gốc.

Khi tính năng "subgroups" có trong GPUAdapter, hãy yêu cầu GPUDevice có tính năng này để được hỗ trợ nhóm con trong WGSL. Bạn nên kiểm tra các giá trị thông tin bộ điều hợp subgroupMinSizesubgroupMaxSize. Ví dụ: nếu bạn có một thuật toán được mã hoá cứng yêu cầu một nhóm con có kích thước nhất định.

Bạn cũng cần bật tiện ích này một cách rõ ràng trong mã WGSL bằng enable subgroups; để có quyền truy cập vào các giá trị tích hợp sau đây ở cả giai đoạn tính toán và chương trình đổ bóng mảnh:

  • subgroup_invocation_id: Giá trị tích hợp cho chỉ mục của luồng trong nhóm con.

  • subgroup_size: Giá trị tích hợp để truy cập kích thước nhóm con.

Nhiều hàm tích hợp nhóm con (ví dụ: subgroupAdd(), subgroupBallot(), subgroupBroadcast(), subgroupShuffle()) cho phép giao tiếp và tính toán hiệu quả giữa các lệnh gọi trong một nhóm con. Các thao tác nhóm con này được phân loại là thao tác nhiều luồng một hướng dẫn (SIMT). Ngoài ra, các hàm tích hợp quad (hoạt động trên một quad lệnh gọi) tạo điều kiện thuận lợi cho việc giao tiếp dữ liệu trong quad.

Bạn có thể sử dụng các giá trị f16 với các nhóm con khi yêu cầu GPUDevice có cả tính năng "shader-f16""subgroups".

Mẫu sau đây là điểm xuất phát tốt để khám phá các nhóm con: mẫu này cho thấy một chương trình đổ bóng sử dụng hàm tích hợp subgroupExclusiveMul() để tính giai thừa mà không cần đọc hoặc ghi bộ nhớ để giao tiếp kết quả trung gian.

Xoá tính năng hỗ trợ các loại kết cấu có thể lọc dấu phẩy động dưới dạng có thể kết hợp

Giờ đây, tính năng kết hợp kết cấu dấu phẩy động 32 bit đã có sẵn với tính năng "float32-blendable", tính năng hỗ trợ không chính xác cho các loại kết cấu có thể lọc dấu phẩy động dưới dạng có thể kết hợp đã bị xoá. Xem vấn đề 364987733.

Thông tin cập nhật về Dawn

Dawn hiện yêu cầu macOS 11 và iOS 14, đồng thời chỉ hỗ trợ Metal 2.3 trở lên. Hãy xem vấn đề 381117827.

Phương thức GetWGSLLanguageFeatures() mới của wgpu::Instance hiện thay thế EnumerateWGSLLanguageFeatures(). Xem vấn đề 368672124.

Các loại liên kết sau đây có giá trị Undefined và giá trị mặc định của chúng trong bố cục liên kết đã được thay đổi. Xem vấn đề 377820810.

  • wgpu::BufferBindingType::Undefined hiện là Uniform
  • wgpu::SamplerBindingType::Undefined đổi tên thành Filtering
  • wgpu::TextureSampleType::Undefined hiện là Float
  • wgpu::StorageTextureAccess::Undefined hiện là WriteOnly

Nội dung này chỉ đề cập đến một số điểm nổi bật chính. Hãy xem danh sách đầy đủ các cam kết.

Tính năng mới trong WebGPU

Danh sách mọi nội dung đã được đề cập trong loạt bài Tính năng mới trong WebGPU.

Chrome 147-148

Chrome 146

Chrome 145

Chrome 144

Chrome 143

Chrome 142

Chrome 141

Chrome 140

Chrome 139

Chrome 138

Chrome 137

Chrome 136

Chrome 135

Chrome 134

Chrome 133

Chrome 132

Chrome 131

Chrome 130

Chrome 129

Chrome 128

Chrome 127

Chrome 126

Chrome 125

Chrome 124

Chrome 123

Chrome 122

Chrome 121

Chrome 120

Chrome 119

Chrome 118

Chrome 117

Chrome 116

Chrome 115

Chrome 114

Chrome 113