You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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.
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.
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 --projectin 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 nodefault_floatoverride, 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:
HSA_OVERRIDE_GFX_VERSIONis unnecessary (=11.5.0is identical to unset;=11.0.0actively masquerades the device as gfx1100).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:
librocrand.soduringrocrand_initialize_generator, type-independent (AMDGPU.rand(Float32, …)andFloat64both crash). The binary embeds gfx1151 kernels but no gfx1150.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 isTensileLibrary_lazy_gfx942.dat.The suite passes anyway because JACC's portable API never reaches them:
JACC.BLASis JACC's ownparallel_forkernels (src/blas.jl), and the rand testsets call device-siderand()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.