From 6debd9134ae89a1e3f4a179c8dc85ea8ca1ccfd4 Mon Sep 17 00:00:00 2001 From: Dilum Aluthge Date: Tue, 29 Apr 2025 02:13:42 -0400 Subject: [PATCH 01/16] CI: Update unit tests from `ubuntu-20.04` to `ubuntu-24.04` GitHub retired their Ubuntu 20 image (for GitHub-hosted runners) on April 15, 2025. Therefore, we are forced to update. https://github.blog/changelog/2025-01-15-github-actions-ubuntu-20-runner-image-brownout-dates-and-other-breaking-changes/ --- .github/workflows/UnitTests.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/UnitTests.yml b/.github/workflows/UnitTests.yml index 50ee65422..350475977 100644 --- a/.github/workflows/UnitTests.yml +++ b/.github/workflows/UnitTests.yml @@ -208,7 +208,7 @@ jobs: fail-fast: false - runs-on: ubuntu-20.04 + runs-on: ubuntu-24.04 env: JULIA_MPI_TEST_BINARY: system @@ -409,7 +409,7 @@ jobs: fail-fast: false - runs-on: ubuntu-20.04 + runs-on: ubuntu-24.04 env: JULIA_MPI_TEST_BINARY: MPItrampoline_jll From e52e6d2c2590218d51b9e6684af9a1e4e606e394 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mos=C3=A8=20Giordano?= Date: Tue, 29 Apr 2025 10:11:10 +0100 Subject: [PATCH 02/16] Debug --- .github/workflows/UnitTests.yml | 1001 ++++++++++++++++--------------- 1 file changed, 501 insertions(+), 500 deletions(-) diff --git a/.github/workflows/UnitTests.yml b/.github/workflows/UnitTests.yml index 350475977..16416ef02 100644 --- a/.github/workflows/UnitTests.yml +++ b/.github/workflows/UnitTests.yml @@ -28,172 +28,172 @@ concurrency: 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 - # Allow CI to pass even if the `processcoverage` step fails: - continue-on-error: true - - uses: codecov/codecov-action@v5 - with: - token: ${{ secrets.CODECOV_TOKEN }} - fail_ci_if_error: false - 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-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 + # # Allow CI to pass even if the `processcoverage` step fails: + # continue-on-error: true + # - uses: codecov/codecov-action@v5 + # with: + # token: ${{ secrets.CODECOV_TOKEN }} + # fail_ci_if_error: false + # 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: @@ -223,6 +223,7 @@ jobs: run: | sudo apt-get update sudo apt-get install $MPI + mpiexec --version env: MPI: ${{ matrix.mpi }} @@ -245,337 +246,337 @@ jobs: - 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-24.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 + # 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-24.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 From 38800f4b69606a779e6fe2f4c7039c1d98b2bb41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mos=C3=A8=20Giordano?= Date: Tue, 29 Apr 2025 10:21:06 +0100 Subject: [PATCH 03/16] More debug --- test/test_error.jl | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/test/test_error.jl b/test/test_error.jl index 13f00448f..c815a9dd0 100644 --- a/test/test_error.jl +++ b/test/test_error.jl @@ -1,4 +1,8 @@ using MPI + +@show get(ENV, "MPI_LOCALNRANKS", nothing) +@show get(ENV, "OMPI_COMM_WORLD_SIZE", nothing) + function main() MPI.Init() comm = MPI.COMM_WORLD From 6ee7e4121ebc167969e62280d4f81537277c8b81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mos=C3=A8=20Giordano?= Date: Tue, 29 Apr 2025 11:02:07 +0100 Subject: [PATCH 04/16] Moar debug --- test/test_error.jl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/test_error.jl b/test/test_error.jl index c815a9dd0..f13b610ba 100644 --- a/test/test_error.jl +++ b/test/test_error.jl @@ -1,13 +1,13 @@ using MPI -@show get(ENV, "MPI_LOCALNRANKS", nothing) -@show get(ENV, "OMPI_COMM_WORLD_SIZE", nothing) - function main() MPI.Init() comm = MPI.COMM_WORLD rank = MPI.Comm_rank(comm) if rank == 1 + @show get(ENV, "MPI_LOCALNRANKS", nothing) + @show get(ENV, "OMPI_COMM_WORLD_SIZE", nothing) + @show MPI.Comm_size(comm) error("This is an expected error, ignore it") end MPI.Barrier(comm) From 5728178f806dd1cd180b9f9b5aa02965af4bae9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mos=C3=A8=20Giordano?= Date: Tue, 29 Apr 2025 11:25:05 +0100 Subject: [PATCH 05/16] Try to print more? --- test/mpiexecjl.jl | 10 ++++++++++ test/test_error.jl | 12 +++++++++--- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/test/mpiexecjl.jl b/test/mpiexecjl.jl index 5e378ba24..3debf06f8 100644 --- a/test/mpiexecjl.jl +++ b/test/mpiexecjl.jl @@ -1,6 +1,16 @@ using Test, Pkg using MPI +MPI.Init() +comm = MPI.COMM_WORLD +rank = MPI.Comm_rank(comm) +if rank == 1 + @show get(ENV, "MPI_LOCALNRANKS", nothing) + @show get(ENV, "OMPI_COMM_WORLD_SIZE", nothing) + @show MPI.Comm_size(comm) +end + + @testset "mpiexecjl" begin mktempdir() do dir # Install MPI locally, so that we can test the `--project` flag to diff --git a/test/test_error.jl b/test/test_error.jl index f13b610ba..daba7b584 100644 --- a/test/test_error.jl +++ b/test/test_error.jl @@ -1,13 +1,19 @@ using MPI +MPI.Init() +comm = MPI.COMM_WORLD +rank = MPI.Comm_rank(comm) +if rank == 1 + @show get(ENV, "MPI_LOCALNRANKS", nothing) + @show get(ENV, "OMPI_COMM_WORLD_SIZE", nothing) + @show MPI.Comm_size(comm) +end + function main() MPI.Init() comm = MPI.COMM_WORLD rank = MPI.Comm_rank(comm) if rank == 1 - @show get(ENV, "MPI_LOCALNRANKS", nothing) - @show get(ENV, "OMPI_COMM_WORLD_SIZE", nothing) - @show MPI.Comm_size(comm) error("This is an expected error, ignore it") end MPI.Barrier(comm) From 2522742ada7458c9f2783857f1c5f2867acd2000 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mos=C3=A8=20Giordano?= Date: Tue, 29 Apr 2025 11:26:40 +0100 Subject: [PATCH 06/16] Wrong number of ranks? --- test/mpiexecjl.jl | 1 - test/test_error.jl | 5 +++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/test/mpiexecjl.jl b/test/mpiexecjl.jl index 3debf06f8..293183702 100644 --- a/test/mpiexecjl.jl +++ b/test/mpiexecjl.jl @@ -10,7 +10,6 @@ if rank == 1 @show MPI.Comm_size(comm) end - @testset "mpiexecjl" begin mktempdir() do dir # Install MPI locally, so that we can test the `--project` flag to diff --git a/test/test_error.jl b/test/test_error.jl index daba7b584..b0b9a304a 100644 --- a/test/test_error.jl +++ b/test/test_error.jl @@ -3,10 +3,11 @@ using MPI MPI.Init() comm = MPI.COMM_WORLD rank = MPI.Comm_rank(comm) -if rank == 1 +@show rank +if rank == 0 + @show MPI.Comm_size(comm) @show get(ENV, "MPI_LOCALNRANKS", nothing) @show get(ENV, "OMPI_COMM_WORLD_SIZE", nothing) - @show MPI.Comm_size(comm) end function main() From 1104235366a0320974dba71005e00983c228f7d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mos=C3=A8=20Giordano?= Date: Tue, 29 Apr 2025 11:37:22 +0100 Subject: [PATCH 07/16] Remove printing in mpiexecjl --- test/mpiexecjl.jl | 9 --------- 1 file changed, 9 deletions(-) diff --git a/test/mpiexecjl.jl b/test/mpiexecjl.jl index 293183702..5e378ba24 100644 --- a/test/mpiexecjl.jl +++ b/test/mpiexecjl.jl @@ -1,15 +1,6 @@ using Test, Pkg using MPI -MPI.Init() -comm = MPI.COMM_WORLD -rank = MPI.Comm_rank(comm) -if rank == 1 - @show get(ENV, "MPI_LOCALNRANKS", nothing) - @show get(ENV, "OMPI_COMM_WORLD_SIZE", nothing) - @show MPI.Comm_size(comm) -end - @testset "mpiexecjl" begin mktempdir() do dir # Install MPI locally, so that we can test the `--project` flag to From 74adb8c97f448807e672e83a6c6128827050deb3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mos=C3=A8=20Giordano?= Date: Tue, 29 Apr 2025 11:53:26 +0100 Subject: [PATCH 08/16] Try C code --- .github/workflows/UnitTests.yml | 2 ++ hello-world.c | 27 +++++++++++++++++++++++++++ 2 files changed, 29 insertions(+) create mode 100644 hello-world.c diff --git a/.github/workflows/UnitTests.yml b/.github/workflows/UnitTests.yml index 16416ef02..594d5e601 100644 --- a/.github/workflows/UnitTests.yml +++ b/.github/workflows/UnitTests.yml @@ -224,6 +224,8 @@ jobs: sudo apt-get update sudo apt-get install $MPI mpiexec --version + mpicc hello-world.c -o hello-world + mpiexec -np 4 ./hello-world env: MPI: ${{ matrix.mpi }} diff --git a/hello-world.c b/hello-world.c new file mode 100644 index 000000000..35db8ad1d --- /dev/null +++ b/hello-world.c @@ -0,0 +1,27 @@ +#include +#include + +int main(int argc, char** argv) { + // Initialize the MPI environment + MPI_Init(NULL, NULL); + + // Get the number of processes + int world_size; + MPI_Comm_size(MPI_COMM_WORLD, &world_size); + + // Get the rank of the process + int world_rank; + MPI_Comm_rank(MPI_COMM_WORLD, &world_rank); + + // Get the name of the processor + char processor_name[MPI_MAX_PROCESSOR_NAME]; + int name_len; + MPI_Get_processor_name(processor_name, &name_len); + + // Print off a hello world message + printf("Hello world from processor %s, rank %d out of %d processors\n", + processor_name, world_rank, world_size); + + // Finalize the MPI environment. + MPI_Finalize(); +} From 0348a43f8120911f0bac63db26d7309ba45ce58a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mos=C3=A8=20Giordano?= Date: Tue, 29 Apr 2025 12:03:29 +0100 Subject: [PATCH 09/16] Revert "Try C code" This reverts commit 74adb8c97f448807e672e83a6c6128827050deb3. --- .github/workflows/UnitTests.yml | 2 -- hello-world.c | 27 --------------------------- 2 files changed, 29 deletions(-) delete mode 100644 hello-world.c diff --git a/.github/workflows/UnitTests.yml b/.github/workflows/UnitTests.yml index 594d5e601..16416ef02 100644 --- a/.github/workflows/UnitTests.yml +++ b/.github/workflows/UnitTests.yml @@ -224,8 +224,6 @@ jobs: sudo apt-get update sudo apt-get install $MPI mpiexec --version - mpicc hello-world.c -o hello-world - mpiexec -np 4 ./hello-world env: MPI: ${{ matrix.mpi }} diff --git a/hello-world.c b/hello-world.c deleted file mode 100644 index 35db8ad1d..000000000 --- a/hello-world.c +++ /dev/null @@ -1,27 +0,0 @@ -#include -#include - -int main(int argc, char** argv) { - // Initialize the MPI environment - MPI_Init(NULL, NULL); - - // Get the number of processes - int world_size; - MPI_Comm_size(MPI_COMM_WORLD, &world_size); - - // Get the rank of the process - int world_rank; - MPI_Comm_rank(MPI_COMM_WORLD, &world_rank); - - // Get the name of the processor - char processor_name[MPI_MAX_PROCESSOR_NAME]; - int name_len; - MPI_Get_processor_name(processor_name, &name_len); - - // Print off a hello world message - printf("Hello world from processor %s, rank %d out of %d processors\n", - processor_name, world_rank, world_size); - - // Finalize the MPI environment. - MPI_Finalize(); -} From c54c683410b5d0169eb57231f4f211144857007d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mos=C3=A8=20Giordano?= Date: Tue, 29 Apr 2025 12:03:36 +0100 Subject: [PATCH 10/16] Revert "Remove printing in mpiexecjl" This reverts commit 1104235366a0320974dba71005e00983c228f7d0. --- test/mpiexecjl.jl | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/test/mpiexecjl.jl b/test/mpiexecjl.jl index 5e378ba24..293183702 100644 --- a/test/mpiexecjl.jl +++ b/test/mpiexecjl.jl @@ -1,6 +1,15 @@ using Test, Pkg using MPI +MPI.Init() +comm = MPI.COMM_WORLD +rank = MPI.Comm_rank(comm) +if rank == 1 + @show get(ENV, "MPI_LOCALNRANKS", nothing) + @show get(ENV, "OMPI_COMM_WORLD_SIZE", nothing) + @show MPI.Comm_size(comm) +end + @testset "mpiexecjl" begin mktempdir() do dir # Install MPI locally, so that we can test the `--project` flag to From 4da1bec1848dacd727ec074b88451cfb59fa5763 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mos=C3=A8=20Giordano?= Date: Tue, 29 Apr 2025 12:03:40 +0100 Subject: [PATCH 11/16] Revert "Wrong number of ranks?" This reverts commit 2522742ada7458c9f2783857f1c5f2867acd2000. --- test/mpiexecjl.jl | 1 + test/test_error.jl | 5 ++--- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/test/mpiexecjl.jl b/test/mpiexecjl.jl index 293183702..3debf06f8 100644 --- a/test/mpiexecjl.jl +++ b/test/mpiexecjl.jl @@ -10,6 +10,7 @@ if rank == 1 @show MPI.Comm_size(comm) end + @testset "mpiexecjl" begin mktempdir() do dir # Install MPI locally, so that we can test the `--project` flag to diff --git a/test/test_error.jl b/test/test_error.jl index b0b9a304a..daba7b584 100644 --- a/test/test_error.jl +++ b/test/test_error.jl @@ -3,11 +3,10 @@ using MPI MPI.Init() comm = MPI.COMM_WORLD rank = MPI.Comm_rank(comm) -@show rank -if rank == 0 - @show MPI.Comm_size(comm) +if rank == 1 @show get(ENV, "MPI_LOCALNRANKS", nothing) @show get(ENV, "OMPI_COMM_WORLD_SIZE", nothing) + @show MPI.Comm_size(comm) end function main() From b1179bb29c199159d21136147c0ac5f399b74ed9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mos=C3=A8=20Giordano?= Date: Tue, 29 Apr 2025 12:03:45 +0100 Subject: [PATCH 12/16] Revert "Try to print more?" This reverts commit 5728178f806dd1cd180b9f9b5aa02965af4bae9b. --- test/mpiexecjl.jl | 10 ---------- test/test_error.jl | 12 +++--------- 2 files changed, 3 insertions(+), 19 deletions(-) diff --git a/test/mpiexecjl.jl b/test/mpiexecjl.jl index 3debf06f8..5e378ba24 100644 --- a/test/mpiexecjl.jl +++ b/test/mpiexecjl.jl @@ -1,16 +1,6 @@ using Test, Pkg using MPI -MPI.Init() -comm = MPI.COMM_WORLD -rank = MPI.Comm_rank(comm) -if rank == 1 - @show get(ENV, "MPI_LOCALNRANKS", nothing) - @show get(ENV, "OMPI_COMM_WORLD_SIZE", nothing) - @show MPI.Comm_size(comm) -end - - @testset "mpiexecjl" begin mktempdir() do dir # Install MPI locally, so that we can test the `--project` flag to diff --git a/test/test_error.jl b/test/test_error.jl index daba7b584..f13b610ba 100644 --- a/test/test_error.jl +++ b/test/test_error.jl @@ -1,19 +1,13 @@ using MPI -MPI.Init() -comm = MPI.COMM_WORLD -rank = MPI.Comm_rank(comm) -if rank == 1 - @show get(ENV, "MPI_LOCALNRANKS", nothing) - @show get(ENV, "OMPI_COMM_WORLD_SIZE", nothing) - @show MPI.Comm_size(comm) -end - function main() MPI.Init() comm = MPI.COMM_WORLD rank = MPI.Comm_rank(comm) if rank == 1 + @show get(ENV, "MPI_LOCALNRANKS", nothing) + @show get(ENV, "OMPI_COMM_WORLD_SIZE", nothing) + @show MPI.Comm_size(comm) error("This is an expected error, ignore it") end MPI.Barrier(comm) From 11ec4ee2b1f072e8e97aba3dbc7a157fcd824b76 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mos=C3=A8=20Giordano?= Date: Tue, 29 Apr 2025 12:03:49 +0100 Subject: [PATCH 13/16] Revert "Moar debug" This reverts commit 6ee7e4121ebc167969e62280d4f81537277c8b81. --- test/test_error.jl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/test_error.jl b/test/test_error.jl index f13b610ba..c815a9dd0 100644 --- a/test/test_error.jl +++ b/test/test_error.jl @@ -1,13 +1,13 @@ using MPI +@show get(ENV, "MPI_LOCALNRANKS", nothing) +@show get(ENV, "OMPI_COMM_WORLD_SIZE", nothing) + function main() MPI.Init() comm = MPI.COMM_WORLD rank = MPI.Comm_rank(comm) if rank == 1 - @show get(ENV, "MPI_LOCALNRANKS", nothing) - @show get(ENV, "OMPI_COMM_WORLD_SIZE", nothing) - @show MPI.Comm_size(comm) error("This is an expected error, ignore it") end MPI.Barrier(comm) From 87f9a0e05543181b473f29a35e172c421122ee00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mos=C3=A8=20Giordano?= Date: Tue, 29 Apr 2025 12:04:04 +0100 Subject: [PATCH 14/16] Revert "More debug" This reverts commit 38800f4b69606a779e6fe2f4c7039c1d98b2bb41. --- test/test_error.jl | 4 ---- 1 file changed, 4 deletions(-) diff --git a/test/test_error.jl b/test/test_error.jl index c815a9dd0..13f00448f 100644 --- a/test/test_error.jl +++ b/test/test_error.jl @@ -1,8 +1,4 @@ using MPI - -@show get(ENV, "MPI_LOCALNRANKS", nothing) -@show get(ENV, "OMPI_COMM_WORLD_SIZE", nothing) - function main() MPI.Init() comm = MPI.COMM_WORLD From d3b56f92521f5f5a47d8545399a50283819d2450 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mos=C3=A8=20Giordano?= Date: Tue, 29 Apr 2025 12:04:10 +0100 Subject: [PATCH 15/16] Revert "Debug" This reverts commit e52e6d2c2590218d51b9e6684af9a1e4e606e394. --- .github/workflows/UnitTests.yml | 1001 +++++++++++++++---------------- 1 file changed, 500 insertions(+), 501 deletions(-) diff --git a/.github/workflows/UnitTests.yml b/.github/workflows/UnitTests.yml index 16416ef02..350475977 100644 --- a/.github/workflows/UnitTests.yml +++ b/.github/workflows/UnitTests.yml @@ -28,172 +28,172 @@ concurrency: 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 - # # Allow CI to pass even if the `processcoverage` step fails: - # continue-on-error: true - # - uses: codecov/codecov-action@v5 - # with: - # token: ${{ secrets.CODECOV_TOKEN }} - # fail_ci_if_error: false - # 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-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 + # Allow CI to pass even if the `processcoverage` step fails: + continue-on-error: true + - uses: codecov/codecov-action@v5 + with: + token: ${{ secrets.CODECOV_TOKEN }} + fail_ci_if_error: false + 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: @@ -223,7 +223,6 @@ jobs: run: | sudo apt-get update sudo apt-get install $MPI - mpiexec --version env: MPI: ${{ matrix.mpi }} @@ -246,337 +245,337 @@ jobs: - 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-24.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 + 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-24.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 From 7345cf99adbe0f9e7226c95fe6adcd22cff679c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mos=C3=A8=20Giordano?= Date: Tue, 29 Apr 2025 12:05:56 +0100 Subject: [PATCH 16/16] [CI] Currently mpich from Ubuntu repo, it's broken --- .github/workflows/UnitTests.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/UnitTests.yml b/.github/workflows/UnitTests.yml index 350475977..61d5d7bc4 100644 --- a/.github/workflows/UnitTests.yml +++ b/.github/workflows/UnitTests.yml @@ -201,7 +201,8 @@ jobs: strategy: matrix: mpi: - - libmpich-dev + # MPICH in Ubuntu is currently broken: https://github.com/pmodels/mpich/issues/7064 + # - libmpich-dev - libopenmpi-dev julia_version: - "1" @@ -397,7 +398,8 @@ jobs: strategy: matrix: mpi: - - libmpich-dev + # MPICH in Ubuntu is currently broken: https://github.com/pmodels/mpich/issues/7064 + # - libmpich-dev - libopenmpi-dev julia_version: - "1"