Skip to content

fix(cuda): stabilize AL-IPC and harden release compatibility - #491

Merged
KemengHuang merged 6 commits into
mainfrom
refactor-main
Sep 3, 2026
Merged

fix(cuda): stabilize AL-IPC and harden release compatibility#491
KemengHuang merged 6 commits into
mainfrom
refactor-main

Conversation

@KemengHuang

Copy link
Copy Markdown
Member

Summary

  • harden the current AL-IPC active-set integration with type-correct earliest-TOI filtering, decay-derived pair lifetime, persistent amortized CUDA scratch, and AL-specific CCD handling
  • correct sample-88 trajectory failures by honoring newton/semi_implicit/K_min, fixing the EE friction Jacobian, rejecting and rolling back failed line-search trials, and restoring stable mass-based per_vertex penalty scaling as the default
  • preserve the owner-required AL parallel-EE policy: the negative mollifier coefficient keeps need_mollify() false
  • harden the merged fix(cmake): quote CUDA architecture list so wheels ship every target #490 architecture fix with one checked CMake setter covering the final backend, every component OBJECT target, and the CUDA test target
  • distinguish packaged SASS from PTX-JIT compatibility in uipc doctor; CUDA 12.8.1 PTX fallback now uses Linux 570.124.06 / Windows 572.61 driver floors while native SASS retains the CUDA 12.x minimum-driver floor
  • update public configuration/build documentation, ADRs, handoff notes, release policy, and wheel smoke checks

Behavior changes

  • AL-IPC consumes newton/semi_implicit/enable and K_min for cumulative safe-path progress; beta_tol remains IPC-only
  • contact/al-ipc/mu_scale_mode defaults to per_vertex; diag_norm remains available as an experimental explicit mode
  • an exhausted AL line search restores the recorded start point instead of accepting an energy-increasing trial
  • compatibility diagnostics report whether a GPU selects SASS or PTX and apply the corresponding driver requirement; this is diagnostic only and does not add a runtime driver gate

Validation

  • sample 88 with cloth: 250/250 frames converged, no line-search/Newton limit or runtime error
  • matched 60-frame sample-88 centroid error versus IPC reduced from 0.2963/0.0807 to 0.0115/0.0045
  • CMake CUDA backend: 22 cases / 335 assertions
  • Core: 36 cases / 1040 assertions
  • single-process simulation suite: 95 cases / 14213 assertions
  • comma-form release architecture configure: all 214 test-enabled CUDA translation units carry all six codegen entries
  • repository contracts: 48/48
  • portable Python: 80 passed / 1 skipped
  • fast CTest: 3/3
  • CMake and XMake production CUDA targets built successfully
  • Python 3.14 uipc doctor --probe-cuda passed on RTX 5090 / CUDA 13.2
  • complete Doxygen/MkDoxy/MkDocs build passed

The tracked libuipc-samples gitlink is unchanged; local sample edits are not part of this PR.

Reimplement the useful AL-release changes on current cuda_tool: type-safe earliest-TOI filtering, decay-derived pair lifetime, stable CUB merging, conditioning-aware penalty scaling, AL-scoped CCD margins, and full-step inner-solve updates. Preserve the legacy per-vertex mode, add focused/schema/simulation coverage, and document the remaining paper-parity work.
@KemengHuang
KemengHuang merged commit 5c45796 into main Sep 3, 2026
22 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.

1 participant