Skip to content

AMDGPU backend on a consumer iGPU (Strix Point, gfx1150): 249/249 pass — because JACC's portable paths bypass three broken vendor libraries #404

Description

@aurascoper

Filling the AMD column's consumer-hardware gap the way #402 did for Metal. Versions throughout: JACC 0dbf990a (main), AMDGPU.jl 2.7.1, Julia 1.12.6, Ubuntu 26.04's archive ROCm 7.1 (7.1.0/7.1.1 Debian packaging, no /opt/rocm), kernel 7.0.0-28-generic, AMD Ryzen AI 9 HX 370 / Radeon 890M (gfx1150, RDNA 3.5 iGPU). Your AMD CI runs on an MI100; as far as I can find, nobody has published a consumer-iGPU result for this backend.

Result

Full suite via the canonical invocation (julia --project in the clone → Pkg.instantiate()JACC.set_backend("AMDGPU")Pkg.test() in a fresh process): 249/249, zero failures, including AXPY, reduce, reduce-ND, shared, JACC.BLAS, Add-2D/3D/ND, CG, LBM, rand-Float32/Float64, UnitRange/StepRange, LaunchSpec. Since AMDGPU has no default_float override, the whole suite ran in Float64 — notable because Float64 was exactly what broke on Metal (#402), and on this consumer part it did not (correctness only; I measured no throughput).

Two setup facts worth recording for anyone reproducing on Strix Point:

  • gfx1150 enumerates natively under this ROCm — HSA_OVERRIDE_GFX_VERSION is unnecessary (=11.5.0 is identical to unset; =11.0.0 actively masquerades the device as gfx1100).
  • AMDGPU.jl found the Debian layout unaided — no ROCM_PATH, no LocalPreferences.

The finding I'd actually flag: the green run is the abstraction working, not the platform working

Three of the distro's ROCm math libraries are broken for gfx1150, each differently:

  • rocRAND: SIGSEGV in librocrand.so during rocrand_initialize_generator, type-independent (AMDGPU.rand(Float32, …) and Float64 both crash). The binary embeds gfx1151 kernels but no gfx1150.
  • rocBLAS: clean failure — Cannot read /usr/lib/x86_64-linux-gnu/rocblas/5.1.0/library/TensileLibrary.dat: Illegal seek for GPU arch : gfx1150; the only Tensile file shipped is TensileLibrary_lazy_gfx942.dat.
  • rocSPARSE: crashes AMDGPU.jl's isolated version-query subprocess (the warning cites Trying install AMDGPU on ubuntu 26.04 with no success. AMDGPU.jl#920).

The suite passes anyway because JACC's portable API never reaches them: JACC.BLAS is JACC's own parallel_for kernels (src/blas.jl), and the rand testsets call device-side rand() inside kernels (unittests.jl:1228), not the rocRAND host API. So the accurate statement is narrow: JACC insulated a user from three independent vendor gaps — which seems like the strongest concrete evidence for the portability thesis I've seen, and a better result than the checkmark. The edge cuts the other way too: a JACC user who steps outside the API (AMDGPU.rand, anything rocBLAS-backed) hits the breakage immediately, so "JACC passes on gfx1150" must not be read as "gfx1150 is fine."

These are Ubuntu packaging gaps (vendor-stack ≠ distro-package; AMD's 24.04 repo may differ on every axis) — I'll report them there, not here. They're listed because they define exactly what the 249/249 does and does not mean.

Full environment pins, verbatim logs, and the reproduction command sequence are retained; glad to attach any of it.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions