1717 inputs :
1818 mpi-git :
1919 description : ' MPI git'
20- default : pmodels/mpich
20+ default : ' '
2121 required : false
2222 type : string
2323 mpi-ref :
@@ -92,10 +92,17 @@ jobs:
9292 path : mpi4py-*.whl
9393
9494
95- mpich :
95+ test :
96+ name : ${{ matrix.mpi-git }}
9697 needs : build
9798 runs-on : ubuntu-24.04
9899 timeout-minutes : 60
100+ strategy :
101+ fail-fast : false
102+ matrix :
103+ mpi-git : ${{ inputs.mpi-git &&
104+ fromJSON(format('["{0}"]', inputs.mpi-git)) ||
105+ fromJSON('["pmodels/mpich", "open-mpi/ompi"]') }}
99106
100107 steps :
101108
@@ -108,23 +115,32 @@ jobs:
108115 libhwloc-dev
109116 libfabric-dev
110117 libibverbs-dev
118+ libnuma-dev
111119 libpsm-infinipath1-dev
112120 libpsm2-dev
113121 librdmacm-dev
114122
115123 - name : Checkout MPI
116124 uses : actions/checkout@v6
117125 with :
118- repository : ${{ inputs.mpi-git || 'pmodels/mpich' }}
119- ref : ${{ inputs.mpi-ref }}
126+ repository : ${{ matrix.mpi-git }}
127+ ref : ${{ inputs.mpi-ref ||
128+ ((matrix.mpi-git == 'open-mpi/ompi') &&
129+ ' refs/pull/13280/head' ) || 'main' }}
120130 path : mpi-build
121131 submodules : recursive
122132
123- - name : Bootstrap MPI
133+ - name : Bootstrap MPI (mpich)
124134 run : ./autogen.sh
125135 working-directory : mpi-build
136+ if : ${{ endsWith(matrix.mpi-git, 'mpich') }}
137+
138+ - name : Bootstrap MPI (openmpi)
139+ run : ./autogen.pl
140+ working-directory : mpi-build
141+ if : ${{ endsWith(matrix.mpi-git, 'ompi') }}
126142
127- - name : Configure MPI
143+ - name : Configure MPI (mpich)
128144 run : ./configure
129145 --with-pm=hydra
130146 --with-device=ch4:ofi
@@ -135,6 +151,21 @@ jobs:
135151 --enable-fast=none
136152 --enable-mpi-abi
137153 working-directory : mpi-build
154+ if : ${{ endsWith(matrix.mpi-git, 'mpich') }}
155+
156+ - name : Configure MPI (openmpi)
157+ run : ./configure
158+ --disable-dependency-tracking
159+ --without-ofi
160+ --without-ucx
161+ --without-psm2
162+ --enable-debug
163+ --enable-mem-debug
164+ --disable-sphinx
165+ --disable-oshmem
166+ LDFLAGS=-Wl,-rpath,/usr/local/lib
167+ working-directory : mpi-build
168+ if : ${{ endsWith(matrix.mpi-git, 'ompi') }}
138169
139170 - name : Build MPI
140171 run : make -j $(nproc)
@@ -152,9 +183,23 @@ jobs:
152183 run : |
153184 # Tweak MPI
154185 echo "RDMAV_FORK_SAFE=1" >> $GITHUB_ENV
155-
156- - name : Show MPI
186+ # Tweak MPI
187+ mca_params="$HOME/.openmpi/mca-params.conf"
188+ mkdir -p "$(dirname "$mca_params")"
189+ echo mpi_param_check = true >> "$mca_params"
190+ echo mpi_show_handle_leaks = true >> "$mca_params"
191+ echo rmaps_base_oversubscribe = true >> "$mca_params"
192+ mca_params="$HOME/.prte/mca-params.conf"
193+ mkdir -p "$(dirname "$mca_params")"
194+ echo rmaps_default_mapping_policy = :oversubscribe >> "$mca_params"
195+
196+ - name : Show MPI (mpich)
157197 run : mpichversion
198+ if : ${{ endsWith(matrix.mpi-git, 'mpich') }}
199+
200+ - name : Show MPI (openmpi)
201+ run : ompi_info
202+ if : ${{ endsWith(matrix.mpi-git, 'ompi') }}
158203
159204 - name : Use Python
160205 uses : actions/setup-python@v6
@@ -194,7 +239,7 @@ jobs:
194239 timeout-minutes : 10
195240 - name : Test mpi4py (np=5)
196241 run : mpiexec -n 5 python test/main.py -v -f
197- if : ${{ false }}
242+ if : ${{ !endsWith(matrix.mpi-git, 'mpich') }}
198243 timeout-minutes : 10
199244
200245 - name : Test mpi4py.futures (singleton)
0 commit comments