From 709b4ee85e957060cfb5e16ec2f047cf76dfed43 Mon Sep 17 00:00:00 2001 From: Andreas Noack Date: Tue, 3 Mar 2026 21:51:49 +0100 Subject: [PATCH 01/14] Replace Travis CI with GitHub Actions Remove .travis.yml and add .github/workflows/ci.yml. Tests Julia 1 on Linux (x64) and macOS (Apple Silicon), and Julia pre on Linux. Co-Authored-By: Claude Opus 4.6 --- .github/workflows/ci.yml | 38 ++++++++++++++++++++++++++++++++++++++ .travis.yml | 13 ------------- 2 files changed, 38 insertions(+), 13 deletions(-) create mode 100644 .github/workflows/ci.yml delete mode 100644 .travis.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..79f3e46 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,38 @@ +name: CI +on: + push: + branches: + - master + pull_request: +jobs: + test: + name: Julia ${{ matrix.version }} - ${{ matrix.os }} - ${{ matrix.arch }} + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + version: + - '1' + os: + - ubuntu-latest + - macos-latest + arch: + - x64 + exclude: + - os: macos-latest + arch: x64 + include: + - os: macos-latest + arch: aarch64 + version: '1' + - os: ubuntu-latest + arch: x64 + version: 'pre' + steps: + - uses: actions/checkout@v4 + - uses: julia-actions/setup-julia@v2 + with: + version: ${{ matrix.version }} + - uses: julia-actions/cache@v2 + - uses: julia-actions/julia-buildpkg@v1 + - uses: julia-actions/julia-runtest@v1 diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index e77c2b9..0000000 --- a/.travis.yml +++ /dev/null @@ -1,13 +0,0 @@ -language: julia -osx_image: xcode11.4 -notifications: - email: false -os: - - linux - - osx -julia: - - 1 - - nightly -matrix: - allow_failures: - - julia: nightly From f8519400332dfe699f541e82f06159512f2e0422 Mon Sep 17 00:00:00 2001 From: Andreas Noack Date: Tue, 3 Mar 2026 22:11:51 +0100 Subject: [PATCH 02/14] Keep Grid reference in DistSparseMatrix and DistMultiVec Prevent the default Grid from being garbage collected while distributed matrices or vectors are still alive, matching the pattern already used by DistMatrix. Co-Authored-By: Claude Opus 4.6 --- src/core/distmultivec.jl | 3 ++- src/core/distsparsematrix.jl | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/core/distmultivec.jl b/src/core/distmultivec.jl index a97e2c7..c1f202f 100644 --- a/src/core/distmultivec.jl +++ b/src/core/distmultivec.jl @@ -1,5 +1,6 @@ mutable struct DistMultiVec{T} <: ElementalMatrix{T} obj::Ptr{Cvoid} + grid::Grid # keep the grid around to avoid that it's freed before the matrix end for (elty, ext) in ((:ElInt, :i), @@ -21,7 +22,7 @@ for (elty, ext) in ((:ElInt, :i), ElError(ccall(($(string("ElDistMultiVecCreate_", ext)), libEl), Cuint, (Ref{Ptr{Cvoid}}, ElComm), obj, cm)) - A = DistMultiVec{$elty}(obj[]) + A = DistMultiVec{$elty}(obj[], DefaultGrid[]) finalizer(destroy, A) return A end diff --git a/src/core/distsparsematrix.jl b/src/core/distsparsematrix.jl index 131b210..9e9ebb3 100644 --- a/src/core/distsparsematrix.jl +++ b/src/core/distsparsematrix.jl @@ -1,5 +1,6 @@ mutable struct DistSparseMatrix{T} <: ElementalMatrix{T} obj::Ptr{Cvoid} + grid::Grid # keep the grid around to avoid that it's freed before the matrix end for (elty, ext) in ((:ElInt, :i), @@ -21,7 +22,7 @@ for (elty, ext) in ((:ElInt, :i), ElError(ccall(($(string("ElDistSparseMatrixCreate_", ext)), libEl), Cuint, (Ref{Ptr{Cvoid}}, ElComm), obj, comm)) - A = DistSparseMatrix{$elty}(obj[]) + A = DistSparseMatrix{$elty}(obj[], DefaultGrid[]) finalizer(destroy, A) return A end From 546f121ed4a97c8f587f725dde4930848547125f Mon Sep 17 00:00:00 2001 From: Andreas Noack Date: Tue, 3 Mar 2026 22:56:05 +0100 Subject: [PATCH 03/14] Constrain MPICH_jll to v3/v4 to avoid ABI break in v5 MPICH 5.0 adopted the standard MPI ABI where MPI_Comm changed from int to a pointer type. The pre-compiled Elemental binary is incompatible with this new ABI, causing segfaults in Grid::VCSize(). Co-Authored-By: Claude Opus 4.6 --- Project.toml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Project.toml b/Project.toml index 20f1d0a..d973c1a 100644 --- a/Project.toml +++ b/Project.toml @@ -8,10 +8,12 @@ DistributedArrays = "aaf54ef3-cdf8-58ed-94cc-d582ad619b94" Elemental_jll = "c2e960f2-a21d-557e-aa36-859d46eed7e8" Libdl = "8f399da3-3557-5675-b5ff-fb832c97cbdb" LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" +MPICH_jll = "7cb0a576-ebde-5e09-9194-50597f1243b4" [compat] DistributedArrays = "0.5, 0.6" Elemental_jll = "0.87" +MPICH_jll = "3, 4" julia = "1.3" [extras] From 2b0e8c3cc493dfd43410079b3130e4859ddaa960 Mon Sep 17 00:00:00 2001 From: Andreas Noack Date: Wed, 4 Mar 2026 06:28:25 +0100 Subject: [PATCH 04/14] Constrain MPICH_jll to v3 to match libmpi.so.12 ABI The Elemental binary was linked against libmpi.so.12 (MPICH 3.x). MPICH 4.x may have internal ABI differences despite the same soname. Co-Authored-By: Claude Opus 4.6 --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index d973c1a..258221b 100644 --- a/Project.toml +++ b/Project.toml @@ -13,7 +13,7 @@ MPICH_jll = "7cb0a576-ebde-5e09-9194-50597f1243b4" [compat] DistributedArrays = "0.5, 0.6" Elemental_jll = "0.87" -MPICH_jll = "3, 4" +MPICH_jll = "3" julia = "1.3" [extras] From 44a445027d71643b144a841a6064fda10819c0e5 Mon Sep 17 00:00:00 2001 From: Andreas Noack Date: Wed, 4 Mar 2026 07:16:47 +0100 Subject: [PATCH 05/14] Add Julia 1.10 to CI matrix to test older runtime The Elemental binary segfaults on Julia 1.12 in Grid::VCSize() regardless of MPICH version. Adding 1.10 to determine if this is a Julia version compatibility issue. Co-Authored-By: Claude Opus 4.6 --- .github/workflows/ci.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 79f3e46..bc0a826 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -12,6 +12,7 @@ jobs: fail-fast: false matrix: version: + - '1.10' - '1' os: - ubuntu-latest @@ -22,6 +23,9 @@ jobs: - os: macos-latest arch: x64 include: + - os: macos-latest + arch: aarch64 + version: '1.10' - os: macos-latest arch: aarch64 version: '1' From f37cb5a7e6389ab4abc1ef6432c7860857e24f35 Mon Sep 17 00:00:00 2001 From: Andreas Noack Date: Wed, 4 Mar 2026 07:57:21 +0100 Subject: [PATCH 06/14] Fix ccall signatures: pass Grid instead of MPI communicator The C interface functions ElDistSparseMatrixCreate and ElDistMultiVecCreate take an ElConstGrid (Grid pointer), not an MPI_Comm. The Julia wrappers were incorrectly passing an ElComm integer which got reinterpret_cast'd as a Grid pointer, causing a null pointer dereference in Grid::VCSize(). Also revert the MPICH_jll version constraint and Julia 1.10 CI entry since those were not the root cause. Co-Authored-By: Claude Opus 4.6 --- .github/workflows/ci.yml | 4 ---- Project.toml | 2 -- src/core/distmultivec.jl | 12 ++++++------ src/core/distsparsematrix.jl | 12 ++++++------ 4 files changed, 12 insertions(+), 18 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index bc0a826..79f3e46 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -12,7 +12,6 @@ jobs: fail-fast: false matrix: version: - - '1.10' - '1' os: - ubuntu-latest @@ -23,9 +22,6 @@ jobs: - os: macos-latest arch: x64 include: - - os: macos-latest - arch: aarch64 - version: '1.10' - os: macos-latest arch: aarch64 version: '1' diff --git a/Project.toml b/Project.toml index 258221b..20f1d0a 100644 --- a/Project.toml +++ b/Project.toml @@ -8,12 +8,10 @@ DistributedArrays = "aaf54ef3-cdf8-58ed-94cc-d582ad619b94" Elemental_jll = "c2e960f2-a21d-557e-aa36-859d46eed7e8" Libdl = "8f399da3-3557-5675-b5ff-fb832c97cbdb" LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" -MPICH_jll = "7cb0a576-ebde-5e09-9194-50597f1243b4" [compat] DistributedArrays = "0.5, 0.6" Elemental_jll = "0.87" -MPICH_jll = "3" julia = "1.3" [extras] diff --git a/src/core/distmultivec.jl b/src/core/distmultivec.jl index c1f202f..e0220a7 100644 --- a/src/core/distmultivec.jl +++ b/src/core/distmultivec.jl @@ -17,12 +17,12 @@ for (elty, ext) in ((:ElInt, :i), return nothing end - function DistMultiVec(::Type{$elty}, cm::ElComm = MPI.CommWorld[]) + function DistMultiVec(::Type{$elty}, grid::Grid = DefaultGrid[]) obj = Ref{Ptr{Cvoid}}(C_NULL) ElError(ccall(($(string("ElDistMultiVecCreate_", ext)), libEl), Cuint, - (Ref{Ptr{Cvoid}}, ElComm), - obj, cm)) - A = DistMultiVec{$elty}(obj[], DefaultGrid[]) + (Ref{Ptr{Cvoid}}, Ptr{Cvoid}), + obj, grid.obj)) + A = DistMultiVec{$elty}(obj[], grid) finalizer(destroy, A) return A end @@ -118,8 +118,8 @@ end getindex(x::DistMultiVec, i, j) = get(x, i, j) -function similar(::DistMultiVec, ::Type{T}, sz::Dims, cm::ElComm = MPI.CommWorld[]) where {T} - A = DistMultiVec(T, cm) +function similar(::DistMultiVec, ::Type{T}, sz::Dims, grid::Grid = DefaultGrid[]) where {T} + A = DistMultiVec(T, grid) resize!(A, sz...) return A end diff --git a/src/core/distsparsematrix.jl b/src/core/distsparsematrix.jl index 9e9ebb3..98eecde 100644 --- a/src/core/distsparsematrix.jl +++ b/src/core/distsparsematrix.jl @@ -17,12 +17,12 @@ for (elty, ext) in ((:ElInt, :i), return nothing end - function DistSparseMatrix(::Type{$elty}, comm::ElComm = MPI.CommWorld[]) + function DistSparseMatrix(::Type{$elty}, grid::Grid = DefaultGrid[]) obj = Ref{Ptr{Cvoid}}(C_NULL) ElError(ccall(($(string("ElDistSparseMatrixCreate_", ext)), libEl), Cuint, - (Ref{Ptr{Cvoid}}, ElComm), - obj, comm)) - A = DistSparseMatrix{$elty}(obj[], DefaultGrid[]) + (Ref{Ptr{Cvoid}}, Ptr{Cvoid}), + obj, grid.obj)) + A = DistSparseMatrix{$elty}(obj[], grid) finalizer(destroy, A) return A end @@ -113,8 +113,8 @@ for (elty, ext) in ((:ElInt, :i), end # The other constructors don't have a version with dimensions. Should they, or should this one go? -function DistSparseMatrix(::Type{T}, m::Integer, n::Integer, comm::ElComm = MPI.CommWorld[]) where {T} - A = DistSparseMatrix(T, comm) +function DistSparseMatrix(::Type{T}, m::Integer, n::Integer, grid::Grid = DefaultGrid[]) where {T} + A = DistSparseMatrix(T, grid) resize!(A, m, n) return A end From 1dd955cb1f73f18afe500879da93d4c8e4c3fd82 Mon Sep 17 00:00:00 2001 From: Andreas Noack Date: Wed, 4 Mar 2026 08:03:16 +0100 Subject: [PATCH 07/14] Remove comm() for DistSparseMatrix/DistMultiVec, use grid instead ElDistSparseMatrixComm and ElDistMultiVecComm don't exist in the C API. Replace comm(A) calls with A.grid and remove the dead comm functions. Co-Authored-By: Claude Opus 4.6 --- src/core/distmultivec.jl | 8 -------- src/core/distsparsematrix.jl | 8 -------- src/lapack_like/euclidean_min.jl | 6 +++--- src/optimization/models.jl | 4 ++-- 4 files changed, 5 insertions(+), 21 deletions(-) diff --git a/src/core/distmultivec.jl b/src/core/distmultivec.jl index e0220a7..b9dfd2c 100644 --- a/src/core/distmultivec.jl +++ b/src/core/distmultivec.jl @@ -27,14 +27,6 @@ for (elty, ext) in ((:ElInt, :i), return A end - function comm(A::DistMultiVec{$elty}) - cm = Ref{ElComm}() - ElError(ccall(($(string("ElDistMultiVecComm_", ext)), libEl), Cuint, - (Ptr{Cvoid}, Ref{ElComm}), - A.obj, cm)) - return cm[] - end - function get(x::DistMultiVec{$elty}, i::Integer = size(x, 1), j::Integer = 1) v = Ref{$elty}() ElError(ccall(($(string("ElDistMultiVecGet_", ext)), libEl), Cuint, diff --git a/src/core/distsparsematrix.jl b/src/core/distsparsematrix.jl index 98eecde..d2f732c 100644 --- a/src/core/distsparsematrix.jl +++ b/src/core/distsparsematrix.jl @@ -27,14 +27,6 @@ for (elty, ext) in ((:ElInt, :i), return A end - function comm(A::DistSparseMatrix{$elty}) - cm = Ref{ElComm}() - ElError(ccall(($(string("ElDistSparseMatrixComm_", ext)), libEl), Cuint, - (Ptr{Cvoid}, Ref{ElComm}), - A.obj, cm)) - return cm[] - end - function globalRow(A::DistSparseMatrix{$elty}, iLoc::Integer) i = Ref{ElInt}(0) ElError(ccall(($(string("ElDistSparseMatrixGlobalRow_", ext)), libEl), Cuint, diff --git a/src/lapack_like/euclidean_min.jl b/src/lapack_like/euclidean_min.jl index 9550f1a..90d1cce 100644 --- a/src/lapack_like/euclidean_min.jl +++ b/src/lapack_like/euclidean_min.jl @@ -23,7 +23,7 @@ function leastSquares(A::DistMatrix{T}, B::DistMatrix{T}; end function leastSquares(A::DistSparseMatrix{T}, B::DistMultiVec{T}; orientation::Orientation = NORMAL) where {T} - X = DistMultiVec(T, comm(A)) + X = DistMultiVec(T, A.grid) return leastSquares!(A, B, X, orientation = orientation) end @@ -49,7 +49,7 @@ function bpdn(A::DistMatrix{T}, B::DistMatrix{T}, lambda::T) where {T} return bpdn!(A, B, lambda, X) end function bpdn(A::DistSparseMatrix{T}, B::DistMultiVec{T}, lambda) where {T} - X = DistMultiVec(T, comm(A)) + X = DistMultiVec(T, A.grid) return bpdn!(A, B, lambda, X) end @@ -78,6 +78,6 @@ function ridge(A::DistMatrix{T}, B::DistMatrix{T}, gamma::T; ka...) where {T} return ridge!(A, B, gamma, X; ka...) end function ridge(A::DistSparseMatrix{T}, B::DistMultiVec{T}, gamma::T; ka...) where {T} - X = DistMultiVec(T, comm(A)) + X = DistMultiVec(T, A.grid) return ridge!(A, B, gamma, X; ka...) end \ No newline at end of file diff --git a/src/optimization/models.jl b/src/optimization/models.jl index 96b504c..37b2bcb 100644 --- a/src/optimization/models.jl +++ b/src/optimization/models.jl @@ -33,11 +33,11 @@ function lav(A::DistMatrix{T}, b::DistMatrix{T}) where {T<:Union{Float32,Float64 return lav!(A, b, x) end function lav(A::DistSparseMatrix{T}, b::DistMultiVec{T}) where {T<:Union{Float32,Float64}} - x = DistMultiVec(T, comm(A)) + x = DistMultiVec(T, A.grid) return lav!(A, b, x) end function lav(A::DistSparseMatrix{T}, b::DistMultiVec{T}, ctrl::LPAffineCtrl{T}) where {T<:Union{Float32,Float64}} - x = DistMultiVec(T, comm(A)) + x = DistMultiVec(T, A.grid) return lav!(A, b, x, ctrl) end From 4dc637405dbe93c70d72700fe030ff5188e3230e Mon Sep 17 00:00:00 2001 From: Jash Date: Mon, 9 Mar 2026 18:42:03 +0530 Subject: [PATCH 08/14] Increase timeout for CI jobs and handle test process timeouts in runtests --- .github/workflows/ci.yml | 1 + test/runtests.jl | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 79f3e46..e3184c4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -8,6 +8,7 @@ jobs: test: name: Julia ${{ matrix.version }} - ${{ matrix.os }} - ${{ matrix.arch }} runs-on: ${{ matrix.os }} + timeout-minutes: 60 strategy: fail-fast: false matrix: diff --git a/test/runtests.jl b/test/runtests.jl index 26dc367..8d2fdd9 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -43,7 +43,12 @@ function runtests_repl() # FixMe! We temporarily run Finalize() explictly on the workers because the atexit hook # doesn't seem to be correctly triggered on workers as of 31 October 2018. cmdstr = "using Distributed, MPIClusterManagers; man = MPIManager(np = $nprocs); addprocs(man); include(\"$(joinpath(@__DIR__, f))\"); asyncmap(p -> remotecall_fetch(() -> Elemental.Finalize(), p), workers())" - run(`$exename -e $cmdstr`) + proc = run(`$exename -e $cmdstr`, wait=false) + if timedwait(() -> !process_running(proc), 300.0) === :timed_out + kill(proc) + error("Test $f timed out after 5 minutes") + end + wait(proc) Base.with_output_color(:green,stdout) do io println(io,"\tSUCCESS: $f") end From b8b15c33a432af4b77c841ee28394ed79ed457e2 Mon Sep 17 00:00:00 2001 From: Jash Date: Mon, 9 Mar 2026 18:48:15 +0530 Subject: [PATCH 09/14] temp fix --- test/runtests.jl | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/test/runtests.jl b/test/runtests.jl index 8d2fdd9..64099be 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -16,7 +16,12 @@ function runtests_mpirun() for f in testfiles try mpiexec() do exec - run(`$exec -np $nprocs $(Base.julia_cmd()) $(joinpath(@__DIR__, f))`) + proc = run(`$exec -np $nprocs $(Base.julia_cmd()) $(joinpath(@__DIR__, f))`, wait=false) + if timedwait(() -> !process_running(proc), 300.0) === :timed_out + kill(proc) + error("Test $f timed out after 5 minutes") + end + wait(proc) end Base.with_output_color(:green,stdout) do io println(io,"\tSUCCESS: $f") From 20febfbc795a85c60bbbaa3da9ccef07a066de1e Mon Sep 17 00:00:00 2001 From: Jash Date: Mon, 9 Mar 2026 18:51:52 +0530 Subject: [PATCH 10/14] fix --- test/runtests.jl | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/test/runtests.jl b/test/runtests.jl index 64099be..9bd8529 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -1,5 +1,5 @@ using Test -using Elemental_jll.MPICH_jll: mpiexec +import Elemental_jll.MPICH_jll # Import all of our external dependencies to make sure they're compiled serially. using DistributedArrays @@ -13,16 +13,15 @@ function runtests_mpirun() testfiles = ["lav.jl", "lavdense.jl", "matrix.jl", "distmatrix.jl", "props.jl", "generic.jl", "spectral.jl", "tsvd.jl", "svd.jl"] nfail = 0 @info "Running Elemental.jl tests" + mpiexec = MPICH_jll.mpiexec_path for f in testfiles try - mpiexec() do exec - proc = run(`$exec -np $nprocs $(Base.julia_cmd()) $(joinpath(@__DIR__, f))`, wait=false) - if timedwait(() -> !process_running(proc), 300.0) === :timed_out - kill(proc) - error("Test $f timed out after 5 minutes") - end - wait(proc) + proc = run(`$mpiexec -np $nprocs $(Base.julia_cmd()) $(joinpath(@__DIR__, f))`, wait=false) + if timedwait(() -> !process_running(proc), 300.0) === :timed_out + kill(proc) + error("Test $f timed out after 5 minutes") end + wait(proc) Base.with_output_color(:green,stdout) do io println(io,"\tSUCCESS: $f") end From 16d0b9ae90637e5a3d0af40e3ecbd6a27b5eaddd Mon Sep 17 00:00:00 2001 From: Jash Date: Mon, 9 Mar 2026 20:29:20 +0530 Subject: [PATCH 11/14] implemented suggestion --- Project.toml | 3 ++- test/runtests.jl | 5 ++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Project.toml b/Project.toml index 20f1d0a..e4684ae 100644 --- a/Project.toml +++ b/Project.toml @@ -15,6 +15,7 @@ Elemental_jll = "0.87" julia = "1.3" [extras] +MPI = "da04e1cc-30fd-572f-bb4f-1f8673147195" MPIClusterManagers = "e7922434-ae4b-11e9-05c5-9780451d2c66" Primes = "27ebfcd6-29c5-5fa9-bf4b-fb8fc14df3ae" Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" @@ -22,4 +23,4 @@ TSVD = "9449cd9e-2762-5aa3-a617-5413e99d722e" Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" [targets] -test = ["Test", "MPIClusterManagers", "Primes", "TSVD", "Random"] +test = ["Test", "MPI", "MPIClusterManagers", "Primes", "TSVD", "Random"] diff --git a/test/runtests.jl b/test/runtests.jl index 9bd8529..75a5565 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -1,5 +1,5 @@ using Test -import Elemental_jll.MPICH_jll +using MPI: mpiexec # Import all of our external dependencies to make sure they're compiled serially. using DistributedArrays @@ -13,10 +13,9 @@ function runtests_mpirun() testfiles = ["lav.jl", "lavdense.jl", "matrix.jl", "distmatrix.jl", "props.jl", "generic.jl", "spectral.jl", "tsvd.jl", "svd.jl"] nfail = 0 @info "Running Elemental.jl tests" - mpiexec = MPICH_jll.mpiexec_path for f in testfiles try - proc = run(`$mpiexec -np $nprocs $(Base.julia_cmd()) $(joinpath(@__DIR__, f))`, wait=false) + proc = run(`$(mpiexec()) -np $nprocs $(Base.julia_cmd()) $(joinpath(@__DIR__, f))`, wait=false) if timedwait(() -> !process_running(proc), 300.0) === :timed_out kill(proc) error("Test $f timed out after 5 minutes") From ee263a57e2f160576d22c1ee36e333ea6fba7c54 Mon Sep 17 00:00:00 2001 From: Jash Date: Tue, 31 Mar 2026 17:38:47 +0530 Subject: [PATCH 12/14] Remove DistributedArrays import from runtests.jl --- test/runtests.jl | 1 - 1 file changed, 1 deletion(-) diff --git a/test/runtests.jl b/test/runtests.jl index 75a5565..b3bc79a 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -2,7 +2,6 @@ using Test using MPI: mpiexec # Import all of our external dependencies to make sure they're compiled serially. -using DistributedArrays using TSVD using Primes using MPIClusterManagers From 6c0bf425b18fa78f2b2934c7b9a0c3dd23f81bf7 Mon Sep 17 00:00:00 2001 From: Jash Date: Tue, 31 Mar 2026 22:08:22 +0530 Subject: [PATCH 13/14] Reduce matrix dimensions in lav.jl test to 12x12 for improved performance --- test/lav.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/lav.jl b/test/lav.jl index e50a307..9d1acd3 100644 --- a/test/lav.jl +++ b/test/lav.jl @@ -2,8 +2,8 @@ import Elemental const El = Elemental using LinearAlgebra: mul! -n0 = 50 -n1 = 50 +n0 = 12 +n1 = 12 testNative = true display = false worldRank = El.MPI.commRank(El.MPI.CommWorld[]) From 9f7d5b91f520521e1e0ed9ca5da6309407a8a036 Mon Sep 17 00:00:00 2001 From: Jash Date: Tue, 31 Mar 2026 22:51:20 +0530 Subject: [PATCH 14/14] fix --- test/lav.jl | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/test/lav.jl b/test/lav.jl index 9d1acd3..3e0ab9b 100644 --- a/test/lav.jl +++ b/test/lav.jl @@ -2,8 +2,8 @@ import Elemental const El = Elemental using LinearAlgebra: mul! -n0 = 12 -n1 = 12 +n0 = 50 +n1 = 50 testNative = true display = false worldRank = El.MPI.commRank(El.MPI.CommWorld[]) @@ -94,17 +94,7 @@ if display # El.print(b, "b") end -ctrl = El.LPAffineCtrl(Float64, - mehrotraCtrl=El.MehrotraCtrl(Float64, - solveCtrl=El.RegSolveCtrl(Float64, - progress=true), - print=true, - outerEquil=true, - time=true) - ) - -# elapsedLAV = @elapsed x = El.lav(A, b);#Elemental.print(A, "Matrix A") -elapsedLAV = @elapsed x = El.lav(A, b, ctrl) +elapsedLAV = @elapsed x = El.lav(A, b) if El.MPI.commRank(El.MPI.CommWorld[]) == 0 println("LAV time: $elapsedLAV seconds") @@ -165,4 +155,4 @@ end # Require the user to press a button before the figures are closed # commSize = El.mpi.Size( El.mpi.COMM_WORLD() ) -# El.Finalize() +El.Finalize()