From b71894722656284fb1a7dff0f99f29ab8faa09bb Mon Sep 17 00:00:00 2001 From: Michael Schlottke-Lakemper Date: Sat, 27 Apr 2024 06:29:17 +0200 Subject: [PATCH 01/10] Run Homebrew tests on different macOS runners --- .github/workflows/UnitTests.yml | 6 +++++- src/MPI.jl | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/UnitTests.yml b/.github/workflows/UnitTests.yml index 3fa52ea38..c8b0f5764 100644 --- a/.github/workflows/UnitTests.yml +++ b/.github/workflows/UnitTests.yml @@ -140,10 +140,14 @@ jobs: - openmpi julia_version: - "1" + os: + - macos-latest + - macos-13 + - macos-12 fail-fast: false - runs-on: macos-latest + runs-on: ${{ matrix.os }} env: JULIA_MPI_TEST_BINARY: system ZES_ENABLE_SYSMAN: 1 # https://github.com/open-mpi/ompi/issues/10142 diff --git a/src/MPI.jl b/src/MPI.jl index 7d74e49e0..53d1a340d 100644 --- a/src/MPI.jl +++ b/src/MPI.jl @@ -5,6 +5,7 @@ using DocStringExtensions import MPIPreferences export mpiexec, UBuffer, VBuffer +# TODO: Remove before merge function serialize(x) s = IOBuffer() From b98d593962489e908b7939cd62838383856a7543 Mon Sep 17 00:00:00 2001 From: Michael Schlottke-Lakemper Date: Sat, 27 Apr 2024 06:57:58 +0200 Subject: [PATCH 02/10] Run mpitrampoline tests on more macOS setups --- .github/workflows/UnitTests.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.github/workflows/UnitTests.yml b/.github/workflows/UnitTests.yml index c8b0f5764..2b9799317 100644 --- a/.github/workflows/UnitTests.yml +++ b/.github/workflows/UnitTests.yml @@ -344,6 +344,13 @@ jobs: exclude: - os: macos-latest julia_arch: x86 + include: + - os: macos-latest + julia_arch: aarch64 + - os: macos-13 + julia_arch: x64 + - os: macos-12 + julia_arch: x64 fail-fast: false From b655dc90d4e06350315591808050cf9109f4eba3 Mon Sep 17 00:00:00 2001 From: Michael Schlottke-Lakemper Date: Sat, 27 Apr 2024 08:41:58 +0200 Subject: [PATCH 03/10] Fix setup for additional CI tests --- .github/workflows/UnitTests.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/UnitTests.yml b/.github/workflows/UnitTests.yml index 2b9799317..a2e2a65d0 100644 --- a/.github/workflows/UnitTests.yml +++ b/.github/workflows/UnitTests.yml @@ -346,10 +346,16 @@ jobs: julia_arch: x86 include: - os: macos-latest + mpi: mpitrampoline + julia_version: '1.6' julia_arch: aarch64 - os: macos-13 + mpi: mpitrampoline + julia_version: '1.6' julia_arch: x64 - os: macos-12 + mpi: mpitrampoline + julia_version: '1.6' julia_arch: x64 fail-fast: false From 0238e6440209c001dad4df4aff57dfc025c23eb3 Mon Sep 17 00:00:00 2001 From: Michael Schlottke-Lakemper Date: Sat, 27 Apr 2024 10:14:28 +0200 Subject: [PATCH 04/10] Downgrade tests that fail on macos-latest to macos-13 --- .github/workflows/UnitTests.yml | 12 ++++-------- src/MPI.jl | 1 - 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/.github/workflows/UnitTests.yml b/.github/workflows/UnitTests.yml index a2e2a65d0..bd3d30226 100644 --- a/.github/workflows/UnitTests.yml +++ b/.github/workflows/UnitTests.yml @@ -141,9 +141,7 @@ jobs: julia_version: - "1" os: - - macos-latest - macos-13 - - macos-12 fail-fast: false @@ -344,16 +342,14 @@ jobs: exclude: - os: macos-latest julia_arch: x86 - include: + # Hotfix: remove once tests on aarch64 are working again - os: macos-latest - mpi: mpitrampoline - julia_version: '1.6' - julia_arch: aarch64 - - os: macos-13 mpi: mpitrampoline julia_version: '1.6' julia_arch: x64 - - os: macos-12 + include: + # Hotfix: remove once tests on aarch64 are working again + - os: macos-13 mpi: mpitrampoline julia_version: '1.6' julia_arch: x64 diff --git a/src/MPI.jl b/src/MPI.jl index 53d1a340d..7d74e49e0 100644 --- a/src/MPI.jl +++ b/src/MPI.jl @@ -5,7 +5,6 @@ using DocStringExtensions import MPIPreferences export mpiexec, UBuffer, VBuffer -# TODO: Remove before merge function serialize(x) s = IOBuffer() From d9c3ee3129ce674cba2fa5687ceb34f7ce1b65de Mon Sep 17 00:00:00 2001 From: Michael Schlottke-Lakemper Date: Sat, 27 Apr 2024 10:16:14 +0200 Subject: [PATCH 05/10] Cleanup --- .github/workflows/UnitTests.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/UnitTests.yml b/.github/workflows/UnitTests.yml index bd3d30226..b743a29c9 100644 --- a/.github/workflows/UnitTests.yml +++ b/.github/workflows/UnitTests.yml @@ -140,12 +140,11 @@ jobs: - openmpi julia_version: - "1" - os: - - macos-13 fail-fast: false - runs-on: ${{ matrix.os }} + # Hotfix: change back to `macos-latest` once tests on aarch64 are working again + runs-on: macos-13 env: JULIA_MPI_TEST_BINARY: system ZES_ENABLE_SYSMAN: 1 # https://github.com/open-mpi/ompi/issues/10142 From 7ccbab423102e02a5756676ebe965bb314045471 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mos=C3=A8=20Giordano?= Date: Mon, 29 Apr 2024 16:10:28 +0100 Subject: [PATCH 06/10] Revert "Run Homebrew tests on different macOS runners" This reverts commit b71894722656284fb1a7dff0f99f29ab8faa09bb. --- .github/workflows/UnitTests.yml | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/.github/workflows/UnitTests.yml b/.github/workflows/UnitTests.yml index b743a29c9..3fa52ea38 100644 --- a/.github/workflows/UnitTests.yml +++ b/.github/workflows/UnitTests.yml @@ -143,8 +143,7 @@ jobs: fail-fast: false - # Hotfix: change back to `macos-latest` once tests on aarch64 are working again - runs-on: macos-13 + runs-on: macos-latest env: JULIA_MPI_TEST_BINARY: system ZES_ENABLE_SYSMAN: 1 # https://github.com/open-mpi/ompi/issues/10142 @@ -341,17 +340,6 @@ jobs: exclude: - os: macos-latest julia_arch: x86 - # Hotfix: remove once tests on aarch64 are working again - - os: macos-latest - mpi: mpitrampoline - julia_version: '1.6' - julia_arch: x64 - include: - # Hotfix: remove once tests on aarch64 are working again - - os: macos-13 - mpi: mpitrampoline - julia_version: '1.6' - julia_arch: x64 fail-fast: false From c6e574d79aeb7c3a8c82681f90f3861089e79707 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mos=C3=A8=20Giordano?= Date: Mon, 29 Apr 2024 16:13:29 +0100 Subject: [PATCH 07/10] Debug --- .github/workflows/UnitTests.yml | 1073 ++++++++++++++++--------------- 1 file changed, 538 insertions(+), 535 deletions(-) diff --git a/.github/workflows/UnitTests.yml b/.github/workflows/UnitTests.yml index 3fa52ea38..470e46188 100644 --- a/.github/workflows/UnitTests.yml +++ b/.github/workflows/UnitTests.yml @@ -28,108 +28,108 @@ concurrency: 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 - 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@v1 - 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@v1 - - uses: julia-actions/julia-processcoverage@v1 - - uses: codecov/codecov-action@v3 - with: - 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-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 - OMPI_MCA_btl_base_warn_component_unused: 0 - OMPI_MCA_rmaps_base_oversubscribe: true - - runs-on: ${{ matrix.os }} - - steps: - - name: Checkout - uses: actions/checkout@v4 - - - uses: julia-actions/setup-julia@v1 - 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@v1 + # 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 + # 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@v1 + # 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@v1 + # - uses: julia-actions/julia-processcoverage@v1 + # - uses: codecov/codecov-action@v3 + # with: + # 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-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 + # OMPI_MCA_btl_base_warn_component_unused: 0 + # OMPI_MCA_rmaps_base_oversubscribe: true + + # runs-on: ${{ matrix.os }} + + # steps: + # - name: Checkout + # uses: actions/checkout@v4 + + # - uses: julia-actions/setup-julia@v1 + # 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@v1 test-system-brew: timeout-minutes: 20 @@ -137,7 +137,7 @@ jobs: matrix: mpi: - mpich - - openmpi + # - openmpi julia_version: - "1" @@ -168,6 +168,9 @@ jobs: using Pkg Pkg.develop(path="lib/MPIPreferences") + - name: Setup tmate session + uses: mxschmitt/action-tmate@v3 + - name: use system MPI shell: julia --color=yes --project=. {0} run: | @@ -180,435 +183,435 @@ jobs: 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@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 - 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@v1 - with: - version: "1" - - - 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@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@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: 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-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@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 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.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 - 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@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 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.10.3" - - 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@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 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@v1 - with: - version: "1" - - - 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@v1 - - - # TODO: Can remove this once we can use OpenMPI_jll v5 - test-spack-openmpi5: - timeout-minutes: 20 - strategy: - matrix: - include: - - container: ghcr.io/juliaparallel/github-actions-buildcache:openmpi5-jq - name: "OpenMPI 5.0.2" - - fail-fast: false - - runs-on: ubuntu-22.04 - container: ${{ matrix.container }} - name: "Test ${{ matrix.name }}" - - env: - JULIA_MPI_TEST_BINARY: system - JULIA_MPI_TEST_ABI: OpenMPI - # Allow running as root - OMPI_ALLOW_RUN_AS_ROOT: 1 - OMPI_ALLOW_RUN_AS_ROOT_CONFIRM: 1 - # Allow oversubscription - PRTE_MCA_rmaps_default_mapping_policy: :oversubscribe - - steps: - - name: Checkout - uses: actions/checkout@v4 - - - uses: julia-actions/setup-julia@v1 - with: - version: "1" - - - 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@v1 + # 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@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 + # 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@v1 + # with: + # version: "1" + + # - 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@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@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: 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-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@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 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.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 + # 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@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 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.10.3" + + # 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@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 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@v1 + # with: + # version: "1" + + # - 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@v1 + + + # # TODO: Can remove this once we can use OpenMPI_jll v5 + # test-spack-openmpi5: + # timeout-minutes: 20 + # strategy: + # matrix: + # include: + # - container: ghcr.io/juliaparallel/github-actions-buildcache:openmpi5-jq + # name: "OpenMPI 5.0.2" + + # fail-fast: false + + # runs-on: ubuntu-22.04 + # container: ${{ matrix.container }} + # name: "Test ${{ matrix.name }}" + + # env: + # JULIA_MPI_TEST_BINARY: system + # JULIA_MPI_TEST_ABI: OpenMPI + # # Allow running as root + # OMPI_ALLOW_RUN_AS_ROOT: 1 + # OMPI_ALLOW_RUN_AS_ROOT_CONFIRM: 1 + # # Allow oversubscription + # PRTE_MCA_rmaps_default_mapping_policy: :oversubscribe + + # steps: + # - name: Checkout + # uses: actions/checkout@v4 + + # - uses: julia-actions/setup-julia@v1 + # with: + # version: "1" + + # - 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@v1 From eebcdbc201240741f0bea51255f133b829001382 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mos=C3=A8=20Giordano?= Date: Mon, 29 Apr 2024 17:14:47 +0100 Subject: [PATCH 08/10] More debug --- .github/workflows/UnitTests.yml | 33 +++++++++++++++++++++------------ 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/.github/workflows/UnitTests.yml b/.github/workflows/UnitTests.yml index 470e46188..f8648ed23 100644 --- a/.github/workflows/UnitTests.yml +++ b/.github/workflows/UnitTests.yml @@ -135,6 +135,9 @@ jobs: timeout-minutes: 20 strategy: matrix: + os: + - macos-13 + - macos-14 mpi: - mpich # - openmpi @@ -143,7 +146,7 @@ jobs: fail-fast: false - runs-on: macos-latest + runs-on: ${{ matrix.os }} env: JULIA_MPI_TEST_BINARY: system ZES_ENABLE_SYSMAN: 1 # https://github.com/open-mpi/ompi/issues/10142 @@ -168,19 +171,25 @@ jobs: using Pkg Pkg.develop(path="lib/MPIPreferences") - - name: Setup tmate session - uses: mxschmitt/action-tmate@v3 - - - name: use system MPI + - name: Julia versioninfo shell: julia --color=yes --project=. {0} run: | - using MPIPreferences - MPIPreferences.use_system_binary() - - - 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 + using InteractiveUtils + versioninfo(; verbose=true) + + # - name: Setup tmate session + # uses: mxschmitt/action-tmate@v3 + + # - name: use system MPI + # shell: julia --color=yes --project=. {0} + # run: | + # using MPIPreferences + # MPIPreferences.use_system_binary() + + # - 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: From 3177ea0a5930c6ffe7c5357b25d0c204fa162e33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mos=C3=A8=20Giordano?= Date: Mon, 29 Apr 2024 17:33:09 +0100 Subject: [PATCH 09/10] More debug --- .github/workflows/UnitTests.yml | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/workflows/UnitTests.yml b/.github/workflows/UnitTests.yml index f8648ed23..722d72473 100644 --- a/.github/workflows/UnitTests.yml +++ b/.github/workflows/UnitTests.yml @@ -171,20 +171,20 @@ jobs: using Pkg Pkg.develop(path="lib/MPIPreferences") - - name: Julia versioninfo - shell: julia --color=yes --project=. {0} - run: | - using InteractiveUtils - versioninfo(; verbose=true) - # - name: Setup tmate session # uses: mxschmitt/action-tmate@v3 - # - name: use system MPI - # shell: julia --color=yes --project=. {0} - # run: | - # using MPIPreferences - # MPIPreferences.use_system_binary() + - name: use system MPI + shell: julia --color=yes --project=. {0} + run: | + using MPIPreferences + MPIPreferences.use_system_binary() + + - name: MPI.versioninfo() + shell: julia --color=yes --project=. {0} + run: | + using MPI + MPI.versioninfo() # - uses: julia-actions/julia-runtest@v1 # env: From 2cbf86f4e5b70618b14677acde440ceeb2de7dc6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mos=C3=A8=20Giordano?= Date: Mon, 29 Apr 2024 17:36:01 +0100 Subject: [PATCH 10/10] Moar debug --- .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 722d72473..eb0630de7 100644 --- a/.github/workflows/UnitTests.yml +++ b/.github/workflows/UnitTests.yml @@ -171,8 +171,8 @@ jobs: using Pkg Pkg.develop(path="lib/MPIPreferences") - # - name: Setup tmate session - # uses: mxschmitt/action-tmate@v3 + - name: Setup tmate session + uses: mxschmitt/action-tmate@v3 - name: use system MPI shell: julia --color=yes --project=. {0}