Skip to content

v1.11.1

Latest

Choose a tag to compare

@github-actions github-actions released this 03 Feb 21:20
· 316 commits to main since this release
v1.11.1
173e179

Warp v1.11.1

Warp v1.11.1 is a bugfix release following v1.11.0. For a complete list of changes, see the changelog.

Highlights

This is primarily a bugfix release with no major new features. Key fixes include:

  • Tile Operations: Fixed wp.tile_matmul() sometimes producing NaN results when using the c = wp.tile_matmul(a, b) form due to reading uninitialized output memory (#1180). Also fixed tile multiplication with scalar constants when one operand is a vector or matrix type (#1175), and enabled scalar, vector, and matrix arguments in wp.tile_map() (#1136).

  • Code Generation: Fixed wp.static() incorrectly resolving loop variables to same-named global Python variables when used for static loop unrolling in kernels (e.g., wp.static(i) inside for i in range(n) would use a global i if one existed, instead of the loop iteration value) (#1139). Also fixed a segfault in conditional expressions (ternary if/else) when one branch accesses an array element and the other branch is taken.

  • CUDA Graphs: Fixed CUDA graphs with multiple temporary allocations using more memory than necessary. Previously, memory freed during graph capture wasn't properly sequenced for reuse by later allocations, causing memory to accumulate (e.g., three sequential 1GB allocations would consume 3GB instead of reusing the same 1GB).

  • Developer Experience: Fixed @wp.func decorated functions showing generic _Wrapped types in Pyright/Pylance instead of their actual signatures on Python 3.10+. Also fixed multiple issues with IDE autocomplete stubs that caused type checker errors in mypy and Pyright, including incorrect @overload usage, shadowed bool type references, and missing Literal[] syntax for integer type parameters.

  • Documentation: Added missing docstrings across the API, including built-in functions, type constructors, constants, and warp.fem symbols (#1159). Added example_particle_repulsion.py demonstrating how to use wp.grad() (#1137).

Announcements

Upcoming removals

The following feature is deprecated and will be removed in v1.12:

  • Constructing matrices from column vectors via wp.matrix(): The ability to construct matrices by passing column vectors to wp.matrix() has been deprecated at both Python and kernel scopes. Use wp.matrix_from_cols() instead.

  • Constructing matrices from vectors via wp.matrix(): The ability to construct matrices by passing vectors to wp.matrix() has been deprecated at both Python and kernel scopes. The replacement depends on the scope because the behavior was inconsistent:

    # Kernel scope (vectors were interpreted as columns)
    # Deprecated (will be removed in v1.12):
    m = wp.mat33(col0, col1, col2)
    # Use instead:
    m = wp.matrix_from_cols(col0, col1, col2)
    
    # Python scope (vectors were interpreted as rows)
    # Deprecated (will be removed in v1.12):
    m = wp.mat22(wp.vec2(1, 2), wp.vec2(3, 4))
    # Use instead:
    m = wp.matrix_from_rows(wp.vec2(1, 2), wp.vec2(3, 4))

Acknowledgments

We thank the following contributors:

  • @Adityakk9031 for fixing the JAX FFI deadlock when using cached graphs across multiple GPUs (#1181).
  • @Cucchi01 for fixing bsr_get_diag() not zeroing the output buffer when provided (#1170).
  • @liblaf for fixing the inverted verbose flag in wp.capture_debug_dot_print() (#1202).