AMD's MiniDXNN, an open-source library for GPU-accelerated MLP inference and training on DirectX 12, has been updated to v0.4.0. The release moves from Cooperative Vectors (SM 6.9) to the new D3D12 Linear Algebra feature in Shader Model 6.10 preview, adds positional and grid input encoding for neural texture compression, and ships a new interactive GUI app that trains and visualizes a texture representation live in a window using ImGui. Setup requires enabling experimental shader model features and using a packAsD3D12MatrixBuffer() utility to convert weight matrices into the driver-preferred memory layout. Supported hardware includes AMD Radeon RX 9000 Series GPUs with a developer preview AgilitySDK driver and equivalent NVIDIA GPUs with SM 6.10 drivers. A C++ fallback path lets the same HLSL source run on CPU for testing without a DirectX 12 device.

6m read timeFrom gpuopen.com
Post cover image
Table of contents
What’s changed since v0.2.0D3D12 LinAlg Matrix in a nutshellSetting up for D3D12 LinAlg MatrixWeight matrix conversionThe HLSL library: mlp.hlslNew example: Interactive texture compression appTwo implementation notes:Input encoding for texture compressionC++ fallbackGetting startedFootnotes

Questions this post answers

What changed in MiniDXNN v0.4.0 compared to earlier versions using Cooperative Vectors?

MiniDXNN v0.4.0 moved from Cooperative Vectors (Shader Model 6.9) to the new D3D12 Linear Algebra Matrix feature in Shader Model 6.10 preview, available with AgilitySDK 1.721-preview. This adds more expressive matrix layout control, a cleaner HLSL API, and driver-side layout optimization via GPU-side matrix conversion, alongside a new interactive GUI app for live texture compression training. daily.dev surfaces graphics API updates like this for developers tracking DirectX 12 shader model changes.

What GPU hardware supports D3D12 Linear Algebra Matrix in Shader Model 6.10?

AMD Radeon RX 9000 Series GPUs support it with the AMD Software AgilitySDK Developer Preview Edition 26.10.07.02 driver, and equivalent NVIDIA GPUs support it with SM 6.10 drivers. Tier 1 support, checked via CheckFeatureSupport(D3D12_FEATURE_LINEAR_ALGEBRA_SUPPORT), guarantees FP16 vector-matrix multiply operations. engineers evaluating GPU support for new shader features can track driver requirements like these on daily.dev.

What alignment requirements does D3D12 LinAlg Matrix weight conversion impose?

Matrix base addresses require 128-byte alignment, row strides require 16-byte alignment, and bias vectors also require 128-byte alignment when converting CPU-side row-major weight matrices into the driver's preferred layout. MiniDXNN wraps this conversion, alignment handling, and querying into a single packAsD3D12MatrixBuffer() utility function. developers implementing low-level GPU compute pipelines can find implementation details like this on daily.dev.

202 Impressions