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

FEniCS / ffcx
85%

Build:
DEFAULT BRANCH: main
Repo Added 29 Oct 2018 01:07PM UTC
Files 59
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

LAST BUILD ON BRANCH main
branch: main
CHANGE BRANCH
x
Reset
  • main
  • chris/add-c-file-template
  • chris/basix-interface
  • chris/cnodes-backends
  • chris/entity_local_symbol
  • chris/fix-basix-interface2
  • chris/fix-issue-594
  • chris/fix-spack-workflow
  • chris/increase-precision
  • chris/integral-data
  • chris/lnode-cleanup
  • chris/lnodes
  • chris/move-c-code
  • chris/nanobind-compliance
  • chris/numba-plugin
  • chris/remove-precision
  • chris/remove-switch-case
  • chris/remove-unused-options
  • chris/spack-test
  • chris/split-code
  • chris/tabulate-entity-dofs-data
  • chris/test-lnodes
  • chris/ufcx-cleanup
  • chrisrichardson-patch-1
  • cmake-ufcx
  • dependabot/github_actions/actions/upload-artifact-7
  • dokken/3D-1D
  • dokken/add_visualise
  • dokken/bump-actions-python
  • dokken/cmake_version_range
  • dokken/constant-from-submesh
  • dokken/correct-dtype-ffcx
  • dokken/diagonalize
  • dokken/expand-facet-expressions
  • dokken/facet-integral-vertex-scheme
  • dokken/facet_expression_parent_fix
  • dokken/ffcx-representation-tlc
  • dokken/fix-0D-integrals
  • dokken/fix-ci
  • dokken/fix-duplicate-jacobians
  • dokken/fix-windows-ci
  • dokken/fix_flake8
  • dokken/fix_vertex_interval_integral
  • dokken/group_integrals_v2
  • dokken/improve_expr_demo
  • dokken/integral-type
  • dokken/manifold-double-derivatives
  • dokken/mypy
  • dokken/non-simplex-vertex-quadrature
  • dokken/pkg_resources_deprecate
  • dokken/proxy-coefficients
  • dokken/quadrature-regression
  • dokken/real_handling
  • dokken/remove-deprecations-from-source
  • dokken/remove-io-wrapper-warning
  • dokken/ruff0130
  • dokken/submesh-expression
  • dokken/turn_on_cancel_jacobians
  • dokken/typing
  • dokken/typing-p1
  • fix-ufl-version
  • francesco/email
  • francesco/fix-docs-release
  • francesco/openmpi5
  • garth/ci-basix-windows-retry
  • garth/ci-netlib
  • garth/cmap-hash-expr
  • garth/cmap-hash-test
  • garth/constants-checks
  • garth/contract-tensor-terms
  • garth/cost-fix
  • garth/doflinx-ci-fix
  • garth/dolfinx-integration
  • garth/ffcx-dolfinx
  • garth/fix-bessel-implicit-decl
  • garth/fix-numba-from-dtype-mypy
  • garth/fix-numpy-version
  • garth/gate-loop-split-on-mathfunction
  • garth/hyperelasticity-golden-master
  • garth/licm-fuse-hoist-loops
  • garth/namespace
  • garth/namespace-2
  • garth/pad-spack-cache
  • garth/perf-bench-harness
  • garth/perf-stack
  • garth/reciprocal-and-pow2-cse
  • garth/remove-quad-warning
  • garth/ruff-fixes
  • garth/simplify-ci
  • garth/spack-ci-udpate
  • garth/split-quadrature-loop
  • gh-readonly-queue/main/pr-725-3a6eb07ab6936adf496c95985594c2945ca52881
  • gh-readonly-queue/main/pr-726-0d3b9f818208fb15fec258925119ec3518066dfe
  • gh-readonly-queue/main/pr-728-712a57d2ed408bdecdbe4dd3ff9c622c6d496eee
  • gh-readonly-queue/main/pr-730-2ad24229c91e2a058ffb9f8bc5f4b9cf81f04ee5
  • gh-readonly-queue/main/pr-731-1a261c061ce9f7babe315110057e2d45be12a8cd
  • gh-readonly-queue/main/pr-733-c78d7ea9801d5a4a04656ac29601acc71f6f3cf3
  • gh-readonly-queue/main/pr-736-7164d8cfec00eec4dda0a8752819beeb7c0009dc
  • gh-readonly-queue/main/pr-739-008bd94c9080efb0270df9d96f94fad9651449ef
  • gh-readonly-queue/main/pr-741-eb8407b36d22dfbc74a850c786be49c2635633b2
  • gh-readonly-queue/main/pr-744-e5f11aa3b4169a08a567180d491c6418cbd33b14
  • gh-readonly-queue/main/pr-745-dc608157e86ea4dd9876f3c98ec00ca36c8c9ac4
  • gh-readonly-queue/main/pr-746-4d4e10e45d4e2ffd62126a5d45e699f587ceb640
  • gh-readonly-queue/main/pr-747-985bc5148c47593cb72bcf8c116b21d9ce92418e
  • gh-readonly-queue/main/pr-748-c6aa5cbc8c2360b728c901f1f4e1f04f9ca377b5
  • gh-readonly-queue/main/pr-751-bb5bbbf7d26196d7fd993ad7646a6d498a04bce9
  • gh-readonly-queue/main/pr-752-6aeb62c32c71ee4d0f87e64cb62f848587f6ddce
  • gh-readonly-queue/main/pr-753-27dce3bbca7d19a6b8580296a6a19f724a0080fa
  • gh-readonly-queue/main/pr-755-cbfc0f0ec5d30217e9e9c785f6b960ea53fb00b6
  • gh-readonly-queue/main/pr-757-6cf08829e1bb8ae516a1d0c62e5b7a1e3befc3e7
  • gh-readonly-queue/main/pr-758-238a28932685fa707536307a02cbc4acf56dd19d
  • gh-readonly-queue/main/pr-763-712964e45a12b879d6013d2f798f0846522edb59
  • gh-readonly-queue/main/pr-764-3a7171798e91c014a9973ddfa6b05b169f479288
  • gh-readonly-queue/main/pr-766-2b8a7c6cd0f8414a695ccffac2fa79128d7fe040
  • gh-readonly-queue/main/pr-767-e4fa16cb4349f8b939ab12078224a5cb83b4b08b
  • gh-readonly-queue/main/pr-768-a5cf441af91206eb175a0725d0b3a197c41000cd
  • gh-readonly-queue/main/pr-771-20c64a71a859dced89e8a1de143460079944f448
  • gh-readonly-queue/main/pr-772-9dcefc614b4b5f82ced48edc80fcd31f5389a6df
  • gh-readonly-queue/main/pr-773-4355b270bfb0f0e644791bec85d502c56ac81896
  • gh-readonly-queue/main/pr-775-7e22ce066b741836961e6de963185bb0ad03875e
  • gh-readonly-queue/main/pr-776-a4744c17f7a0d1cb9406cdde1fb5acbeb1552ffd
  • gh-readonly-queue/main/pr-777-3a7171798e91c014a9973ddfa6b05b169f479288
  • gh-readonly-queue/main/pr-778-a19a44fbc6b9c80676fc420edb9834aad51a4cb0
  • gh-readonly-queue/main/pr-779-3e0bae285053abac9e4a2a73c566b3813fabf986
  • gh-readonly-queue/main/pr-780-0a5848704c8dea934a6ce530bd95df338476776a
  • gh-readonly-queue/main/pr-781-c38fec9559dadd514f1cf470664d3306d1471af0
  • gh-readonly-queue/main/pr-782-f6a7e819f8c9b15ae8175cccef5839e2e381de38
  • gh-readonly-queue/main/pr-783-3f46df142908f639394d0fe842779154ab1a65cb
  • gh-readonly-queue/main/pr-784-251142443c3ec645aee2ea9d76889bc6460bdffe
  • gh-readonly-queue/main/pr-785-94261e42adf7e2755a6961ac1349237bc6a9a25b
  • gh-readonly-queue/main/pr-786-aead652c6cd3aee703e371d75df213169a697dd4
  • gh-readonly-queue/main/pr-788-167b834c638ec7a32b6116862d7d468ec9a5a25f
  • gh-readonly-queue/main/pr-789-930bd1509de4cce8fa36769cc3b7e3c9031021fc
  • gh-readonly-queue/main/pr-790-26608849f3906635f5f6507459252bcf2a5e83fe
  • gh-readonly-queue/main/pr-791-56e7eaaa8ca0b0c160661dfa2ef96eb13bb35fc7
  • gh-readonly-queue/main/pr-794-27fcb62394324853f72374fd8581a8e1236f09bd
  • gh-readonly-queue/main/pr-795-e319108d6baf1cb1cc142271ed7ff13d1c2119c1
  • gh-readonly-queue/main/pr-796-54ef0b10aa3869af935fa8d9aa78a0fbcdf45632
  • gh-readonly-queue/main/pr-797-f56f9bff35f4d4962f86e8d13c6bf4e480b2d2c2
  • gh-readonly-queue/main/pr-798-250af0264dabba8414aacde0d1fa73f77d6ed683
  • gh-readonly-queue/main/pr-799-2942ce75a4a522de8a8a58d34db63352ffdad576
  • gh-readonly-queue/main/pr-800-957c7b4154b10c73516e94851c60286c9279cdad
  • gh-readonly-queue/main/pr-801-818267a4f538d0eeab1afb54274b2580d2dbbaa0
  • gh-readonly-queue/main/pr-806-842b66da91e189917c636916c51fd79ab7454261
  • gh-readonly-queue/main/pr-807-d68b685c626970fa5117126d398c82397768b2dd
  • gh-readonly-queue/main/pr-808-dde9f735689f3175b294f827c94411dbe6987d7f
  • gh-readonly-queue/main/pr-809-98ada9463f25e931139722666bdd57cdafc4b20d
  • gh-readonly-queue/main/pr-810-55464b802d90dba8b0f784ffe3c1a203d2a7e1fb
  • gh-readonly-queue/main/pr-811-4403ddd5b4fc642449f406f3f2cfb09298671afa
  • gh-readonly-queue/main/pr-813-e85f94d03708a38d6481eb99f15bd36c75dd7616
  • gh-readonly-queue/main/pr-814-bc5b3a83b0c19443d22e13b8f556a20d4eb461ac
  • gh-readonly-queue/main/pr-818-e04a212e2823645ee547e7b039a6013c4d12cc4e
  • gh-readonly-queue/main/pr-820-38ab264dcddfca3a9f437d45771465f6b683a048
  • gh-readonly-queue/main/pr-821-e846cedeea9d62cc3faf07253cda55506ec7ff0c
  • gh-readonly-queue/main/pr-823-e4aaa3f61083540f720003b0b970eca8c5dbfc85
  • gh-readonly-queue/main/pr-824-5dcb90eadd56cff96b826c9395b1ea939cd1640d
  • gh-readonly-queue/main/pr-825-372d4a7a3c76d9d7976593c871807dec3dccac02
  • gh-readonly-queue/main/pr-826-9c7923b153a424207590f4f226c65b925b2dbcdb
  • gh-readonly-queue/main/pr-828-2871e613c45a54be1a3a1aa094de24dfc16193b1
  • gh-readonly-queue/main/pr-830-54893260dbf19a75fb15f3560e46a28c8cb73c58
  • gh-readonly-queue/main/pr-831-23fb328216708ab374057eb0a7895e90d55b12a7
  • gh-readonly-queue/main/pr-833-e50672a9778cd75169eb729bdb1e3376c06f427e
  • gh-readonly-queue/main/pr-834-96776990c0bdefaa3ab5ea65bc7f79957f37305a
  • gh-readonly-queue/main/pr-835-ddbe5e761b88644a0043810eda7c001b680dded8
  • gh-readonly-queue/main/pr-836-1dfd1a8e8eb1fecdbc8d03b283c462f258e726af
  • gh-readonly-queue/main/pr-838-54963a52fe02bcadd3ea4910ebdb3bb23d9bb6e9
  • gh-readonly-queue/main/pr-838-f2f855a2bc4b8773baf186c66e2112c49f773d9e
  • gh-readonly-queue/main/pr-840-f2f855a2bc4b8773baf186c66e2112c49f773d9e
  • gh-readonly-queue/main/pr-841-30b24031254459477225fe985dc3fc538bccafb6
  • gh-readonly-queue/main/pr-842-2d590aea08837e9312f77491111dedd8cd5ea1ca
  • gh-readonly-queue/main/pr-844-03b52714324561067dde4201b820fba871ebd133
  • gh-readonly-queue/main/pr-844-159fb790025c6b6ef591e2974ca1fcef99642aef
  • gh-readonly-queue/main/pr-846-03b52714324561067dde4201b820fba871ebd133
  • gh-readonly-queue/main/pr-847-f6cffaf2ec336717c2424461fa7530c36e60444b
  • gh-readonly-queue/main/pr-848-eb08a6e535d3ea22fb5321b546a117b9839e4873
  • gh-readonly-queue/main/pr-849-26e272a641a6dbe2c1a5c351229c65282e8fb6b1
  • gh-readonly-queue/main/pr-850-1a3f1896d94747a11e04830f88c86acd251be897
  • gh-readonly-queue/main/pr-854-d13817b31eead3ba5069ef715804eb78383d207c
  • gh-readonly-queue/main/pr-855-1a5f166c91d178c49062f546a5ccfc3ef9a72110
  • gh-readonly-queue/main/pr-856-7d77fbe44187060700e1b60c9cef517ba1e807b9
  • gh-readonly-queue/main/pr-857-d0796de5a650fda57639517989d909fbc6966909
  • gh-readonly-queue/main/pr-858-e48caed3b2673ec25e0e56db61c6bf28b5c1f6ed
  • gh-readonly-queue/main/pr-865-1612f31526b92f05723057d4d669727efd41b6ad
  • gh-readonly-queue/main/pr-869-76744fe1e6de4aad30f8d3db3dd5f57562472924
  • gh-readonly-queue/main/pr-871-b792ec593a5dd1e62cb609625733672dbbf52f29
  • gh-readonly-queue/main/pr-872-d8a66c534226709774c89aacdd154542ac59710e
  • gh-readonly-queue/main/pr-873-2af4625b5afaeee74eb964409c972ce2d7254368
  • gh-readonly-queue/main/pr-874-7456fe3aa5d259a507067a6c9a3835f65508af19
  • gh-readonly-queue/main/pr-875-18c7cda7f4b0a55b7fe78368e68f373e94d5df8b
  • gh-readonly-queue/main/pr-876-a43af0b53c47cc2877e1b290c89c460ea76c78a5
  • igor/bytes
  • igor/complex-demos
  • igor/cross_element_vec
  • igor/flop_count
  • igor/integral-expression
  • igor/lnodes_improv
  • igor/remove-opt
  • igor/reset-branch
  • igor/sum-factorization
  • igor/sum-factorization-opt
  • igor/test_integration
  • igor/test_ordering
  • jhale/bump-dev
  • jhale/bump-ufcx-version
  • jhale/bump-version-0.12
  • jhale/bump-version-0.8.0
  • jhale/bump-version-number
  • jhale/drop-python-310-support
  • jhale/fix-element-conversion
  • jhale/fix-pyproject
  • jhale/fix-tests-from-any-dir
  • jhale/low-level-kernel-smoothing
  • jhale/more-licenses
  • jhale/pydata-sphinx-theme
  • jhale/reproduce-windows-compiler-warnings
  • jhale/rollout-ref-system
  • jhale/special-doc-push
  • jhale/switch-header-to-unlicense
  • jhale/unlicense-for-header
  • jhale/update-wheel-build
  • jpdean/meshview
  • jpdean/mixed_dim
  • michal/cffi-logging
  • michal/coordinate-free-expr
  • michal/expand-facet-expressions
  • michal/raise-on-invalid-name
  • mscroggs/602
  • mscroggs/Symmetry-xfail
  • mscroggs/basix-rank-update
  • mscroggs/basix-ufl
  • mscroggs/default_domain
  • mscroggs/deprecated
  • mscroggs/derivative_listing_to_counts
  • mscroggs/dolfinx-2664
  • mscroggs/element
  • mscroggs/embedded-degree
  • mscroggs/fewer-warning
  • mscroggs/fix-CelGeometry-demo
  • mscroggs/gdim
  • mscroggs/leave-ufl-elements-alone
  • mscroggs/make_quadrature
  • mscroggs/move-QuadratureElement
  • mscroggs/mypy
  • mscroggs/mypy-fix
  • mscroggs/prism-ds
  • mscroggs/quadrature
  • mscroggs/quadrature-element
  • mscroggs/reconstruct-element
  • mscroggs/remove-broken-demos
  • mscroggs/remove-global-support-dofs
  • mscroggs/remove-xfail
  • mscroggs/reorder-simplices
  • mscroggs/run-dolfinx-demos
  • mscroggs/ufl
  • mscroggs/ufl-cell
  • mscroggs/ufl_coordinate_elements
  • mscroggs/vertex-quadrature
  • pin-scipy
  • pyproject-toml
  • release
  • remove-basix-private-imports
  • remove-log-import
  • scalar-type-opt
  • schnellerhase/abstract-cell
  • schnellerhase/adapt-to-numba
  • schnellerhase/backend-common
  • schnellerhase/backend-output-files
  • schnellerhase/copy-chris/languages-3
  • schnellerhase/copy-chris/languages-3-cpp
  • schnellerhase/dispatch
  • schnellerhase/drop-legacy-git-commit
  • schnellerhase/drop-python-3.9
  • schnellerhase/fix-ci
  • schnellerhase/fix-cmdline-test
  • schnellerhase/fix-numba-test-I/O
  • schnellerhase/fix-warning-capture
  • schnellerhase/mypy
  • schnellerhase/mypy-attr-defined
  • schnellerhase/numba-opt
  • schnellerhase/numba-opt-test-dep
  • schnellerhase/protocol
  • schnellerhase/python-3.14
  • schnellerhase/s390x
  • schnellerhase/test-werror
  • schnellerhase/unpin-scipy
  • schnellerhase/vertex-integrals
  • schnellerhase/warnings
  • sclaus2/add-void-to-kernels
  • sclaus2/add_voidptr_cast_intrinsic
  • sclaus2/fix-dolfinx-ref
  • spack-ci
  • spack-ci-badge
  • v0.10.0
  • v0.10.1
  • v0.10.1.post0
  • v0.11.0
  • v0.6.0
  • v0.7.0
  • version-dev-bumps

