Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
2c56f6d
perf(diffgeo): add wave3 harness and reuse form operators
Autoparallel Mar 7, 2026
6ca4ba7
perf(diffgeo): densify weak derivative assembly
Autoparallel Mar 7, 2026
2810304
perf(spectral): reuse circular coordinate setup
Autoparallel Mar 7, 2026
2a6213d
perf(diffgeo): parallelize form up-laplacian assembly
Autoparallel Mar 7, 2026
d1db951
docs(perf): record wave3 rejected experiments
Autoparallel Mar 7, 2026
d2b8f01
docs(perf): summarize wave3 campaign state
Autoparallel Mar 7, 2026
1425f1f
perf(spectral): cache normalized kernel operator
Autoparallel Mar 7, 2026
dee719f
perf(diffusion): fuse post-knn build passes
Autoparallel Mar 7, 2026
89e82be
perf(hodge): cache gamma assembly in workspace
Autoparallel Mar 7, 2026
01a656f
docs(perf): update wave3 report
Autoparallel Mar 7, 2026
5d0f4db
perf(dec): parallelize stable face-incidence build
Autoparallel Mar 7, 2026
8483375
docs(perf): record wave3 dec pass and rejected trials
Autoparallel Mar 7, 2026
907b8ac
perf(circular): matrixize workspace preparation
Autoparallel Mar 7, 2026
a297d22
docs(perf): record circular prep rewrite
Autoparallel Mar 7, 2026
2a24aef
perf(spectral): loosen tolerance for small basis solves
Autoparallel Mar 7, 2026
4fa67bf
docs(perf): record spectral tolerance pass
Autoparallel Mar 7, 2026
5e07f81
perf(hodge): matrixize curl energy assembly
Autoparallel Mar 7, 2026
36c2be4
docs(perf): record hodge curl matrix pass
Autoparallel Mar 7, 2026
49b3bd3
perf(spectral): use cholesky whitening for dense solves
Autoparallel Mar 7, 2026
a098481
docs(perf): record dense solve pass
Autoparallel Mar 7, 2026
a3a33ac
docs(perf): record diffgeo mixed gamma rejection
Autoparallel Mar 7, 2026
6ca8e46
style: apply clang-format to wave3 perf changes
Autoparallel Mar 7, 2026
cf653c4
ci(perf): add diffgeo coverage to smoke and deep reports
Autoparallel Mar 7, 2026
59336a7
perf(dec): specialize curvature traversal for DEC storage
Autoparallel Mar 7, 2026
d743c17
docs(perf): record continuation profiler pass
Autoparallel Mar 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 40 additions & 2 deletions .github/workflows/perf-deep.yml
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ jobs:
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_TOOLCHAIN_FILE=${{ github.workspace }}/vcpkg/scripts/buildsystems/vcpkg.cmake \
-DVCPKG_TARGET_TRIPLET=x64-linux
cmake --build build-release --parallel --target bench_geometry bench_dod bench_pipelines
cmake --build build-release --parallel --target bench_geometry bench_dod bench_pipelines bench_diffgeo

- name: Run head deep benchmarks
shell: bash
Expand All @@ -78,6 +78,13 @@ jobs:
--benchmark_out=artifacts/perf/head/bench_pipelines_head.json \
--benchmark_out_format=json > artifacts/perf/head/bench_pipelines_head.txt

./build-release/bench_diffgeo \
--benchmark_min_time=0.2s \
--benchmark_repetitions=10 \
--benchmark_report_aggregates_only=true \
--benchmark_out=artifacts/perf/head/bench_diffgeo_head.json \
--benchmark_out_format=json > artifacts/perf/head/bench_diffgeo_head.txt

- name: Build and run baseline deep benchmarks
shell: bash
run: |
Expand Down Expand Up @@ -114,6 +121,17 @@ jobs:
echo "bench_pipelines target not available on baseline $BASELINE_SHA" > artifacts/perf/base/bench_pipelines_base.txt
fi

