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 nhóm con WebGPU cho phép tính song song ở cấp độ SIMD hiện đã có sẵn. Thao tác này cho phép các luồng trong một nhóm công việc giao tiếp và thực hiện 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. Xem đề xuất ban đầumục nhập chromestatus.

Để tham khảo, Google Meet đã ghi nhận tốc độ tăng gấp 2,3 đến 2,9 lần khi đo điểm chuẩn các nhóm phụ so với tích vô hướng 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 thử nghiệm ban đầu.

Khi tính năng "subgroups" có trong GPUAdapter, hãy yêu cầu GPUDevice có tính năng này để nhận được sự hỗ trợ cho 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, chẳng hạn như 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à giai đoạn đổ bóng mảnh:

  • subgroup_invocation_id: Một 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 vào kích thước của 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 thao tác nhóm con này được phân loại là các thao tác SIMT (single-instruction multiple-thread). Ngoài ra, các hàm tích hợp sẵn quad hoạt động trên một quad gồm các lệnh gọi sẽ hỗ trợ việc truyền 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 một GPUDevice có cả tính năng "shader-f16""subgroups".

Mẫu sau đây là một điểm khởi đầu 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ớ để truyền đạt kết quả trung gian.

Xoá chế độ 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, khi có tính năng trộn kết cấu số thực 32 bit với tính năng "float32-blendable", chế độ hỗ trợ không chính xác cho các loại kết cấu có thể lọc số thực dưới dạng có thể trộn sẽ bị xoá. Hãy xem vấn đề 364987733.

Thông tin cập nhật về bình minh

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 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. Hãy 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::Undefinednay là WriteOnly

Đây chỉ là một số điểm nổi bật chính. 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 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