30 Aug 2026 07:25AM UTC coverage: 85.436% (+0.7%) from 84.786%
33299647211

push

github

web-flow
Stack codegen performance fixes: quadrature-loop split, tensor contraction, CSE, coordinate unrolling, LICM fusion (#865) (#876)

* Split quadrature loop into evaluation and contraction

The fused quadrature loop interleaves evaluation of the varying
quantities with the tensor contraction. The strided reads of the basis
tables in the contraction stop GCC vectorising the loop, and because
they share a loop body with the evaluation, math functions of the
spatial coordinate are left scalar: a P2 load vector with a
sin(pi x) sin(pi y) sin(pi z) source spends 64% of its time in scalar
__sin_fma, where the P1 kernel of the same form calls libmvec's
four-wide _ZGVdN4v_sin.

Store the fw intermediates in an array indexed by quadrature point and
contract in a second loop, leaving the evaluation loop free of the
strided accesses. On a P2 Poisson load vector (tetrahedra, 1.57M cells)
the kernel goes from 98.6 to 42 ns/cell and end-to-end RHS assembly in
DOLFINx from 0.183 s to 0.098 s, with bit-identical output. P1 and
matrix assembly are unchanged to within run-to-run noise.

Applies to single-index quadrature rules with fw intermediates; other
cases keep the fused loop.



* Group tensor contraction terms sharing an inner-loop factor

Loop-invariant code motion in the tensor contraction hoisted each term
of an entry separately, creating one temporary array and one
accumulation into the element tensor per term. A 3D Poisson operator
has one term per pair of derivative directions, so the inner loop
carried nine temporaries and nine read-modify-writes of A where three
suffice: terms that share the factor left in the inner loop differ only
in what was hoisted, so one temporary can hold their sum.

Group the terms of each entry by the factors that remain in the inner
loop, sum the hoisted parts into a single temporary per group, and emit
one accumulation per group. For P1 Poisson on tetrahedra the contraction
goes from nine temporaries and nine statements to three ... (continued)

364 of 389 new or added lines in 6 files covered. (93.57%)

2 existing lines in 2 files now uncovered.

4558 of 5335 relevant lines covered (85.44%)

0.85 hits per line

Relevant lines Covered
Build:
Build:
5335 RELEVANT LINES 4558 COVERED LINES
0.85 HITS PER LINE
Source Files on main
  • Tree
  • List 59
  • Changed 6
  • Source Changed 0
  • Coverage Changed 6
Coverage ∆ File Lines Relevant Covered Missed Hits/Line

Recent builds

Builds Branch Commit Type Ran Committer Via Coverage
33299647211 main Stack codegen performance fixes: quadrature-loop split, tensor contraction, CSE, coordinate unrolling, LICM fusion (#865) (#876) * Split quadrature loop into evaluation and contraction The fused quadrature loop interleaves evaluation of the vary... push 30 Aug 2026 07:42AM UTC web-flow github
85.44
33293647131 main Expose cancelling of J@K from UFL (#858) (#875) * Expose option from https://github.com/FEniCS/ufl/pull/496 to check that we get the same matrices for a div-div operator on RT. For higher order elements this really matters. * Typing * Hardcode ... push 30 Aug 2026 05:17AM UTC web-flow github
84.79
33271177139 main Test DOLFINx against a PETSc scalar-type matrix and run its demos (#872) * Test DOLFINx against a PETSc scalar-type matrix and run its demos Build fenics-dolfinx/py-fenics-dolfinx with PETSc enabled across fp64, fp32 and complex128 legs, and add... push 29 Aug 2026 07:38PM UTC web-flow github
84.79
33269068825 main Fix NuGet credentials so the Windows vcpkg binary cache actually works (#874) The "Add NuGet sources" step passed -UserName "${{ env.USERNAME }}", but USERNAME was never set in the workflow env, so it resolved to an empty string. nuget.exe then r... push 29 Aug 2026 06:49PM UTC web-flow github
84.79
33267548551 main Revert #858 and #865 (#873) * Revert "Stack codegen performance fixes: quadrature-loop split, tensor contraction, CSE, coordinate unrolling, LICM fusion (#865)" This reverts commit 2af4625b5. * Revert "Expose canc... push 29 Aug 2026 06:15PM UTC web-flow github
84.79
33252992871 main Stack codegen performance fixes: quadrature-loop split, tensor contraction, CSE, coordinate unrolling, LICM fusion (#865) * Split quadrature loop into evaluation and contraction The fused quadrature loop interleaves evaluation of the varying qua... push 29 Aug 2026 12:43PM UTC web-flow github
85.44
33221925888 main Use netlib BLAS in Spack-based CI workflow (#871) * Use netlib BLAS/LAPACK in Spack-based DOLFINx CI workflow Pin the blas/lapack virtual package providers to netlib-lapack, which builds much faster than openblas and is sufficient for CI correct... push 28 Aug 2026 11:59PM UTC web-flow github
84.79
33218504813 main Expose cancelling of J@K from UFL (#858) * Expose option from https://github.com/FEniCS/ufl/pull/496 to check that we get the same matrices for a div-div operator on RT. For higher order elements this really matters. * Typing * Hardcode toleran... push 28 Aug 2026 10:58PM UTC web-flow github
84.79
33218395874 main Only run FFCx CI push trigger on main, not every branch (#869) CI was configured to run on push to any branch (branches: "**"), which duplicates the pull_request trigger and runs CI on every commit rather than on PRs. Restrict push triggers to ma... push 28 Aug 2026 10:56PM UTC web-flow github
84.79
32705477796 main Pad the shared Spack install tree (#857) fenics-basix/gh-actions-env.yml and fenics-dolfinx/gh-actions-env.yml both build into a padded, fixed install root so their binaries stay relocatable when pulled from the shared oci://ghcr.io/fenics/spack-... push 24 Aug 2026 08:21AM UTC web-flow github
84.79
See All Builds (3193)
  • Repo on GitHub
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