From ec42a9e5d78da72bdbbd5263f448832487db2cb8 Mon Sep 17 00:00:00 2001 From: Michel Schanen Date: Fri, 6 Nov 2026 16:41:56 +0000 Subject: [PATCH] Revert "Skip ComplexF16 sparse tests on the LTS stack (#760)" The Aurora julia modules now load intel_gpu_umd_aicoe/2026.06.19 by default, which ships IGC 2.34.4. That includes the load/store combining fix (intel/intel-graphics-compiler@15614f2, IGC 2.26.0), so the ComplexF16 sparse reductions should be correct again on the LTS CI jobs. This reverts commit a735e805b3087baf516946b71e8ac9d62719c665. --- docs/src/lts.md | 11 +---------- test/runtests.jl | 6 ------ 2 files changed, 1 insertion(+), 16 deletions(-) diff --git a/docs/src/lts.md b/docs/src/lts.md index f8b9ab5f..fdff0b15 100644 --- a/docs/src/lts.md +++ b/docs/src/lts.md @@ -155,20 +155,11 @@ This workaround is independent of `ONEAPI_LTS` and can be enabled on its own. `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. -- **`ComplexF16` sparse reductions.** With Julia 1.13, `sum(A; dims)` and other reductions - along a dimension of a `ComplexF16` sparse matrix return wrong real parts; the imaginary - parts are correct. IGC's load/store combining packs the complex accumulator into a layout - struct, and copying that struct emits a stray move that overwrites the real field with - another lane's data. This is not specific to PVC: the LTS IGC 2.11.7 produces the same - wrong results on DG2. It was fixed upstream in IGC 2.26.0 (and 2.25.10) by - [intel/intel-graphics-compiler@15614f2](https://github.com/intel/intel-graphics-compiler/commit/15614f288101c71739ff41d4e21cef6e4dad3e8e), - which has not been backported to the 2.11 LTS line (checked up to 2.11.54). Building the - module with `-igc_opts 'EnableLdStCombine=0'` avoids it. ## 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, `ComplexF32` in the accumulate tests, `ComplexF16` in the sparse tests). 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 c43e0cca..5bbdcb1a 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -144,12 +144,6 @@ init_worker_code = quote if oneL0.LTS[] && test === TestSuite.test_accumulate filter!(!=(ComplexF32), typs) end - # The LTS IGC (2.11) miscompiles the ComplexF16 accumulator of GPUArrays' sparse - # reductions with Julia 1.13, corrupting the real parts. Fixed upstream in IGC 2.26 - # (intel/intel-graphics-compiler@15614f2), not in the LTS line; see docs/src/lts.md. - if oneL0.LTS[] && test === TestSuite.test_sparse - filter!(!=(ComplexF16), typs) - end return typs end