Skip to content

Commit b8595a9

Browse files
committed
Updated Thread Scaling to run all four example/output combinations as separate matrix jobs
1 parent 3a4f0d0 commit b8595a9

2 files changed

Lines changed: 20 additions & 7 deletions

File tree

‎.github/workflows/thread_scaling.yml‎

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,15 @@ jobs:
156156
*definitions("basic/scintillator_barrel", scintillator_events),
157157
*definitions("optical/cherenkov", cherenkov_events),
158158
]
159-
print(f"benchmarks={json.dumps(benchmarks, separators=(',', ':'))}")
159+
matrix = [
160+
{
161+
"name": benchmark["name"],
162+
"artifact": benchmark["name"].replace("/", "-").replace(": ", "-").replace(" ", "-"),
163+
"benchmarks": [benchmark],
164+
}
165+
for benchmark in benchmarks
166+
]
167+
print(f"benchmarks={json.dumps(matrix, separators=(',', ':'))}")
160168
PY
161169
162170
build:
@@ -209,8 +217,12 @@ jobs:
209217
retention-days: ${{ fromJSON(needs.profile.outputs.artifact-retention-days) }}
210218

211219
benchmark:
212-
name: Measure and plot scaling
220+
name: ${{ matrix.name }}
213221
needs: [ profile, build ]
222+
strategy:
223+
fail-fast: false
224+
matrix:
225+
include: ${{ fromJSON(needs.profile.outputs.benchmarks) }}
214226
runs-on: ubuntu-latest
215227
timeout-minutes: 360
216228
# ThreadScale runs on an already deployed GEMC image containing all required runtime packages.
@@ -256,7 +268,7 @@ jobs:
256268
257269
- name: Measure thread scaling
258270
env:
259-
BENCHMARKS_JSON: ${{ needs.profile.outputs.benchmarks }}
271+
BENCHMARKS_JSON: ${{ toJSON(matrix.benchmarks) }}
260272
MAX_THREADS: ${{ needs.profile.outputs.max-threads }}
261273
REPLICAS: ${{ needs.profile.outputs.replicas }}
262274
RUNS: ${{ needs.profile.outputs.runs }}
@@ -296,7 +308,7 @@ jobs:
296308
- name: Upload scaling report
297309
uses: actions/upload-artifact@v7
298310
with:
299-
name: thread-scaling-report
311+
name: thread-scaling-report-${{ matrix.artifact }}
300312
path: thread-scaling
301313
if-no-files-found: error
302314
retention-days: ${{ fromJSON(needs.profile.outputs.artifact-retention-days) }}

‎releases/0.5.md‎

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -92,9 +92,10 @@ This version includes:
9292
- Simplified the Deploy workflow gate so every successful `Test` run originating from a push to `main`
9393
publishes the GEMC images instead of being skipped by redundant workflow metadata checks.
9494
- Added pull-request, weekly, and release thread-scaling benchmarks for the scintillator-barrel and Cherenkov
95-
examples. Each example runs sequential no-output and ROOT-output sweeps and summarizes both rates in one
96-
comparison plot. The workflow uses ThreadScale's standalone command on one hosted runner; statistical runs
97-
repeat complete CPU sweeps and publish machine-named Markdown summaries with the complete report artifacts.
95+
examples. Each example/output combination runs in a separate matrix job with its own report artifact and
96+
hosted runner, sharing one benchmark installation build. The workflow uses ThreadScale's standalone command;
97+
statistical runs repeat complete CPU sweeps and publish machine-named Markdown summaries with the complete
98+
report artifacts. Matrix jobs continue independently if another scenario fails.
9899
- Added a four-worker shared-generator record-integrity stress test and sequential, 1,000-event
99100
scintillator-barrel integration tests across a bounded set of worker counts. Instead of one test per
100101
core, the `threading` suite now exercises at most 10 worker counts sampled evenly from 1 to the

0 commit comments

Comments
 (0)