CUDA implementation · research software
Symbolic simulation without the combinatorial code
Describe physical energies once. YASPS traces every value to its true degrees of freedom, differentiates the symbolic program, emits fused CUDA kernels, assembles the sparse Newton system, and solves it on the GPU.
A world-space point may be a free vertex, part of an affine body, or generated by a cage. Conventional implementations often duplicate every energy for every combination. YASPS keeps one expression and preserves the route from each value back to its actual parameters.
It is not an eager tensor library. An expression such as a + b + c becomes one symbolic graph and one generated computation; YASPS does not materialize a + b as an intermediate array.
Learn the frontend in order
Work through these chapters sequentially. Each one supplies a piece of the final mixed-body program.
-
01
Getting started
Install the CUDA implementation and run the smallest symbolic solve.
-
02
Scene and mesh model
Understand scenes, meshes, primitives, lineage, and generated execution.
-
03
Attributes and expressions
Declare data, constants, matrix expressions, and named computation boundaries.
-
04
Connectivity and JOIN
Gather values from another primitive while retaining their symbolic path.
-
05
Primitive unions
Present heterogeneous parameterizations through one compatible interface.
-
06
Energies and minimization
Register scalar objectives, choose targets, assemble derivatives, and solve.
-
07
Dynamic contact topology
Update changing contact stencils without rebuilding the symbolic energy.
-
08
Complete mixed-body example
Assemble all seven chapters into the five-bunny container simulation.
The execution contract
YASPS returns the solution of H Δx = g; a Newton update normally subtracts that segment. It deliberately leaves collision detection, continuous collision detection, line search, and timestep policy to the application, where geometry and parameterization-specific decisions belong.
Begin with Getting started. The complete program appears only after the concepts it combines.