Skip to content

deps: bump cpu/cuda pins so the whole tree agrees on one kernels commit - #77

Merged
balbasty merged 1 commit into
mainfrom
claude/bump-pins-one-kernels
Aug 18, 2026
Merged

deps: bump cpu/cuda pins so the whole tree agrees on one kernels commit#77
balbasty merged 1 commit into
mainfrom
claude/bump-pins-one-kernels

Conversation

@balbasty

Copy link
Copy Markdown
Collaborator

Top of a bottom-up cascade that closes a live submodule pin skew. Gitlink-only — git diff-tree reports exactly two modified paths, cpu and cuda.

  • cpu: dbd32741fb2b37 (current fastfields-cpu-libmain)
  • cuda: 6ae52bd2b2ad55 (current fastfields-cuda-libmain)

The skew

Traced by walking the actual gitlinks on main, not the submodule branch labels:

CPU path : lib -> cpu-lib dbd3274 -> cpu-impl 41d66b3 -> kernels be7be08
CUDA path: lib -> cuda-lib 6ae52bd -> cuda-impl a099a04 -> kernels b09b284

The two backends genuinely resolved to different kernels commits, CUDA three behind:

kernels PRcommitwhat the CUDA path was missing
#7432951daheap over-read from the past-the-end FaceIterator — a memory-safety fix
#763e38c85make the host BVH/normal builders visible to nvcc's host pass — a CUDA-specific fix the CUDA path itself lacked
#78be7be08drop the pointless virtual destructors from Node/BoundingSphere

Two details worth recording, both found by tracing rather than assuming:

  1. The stale link was cuda-lib's impl pin, which was 11 commits behind cuda-implmain. cuda-impl's own main already pinned 3e38c85, so the CUDA path resolved to a third kernels commit that neither leaf repo pointed at directly.
  2. The skew was one commit wider than described in either direction: #78 was missing too, and the CPU path was itself one behind kernels main (be7be08, predating tools: restore consolidate.sh onto the consolidated main #79).

Final state — all six repos on one kernels commit

lib -> cpu-lib 1fb2b37 -> cpu-impl 5e2c78e -> kernels 1df9fd3
lib -> cuda-lib 2b2ad55 -> cuda-impl 83fa026 -> kernels 1df9fd3

What the cascade carries

changewhere
diag_bending/diag_all corner cross-term correctness fix (12 terms, 6 functions)kernels#81 → both backends
its regression test (2D + 3D, whole-domain, 3 boundary conditions)cpu-lib#89
reg_flow bending==0 Lamé dispatch routingcpu-lib#87
eight missing #pragma once include guardscuda-impl#48
restrict.hbatch.h include for index2sub (unblocks g++ entirely)kernels#79, via both pins

Verification

  • CPU suite at the final chain: 13/13 suites, 0 failures (test_reg_field 19250 checks, test_reg_flow 16347, both including the new regression tests).
  • The fix is genuinely exercised: the new tests fail with 328 + 1696 failures against pre-fix kernels and pass at 1df9fd3, with identical check counts both ways.
  • g++: full clean build + suite run, exit 0, 13/13 green — previously impossible on this tree.
  • CUDA compile+link: build-via-cuda-lib passed on cuda-impl#48 (5c68cf9) and cuda-impl#49 (83fa026), and cuda-lib#47's own build job passed at 2b2ad55 — each a real make -C . -j2 CXX=clang++ CXXFLAGS="-std=c++14 -O1". -O1 and the split MODULES list are untouched.

Pin hygiene

Both pins are the squash-merge commits on their repos' main, not pre-merge branch heads. Every gitlink in the chain was verified to resolve with git cat-file -e before opening this PR — the check caught one stale local view, which was a missing fetch rather than a dangling pin.

🤖 Generated with Claude Code

https://claude.ai/code/session_016AjQcY78NgbagPSbPJRr6Z


Generated by Claude Code

Moves cpu dbd3274 -> 1fb2b37 and cuda 6ae52bd -> 2b2ad55, the current mains
of fastfields-cpu-lib and fastfields-cuda-lib.
This is the top of a bottom-up cascade that closes a live pin skew. Before
it, the two backends resolved to different kernels commits:
CPU path : lib -> cpu-lib -> cpu-impl -> kernels be7be08
CUDA path: lib -> cuda-lib -> cuda-impl -> kernels b09b284 (three behind)
The CUDA side was missing kernels#74 (heap over-read from the past-the-end
FaceIterator, a memory-safety fix), #76 (make the host BVH/normal builders
visible to nvcc's host pass -- a CUDA-specific fix the CUDA path lacked) and
#78 (drop the pointless virtual destructors).
After this commit every path resolves to kernels 1df9fd3:
lib -> cpu-lib 1fb2b37 -> cpu-impl 5e2c78e -> kernels 1df9fd3
lib -> cuda-lib 2b2ad55 -> cuda-impl 83fa026 -> kernels 1df9fd3
The cascade also carries the diag_bending/diag_all corner cross-term
correctness fix (kernels#81) to both backends, its regression test
(cpu-lib#89), the reg_flow Lame dispatch routing (cpu-lib#87) and the
cuda-impl include guards (cuda-impl#48).
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016AjQcY78NgbagPSbPJRr6Z
@github-actions

Copy link
Copy Markdown

Submodule staleness (non-blocking -- fastfields-lib#15)

submodulepinned committracksstatusbehind by
cpu1fb2b37fastfields/fastfields-cpu-lib@mainup to date0
cuda2b2ad55fastfields/fastfields-cuda-lib@mainup to date0

@balbasty
balbasty merged commit 02f0b19 into mainAug 18, 2026
4 checks passed
@balbasty
balbasty deleted the claude/bump-pins-one-kernels branch August 18, 2026 18:27
Sign up for freeto 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.

2 participants

@balbasty@claude