Skip to content

Jtcj support pairs#1413

Merged
erikfrey merged 2 commits into
google-deepmind:mainfrom
erikfrey:jtcj-support-pairs
Jun 5, 2026
Merged

Jtcj support pairs#1413
erikfrey merged 2 commits into
google-deepmind:mainfrom
erikfrey:jtcj-support-pairs

Conversation

@erikfrey

@erikfrey erikfrey commented Jun 5, 2026

Copy link
Copy Markdown
Collaborator

Fixed the merge conflicts in #1411 so we can merge while @adenzler-nvidia enjoys his weekend.

Amazing work, thanks!

adenzler-nvidia and others added 2 commits June 5, 2026 17:30
The sparse elliptic-cone Hessian assembly (JTCJ) previously ran
output-stationary: one thread per (contact, dense dof-pair), scanning
the contact's column indices to locate each pair. When nefc >> nv the
overwhelming majority of those dof-pairs do not appear in the contact's
support, so the kernel spent almost all of its time scanning and
skipping.

Restructure it to be input-stationary: launch one thread per
(contact, support-pair), decode the pair index directly into the two
participating dofs, register-sum the cone block, and accumulate into H
with a single atomic add. This touches only the pairs that actually
contribute and exposes far more parallelism. The pair dimension is
bounded by jtcj_max_pairs, derived once in io.py from the deepest
geom-body dof chain. The math is unchanged.
@erikfrey erikfrey requested a review from thowell June 5, 2026 17:53
@erikfrey erikfrey merged commit 373b61a into google-deepmind:main Jun 5, 2026
14 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants