AMD Contributes BFloat16 Support To LLVM's SPIR-V Target
AMD software engineers continue making interesting contributions to the LLVM compiler stack around SPIR-V as the IR used by Vulkan and other Khronos APIs.
Over the past year or so AMD engineers have contributed an MLIR to SPIR-V pass for LLVM to go from that AI-friendly IR to this dominant Khronos IR, support for "vendor flavored" SPIR-V for different hardware/driver vendors, and more. Not to mention ROCm gaining SPIR-V linker support with HIP.
AMD's grand plans for SPIR-V usage aren't entirely clear from outside observations at a time when their ROCm efforts are beginning to pan out nicely. But in any event their support for SPIR-V as an industry-standard IR are appreciated.
Their latest contribution to upstream LLVM to note is BFloat16 support for the SPIR-V target. AMD engineer Alex Voicu contributed BFloat16 support by way of SPIR-V's SPV_INTEL_bfloat16_arithmetic. Yes, the Intel vendor extension for BF16.
Today's commit noted:
It's great seeing the continued momentum behind SPIR-V/Vulkan for compute and AI across the different vendors.
The code is merged for what will become LLVM 22 in the early months of the new year.
Over the past year or so AMD engineers have contributed an MLIR to SPIR-V pass for LLVM to go from that AI-friendly IR to this dominant Khronos IR, support for "vendor flavored" SPIR-V for different hardware/driver vendors, and more. Not to mention ROCm gaining SPIR-V linker support with HIP.
AMD's grand plans for SPIR-V usage aren't entirely clear from outside observations at a time when their ROCm efforts are beginning to pan out nicely. But in any event their support for SPIR-V as an industry-standard IR are appreciated.
Their latest contribution to upstream LLVM to note is BFloat16 support for the SPIR-V target. AMD engineer Alex Voicu contributed BFloat16 support by way of SPIR-V's SPV_INTEL_bfloat16_arithmetic. Yes, the Intel vendor extension for BF16.
Today's commit noted:
"[SPIRV] Enable bfloat16 arithmetic
Enable the `SPV_INTEL_bfloat16_arithmetic` extension, which allows arithmetic, relational and `OpExtInst` instructions to take `bfloat16` arguments. This patch only adds support to arithmetic and relational ops. The extension itself is rather fresh, but `bfloat16` is ubiquitous at this point and not supporting these ops is limiting."
It's great seeing the continued momentum behind SPIR-V/Vulkan for compute and AI across the different vendors.
The code is merged for what will become LLVM 22 in the early months of the new year.
