Skip to content

v1.6.0

Latest
Compare
Choose a tag to compare
@shi-eric shi-eric released this 03 Feb 23:34
· 204 commits to main since this release
v1.6.0
7f25bbf

Changelog

[1.6.0] - 2025-02-03

Added

  • Add preview of Tile Cholesky factorization and solve APIs through wp.tile_cholesky(), tile_cholesky_solve()
    and tile_diag_add() (preview APIs are subject to change).
  • Support for loading tiles from arrays whose shapes are not multiples of the tile dimensions.
    Out-of-bounds reads will be zero-filled and out-of-bounds writes will be skipped.
  • Support for higher-dimensional (up to 4D) tile shapes and memory operations.
  • Add intersection-free self-contact support in wp.sim.VDBIntegrator by passing handle_self_contact=True.
    See warp/examples/sim/example_cloth_self_contact.py for a usage example.
  • Add functions wp.norm_l1(), wp.norm_l2(), wp.norm_huber(), wp.norm_pseudo_huber(), and wp.smooth_normalize()
    for vector types to a new wp.math module.
  • wp.sim.SemiImplicitIntegrator and wp.sim.FeatherstoneIntegrator now have an optional friction_smoothing
    constructor argument (defaults to 1.0) that controls softness of the friction norm computation.
  • Support assert statements in kernels (docs).
    Assertions can only be triggered in "debug" mode (GH-366).
  • Support CUDA IPC on Linux. Call the ipc_handle() method to get an IPC handle for a wp.Event or a wp.array,
    and call wp.from_ipc_handle() or wp.event_from_ipc_handle() in another process to open the handle
    (docs).
  • Add per-module option to disable fused floating point operations, use wp.set_module_options({"fuse_fp": False})
    (GH-379).
  • Add per-module option to add CUDA-C line information for profiling, use wp.set_module_options({"lineinfo": True}).
  • Support operator overloading for wp.struct objects by defining wp.func functions
    (GH-392).
  • Add built-in function wp.len() to retrieve the number of elements for vectors, quaternions, matrices, and arrays
    (GH-389).
  • Add warp/examples/optim/example_softbody_properties.py as an optimization example for soft-body properties
    (GH-419).
  • Add warp/examples/tile/example_tile_walker.py, which reworks the existing example_walker.py
    to use Warp's tile API for matrix multiplication.
  • Add warp/examples/tile/example_tile_nbody.py as an example of an N-body simulation using Warp tile primitives.

Changed

  • Breaking: Change wp.tile_load() and wp.tile_store() indexing behavior so that indices are now specified in
    terms of array elements instead of tile multiples.
  • Breaking: Tile operations now take shape and offset parameters as tuples,
    e.g.: wp.tile_load(array, shape=(m,n), offset=(i,j)).
  • Breaking: Change exception types and error messages thrown by tile functions for improved consistency.
  • Add an implicit tile synchronization whenever a shared memory tile's data is reinitialized (e.g. in dynamic loops).
    This could result in lower performance.
  • wp.Bvh constructor now supports various construction algorithms via the constructor argument, including
    "sah" (Surface Area Heuristics), "median", and "lbvh" (docs)
  • Improve the query efficiency of wp.Bvh and wp.Mesh.
  • Improve memory consumption, compilation and runtime performance when using in-place vector/matrix assignments in
    kernels that have enable_backward set to False (GH-332).
  • Vector/matrix/quaternion component += and -= operations compile and run faster in the backward pass
    (GH-332).
  • Name files in the kernel cache according to their directory. Previously, all files began with
    module_codegen (GH-431).
  • Avoid recompilation of modules when changing block_dim.
  • wp.autograd.gradcheck_tape() now has additional optional arguments reverse_launches and skip_to_launch_index.
  • wp.autograd.gradcheck(), wp.autograd.jacobian(), and wp.autograd.jacobian_fd() now also accept
    arbitrary Python functions that have Warp arrays as inputs and outputs.
  • update_vbo_transforms kernel launches in the OpenGL renderer are no longer recorded onto the tape.
  • Skip emitting backward functions/kernels in the generated C++/CUDA code when enable_backward is set to False.
  • Emit deprecation warnings for the use of the owner and length keywords in the wp.array initializer.
  • Emit deprecation warnings for the use of wp.mlp(), wp.matmul(), and wp.batched_matmul().
    Use tile primitives instead.

Fixed

  • Fix unintended modification of non-Warp arrays during the backward pass (GH-394).
  • Fix so that wp.Tape.zero() zeroes gradients passed via the grads parameter in wp.Tape.backward()
    (GH-407).
  • Fix errors during graph capture caused by module unloading (GH-401).
  • Fix potential memory corruption errors when allocating arrays with strides (GH-404).
  • Fix wp.array() not respecting the target dtype and shape when the given data is an another array with a CUDA interface
    (GH-363).
  • Negative constants evaluate to compile-time constants (GH-403)
  • Fix ImportError exception being thrown during interpreter shutdown on Windows when using the OpenGL renderer
    (GH-412).
  • Fix the OpenGL renderer not working when multiple instances exist at the same time (GH-385).
  • Fix AttributeError crash in the OpenGL renderer when moving the camera (GH-426).
  • Fix the OpenGL renderer not correctly displaying duplicate capsule, cone, and cylinder shapes
    (GH-388).
  • Fix the overriding of wp.sim.ModelBuilder default parameters (GH-429).
  • Fix indexing of wp.tile_extract() when the block dimension is smaller than the tile size.
  • Fix scale and rotation issues with the rock geometry used in the granular collision SDF example
    (GH-409).
  • Fix autodiff Jacobian computation in wp.autograd.jacobian() where in some cases gradients were not zeroed-out properly.
  • Fix plotting issues in wp.autograd.jacobian_plot().
  • Fix the len() operator returning the total size of a matrix instead of its first dimension.
  • Fix gradient instability in rigid-body contact handling for wp.sim.SemiImplicitIntegrator and
    wp.sim.FeatherstoneIntegrator (GH-349).
  • Fix overload resolution of generic Warp functions with default arguments.
  • Fix rendering of arrows with different up_axis, color in OpenGLRenderer (GH-448).