if cmake --build baseline/build-release --parallel --target bench_diffgeo; then
./baseline/build-release/bench_diffgeo \
--benchmark_min_time=0.2s \
--benchmark_repetitions=10 \
--benchmark_report_aggregates_only=true \
--benchmark_out=artifacts/perf/base/bench_diffgeo_base.json \
--benchmark_out_format=json > artifacts/perf/base/bench_diffgeo_base.txt
else
echo "bench_diffgeo target not available on baseline $BASELINE_SHA" > artifacts/perf/base/bench_diffgeo_base.txt
fi

- name: Compare benchmark deltas
shell: bash
run: |
Expand Down Expand Up @@ -141,6 +159,24 @@ jobs:
--output-markdown artifacts/perf/reports/bench_pipelines_deep.md \
--output-json artifacts/perf/reports/bench_pipelines_deep.json

if [[ -s artifacts/perf/base/bench_diffgeo_base.json ]]; then
python3 scripts/perf/compare_against_main.py \
--baseline artifacts/perf/base/bench_diffgeo_base.json \
--current artifacts/perf/head/bench_diffgeo_head.json \
--baseline-commit "$BASELINE_SHA" \
--label "Deep run: bench_diffgeo (baseline $BASELINE_SHA)" \
--output-markdown artifacts/perf/reports/bench_diffgeo_deep.md \
--output-json artifacts/perf/reports/bench_diffgeo_deep.json
else
python3 scripts/perf/compare_against_main.py \
--baseline artifacts/perf/base/bench_diffgeo_base.txt \
--current artifacts/perf/head/bench_diffgeo_head.json \
--baseline-commit "$BASELINE_SHA" \
--label "Deep run: bench_diffgeo (baseline $BASELINE_SHA)" \
--output-markdown artifacts/perf/reports/bench_diffgeo_deep.md \
--output-json artifacts/perf/reports/bench_diffgeo_deep.json
fi

{
echo "# Perf Deep Report"
echo
Expand All @@ -151,6 +187,8 @@ jobs:
cat artifacts/perf/reports/bench_dod_deep.md
echo
cat artifacts/perf/reports/bench_pipelines_deep.md
echo
cat artifacts/perf/reports/bench_diffgeo_deep.md
} > artifacts/perf/reports/deep-summary.md

- name: Build compact CSV summary
Expand All @@ -162,7 +200,7 @@ jobs:

out = Path("artifacts/perf/reports/deep-summary.csv")
rows = ["suite,benchmark,baseline_ns,current_ns,delta_pct,status"]
for suite in ("bench_geometry_deep", "bench_dod_deep", "bench_pipelines_deep"):
for suite in ("bench_geometry_deep", "bench_dod_deep", "bench_pipelines_deep", "bench_diffgeo_deep"):
path = Path(f"artifacts/perf/reports/{suite}.json")
if not path.exists():
continue
Expand Down
42 changes: 41 additions & 1 deletion .github/workflows/perf-smoke.yml
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ jobs:
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_TOOLCHAIN_FILE=${{ github.workspace }}/vcpkg/scripts/buildsystems/vcpkg.cmake \
-DVCPKG_TARGET_TRIPLET=x64-linux
cmake --build build-release --parallel --target bench_geometry bench_dod bench_pipelines
cmake --build build-release --parallel --target bench_geometry bench_dod bench_pipelines bench_diffgeo

- name: Run head smoke benchmarks
shell: bash
Expand All @@ -117,6 +117,14 @@ jobs:
--benchmark_out=artifacts/perf/head/bench_pipelines_head.json \
--benchmark_out_format=json > artifacts/perf/head/bench_pipelines_head.txt

./build-release/bench_diffgeo \
--benchmark_filter='bench_diffgeo_pipeline/1000/50/32/32|bench_diffgeo_pipeline/4000/64/32/32|bench_diffgeo_phase_structure_build/1000/50/32/32|bench_diffgeo_phase_structure_build/4000/64/32/32|bench_diffgeo_phase_eigenbasis/1000/50/32/32|bench_diffgeo_phase_eigenbasis/4000/64/32/32|bench_diffgeo_phase_circular/1000/50/32/32|bench_diffgeo_phase_circular/4000/64/32/32|bench_diffgeo_phase_k1_up/4000/64/32/32|bench_diffgeo_phase_k2_up/4000/64/32/32' \
--benchmark_min_time=0.05s \
--benchmark_repetitions=5 \
--benchmark_report_aggregates_only=true \
--benchmark_out=artifacts/perf/head/bench_diffgeo_head.json \
--benchmark_out_format=json > artifacts/perf/head/bench_diffgeo_head.txt

