ENH: Add performance benchmark CI builds#612
ENH: Add performance benchmark CI builds#612hjmjohnson merged 2 commits intoInsightSoftwareConsortium:mainfrom
Conversation
6a32231 to
ce113c5
Compare
|
Speechless. Awesome. |
71f2cc5 to
111d88b
Compare
c0f2bbb to
289543a
Compare
fa20324 to
96b6114
Compare
96b6114 to
b1d0d43
Compare
b1d0d43 to
9cc56fa
Compare
|
Errors:
|
9cc56fa to
1e53cfb
Compare
|
Hmm. Seems we got a timeout on one of our queries. Do: check |
0948b8f to
698efc6
Compare
Add .github/workflows/perf-benchmark.yml, an opt-in GHA workflow
that runs the ASV-based performance regression harness hosted at
InsightSoftwareConsortium/ITKPerformanceBenchmarking on pull
requests labelled 'performance' (or via manual dispatch).
The workflow:
- Computes BASE = merge-base(PR, origin/master) and builds ITK at
both BASE and PR HEAD with Module_PerformanceBenchmarking=ON,
BUILD_EXAMPLES=ON, BUILD_TESTING=ON (required for the
ExternalData fixture fetch), and BUILD_SHARED_LIBS=OFF. The two
builds share a ccache so the second build is mostly incremental.
- Builds only the benchmark executables plus ITKBenchmarksData,
avoiding a full ITK test suite build.
- Checks out InsightSoftwareConsortium/ITKPerformanceBenchmarking
at the PERF_HARNESS_REF env var (defaults to the asv-native-
harness branch while that work is landing upstream; flip to a
merged SHA afterwards).
- Creates the 'itk-repo' symlink required by the harness's
asv.conf.json, installs the itk_perf_shim Python package, and
runs 'asv run --set-commit-hash <SHA>' against each build so
result labels track ITK history.
- 'asv compare --factor=1.10 --split' produces a markdown diff;
posted as a sticky PR comment and uploaded as an artifact along
with the 'asv publish' HTML tree.
Opt-in via the 'performance' label keeps the two-ITK-build cost
off the default PR path. No changes to any existing workflow or
Azure Pipelines file.
Replaces the intent of the long-stalled thewtex/ITK:ci-performance-
builds branch (InsightSoftwareConsortium#612), which proposed
an Azure Pipelines job targetting the retired macos-11 image and
the legacy evaluate-itk-performance.py driver.
c6b6b60 to
fbbbf29
Compare
fbbbf29 to
cfa9a3f
Compare
cfa9a3f to
c4e39a6
Compare
|
@thewtex — the rebase + To remove the in-workflow patch permanently:
|
c4e39a6 to
2359970
Compare
|
@thewtex — ITKPerformanceBenchmarking#113 merged (b24324f922). Force-pushed tip Net diff vs the pre-rebase tip
Fresh CI kicked off; should settle similarly to the previous run ( |
|
| Filename | Overview |
|---|---|
| .github/workflows/perf-benchmark.yml | New CI workflow running ASV benchmarks on base vs HEAD; broken for workflow_dispatch due to empty github.base_ref, and has unused CMakeVersion/ExternalDataVersion env vars. |
| Modules/Remote/PerformanceBenchmarking.remote.cmake | Single-line GIT_TAG bump to pin the commit that introduced the ASV harness (asv.conf.json) required by the new workflow. |
Sequence Diagram
sequenceDiagram
participant GHA as GitHub Actions
participant Base as itk-base (merge-base)
participant Head as itk-head (PR HEAD)
participant ASV as ASV Harness
GHA->>Base: checkout @ merge-base
GHA->>Head: checkout @ PR HEAD (full history)
GHA->>Base: cmake configure + build benchmark targets
GHA->>Head: cmake configure + build benchmark targets
Note over Head: PerformanceBenchmarking module populated with asv.conf.json
GHA->>ASV: pip install harness (from itk-head)
GHA->>ASV: asv machine --yes
GHA->>ASV: asv run --quick @ merge-base SHA
Note over ASV: continue-on-error: true
GHA->>ASV: asv run --quick @ HEAD SHA
GHA->>ASV: asv compare merge-base HEAD
ASV-->>GHA: asv-compare.txt + results artifact
Reviews (1): Last reviewed commit: "COMP: Bump PerformanceBenchmarking pin t..." | Re-trigger Greptile
2359970 to
a677cfc
Compare
|
@thewtex. I have been addressing old issues and cleaning up the backlog, so I went straight to the oldest PR. I'd like to take this to a final resting state. I'm ok if we just close it, or include it, or make some changes to get it over a finish line (whatever goal-post changing finish line is currently most beneficial). This was a nice test bed for resolving some other issues, and I think it is now ready for final remarks. |
jhlegarreta
left a comment
There was a problem hiding this comment.
Thanks for pushing this @hjmjohnson.
Adds .github/workflows/perf-benchmark.yml — a GitHub Actions workflow that builds ITK twice (merge-base and PR HEAD) with the PerformanceBenchmarking remote module enabled, then drives the ASV harness from InsightSoftwareConsortium/ITKPerformanceBenchmarking#111 against each build to produce an asv compare report. Bumps the PerformanceBenchmarking remote module pin from 7950c1d76095033edbf7601a925cdacc2fe717f9 to 41bf1b9cfbaa1b146e1b3e5d3ad3571b2203ce1e (master HEAD, post-InsightSoftwareConsortium#111). The new pin carries: * asv.conf.json, benchmarks/{core,filtering,segmentation}.py, python/itk_perf_shim/ (the ASV harness). * Hardened examples/Core/itkCopyIterationBenchmark.cxx that no longer crashes on VectorImage under ITK >= 1d87efa (the VLV null-data regression; see InsightSoftwareConsortium#6087 for the parallel ITK-side defensive null-guard). Supersedes the 2019 Azure Pipelines macos-11 approach; macos-11 is retired and the older evaluate-itk-performance.py driver has been replaced by the ASV-native harness. For the very first PR (this one) the merge-base lacks the new pin, so its benchmark run is best-effort and the asv compare step is wrapped with continue-on-error. The workflow becomes fully useful for regression detection after this PR lands.
Advance the GIT_TAG in Modules/Remote/PerformanceBenchmarking.remote.cmake to 63fec3013cccfe7e8b1b88a1d2d889f7e64e4469, the current tip of InsightSoftwareConsortium/ITKPerformanceBenchmarking master, which includes the COMP: Drop unused InputPixelType typedefs cleanup that silences the -Wunused-local-typedef warnings the perf-benchmark CI job emitted on the prior pin.
|
/azp run ITK.macOS |
No description provided.