From 09841a8a44e4de9c6ed15e3151ef407195cafdea Mon Sep 17 00:00:00 2001 From: Tim Besard Date: Sun, 18 Oct 2026 08:29:30 +0200 Subject: [PATCH] Skip ComplexF32 accumulate tests on the LTS stack Since AcceleratedKernels 0.5.7, `cumprod` of a ComplexF32 vector returns wrong results on Aurora's LTS stack with Julia 1.13 (1.10 passes). Every PR's ALCF job fails on it, and main will too. It does not reproduce on Xe-LP with the same NEO 25.18 / IGC 2.11 user-mode driver, so it needs an IGC fix for PVC; document it as a known LTS issue in the meantime. --- docs/src/lts.md | 11 ++++++++++- test/runtests.jl | 6 ++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/docs/src/lts.md b/docs/src/lts.md index ac26d250..fdff0b15 100644 --- a/docs/src/lts.md +++ b/docs/src/lts.md @@ -147,10 +147,19 @@ This workaround is independent of `ONEAPI_LTS` and can be enabled on its own. `ONEAPI_LTS` unset oneAPI.jl behaves exactly as it does upstream. The workarounds trade performance for correctness and should not be enabled on a driver that does not need them. +## Known issues + +- **`ComplexF32` scans with `*`.** On Aurora (Data Center GPU Max 1550, LTS driver 1.3.33578), + `cumprod` and `cumprod!` of a `ComplexF32` vector return wrong results with Julia 1.13 and + AcceleratedKernels 0.5.7. The same code passes with Julia 1.10, and other element types and + `cumsum` are unaffected. It is not reproducible on Xe-LP hardware with the same NEO 25.18 / + IGC 2.11 user-mode driver, so it looks specific to IGC's PVC code generation. There is no + workaround in oneAPI.jl yet. + ## Running the test suite The test suite reads the same switch and skips the cases the LTS stack cannot support (the -`BFloat16` element type, the BFloat16 example). On a multi-tile node, pinning each test +`BFloat16` element type, the BFloat16 example, `ComplexF32` in the accumulate tests). On a multi-tile node, pinning each test worker to its own tile avoids the oversubscription that provokes the dropped-tail corruption: diff --git a/test/runtests.jl b/test/runtests.jl index ea4dce3d..78b869e7 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -132,6 +132,12 @@ init_worker_code = quote if startswith(string(test), "test_sparse") filter!(ET -> !(ET <: Integer || ET <: Complex{<:Integer}), typs) end + # On Aurora's LTS stack (PVC), a ComplexF32 `cumprod` returns wrong results with + # Julia 1.13 and AcceleratedKernels 0.5.7, which scans with sub-group shuffles. Not + # reproducible on other devices, nor with the same driver on Xe-LP; see docs/src/lts.md. + if oneL0.LTS[] && test === TestSuite.test_accumulate + filter!(!=(ComplexF32), typs) + end return typs end