-
Notifications
You must be signed in to change notification settings - Fork 0
220 lines (188 loc) · 5.56 KB
/
abi.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
name: abi
on:
workflow_call:
inputs:
mpi4py-git:
description: 'mpi4py git'
default: mpi4py/mpi4py
required: false
type: string
mpi4py-ref:
description: 'mpi4py ref'
default: ''
required: false
type: string
workflow_dispatch:
inputs:
mpi-git:
description: 'MPI git'
default: pmodels/mpich
required: false
type: string
mpi-ref:
description: 'MPI ref'
default: ''
required: false
type: string
mpi4py-git:
description: 'mpi4py git'
default: mpi4py/mpi4py
required: false
type: string
mpi4py-ref:
description: 'mpi4py ref'
default: ''
required: false
type: string
push:
branches:
- ci/all
- ci/abi
schedule:
- cron: '0 0 * * *'
jobs:
build:
runs-on: ubuntu-22.04
steps:
- name: Checkout MPI stubs
uses: actions/checkout@v4
with:
repository: mpiwg-abi/header_and_stub_library
ref: main
path: mpi-stubs
- name: Build MPI stubs
run: make
working-directory: mpi-stubs
- name: Add MPI stubs to PATH
run: |
mpi_stubs=${{ github.workspace }}/mpi-stubs
echo $mpi_stubs/bin >> $GITHUB_PATH
- name: Use Python
uses: actions/setup-python@v5
with:
python-version: 3
architecture: x64
- name: Checkout mpi4py
uses: actions/checkout@v4
with:
repository: ${{ inputs.mpi4py-git || 'mpi4py/mpi4py' }}
ref: ${{ inputs.mpi4py-ref }}
path: mpi4py
- name: Build mpi4py wheel
run: python -m pip wheel ./mpi4py
env:
CFLAGS: "-O0"
- name: Upload mpi4py wheel
uses: actions/upload-artifact@v4
with:
name: mpi4py-wheel
path: mpi4py-*.whl
mpich:
needs: build
runs-on: ubuntu-22.04
timeout-minutes: 60
steps:
- name: Configure hostname
run: echo 127.0.0.1 `hostname` | sudo tee -a /etc/hosts > /dev/null
if: ${{ runner.os == 'Linux' || runner.os == 'macOS' }}
- name: Install depencencies
run: sudo apt-get install -y -q
libhwloc-dev
libfabric-dev
libibverbs-dev
libpsm-infinipath1-dev
libpsm2-dev
librdmacm-dev
- name: Checkout MPI
uses: actions/checkout@v4
with:
repository: ${{ inputs.mpi-git || 'pmodels/mpich' }}
ref: ${{ inputs.mpi-ref }}
path: mpi-build
submodules: recursive
- name: Bootstrap MPI
run: ./autogen.sh
working-directory: mpi-build
- name: Configure MPI
run: ./configure
--with-pm=hydra
--with-device=ch4:ofi
--disable-dependency-tracking
--disable-maintainer-mode
--disable-doc
--enable-g=all
--enable-fast=none
--enable-mpi-abi
working-directory: mpi-build
- name: Build MPI
run: make -j $(nproc)
working-directory: mpi-build
- name: Install MPI
run: sudo make install
working-directory: mpi-build
- name: Run ldconfig
run: sudo ldconfig
working-directory: mpi-build
- name: Tweak MPI
run: |
# Tweak MPI
echo "RDMAV_FORK_SAFE=1" >> $GITHUB_ENV
- name: Show MPI
run: mpichversion
- name: Use Python
uses: actions/setup-python@v5
with:
python-version: 3
architecture: x64
- name: Checkout mpi4py
uses: actions/checkout@v4
with:
repository: ${{ inputs.mpi4py-git || 'mpi4py/mpi4py' }}
ref: ${{ inputs.mpi4py-ref }}
- name: Download mpi4py wheel
uses: actions/download-artifact@v4
with:
name: mpi4py-wheel
path: dist
- name: Install mpi4py wheel
run: python -m pip install mpi4py
--no-index --find-links=dist
- name: Test mpi4py (singleton)
run: python test/main.py -v
if: ${{ true }}
- name: Test mpi4py (np=1)
run: mpiexec -n 1 python test/main.py -v
- name: Test mpi4py (np=2)
run: mpiexec -n 2 python test/main.py -v -f
timeout-minutes: 10
- name: Test mpi4py (np=3)
run: mpiexec -n 3 python test/main.py -v -f
timeout-minutes: 10
- name: Test mpi4py (np=4)
run: mpiexec -n 4 python test/main.py -v -f
timeout-minutes: 10
- name: Test mpi4py (np=5)
run: mpiexec -n 5 python test/main.py -v -f
if: ${{ false }}
timeout-minutes: 10
- name: Test mpi4py.futures (singleton)
run: python demo/futures/test_futures.py -v
if: ${{ true }}
- name: Test mpi4py.futures (np=1)
run: mpiexec -n 1 python demo/futures/test_futures.py -v
- name: Test mpi4py.futures (np=2)
run: mpiexec -n 2 python demo/futures/test_futures.py -v
- name: Test mpi4py.futures (np=3)
run: mpiexec -n 3 python demo/futures/test_futures.py -v
- name: Test mpi4py.futures (np=1)
run: mpiexec -n 1 python -m mpi4py.futures demo/futures/test_futures.py -v
- name: Test mpi4py.futures (np=2)
run: mpiexec -n 2 python -m mpi4py.futures demo/futures/test_futures.py -v
- name: Test mpi4py.futures (np=3)
run: mpiexec -n 3 python -m mpi4py.futures demo/futures/test_futures.py -v
- name: Test mpi4py.run
run: python demo/test-run/test_run.py -v
- name: Test init-fini
run: bash demo/init-fini/run.sh
- name: Test check-mpiexec
run: bash demo/check-mpiexec/run.sh