게시: 2025년 2월 26일
하위 그룹으로 머신러닝 워크로드 개선
1년간의 개발 및 시험을 거쳐 이제 SIMD 수준의 병렬화를 지원하는 하위 그룹 WebGPU 기능을 사용할 수 있습니다. 이를 통해 작업 그룹의 스레드가 숫자 합계 계산과 같은 집계 수학 연산을 통신하고 실행할 수 있으며 교차 스레드 데이터 공유를 위한 효율적인 메서드를 제공합니다. 원래 제안서 및 chromestatus 항목을 참고하세요.
참고로 시작 버전 체험판 기간 동안 일부 기기에서 행렬-벡터 곱셈 셰이더의 패킹된 정수 내적을 기준으로 하위 그룹을 벤치마킹할 때 Google Meet의 속도가 2.3~2.9배 빨라졌습니다.
GPUAdapter
에서 "subgroups"
기능을 사용할 수 있는 경우 이 기능이 있는 GPUDevice
를 요청하여 WGSL에서 하위 그룹 지원을 받습니다. subgroupMinSize
및 subgroupMaxSize
어댑터 정보 값을 확인하는 것이 좋습니다. 예를 들어 특정 크기의 하위 그룹이 필요한 하드코딩된 알고리즘이 있는 경우입니다.
또한 enable subgroups;
를 사용하여 WGSL 코드에서 이 확장 프로그램을 명시적으로 사용 설정해야 계산 및 프래그먼트 셰이더 단계에서 다음과 같은 기본값에 액세스할 수 있습니다.
subgroup_invocation_id
: 하위 그룹 내 대화목록의 색인에 관한 내장 값입니다.subgroup_size
: 하위 그룹 크기 액세스를 위한 내장 값입니다.
수많은 하위 그룹 기본 제공 함수 (예: subgroupAdd()
, subgroupBallot()
, subgroupBroadcast()
, subgroupShuffle()
)를 사용하면 하위 그룹 내 호출 간에 효율적인 통신과 계산을 할 수 있습니다. 이러한 하위 그룹 작업은 단일 명령어 다중 스레드 (SIMT) 작업으로 분류됩니다. 또한 호출의 사분면에서 작동하는 사분면 내장 함수는 사분면 내에서 데이터 통신을 용이하게 합니다.
"shader-f16"
및 "subgroups"
기능이 모두 포함된 GPUDevice
를 요청할 때 하위 그룹과 함께 f16 값을 사용할 수 있습니다.
다음 샘플은 하위 그룹을 살펴볼 때 좋은 출발점입니다. 이 샘플은 메모리를 읽거나 쓰지 않고 중간 결과를 전달하여 팩토리얼을 계산하는 subgroupExclusiveMul()
내장 함수를 사용하는 셰이더를 보여줍니다.
혼합 가능한 것으로 부동 소수점 필터링 가능한 텍스처 유형 지원 삭제
이제 "float32-blendable"
기능으로 32비트 부동 소수점 텍스처 혼합을 사용할 수 있으므로 혼합 가능한 부동 소수점 필터링 가능한 텍스처 유형에 대한 잘못된 지원이 삭제되었습니다. 문제 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 134
Chrome 133
- 추가 unorm8x4-bgra 및 1개 구성요소 정점 형식
- 정의되지 않은 값으로 알 수 없는 한도를 요청할 수 있도록 허용
- WGSL 정렬 규칙 변경사항
- 삭제로 WGSL 성능 향상
- 외부 텍스처에 VideoFrame displaySize 사용하기
- copyExternalImageToTexture를 사용하여 기본이 아닌 방향의 이미지 처리
- 개발자 환경 개선
- featureLevel을 사용하여 호환성 모드 사용 설정
- 실험용 하위 그룹 기능 정리
- maxInterStageShaderComponents 한도 지원 중단
- Dawn 업데이트
Chrome 132
- 텍스처 뷰 사용량
- 32비트 부동 소수점 텍스처 혼합
- GPUDevice adapterInfo 속성
- 잘못된 형식으로 캔버스 컨텍스트를 구성하면 JavaScript 오류가 발생함
- 텍스처에 대한 샘플러 필터링 제한사항
- 확장된 하위 그룹 실험
- 개발자 환경 개선
- 16비트 정규화된 텍스처 형식의 실험적 지원
- Dawn 업데이트
Chrome 131
- WGSL에서 거리 클립하기
- GPUCanvasContext getConfiguration()
- 점 및 선 원시에는 깊이 바이어스가 없어야 함
- 하위 그룹을 위한 포용 스캔 기본 제공 함수
- 다중 그리기 간접 실험적 지원
- 셰이더 모듈 컴파일 옵션 엄격한 수학
- GPUAdapter requestAdapterInfo() 삭제
- Dawn 업데이트
Chrome 130
Chrome 129
Chrome 128
- 하위 그룹 실험
- 선 및 점에 대한 깊이 편향 설정 지원 중단
- preventDefault인 경우 포착되지 않은 오류 DevTools 경고 숨기기
- WGSL은 먼저 샘플링을 보간하고 다음 중 하나를 실행합니다.
- Dawn 업데이트
Chrome 127
Chrome 126
Chrome 125
Chrome 124
Chrome 123
- WGSL의 DP4a 내장 함수 지원
- WGSL의 제한되지 않은 포인터 매개변수
- WGSL에서 합성물 역참조를 위한 문법 슈가
- 스텐실 및 깊이 측면에 관한 별도의 읽기 전용 상태
- Dawn 업데이트
Chrome 122
Chrome 121
- Android에서 WebGPU 지원
- Windows에서 셰이더 컴파일에 FXC 대신 DXC 사용하기
- 컴퓨팅 및 렌더링 패스의 타임스탬프 쿼리
- 셰이더 모듈의 기본 진입점
- display-p3를 GPUExternalTexture 색상 공간으로 지원
- 메모리 힙 정보
- Dawn 업데이트
Chrome 120
Chrome 119
Chrome 118
copyExternalImageToTexture()
에서 HTMLImageElement 및 ImageData 지원- 읽기 쓰기 저장소 텍스처 및 읽기 전용 저장소 텍스처에 대한 실험적 지원
- Dawn 업데이트
Chrome 117
- 꼭짓점 버퍼 설정 해제
- 바인드 그룹 설정 해제
- 기기 손실 시 비동기 파이프라인 생성 오류를 음소거합니다.
- SPIR-V 셰이더 모듈 생성 업데이트
- 개발자 환경 개선
- 자동 생성된 레이아웃으로 파이프라인 캐싱
- Dawn 업데이트
Chrome 116
- WebCodecs 통합
- GPUAdapter
requestDevice()
에서 반환된 분실 기기 importExternalTexture()
가 호출될 때 동영상 재생을 원활하게 유지- 사양 준수
- 개발자 환경 개선
- Dawn 업데이트