@@ -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) }}
0 commit comments