Always ensure consistency of new MPI datatypes #1402
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Unit Tests | |
on: | |
pull_request: | |
paths: | |
- '.github/workflows/UnitTests.yml' | |
- 'bin/**' | |
- 'deps/**' | |
- 'src/**' | |
- 'test/**' | |
- 'lib/**' | |
push: | |
branches: | |
- master | |
- release-* | |
paths: | |
- '.github/workflows/UnitTests.yml' | |
- 'bin/**' | |
- 'deps/**' | |
- 'src/**' | |
- 'test/**' | |
- 'lib/**' | |
concurrency: | |
# Skip intermediate builds: always. | |
# Cancel intermediate builds: always. | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
test-default: | |
timeout-minutes: 20 | |
strategy: | |
matrix: | |
os: | |
- macos-13 | |
- ubuntu-latest | |
- windows-latest | |
julia_version: | |
- "1.6" | |
- "1" | |
- "nightly" | |
julia_arch: [x64, x86] | |
exclude: | |
- os: macos-13 | |
julia_arch: x86 | |
include: | |
- os: macos-14 | |
julia_arch: "aarch64" | |
julia_version: "1" | |
fail-fast: false | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- uses: julia-actions/setup-julia@v2 | |
with: | |
arch: ${{ matrix.julia_arch }} | |
version: ${{ matrix.julia_version }} | |
- uses: julia-actions/cache@v2 | |
- name: add MPIPreferences | |
shell: julia --color=yes --project=. {0} | |
run: | | |
using Pkg | |
Pkg.develop(path="lib/MPIPreferences") | |
- uses: julia-actions/julia-runtest@v1 | |
- uses: julia-actions/julia-processcoverage@v1 | |
- uses: codecov/codecov-action@v4 | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} | |
files: lcov.info | |
- uses: julia-actions/julia-uploadcoveralls@v1 | |
continue-on-error: true | |
env: | |
COVERALLS_TOKEN: ${{ secrets.COVERALLS_TOKEN }} | |
test-openmpi-jll: | |
timeout-minutes: 20 | |
strategy: | |
matrix: | |
os: | |
- macos-13 | |
- ubuntu-latest | |
julia_version: | |
- "1.6" | |
- "1" | |
- "nightly" | |
julia_arch: [x64] | |
fail-fast: false | |
env: | |
JULIA_MPI_TEST_BINARY: OpenMPI_jll | |
JULIA_MPI_TEST_ABI: OpenMPI | |
OMPI_MCA_btl_base_warn_component_unused: 0 | |
OMPI_MCA_rmaps_base_oversubscribe: true | |
# Allow oversubscription | |
PRTE_MCA_rmaps_default_mapping_policy: :oversubscribe | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- uses: julia-actions/setup-julia@v2 | |
with: | |
arch: ${{ matrix.julia_arch }} | |
version: ${{ matrix.julia_version }} | |
- uses: julia-actions/cache@v2 | |
- name: add MPIPreferences | |
shell: julia --color=yes --project=. {0} | |
run: | | |
using Pkg | |
Pkg.develop(path="lib/MPIPreferences") | |
- name: use OpenMPI_jll | |
shell: julia --color=yes --project=test {0} | |
run: | | |
using Pkg | |
Pkg.develop(path="lib/MPIPreferences") | |
using MPIPreferences | |
MPIPreferences.use_jll_binary("OpenMPI_jll", export_prefs=true) | |
rm("test/Manifest.toml") | |
- uses: julia-actions/julia-runtest@v1 | |
test-system-brew: | |
timeout-minutes: 20 | |
strategy: | |
matrix: | |
os: | |
- macos-13 | |
- macos-14 | |
mpi: | |
- mpich | |
- openmpi | |
julia_version: | |
- "1" | |
julia_arch: | |
- "x64" | |
- "aarch64" | |
exclude: | |
- os: macos-13 | |
julia_arch: "aarch64" | |
- os: macos-14 | |
julia_arch: "x64" | |
fail-fast: false | |
runs-on: ${{ matrix.os }} | |
env: | |
JULIA_MPI_TEST_BINARY: system | |
ZES_ENABLE_SYSMAN: 1 # https://github.com/open-mpi/ompi/issues/10142 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install MPI via homebrew | |
run: | | |
brew install "${{ matrix.mpi }}" | |
- uses: julia-actions/setup-julia@v2 | |
with: | |
version: ${{ matrix.julia_version }} | |
arch: ${{ matrix.julia_arch }} | |
- uses: julia-actions/cache@v2 | |
- name: add MPIPreferences | |
shell: julia --color=yes --project=. {0} | |
run: | | |
using Pkg | |
Pkg.develop(path="lib/MPIPreferences") | |
- name: use system MPI | |
shell: julia --color=yes --project=. {0} | |
run: | | |
using MPIPreferences | |
mpi_prefix = readchomp(`brew --prefix ${{ matrix.mpi }}`) | |
libdir = joinpath(mpi_prefix, "lib") | |
MPIPreferences.use_system_binary(; extra_paths=[libdir]) | |
- uses: julia-actions/julia-runtest@v1 | |
env: | |
# TODO: Only disable this test for MPICH. OpenMPI works fine. | |
JULIA_MPI_TEST_DISABLE_REDUCE_ON_APPLE: 1 | |
test-system-apt: | |
timeout-minutes: 20 | |
strategy: | |
matrix: | |
mpi: | |
- libmpich-dev | |
- libopenmpi-dev | |
julia_version: | |
- "1" | |
fail-fast: false | |
runs-on: ubuntu-20.04 | |
env: | |
JULIA_MPI_TEST_BINARY: system | |
OMPI_MCA_btl_base_warn_component_unused: 0 | |
OMPI_MCA_rmaps_base_oversubscribe: true | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install MPI via apt | |
run: | | |
sudo apt-get update | |
sudo apt-get install $MPI | |
env: | |
MPI: ${{ matrix.mpi }} | |
- uses: julia-actions/setup-julia@v2 | |
with: | |
version: ${{ matrix.julia_version }} | |
- uses: julia-actions/cache@v2 | |
- name: add MPIPreferences | |
shell: julia --color=yes --project=. {0} | |
run: | | |
using Pkg | |
Pkg.develop(path="lib/MPIPreferences") | |
- name: use system MPI | |
shell: julia --color=yes --project=. {0} | |
run: | | |
using MPIPreferences | |
MPIPreferences.use_system_binary() | |
- uses: julia-actions/julia-runtest@v1 | |
test-intel-linux: | |
timeout-minutes: 20 | |
strategy: | |
matrix: | |
include: | |
- container: ghcr.io/juliaparallel/github-actions-buildcache:intel-mpi-jq | |
name: "Intel MPI 2019.9.304" | |
- container: ghcr.io/juliaparallel/github-actions-buildcache:intel-oneapi-mpi-jq | |
name: "Intel oneAPI MPI 2021.11.0" | |
fail-fast: false | |
runs-on: ubuntu-latest | |
container: ${{ matrix.container }} | |
name: "Test ${{ matrix.name }}" | |
env: | |
JULIA_MPI_TEST_BINARY: system | |
JULIA_MPI_TEST_ABI: MPICH | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- uses: julia-actions/setup-julia@v2 | |
with: | |
version: "1" | |
- uses: julia-actions/cache@v2 | |
- name: add MPIPreferences | |
shell: julia --color=yes --project=. {0} | |
run: | | |
using Pkg | |
Pkg.develop(path="lib/MPIPreferences") | |
- name: use system MPI | |
run: | | |
julia --color=yes --project=. -e ' | |
using MPIPreferences | |
MPIPreferences.use_system_binary()' | |
- uses: julia-actions/julia-runtest@v1 | |
test-system-msmpi: | |
timeout-minutes: 20 | |
strategy: | |
matrix: | |
julia_version: | |
- "1" | |
fail-fast: false | |
runs-on: windows-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Download Microsoft MPI | |
run: (new-object net.webclient).DownloadFile("https://download.microsoft.com/download/a/5/2/a5207ca5-1203-491a-8fb8-906fd68ae623/msmpisetup.exe", "msmpisetup.exe") | |
shell: powershell | |
- name: Install Microsoft MPI | |
run: msmpisetup.exe -unattend -minimal | |
shell: cmd | |
- uses: julia-actions/setup-julia@v2 | |
with: | |
version: ${{ matrix.julia_version }} | |
- uses: julia-actions/cache@v2 | |
- name: add MPIPreferences | |
shell: julia --color=yes --project=. {0} | |
run: | | |
using Pkg | |
Pkg.develop(path="lib/MPIPreferences") | |
- name: add MPIPreferences, use system | |
shell: julia --color=yes --project=test {0} | |
run: | | |
using Pkg | |
Pkg.develop(path="lib/MPIPreferences") | |
using MPIPreferences | |
MPIPreferences.use_system_binary(; | |
export_prefs=true, | |
mpiexec="C:\\Program Files\\Microsoft MPI\\Bin\\mpiexec" | |
) | |
rm("test/Manifest.toml") | |
- uses: julia-actions/julia-runtest@v1 | |
test-mpitrampoline-jll: | |
timeout-minutes: 20 | |
strategy: | |
matrix: | |
os: | |
- macos-13 | |
- ubuntu-latest | |
mpi: [mpitrampoline] | |
julia_version: | |
- "1.6" | |
- "1" | |
- "nightly" | |
julia_arch: | |
- x64 | |
- x86 | |
exclude: | |
- os: macos-13 | |
julia_arch: x86 | |
fail-fast: false | |
runs-on: ${{ matrix.os }} | |
env: | |
JULIA_MPI_TEST_BINARY: MPItrampoline_jll | |
JULIA_MPI_TEST_ABI: MPItrampoline | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- uses: julia-actions/setup-julia@v2 | |
with: | |
version: ${{ matrix.julia_version }} | |
- uses: julia-actions/cache@v2 | |
- name: add MPIPreferences | |
shell: julia --color=yes --project=. {0} | |
run: | | |
using Pkg | |
Pkg.develop(path="lib/MPIPreferences") | |
- name: use MPItrampoline_jll | |
shell: julia --color=yes --project=test {0} | |
run: | | |
using Pkg | |
Pkg.develop(path="lib/MPIPreferences") | |
using MPIPreferences | |
MPIPreferences.use_jll_binary("MPItrampoline_jll", export_prefs=true) | |
rm("test/Manifest.toml") | |
- uses: julia-actions/julia-runtest@v1 | |
test-mpitrampoline-system-apt: | |
timeout-minutes: 20 | |
strategy: | |
matrix: | |
mpi: | |
- libmpich-dev | |
- libopenmpi-dev | |
julia_version: | |
- "1" | |
# We don't need to test all combinations | |
# - "1.7" | |
# - "nightly" | |
MPIWrapper: | |
- "2.11.0" | |
fail-fast: false | |
runs-on: ubuntu-20.04 | |
env: | |
JULIA_MPI_TEST_BINARY: MPItrampoline_jll | |
JULIA_MPI_TEST_ABI: MPItrampoline | |
MPITRAMPOLINE_LIB: /usr/local/lib/libmpiwrapper.so | |
MPITRAMPOLINE_MPIEXEC: /usr/bin/mpiexec | |
OMPI_MCA_btl_base_warn_component_unused: 0 | |
OMPI_MCA_rmaps_base_oversubscribe: true | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install MPI via apt | |
run: | | |
sudo apt-get update | |
sudo apt-get install $MPI | |
env: | |
MPI: ${{ matrix.mpi }} | |
- name: Build MPIwrapper | |
run: | | |
wget https://github.com/eschnett/MPIwrapper/archive/refs/tags/v${MPIWrapper}.tar.gz | |
tar xzf v${MPIWrapper}.tar.gz | |
cd MPIwrapper-* | |
cmake -DMPIEXEC_EXECUTABLE=mpiexec -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=/usr/local . | |
cmake --build . | |
sudo cmake --install . | |
env: | |
MPIWrapper: ${{matrix.MPIWrapper}} | |
- uses: julia-actions/setup-julia@v2 | |
with: | |
version: ${{ matrix.julia_version }} | |
- uses: julia-actions/cache@v2 | |
- name: add MPIPreferences | |
shell: julia --color=yes --project=. {0} | |
run: | | |
using Pkg | |
Pkg.develop(path="lib/MPIPreferences") | |
- name: use MPItrampoline_jll | |
shell: julia --color=yes --project=test {0} | |
run: | | |
using Pkg | |
Pkg.develop(path="lib/MPIPreferences") | |
using MPIPreferences | |
MPIPreferences.use_jll_binary("MPItrampoline_jll", export_prefs=true) | |
rm("test/Manifest.toml") | |
- uses: julia-actions/julia-runtest@v1 | |
test-mpitrampoline-oneapi-linux: | |
timeout-minutes: 20 | |
strategy: | |
matrix: | |
julia_version: | |
- "1" | |
MPIWrapper: | |
- "2.11.0" | |
fail-fast: false | |
runs-on: ubuntu-latest | |
container: ghcr.io/juliaparallel/github-actions-buildcache:intel-oneapi-mpi-jq | |
env: | |
JULIA_MPI_TEST_BINARY: MPItrampoline_jll | |
JULIA_MPI_TEST_ABI: MPItrampoline | |
MPITRAMPOLINE_LIB: /usr/local/lib/libmpiwrapper.so | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Set MPITRAMPOLINE_MPIEXEC | |
run: echo "MPITRAMPOLINE_MPIEXEC=$(which mpiexec)" >> "${GITHUB_ENV}" | |
- name: Build MPIwrapper | |
run: | | |
apt-get update | |
apt-get install -y wget cmake gcc g++ gfortran python3 | |
wget https://github.com/eschnett/MPIwrapper/archive/refs/tags/v${MPIWrapper}.tar.gz | |
tar xzf v${MPIWrapper}.tar.gz | |
cd MPIwrapper-* | |
cmake \ | |
-DMPIEXEC_EXECUTABLE=mpiexec \ | |
-DCMAKE_BUILD_TYPE=Debug \ | |
-DCMAKE_INSTALL_PREFIX=/usr/local \ | |
. | |
cmake --build . | |
cmake --install . | |
env: | |
MPIWrapper: ${{matrix.MPIWrapper}} | |
- uses: julia-actions/setup-julia@v2 | |
with: | |
version: ${{ matrix.julia_version }} | |
- uses: julia-actions/cache@v2 | |
- name: add MPIPreferences | |
shell: julia --color=yes --project=. {0} | |
run: | | |
using Pkg | |
Pkg.develop(path="lib/MPIPreferences") | |
- name: use MPItrampoline_jll | |
shell: julia --color=yes --project=test {0} | |
run: | | |
using Pkg | |
Pkg.develop(path="lib/MPIPreferences") | |
using MPIPreferences | |
MPIPreferences.use_jll_binary("MPItrampoline_jll", export_prefs=true) | |
rm("test/Manifest.toml") | |
- uses: julia-actions/julia-runtest@v1 | |
test-spack-mvapich: | |
timeout-minutes: 20 | |
strategy: | |
matrix: | |
include: | |
- container: ghcr.io/juliaparallel/github-actions-buildcache:mvapich2-jq | |
name: "MVAPICH 2.3.7" | |
- container: ghcr.io/juliaparallel/github-actions-buildcache:mvapich3-jq | |
name: "MVAPICH 3.0" | |
fail-fast: false | |
runs-on: ubuntu-22.04 | |
container: ${{ matrix.container }} | |
name: "Test ${{ matrix.name }}" | |
env: | |
JULIA_MPI_TEST_BINARY: system | |
JULIA_MPI_TEST_EXCLUDE: test_spawn.jl | |
MV2_SMP_USE_CMA: 0 | |
# Work around issue with affinity not set. Ref: | |
# https://github.com/JuliaParallel/MPI.jl/pull/810#issuecomment-1920255386 | |
MVP_ENABLE_AFFINITY: 0 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- uses: julia-actions/setup-julia@v2 | |
with: | |
version: "1" | |
- uses: julia-actions/cache@v2 | |
- name: add MPIPreferences | |
shell: julia --color=yes --project=. {0} | |
run: | | |
using Pkg | |
Pkg.develop(path="lib/MPIPreferences") | |
Pkg.precompile() | |
- name: use system MPI | |
shell: julia --color=yes --project=. {0} | |
run: | | |
using MPIPreferences | |
MPIPreferences.use_system_binary() | |
- uses: julia-actions/julia-runtest@v1 |