-
Notifications
You must be signed in to change notification settings - Fork 62
169 lines (159 loc) · 6.6 KB
/
Copy pathreconverse-ci.yaml
File metadata and controls
169 lines (159 loc) · 6.6 KB
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
name: reconverse-ci
# CI for the reviewed reconverse line. The tier below defines what CI
# GUARANTEES; it is a floor, not the support surface. Features without a
# test here are supported with coverage debt -- the tier is meant to GROW
# toward them, and dropping support for anything is an explicit reviewed
# act (a tombstone commit deleting its test), never a side effect of a
# test not yet existing. Correctness-gated only -- never timing-gated:
# hosted runners are noisy. Real-fabric behavior (IB, Slingshot) is NOT
# covered here; runtime-core PRs get a manual run on an HPC site by a
# reviewer (see PR template) until a sanctioned site runner exists.
on:
push:
branches: [reviewed-with-reconverse]
pull_request:
branches: [reviewed-with-reconverse]
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
env:
# Pin the OFI provider. LCI takes the FIRST fi_getinfo() match, and which
# provider ranks first is a property of the runner's host, not of this
# repo: a hosted VM that exposes an RDMA-capable NIC gets a hardware
# provider ahead of tcp, and fi_enable() then fails with ENOMEM
# (lci/src/network/ofi/backend_ofi.cpp:273) inside ConverseInit, before
# any test code runs. That is a runner lottery, not a regression -- it is
# why identical commits pass one day and abort the next, and why one
# ubuntu-latest job can pass while its sibling aborts in the same run.
# Hosted runners never covered a real fabric anyway (see the header: IB
# and Slingshot are the manual HPC-site run's job), so pinning tcp costs
# no coverage and makes every runner in the pool behave identically.
# Shrinking the queues (LCI_ATTR_NET_MAX_CQES) does NOT help: the failure
# is provider selection, not queue size.
FI_PROVIDER: tcp
# Curated test tier. Grows one reviewed PR at a time; every tests/ dir NOT
# listed here is by definition unsupported-on-reconverse until added (the
# parity matrix mirrors this list).
TEST_DIRS: >-
tests/charm++/megatest
tests/charm++/simplearrayhello
tests/charm++/anytime_migration
tests/charm++/anytime_bcastred
tests/charm++/qd
jobs:
reconverse-linux-x86_64:
timeout-minutes: 90
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: install dependencies
run: sudo apt-get update && sudo apt-get install -y cmake libfabric-dev
- name: build
run: ./build charm++ reconverse-linux-x86_64 -j4 -g
- name: build tests
run: |
set -e
B=$PWD/reconverse-linux-x86_64
for d in $TEST_DIRS; do make -C $d CHARMC=$B/bin/charmc; done
- name: test (single process)
run: |
set -e
for d in $TEST_DIRS; do make -C $d test; done
- name: test (2 processes, lcrun)
run: |
set -e
for d in $TEST_DIRS; do TESTRUN_PROCS=2 make -C $d test; done
# ARM64 Linux (Grace-class systems). Replaces the coverage CircleCI's
# arm.medium jobs provided on the classic line; -Werror=vla carried over
# from those jobs.
reconverse-linux-arm8:
timeout-minutes: 90
runs-on: ubuntu-24.04-arm
steps:
- uses: actions/checkout@v5
- name: install dependencies
run: sudo apt-get update && sudo apt-get install -y cmake libfabric-dev
- name: build
run: ./build charm++ reconverse-linux-arm8 -j4 -g -Werror=vla
- name: build tests
run: |
set -e
B=$PWD/reconverse-linux-arm8
for d in $TEST_DIRS; do make -C $d CHARMC=$B/bin/charmc; done
- name: test (single process)
run: |
set -e
for d in $TEST_DIRS; do make -C $d test; done
- name: test (2 processes, lcrun)
run: |
set -e
for d in $TEST_DIRS; do TESTRUN_PROCS=2 make -C $d test; done
reconverse-darwin-arm64:
timeout-minutes: 90
runs-on: macos-latest # Apple Silicon
steps:
- uses: actions/checkout@v5
- name: install dependencies
run: brew install libfabric
- name: build
run: ./build charm++ reconverse-darwin-arm8 -j4 -g
- name: build tests
run: |
set -e
B=$PWD/reconverse-darwin-arm8
for d in $TEST_DIRS; do make -C $d CHARMC=$B/bin/charmc; done
- name: test (single process)
run: |
set -e
for d in $TEST_DIRS; do make -C $d test; done
- name: test (2 processes, lcrun)
run: |
set -e
for d in $TEST_DIRS; do TESTRUN_PROCS=2 make -C $d test; done
# Race/stress tier: error checking live (CkEnforce-heavy tests with teeth),
# heavy anytime-migration stress (the #3939 regression class), QD settles,
# both process shapes. This is the job that hunts the bug class this line's
# hardening exists for.
reconverse-linux-stress:
timeout-minutes: 90
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: install dependencies
run: sudo apt-get update && sudo apt-get install -y cmake libfabric-dev
- name: build (error checking on)
run: ./build charm++ reconverse-linux-x86_64 -j4 -g --enable-error-checking
- name: build stress tests
run: |
set -e
B=$PWD/reconverse-linux-x86_64
make -C tests/charm++/anytime_bcastred CHARMC=$B/bin/charmc
make -C tests/charm++/qd CHARMC=$B/bin/charmc
make -C tests/charm++/megatest CHARMC=$B/bin/charmc
# Heavy migration config (-m 1 -c 8): every step migrates 8 of the 8
# elements. Exercises the #3939 class (obligation-free PEs vs reduction
# tree) that this line's reduction fix closes; hangs without it.
- name: anytime migration stress (single process)
run: |
set -e
cd tests/charm++/anytime_bcastred
B=$PWD/../../../reconverse-linux-x86_64
for S in 1 2 3; do
env LD_LIBRARY_PATH=$B/lib ./bcastred +pe 4 -n 8 -i 500 -m 1 -c 8 -S $S -w 30
done
- name: anytime migration stress (2 processes)
run: |
set -e
cd tests/charm++/anytime_bcastred
B=$PWD/../../../reconverse-linux-x86_64
for S in 4 5; do
$B/_deps/lci-src/lcrun -n 2 env LD_LIBRARY_PATH=$B/lib ./bcastred +pe 4 -n 8 -i 500 -m 1 -c 8 -S $S -w 30
done
- name: qd + megatest multi-process
run: |
set -e
B=$PWD/reconverse-linux-x86_64
cd tests/charm++/qd
$B/_deps/lci-src/lcrun -n 2 env LD_LIBRARY_PATH=$B/lib ./qdbench +pe 4
cd ../megatest
$B/_deps/lci-src/lcrun -n 2 env LD_LIBRARY_PATH=$B/lib ./megatest +pe 4