Skip to content

Commit fef360f

Browse files
committed
Skip threads tests with legacy Intel MPI which are known to fail
1 parent a71467b commit fef360f

File tree

1 file changed

+33
-29
lines changed

1 file changed

+33
-29
lines changed

test/runtests.jl

+33-29
Original file line numberDiff line numberDiff line change
@@ -73,39 +73,43 @@ istest(f) = endswith(f, ".jl") && startswith(f, "test_") && !in(f, excludefiles)
7373
testfiles = sort(filter(istest, readdir(testdir)))
7474

7575
@testset "$f" for f in testfiles
76-
mpiexec() do mpirun
77-
cmd(n=nprocs) = `$mpirun -n $n $(Base.julia_cmd()) --startup-file=no $(joinpath(testdir, f))`
78-
if f == "test_spawn.jl"
79-
# Some command as the others, but always use a single process
80-
run(cmd(1))
81-
elseif f == "test_threads.jl"
76+
cmd(n=nprocs) = `$(mpiexec()) -n $n $(Base.julia_cmd()) --startup-file=no $(joinpath(testdir, f))`
77+
if f == "test_spawn.jl"
78+
# Some command as the others, but always use a single process
79+
run(cmd(1))
80+
elseif f == "test_threads.jl"
81+
if MPI.MPI_LIBRARY == "IntelMPI" && MPI.MPI_LIBRARY_VERSION < v"2020"
82+
# Legacy Intel MPI (before 2020) crashes threads tests:
83+
# <https://github.com/JuliaParallel/MPI.jl/issues/725>.
84+
@test_broken false
85+
else
8286
withenv("JULIA_NUM_THREADS" => "4") do
8387
run(cmd())
8488
end
85-
elseif f == "test_error.jl"
86-
r = run(ignorestatus(cmd()))
87-
@test !success(r)
88-
elseif f == "test_errorhandler.jl" && MPI.MPI_LIBRARY in ("unknown", "FujitsuMPI")
89-
# Fujitsu MPI is known to not work with custom error handlers. Also
90-
# unknown implementations may fail for the same reason.
91-
try
92-
run(cmd())
93-
catch e
94-
@error """
95-
$(f) tests failed. This may due to the fact this implementation of MPI doesn't support custom error handlers.
96-
See the full error message for more details. Some messages may have been written above.
97-
""" exception=(e, catch_backtrace())
98-
@test_broken false
99-
end
100-
else
101-
# MPI_Reduce with MPICH 3.4.2 on macOS when root != 0 and
102-
# when recvbuf == C_NULL segfaults
103-
# <https://github.com/pmodels/mpich/issues/5700>
104-
if get(ENV, "JULIA_MPI_TEST_DISABLE_REDUCE_ON_APPLE", "") != "" && Sys.isapple() && f == "test_reduce.jl"
105-
return
106-
end
89+
end
90+
elseif f == "test_error.jl"
91+
r = run(ignorestatus(cmd()))
92+
@test !success(r)
93+
elseif f == "test_errorhandler.jl" && MPI.MPI_LIBRARY in ("unknown", "FujitsuMPI")
94+
# Fujitsu MPI is known to not work with custom error handlers. Also
95+
# unknown implementations may fail for the same reason.
96+
try
10797
run(cmd())
98+
catch e
99+
@error """
100+
$(f) tests failed. This may due to the fact this implementation of MPI doesn't support custom error handlers.
101+
See the full error message for more details. Some messages may have been written above.
102+
""" exception=(e, catch_backtrace())
103+
@test_broken false
104+
end
105+
else
106+
# MPI_Reduce with MPICH 3.4.2 on macOS when root != 0 and
107+
# when recvbuf == C_NULL segfaults
108+
# <https://github.com/pmodels/mpich/issues/5700>
109+
if get(ENV, "JULIA_MPI_TEST_DISABLE_REDUCE_ON_APPLE", "") != "" && Sys.isapple() && f == "test_reduce.jl"
110+
return
108111
end
109-
@test true
112+
run(cmd())
110113
end
114+
@test true
111115
end

0 commit comments

Comments
 (0)