Skip to content

v.1.4.0

Compare
Choose a tag to compare
@shi-eric shi-eric released this 01 Oct 07:23
· 363 commits to main since this release
v1.4.0

CHANGELOG

[1.4.0] - 2024-10-01

Added

  • Support for a new wp.static(expr) function that allows arbitrary Python expressions to be evaluated at the time of
    function/kernel definition (docs).
  • Support for stream priorities to hint to the device that it should process pending work
    in high-priority streams over pending work in low-priority streams when possible
    (docs).
  • Adaptive sparse grid geometry to warp.fem (docs).
  • Support for defining wp.kernel and wp.func objects from within closures.
  • Support for defining multiple versions of kernels, functions, and structs without manually assigning unique keys.
  • Support for default argument values for user functions decorated with wp.func.
  • Allow passing custom launch dimensions to jax_kernel() (GH-310).
  • JAX interoperability examples for sharding and matrix multiplication (docs).
  • Interoperability support for the PaddlePaddle ML framework (GH-318).
  • Support wp.mod() for vector types (GH-282).
  • Expose the modulo operator % to Python's runtime scalar and vector types.
  • Support for fp64 atomic_add, atomic_max, and atomic_min (GH-284).
  • Support for quaternion indexing (e.g. q.w).
  • Support shadowing builtin functions (GH-308).
  • Support for redefining function overloads.
  • Add an ocean sample to the omni.warp extension.
  • warp.sim.VBDIntegrator now supports body-particle collision.
  • Add a contributing guide to the Sphinx docs .
  • Add documentation for dynamic code generation (docs).

Changed

  • wp.sim.Model.edge_indices now includes boundary edges.
  • Unexposed wp.rand*(), wp.sample*(), and wp.poisson() from the Python scope.
  • Skip unused functions in module code generation, improving performance.
  • Avoid reloading modules if their content does not change, improving performance.
  • wp.Mesh.points is now a property instead of a raw data member, its reference can be changed after the mesh is initialized.
  • Improve error message when invalid objects are referenced in a Warp kernel.
  • if/else/elif statements with constant conditions are resolved at compile time with no branches being inserted in the generated code.
  • Include all non-hidden builtins in the stub file.
  • Improve accuracy of symmetric eigenvalues routine in warp.fem.

Fixed

  • Fix for wp.func erroring out when defining a Tuple as a return type hint (GH-302).
  • Fix array in-place op (+=, -=) adjoints to compute gradients correctly in the backwards pass
  • Fix vector, matrix in-place assignment adjoints to compute gradients correctly in the backwards pass, e.g.: v[1] = x
  • Fix a bug in which Python docstrings would be created as local function variables in generated code.
  • Fix a bug with autograd array access validation in functions from different modules.
  • Fix a rare crash during error reporting on some systems due to glibc mismatches.
  • Handle --num_tiles 1 in example_render_opengl.py (GH-306).
  • Fix the computation of body contact forces in FeatherstoneIntegrator when bodies and particles collide.
  • Fix bug in FeatherstoneIntegrator where eval_rigid_jacobian could give incorrect results or reach an infinite
    loop when the body and joint indices were not in the same order. Added Model.joint_ancestor to fix the indexing
    from a joint to its parent joint in the articulation.
  • Fix wrong vertex index passed to add_edges() called from ModelBuilder.add_cloth_mesh() (GH-319).
  • Add a workaround for uninitialized memory read warning in the compute-sanitizer initcheck tool when using wp.Mesh.
  • Fix name clashes when Warp functions and structs are returned from Python functions multiple times.
  • Fix name clashes between Warp functions and structs defined in different modules.
  • Fix code generation errors when overloading generic kernels defined in a Python function.
  • Fix issues with unrelated functions being treated as overloads (e.g., closures).
  • Fix handling of stream argument in array.__dlpack__().
  • Fix a bug related to reloading CPU modules.
  • Fix a crash when kernel functions are not found in CPU modules.
  • Fix conditions not being evaluated as expected in while statements.
  • Fix printing Boolean and 8-bit integer values.
  • Fix array interface type strings used for Boolean and 8-bit integer values.
  • Fix initialization error when setting struct members.
  • Fix Warp not being initialized upon entering a wp.Tape context.
  • Use kDLBool instead of kDLUInt for DLPack interop of Booleans.