• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

FEniCS / ffcx / 33203028276
86%
main: 85%

Build:
Build:
LAST BUILD BRANCH: gh-readonly-queue/main/pr-877-811fd0a6ce9de0e897f3a9398ac582eab3bc66ea
DEFAULT BRANCH: main
Ran 28 Aug 2026 07:19PM UTC
Jobs 1
Files 59
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

28 Aug 2026 07:15PM UTC coverage: 85.517% (+0.7%) from 84.786%
33203028276

Pull #865

github

web-flow
Add benchmark harness and three codegen memory/dead-store fixes (#868)

* Add golden-master numeric test for HyperElasticity's cell kernels

The demo's residual and Jacobian forms (P2 vector displacement, nonlinear
strain energy, Jacobian built via ufl.derivative()) are the deepest-nested
tensor composition anywhere in the test/demo corpus, and had zero numeric
correctness coverage -- demo/test_demos.py only checks that the demo
compiles, never asserts a result. Any future change to how nested tensor
expressions get scalarized or factorized had nothing to catch a silent
wrong-value regression against.

Freezes the current compiler's output for both cell kernels against fixed,
deterministic, non-degenerate coefficient/constant/coordinate data (stored in
test/data/hyperelasticity_golden.npz alongside the inputs, so the fixture is
self-contained and reproducible). Verified the check actually catches a
regression by perturbing one frozen value and confirming the test fails with
a clear mismatch report, then restoring it.

* Add generated-code performance benchmark harness

FFCx has no performance harness at all -- only -O1 correctness tests and
demo/test_demos.py, which merely compiles. Recent perf-stack work
(loop-nest ordering, quadrature-loop splitting) needed ad hoc measurement
to validate, and at least one attempted optimisation had to be reverted
after being found to regress performance. bench/ compiles each case at
-O3 -march=native (unlike the -O1 correctness tests, which hide the
vectoriser behaviour these benchmarks target) and times it in a tight C
loop via ctypes, avoiding Python/FFI call overhead that would otherwise
swamp the cheapest kernels. Static stack usage is read from a
-fstack-usage sidecar of the exact cached generated source.

Run with `python -m bench.run [name-substring ...]`.

* Remove dead zero-initialisers for fw and LICM temp arrays

Both `fw` scalars (integral_generator.py) and LICM's hoisted `temp_N`
arrays (optimizer.py) w... (continued)
Pull Request #865: Stack codegen performance fixes: quadrature-loop split, tensor contraction, CSE, coordinate unrolling, LICM fusion

335 of 350 new or added lines in 7 files covered. (95.71%)

2 existing lines in 2 files now uncovered.

4529 of 5296 relevant lines covered (85.52%)

0.86 hits per line

Uncovered Changes

Lines Coverage ∆ File
9
95.8
-1.39% ffcx/codegeneration/optimizer.py
5
96.29
-0.39% ffcx/codegeneration/integral_generator.py
1
77.99
0.25% ffcx/codegeneration/lnodes.py

Coverage Regressions

Lines Coverage ∆ File
1
95.15
1.29% ffcx/codegeneration/C/formatter.py
1
77.99
0.25% ffcx/codegeneration/lnodes.py
Jobs
ID Job ID Ran Files Coverage
1 33203028276.1 28 Aug 2026 07:19PM UTC 59
85.52
GitHub Action Run
Source Files on build 33203028276
  • Tree
  • List 59
  • Changed 8
  • Source Changed 0
  • Coverage Changed 8
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Pull Request #865
  • PR Base - main (#32067227270)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc