Skip to content

Commit 77f42a5

Browse files
authored
Use JLL binaries by default. (#367)
Fixes #328 (as well as #373 and #376). - Will use BinaryBuilder-provided MPICH / MicrosoftMPI by default - Provides override mechanism to use system MPI - Saves these preferences in ~/.julia/prefs/MPI.toml
1 parent c74d2b7 commit 77f42a5

38 files changed

+421
-288
lines changed

.appveyor.yml

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
environment:
22
matrix:
3-
- julia_version: 1.0
43
- julia_version: 1.3
54
- julia_version: 1.4
5+
- julia_version: 1.4
6+
mpi_impl: msmpi
7+
JULIA_MPI_BINARY: system
68
- julia_version: nightly
79

810
platform:
@@ -24,15 +26,28 @@ notifications:
2426
on_build_failure: false
2527
on_build_status_changed: false
2628

29+
2730
install:
2831
- ps: iex ((new-object net.webclient).DownloadString("https://raw.githubusercontent.com/JuliaCI/Appveyor.jl/version-1/bin/install.ps1"))
29-
- ps: (new-object net.webclient).DownloadFile(
30-
"https://download.microsoft.com/download/A/E/0/AE002626-9D9D-448D-8197-1EA510E297CE/msmpisetup.exe",
31-
"C:\projects\MSMpiSetup.exe")
32-
- C:\projects\MSMpiSetup.exe -unattend -minimal
33-
# This shouldn't typicallybe needed: the installer adds the directory to
34-
# the PATH. For some reason this doesn't work on Appveyor
35-
- set JULIA_MPIEXEC=C:\Program Files\Microsoft MPI\Bin\mpiexec.exe
32+
33+
for:
34+
-
35+
matrix:
36+
only:
37+
- julia_version: 1.0
38+
mpi_impl: msmpi
39+
- julia_version: 1.4
40+
mpi_impl: msmpi
41+
42+
install:
43+
- ps: iex ((new-object net.webclient).DownloadString("https://raw.githubusercontent.com/JuliaCI/Appveyor.jl/version-1/bin/install.ps1"))
44+
- ps: (new-object net.webclient).DownloadFile(
45+
"https://download.microsoft.com/download/A/E/0/AE002626-9D9D-448D-8197-1EA510E297CE/msmpisetup.exe",
46+
"C:\projects\MSMpiSetup.exe")
47+
- C:\projects\MSMpiSetup.exe -unattend -minimal
48+
# This shouldn't typicallybe needed: the installer adds the directory to
49+
# the PATH. For some reason this doesn't work on Appveyor
50+
- set JULIA_MPIEXEC=C:\Program Files\Microsoft MPI\Bin\mpiexec.exe
3651

3752
build_script:
3853
- echo "%JL_BUILD_SCRIPT%"

.gitlab-ci.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,9 @@ variables:
99
OMPI_MCA_btl_vader_single_copy_mechanism: 'none' # https://github.com/open-mpi/ompi/issues/4948
1010
OMPI_MCA_plm_rsh_agent: 'sh' # the container doesn't have ssh installed, but we don't need it
1111
JULIA_CUDA_VERBOSE: 'true'
12-
JULIA_MPI_TEST_ARRAYTYPE: 'CuArray'
12+
JULIA_MPI_BINARY: "system"
1313
JULIA_MPI_PATH: "$CI_PROJECT_DIR/mpi"
14+
JULIA_MPI_TEST_ARRAYTYPE: 'CuArray'
1415

1516
openmpi:
1617
stage: build

.travis.yml

Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,10 @@ os:
55
- linux
66
- osx
77

8+
# requires MacOS 10.14
9+
osx_image: xcode11.4
10+
811
julia:
9-
- 1.0
1012
- 1.3
1113
- 1.4
1214
- nightly
@@ -24,17 +26,27 @@ cache:
2426
directories:
2527
- $HOME/.ccache
2628
- $HOME/.julia/registries # can we cache all of .julia?
29+
- $HOME/.julia/artifacts
2730

2831
env:
32+
- MPI_IMPL=none
33+
- MPI_IMPL=none
34+
JULIA_MPI_BINARY=OpenMPI_jll
35+
JULIA_MPIEXEC_TEST_ARGS="--oversubscribe"
2936
- MPI_IMPL=mpich
37+
JULIA_MPI_BINARY=system
3038
- MPI_IMPL=openmpi
31-
JULIA_MPIEXEC_ARGS="--oversubscribe"
39+
JULIA_MPI_BINARY=system
40+
JULIA_MPIEXEC_TEST_ARGS="--oversubscribe"
3241
- MPI_IMPL=intelmpi
42+
JULIA_MPI_BINARY=system
3343
- MPI_IMPL=mpich
34-
JULIA_MPI_ABI=UnknownABI
44+
JULIA_MPI_BINARY=system
45+
JULIA_MPI_ABI=unknown
3546
- MPI_IMPL=openmpi
36-
JULIA_MPI_ABI=UnknownABI
37-
JULIA_MPIEXEC_ARGS="--oversubscribe"
47+
JULIA_MPI_BINARY=system
48+
JULIA_MPI_ABI=unknown
49+
JULIA_MPIEXEC_TEST_ARGS="--oversubscribe"
3850

3951
matrix:
4052
allow_failures: # issue 262
@@ -43,16 +55,20 @@ matrix:
4355
env: MPI_IMPL=openmpi
4456
exclude:
4557
- os: osx
46-
env: MPI_IMPL=intelmpi
47-
58+
env: MPI_IMPL=intelmpi JULIA_MPI_BINARY=system
4859
before_install:
4960
- sh ./conf/travis-install-mpi.sh $MPI_IMPL
5061
- |
5162
if [ "$TRAVIS_OS_NAME" == "linux" ]; then
5263
if [ "$MPI_IMPL" == "intelmpi" ]; then
5364
source $HOME/intel/compilers_and_libraries/linux/mpi/intel64/bin/mpivars.sh release
54-
else
55-
export JULIA_MPI_PATH=$HOME/$MPI_IMPL;
65+
elif [ "$MPI_IMPL" != "none" ]; then
66+
export JULIA_MPI_PATH=$HOME/$MPI_IMPL
67+
fi
68+
elif [ "$TRAVIS_OS_NAME" == "osx" ]; then
69+
if [ "$MPI_IMPL" != "none" ]; then
70+
# dlopen on Julia 1.4 no longer searches /usr/local/lib on Mac
71+
export JULIA_MPI_PATH="/usr/local"
5672
fi
5773
fi
5874
# Work around OpenMPI attempting to create overly long temporary

Project.toml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ version = "0.13.1"
77
Distributed = "8ba89e20-285c-5b6f-9357-94700520ee1b"
88
DocStringExtensions = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae"
99
Libdl = "8f399da3-3557-5675-b5ff-fb832c97cbdb"
10+
MPICH_jll = "7cb0a576-ebde-5e09-9194-50597f1243b4"
11+
MicrosoftMPI_jll = "9237b28f-5490-5468-be7b-bb81f5f5e6cf"
12+
OpenMPI_jll = "fe0851c0-eecd-5654-98d4-656369965a5c"
13+
Pkg = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f"
1014
Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"
1115
Requires = "ae029012-a4dd-5104-9daa-d747884805df"
1216
Serialization = "9e88b42a-f829-5b0c-bbe9-9e923198166b"

conf/travis-install-mpi.sh

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,15 @@ MPICHVER=3.3.2
1212
IMPIVER=2019.4.243
1313
case "$os" in
1414
Darwin)
15-
brew update
16-
brew upgrade cmake
1715
case "$MPI_IMPL" in
16+
none)
17+
;;
1818
mpich|mpich3)
19+
brew update
1920
brew install mpich
2021
;;
2122
openmpi)
23+
brew update
2224
brew install openmpi
2325
;;
2426
*)
@@ -29,15 +31,19 @@ case "$os" in
2931
;;
3032

3133
Linux)
32-
sudo apt-get update -q
3334
case "$MPI_IMPL" in
35+
none)
36+
;;
3437
mpich1)
38+
sudo apt-get update -q
3539
sudo apt-get install -y gfortran mpich-shmem-bin libmpich-shmem1.0-dev
3640
;;
3741
mpich2)
42+
sudo apt-get update -q
3843
sudo apt-get install -y gfortran mpich2 libmpich2-3 libmpich2-dev
3944
;;
4045
mpich|mpich3)
46+
sudo apt-get update -q
4147
sudo apt-get install -y gfortran hwloc ccache
4248
sudo /usr/sbin/update-ccache-symlinks
4349
export PATH="/usr/lib/ccache:$PATH"
@@ -49,6 +55,7 @@ case "$os" in
4955
sudo make install > /dev/null
5056
;;
5157
openmpi)
58+
sudo apt-get update -q
5259
sudo apt-get install -y gfortran ccache
5360
sudo /usr/sbin/update-ccache-symlinks
5461
export PATH="/usr/lib/ccache:$PATH"

0 commit comments

Comments
 (0)