RADV 드라이버, VK_KHR_shader_fma 지원 추가
RADEON
VK_KHR_shader_fma는 정확하게 반올림된 fused-multiply add (FMA) 연산을 원하는 애플리케이션을 위해 작년에 Vulkan 사양(spec)에 도입되었습니다. 이는 GPU 가속을 위해 Vulkan을 활용하면서 부동 소수점(floating-point) 정확도를 보장하고자 하는 머신 러닝(machine learning) 및 과학 계산(scientific computing) 애플리케이션에 특히 유용합니다.
VK_KHR_shader_fma에 대한 Vulkan 확장 사양(extension spec) 텍스트는 다음과 같이 설명합니다:
"이 확장(extension)을 통해 애플리케이션은 SPV_KHR_fma 확장을 사용하여 fused-multiply add (fma) 연산에 대해 정확하게 반올림된 결과를 얻을 수 있습니다.
Fused-multiply add는 많은 고정밀 수치 함수(high-precision numerical functions)의 구성 요소입니다. 이는 중간 반올림 단계가 제거되기 때문에 별도의 연산보다 더 나은 정확도를 제공하며, 종종 별도의 두 연산을 수행하는 것보다 비용이 적게 듭니다.
Vulkan은 현재 비용을 줄일 수 있는 fma 프리미티브(primitive)를 노출하고 있지만, 이것이 fused 연산임을 보장하지 않으므로 정확도를 신뢰할 수 없습니다. 따라서 높은 정확도가 필요한 애플리케이션의 경우, 해당 연산을 에뮬레이션(emulated)하거나 fma를 요구하지 않도록 알고리즘을 변경해야 합니다. 이는 fma가 대부분의 하부 하드웨어에서 지원됨에도 불구하고 종종 훨씬 더 많은 비용이 발생합니다."
Georg Lehmann의 이번 병합(merge) 덕분에, Mesa RADV Vulkan 드라이버는 이제 VK_KHR_shader_fma를 지원합니다.