- name: Build and run baseline smoke benchmarks
shell: bash
run: |
Expand Down Expand Up @@ -155,6 +163,18 @@ jobs:
echo "bench_pipelines target not available on baseline ${{ steps.baseline.outputs.base_sha }}" > artifacts/perf/base/bench_pipelines_base.txt
fi

if cmake --build baseline/build-release --parallel --target bench_diffgeo; then
./baseline/build-release/bench_diffgeo \
--benchmark_filter='bench_diffgeo_pipeline/1000/50/32/32|bench_diffgeo_pipeline/4000/64/32/32|bench_diffgeo_phase_structure_build/1000/50/32/32|bench_diffgeo_phase_structure_build/4000/64/32/32|bench_diffgeo_phase_eigenbasis/1000/50/32/32|bench_diffgeo_phase_eigenbasis/4000/64/32/32|bench_diffgeo_phase_circular/1000/50/32/32|bench_diffgeo_phase_circular/4000/64/32/32|bench_diffgeo_phase_k1_up/4000/64/32/32|bench_diffgeo_phase_k2_up/4000/64/32/32' \
--benchmark_min_time=0.05s \
--benchmark_repetitions=5 \
--benchmark_report_aggregates_only=true \
--benchmark_out=artifacts/perf/base/bench_diffgeo_base.json \
--benchmark_out_format=json > artifacts/perf/base/bench_diffgeo_base.txt
else
echo "bench_diffgeo target not available on baseline ${{ steps.baseline.outputs.base_sha }}" > artifacts/perf/base/bench_diffgeo_base.txt
fi

- name: Compare benchmark deltas
shell: bash
run: |
Expand Down Expand Up @@ -216,6 +236,24 @@ jobs:
> artifacts/perf/reports/bench_pipelines_smoke.json
fi

if [[ -s artifacts/perf/base/bench_diffgeo_base.json ]]; then
python3 scripts/perf/compare_against_main.py \
--baseline artifacts/perf/base/bench_diffgeo_base.json \
--current artifacts/perf/head/bench_diffgeo_head.json \
--baseline-commit "${{ steps.baseline.outputs.base_sha }}" \
--label "PR smoke: bench_diffgeo (baseline ${{ steps.baseline.outputs.base_sha }})" \
--output-markdown artifacts/perf/reports/bench_diffgeo_smoke.md \
--output-json artifacts/perf/reports/bench_diffgeo_smoke.json
else
python3 scripts/perf/compare_against_main.py \
--baseline artifacts/perf/base/bench_diffgeo_base.txt \
--current artifacts/perf/head/bench_diffgeo_head.json \
--baseline-commit "${{ steps.baseline.outputs.base_sha }}" \
--label "PR smoke: bench_diffgeo (baseline ${{ steps.baseline.outputs.base_sha }})" \
--output-markdown artifacts/perf/reports/bench_diffgeo_smoke.md \
--output-json artifacts/perf/reports/bench_diffgeo_smoke.json
fi

{
echo "# Perf Smoke Report"
echo
Expand All @@ -229,6 +267,8 @@ jobs:
cat artifacts/perf/reports/bench_dod_smoke.md
echo
cat artifacts/perf/reports/bench_pipelines_smoke.md
echo
cat artifacts/perf/reports/bench_diffgeo_smoke.md
} > artifacts/perf/reports/smoke-summary.md

- name: Publish job summary
Expand Down
3 changes: 3 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,9 @@ target_link_libraries(bench_dod PRIVATE igneous benchmark::benchmark)
add_executable(bench_pipelines benches/bench_pipelines.cpp)
target_link_libraries(bench_pipelines PRIVATE igneous benchmark::benchmark)

add_executable(bench_diffgeo benches/bench_diffgeo.cpp)
target_link_libraries(bench_diffgeo PRIVATE igneous benchmark::benchmark)

add_executable(igneous-mesh src/main_mesh.cpp)
target_link_libraries(igneous-mesh PRIVATE igneous fmt::fmt)

Expand Down
Loading