Research Digest 0687 — vmaf-tune score backend native priority¶
Scope¶
Audit the vmaf-tune --score-backend selector against the current libvmaf CLI backend surface and the operator rule that native GPU runtimes should win before Vulkan when auto chooses a score backend.
Findings¶
core/tools/cli_parse.calready advertisesauto|cpu|cuda|sycl|vulkan|hip|metaland configures--backend hipwithhip_device=0plus the expected exclusive-backend disables.docs/backends/hip/overview.mdrecordsvmaf --backend hipas end-to-end working on ROCm hosts after the HIP import-state/runtime fixes.tools/vmaf-tune/src/vmaftune/score_backend.pystill exposed onlycpu,cuda,sycl, andvulkan, and itsautochain wascuda -> vulkan -> sycl -> cpu.- The old order made sense when Vulkan was the only non-CUDA broad fallback. It is no longer the best default after the SYCL and HIP runtime work because native stacks avoid translation layers and match the current operator rule: CUDA first, then SYCL, then HIP/ROCm, then Vulkan, then CPU.
Implementation Notes¶
- Add
hipto the tune backend enum so argparse, command building, and strictselect_backend(prefer="hip")work through the same path as CUDA/SYCL/Vulkan. - Keep CPU in the accepted enum as the universal fallback, but not in the preferred GPU order until the end of the fallback chain.
- Probe HIP via
rocminfolooking for agfx*agent; if that is unavailable, fall back torocm-smi --showproductname. - Keep Vulkan in the chain after native runtimes for cross-vendor fallback and MoltenVK-style hosts.
Validation Plan¶
- Unit-test parsing of a libvmaf help line that includes HIP and Metal; Metal is ignored until a dedicated probe ships.
- Unit-test
rocminfoandrocm-smiHIP detection paths. - Unit-test
autopriority for SYCL-over-HIP-over-Vulkan. - Unit-test explicit HIP strict success/failure.