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,16 @@ jobs:
9292 path : mpi4py-*.whl
9393
9494
95- mpich :
95+ test :
9696 needs : build
9797 runs-on : ubuntu-24.04
9898 timeout-minutes : 60
99+ strategy :
100+ fail-fast : false
101+ matrix :
102+ mpi-git : ${{ inputs.mpi-git &&
103+ fromJSON(format('["{0}"]', inputs.mpi-git)) ||
104+ fromJSON('["pmodels/mpich", "open-mpi/ompi"]') }}
99105
100106 steps :
101107
@@ -108,21 +114,30 @@ jobs:
108114 libhwloc-dev
109115 libfabric-dev
110116 libibverbs-dev
117+ libnuma-dev
111118 libpsm-infinipath1-dev
112119 libpsm2-dev
113120 librdmacm-dev
114121
115122 - name : Checkout MPI
116123 uses : actions/checkout@v5
117124 with :
118- repository : ${{ inputs.mpi-git || 'pmodels/mpich' }}
119- ref : ${{ inputs.mpi-ref }}
125+ repository : ${{ matrix.mpi-git || 'pmodels/mpich' }}
126+ ref : ${{ inputs.mpi-ref ||
127+ (endsWith(matrix.mpi-git, 'ompi') &&
128+ ' refs/pull/13280/head' ) }}
120129 path : mpi-build
121130 submodules : recursive
122131
123132 - name : Bootstrap MPI
124133 run : ./autogen.sh
125134 working-directory : mpi-build
135+ if : ${{ endsWith(matrix.mpi-git, 'mpich') }}
136+
137+ - name : Bootstrap MPI
138+ run : ./autogen.pl
139+ working-directory : mpi-build
140+ if : ${{ endsWith(matrix.mpi-git, 'ompi') }}
126141
127142 - name : Configure MPI
128143 run : ./configure
@@ -135,6 +150,22 @@ jobs:
135150 --enable-fast=none
136151 --enable-mpi-abi
137152 working-directory : mpi-build
153+ if : ${{ endsWith(matrix.mpi-git, 'mpich') }}
154+
155+ - name : Configure MPI
156+ run : ./configure
157+ --disable-dependency-tracking
158+ --without-ofi
159+ --without-ucx
160+ --without-psm2
161+ --enable-debug
162+ --enable-mem-debug
163+ --disable-sphinx
164+ --disable-mpi-fortran
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
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"
155195
156196 - name : Show MPI
157197 run : mpichversion
198+ if : ${{ endsWith(matrix.mpi-git, 'mpich') }}
199+
200+ - name : Show MPI
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