WebGPU의 새로운 기능 (Chrome 134)

François Beaufort
François Beaufort

게시일: 2025년 2월 26일

하위 그룹으로 머신러닝 워크로드 개선

1년간의 개발 및 트라이얼을 거쳐 SIMD 수준 병렬 처리를 지원하는 하위 그룹 WebGPU 기능을 사용할 수 있게 되었습니다. 이를 통해 작업 그룹의 스레드가 통신하고 숫자의 합계 계산과 같은 집단 수학 연산을 실행할 수 있으며 스레드 간 데이터 공유를 위한 효율적인 방법을 제공합니다. 원래 제안chromestatus 항목을 참고하세요.

참고로 Google Meet은 오리진 트라이얼 중에 일부 기기에서 행렬-벡터 곱셈 셰이더에 대해 패킹된 정수 점곱에 대해 하위 그룹을 벤치마킹할 때 속도가 2.3~2.9배 증가했습니다.

GPUAdapter에서 "subgroups" 기능을 사용할 수 있는 경우 이 기능으로 GPUDevice를 요청하여 WGSL에서 하위 그룹 지원을 받습니다. 예를 들어 특정 크기의 하위 그룹이 필요한 하드 코딩된 알고리즘이 있는 경우 subgroupMinSizesubgroupMaxSize 어댑터 정보 값을 확인하는 것이 좋습니다.

또한 컴퓨팅 및 프래그먼트 셰이더 단계 모두에서 다음 기본 제공 값에 액세스하려면 enable subgroups;를 사용하여 WGSL 코드에서 이 확장 프로그램을 명시적으로 사용 설정해야 합니다.

  • subgroup_invocation_id: 하위 그룹 내 스레드 색인의 기본 제공 값입니다.

  • subgroup_size: 하위 그룹 크기 액세스를 위한 기본 제공 값입니다.

수많은 하위 그룹 기본 제공 함수 (예: subgroupAdd(), subgroupBallot(), subgroupBroadcast(), subgroupShuffle())를 사용하면 하위 그룹 내 호출 간에 효율적인 통신 및 계산이 가능합니다. 이러한 하위 그룹 작업은 단일 명령어 다중 스레드 (SIMT) 작업으로 분류됩니다. 또한 호출 쿼드에서 작동하는 쿼드 기본 제공 함수는 쿼드 내 데이터 통신을 지원합니다.

"shader-f16""subgroups" 기능이 모두 포함된 GPUDevice를 요청할 때 하위 그룹과 함께 f16 값을 사용할 수 있습니다.

다음 샘플은 하위 그룹을 탐색하기 위한 좋은 시작점입니다. 중간 결과를 전달하기 위해 메모리를 읽거나 쓰지 않고 subgroupExclusiveMul() 기본 제공 함수를 사용하여 계승을 계산하는 셰이더를 보여줍니다.

부동 소수점 필터링 가능 텍스처 유형에 대한 혼합 가능 지원 삭제

이제 32비트 부동 소수점 텍스처 혼합"float32-blendable" 기능으로 사용할 수 있으므로 부동 소수점 필터링 가능 텍스처 유형에 대한 잘못된 혼합 가능 지원이 삭제됩니다. 문제 364987733을 참고하세요.

Dawn 업데이트

이제 Dawn에는 macOS 11 및 iOS 14가 필요하며 Metal 2.3 이상만 지원합니다. 문제 381117827을 참고하세요.

이제 wgpu::Instance의 새 GetWGSLLanguageFeatures() 메서드가 EnumerateWGSLLanguageFeatures()를 대체합니다. 문제 368672124를 참고하세요.

다음 바인딩 유형에는 Undefined 값이 있으며 바인딩 레이아웃의 기본값이 변경되었습니다. 문제 377820810을 참고하세요.

  • wgpu::BufferBindingType::Undefined가 이제 Uniform입니다.
  • wgpu::SamplerBindingType::Undefined는 이제 Filtering입니다.
  • wgpu::TextureSampleType::Undefined가 이제 Float입니다.
  • wgpu::StorageTextureAccess::Undefined가 이제 WriteOnly입니다.

여기에는 몇 가지 주요 하이라이트만 포함됩니다. 커밋의 전체 목록을 확인하세요.

WebGPU의 새로운 기능

WebGPU의 새로운 기능 시리즈에서 다룬 모든 내용의 목록입니다.

Chrome 149~150

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