Skip to content

[CI] Use Spack OCI build cache for MPI packages #1201

[CI] Use Spack OCI build cache for MPI packages

[CI] Use Spack OCI build cache for MPI packages #1201

Workflow file for this run

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-latest
# - ubuntu-latest
# - windows-latest
# julia_version:
# - "1.6"
# - "1"
# - "nightly"
# julia_arch: [x64, x86]
# exclude:
# - os: macos-latest
# julia_arch: x86
# fail-fast: false
# runs-on: ${{ matrix.os }}
# steps:
# - name: Checkout
# uses: actions/checkout@v4
# - uses: julia-actions/setup-julia@latest
# with:
# arch: ${{ matrix.julia_arch }}
# version: ${{ matrix.julia_version }}
# - uses: julia-actions/cache@v1
# - name: add MPIPreferences
# shell: julia --color=yes --project=. {0}
# run: |
# using Pkg
# Pkg.develop(path="lib/MPIPreferences")
# - uses: julia-actions/julia-runtest@latest
# - uses: julia-actions/julia-processcoverage@v1
# - uses: codecov/codecov-action@v3
# with:
# files: lcov.info
# - uses: julia-actions/julia-uploadcoveralls@v1
# env:
# COVERALLS_TOKEN: ${{ secrets.COVERALLS_TOKEN }}
# test-openmpi-jll:
# timeout-minutes: 20
# strategy:
# matrix:
# os:
# - macos-latest
# - ubuntu-latest
# julia_version:
# - "1.6"
# - "1"
# - "nightly"
# julia_arch: [x64, x86]
# exclude:
# - os: macos-latest
# julia_arch: x86
# fail-fast: false
# env:
# JULIA_MPI_TEST_BINARY: OpenMPI_jll
# JULIA_MPI_TEST_ABI: OpenMPI
# runs-on: ${{ matrix.os }}
# steps:
# - name: Checkout
# uses: actions/checkout@v4
# - uses: julia-actions/setup-julia@latest
# with:
# arch: ${{ matrix.julia_arch }}
# version: ${{ matrix.julia_version }}
# - uses: julia-actions/cache@v1
# - 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@latest
# test-system-brew:
# timeout-minutes: 20
# strategy:
# matrix:
# mpi:
# - mpich
# - openmpi
# julia_version:
# - "1"
# fail-fast: false
# runs-on: macos-latest
# 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 $MPI
# env:
# MPI: ${{ matrix.mpi }}
# - uses: julia-actions/setup-julia@latest
# with:
# version: ${{ matrix.julia_version }}
# - uses: julia-actions/cache@v1
# - 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@latest
# 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
# 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@latest
# with:
# version: ${{ matrix.julia_version }}
# - uses: julia-actions/cache@v1
# - 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@latest
test-intel-linux:
timeout-minutes: 20
strategy:
matrix:
julia_version:
- "1"
fail-fast: false
runs-on: ubuntu-latest
container: ghcr.io/juliaparallel/github-actions-buildcache:intel-mpi-2019.9.304-ecfipz6mxgepmrkwp5dl5oohion5m54r.spack
env:
JULIA_MPI_TEST_BINARY: system
JULIA_MPI_TEST_ABI: MPICH
steps:
- name: Checkout
uses: actions/checkout@v4
- uses: julia-actions/setup-julia@latest
with:
version: ${{ matrix.julia_version }}
- uses: julia-actions/cache@v1
- 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@latest
test-oneapi-linux:
timeout-minutes: 20
strategy:
matrix:
julia_version:
- "1"
fail-fast: false
runs-on: ubuntu-latest
container: ghcr.io/juliaparallel/github-actions-buildcache:intel-oneapi-mpi-2021.7.0-gzc7es2p27ftwyk4sdplynlj6d54xzi6.spack
env:
JULIA_MPI_TEST_BINARY: system
JULIA_MPI_TEST_ABI: MPICH
steps:
- name: Checkout
uses: actions/checkout@v4
- uses: julia-actions/setup-julia@v1
with:
version: ${{ matrix.julia_version }}
- uses: julia-actions/cache@v1
- 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@latest
# 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@latest
# with:
# version: ${{ matrix.julia_version }}
# - uses: julia-actions/cache@v1
# - 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@latest
# test-mpitrampoline-jll:
# timeout-minutes: 20
# strategy:
# matrix:
# os:
# - macos-latest
# - ubuntu-latest
# mpi: [mpitrampoline]
# julia_version:
# - "1.6"
# - "1"
# - "nightly"
# julia_arch:
# - x64
# - x86
# exclude:
# - os: macos-latest
# 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@latest
# with:
# version: ${{ matrix.julia_version }}
# - uses: julia-actions/cache@v1
# - 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@latest
# 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.10.3"
# 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
# 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@latest
# with:
# version: ${{ matrix.julia_version }}
# - uses: julia-actions/cache@v1
# - 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@latest
test-mpitrampoline-intel-linux:
timeout-minutes: 20
strategy:
matrix:
julia_version:
- "1.6"
# We don't need to test all combinations
# - "1.7"
# - "nightly"
MPIWrapper:
- "2.10.3"
fail-fast: false
runs-on: ubuntu-latest
container: ghcr.io/juliaparallel/github-actions-buildcache:intel-mpi-2019.9.304-ecfipz6mxgepmrkwp5dl5oohion5m54r.spack
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
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@latest
with:
version: ${{ matrix.julia_version }}
- uses: julia-actions/cache@v1
- 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@latest
test-spack-mvapich:
timeout-minutes: 20
strategy:
matrix:
julia_version:
- "1"
fail-fast: false
runs-on: ubuntu-22.04
container: ghcr.io/juliaparallel/github-actions-buildcache:mvapich2-2.3.7-1-hs7gkcclsnk55kqm52a4behdnt3dug6b.spack
env:
JULIA_MPI_TEST_BINARY: system
JULIA_MPI_TEST_EXCLUDE: test_spawn.jl
MV2_SMP_USE_CMA: 0
steps:
- name: Checkout
uses: actions/checkout@v4
- uses: julia-actions/setup-julia@latest
with:
version: ${{ matrix.julia_version }}
- uses: julia-actions/cache@v1
- 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@latest