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 các nhóm con

Sau một năm phát triển và thử nghiệm, tính năng WebGPU của các nhóm con hiện đã có thể hỗ trợ tính năng song song cấp SIMD. Thư viện 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ố, đồng thời cung cấp một phương thức hiệu quả để chia sẻ dữ liệu giữa các luồng. Xem đề xuất ban đầumục chromestatus.

Để bạn tham khảo, Google Meet đã tăng tốc độ từ 2,3 đến 2,9 lần khi đo điểm chuẩn cho các nhóm con so với các sản phẩm dấu chấm số nguyên đóng gói cho chương trình đổ bóng nhân ma trận-vectơ trên một số thiết bị trong quá trình thử nghiệm 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 của bộ chuyển đổi 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 rõ ràng tiện ích này 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 sẵn 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 sẵn của 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 phép toán của nhóm con này được phân loại là phép toán một lệnh nhiều luồng (SIMT). Ngoài ra, các hàm tích hợp sẵn quad hoạt động trên quad của các lệnh gọi hỗ trợ 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à một điểm xuất phát phù hợp để 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 toán các số giai thừa mà không cần đọc hoặc ghi bộ nhớ để truyền đạt kết quả trung gian.

Xoá tính năng hỗ trợ các loại kết cấu có thể lọc bằng float dưới dạng có thể kết hợp

Giờ đây, tính năng kết hợp hoạ tiết float 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 hoạ tiết có thể lọc float dưới dạng kết hợp sẽ 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. Xem vấn đề 381117827.

Phương thức GetWGSLLanguageFeatures() mới của wgpu::Instance hiện sẽ 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 các loại liên kết này trong bố cục liên kết đã được thay đổi. Xem vấn đề 377820810.

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

Phần 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 thay đổi.

Tính năng mới trong WebGPU

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

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