|
1 | 1 | # CHANGELOG
|
2 | 2 |
|
| 3 | +## [1.3.0] - 2024-07-25 |
| 4 | + |
| 5 | +- Warp Core improvements |
| 6 | + - Update to CUDA 12.x by default (requires NVIDIA driver 525 or newer), please see [README.md](https://github.com/nvidia/warp?tab=readme-ov-file#installing) for commands to install CUDA 11.x binaries for older drivers |
| 7 | + - Add information to the module load print outs to indicate whether a module was |
| 8 | + compiled `(compiled)`, loaded from the cache `(cached)`, or was unable to be |
| 9 | + loaded `(error)`. |
| 10 | + - `wp.config.verbose = True` now also prints out a message upon the entry to a `wp.ScopedTimer`. |
| 11 | + - Add `wp.clear_kernel_cache()` to the public API. This is equivalent to `wp.build.clear_kernel_cache()`. |
| 12 | + - Add code-completion support for `wp.config` variables. |
| 13 | + - Remove usage of a static task (thread) index for CPU kernels to address multithreading concerns ([GH-224](https://github.com/NVIDIA/warp/issues/224)) |
| 14 | + - Improve error messages for unsupported Python operations such as sequence construction in kernels |
| 15 | + - Update `wp.matmul()` CPU fallback to use dtype explicitly in `np.matmul()` call |
| 16 | + - Add support for PEP 563's `from __future__ import annotations` ([GH-256](https://github.com/NVIDIA/warp/issues/256)). |
| 17 | + - Allow passing external arrays/tensors to `wp.launch()` directly via `__cuda_array_interface__` and `__array_interface__`, up to 2.5x faster conversion from PyTorch |
| 18 | + - Add faster Torch interop path using `return_ctype` argument to `wp.from_torch()` |
| 19 | + - Handle incompatible CUDA driver versions gracefully |
| 20 | + - Add `wp.abs()` and `wp.sign()` for vector types |
| 21 | + - Expose scalar arithmetic operators to Python's runtime (e.g.: `wp.float16(1.23) * wp.float16(2.34)`) |
| 22 | + - Add support for creating volumes with anisotropic transforms |
| 23 | + - Allow users to pass function arguments by keyword in a kernel using standard Python calling semantics |
| 24 | + - Add additional documentation and examples demonstrating `wp.copy()`, `wp.clone()`, and `array.assign()` differentiability |
| 25 | + - Add `__new__()` methods for all class `__del__()` methods to handle when a class instance is created but not instantiated before garbage collection |
| 26 | + - Implement the assignment operator for `wp.quat` |
| 27 | + - Make the geometry-related built-ins available only from within kernels |
| 28 | + - Rename the API-facing query types to remove their `_t` suffix: `wp.BVHQuery`, `wp.HashGridQuery`, `wp.MeshQueryAABB`, `wp.MeshQueryPoint`, and `wp.MeshQueryRay` |
| 29 | + - Add `wp.array(ptr=...)` to allow initializing arrays from pointer addresses inside of kernels ([GH-206](https://github.com/NVIDIA/warp/issues/206)) |
| 30 | + |
| 31 | +- `warp.autograd` improvements: |
| 32 | + - New `warp.autograd` module with utility functions `gradcheck()`, `jacobian()`, and `jacobian_fd()` for debugging kernel Jacobians ([docs](https://nvidia.github.io/warp/modules/differentiability.html#measuring-gradient-accuracy)) |
| 33 | + - Add array overwrite detection, if `wp.config.verify_autograd_array_access` is true in-place operations on arrays on the Tape that could break gradient computation will be detected ([docs](https://nvidia.github.io/warp/modules/differentiability.html#array-overwrite-tracking)) |
| 34 | + - Fix bug where modification of `@wp.func_replay` functions and native snippets would not trigger module recompilation |
| 35 | + - Add documentation for dynamic loop autograd limitations |
| 36 | + |
| 37 | +- `warp.sim` improvements: |
| 38 | + - Improve memory usage and performance for rigid body contact handling when `self.rigid_mesh_contact_max` is zero (default behavior). |
| 39 | + - The `mask` argument to `wp.sim.eval_fk()` now accepts both integer and boolean arrays to mask articulations. |
| 40 | + - Fix handling of `ModelBuilder.joint_act` in `ModelBuilder.collapse_fixed_joints()` (affected floating-base systems) |
| 41 | + - Fix and improve implementation of `ModelBuilder.plot_articulation()` to visualize the articulation tree of a rigid-body mechanism |
| 42 | + - Fix ShapeInstancer `__new__()` method (missing instance return and `*args` parameter) |
| 43 | + - Fix handling of `upaxis` variable in `ModelBuilder` and the rendering thereof in `OpenGLRenderer` |
| 44 | + |
| 45 | +- `warp.sparse` improvements: |
| 46 | + - Sparse matrix allocations (from `bsr_from_triplets()`, `bsr_axpy()`, etc.) can now be captured in CUDA graphs; exact number of non-zeros can be optionally requested asynchronously. |
| 47 | + - `bsr_assign()` now supports changing block shape (including CSR/BSR conversions) |
| 48 | + - Add Python operator overloads for common sparse matrix operations, e.g `A += 0.5 * B`, `y = x @ C` |
| 49 | + |
| 50 | +- `warp.fem` new features and fixes: |
| 51 | + - Support for variable number of nodes per element |
| 52 | + - Global `wp.fem.lookup()` operator now supports `wp.fem.Tetmesh` and `wp.fem.Trimesh2D` geometries |
| 53 | + - Simplified defining custom subdomains (`wp.fem.Subdomain`), free-slip boundary conditions |
| 54 | + - New field types: `wp.fem.UniformField`, `wp.fem.ImplicitField` and `wp.fem.NonconformingField` |
| 55 | + - New `streamlines`, `magnetostatics` and `nonconforming_contact` examples, updated `mixed_elasticity` to use a nonlinear model |
| 56 | + - Function spaces can now export VTK-compatible cells for visualization |
| 57 | + - Fixed edge cases with NanoVDB function spaces |
| 58 | + - Fixed differentiability of `wp.fem.PicQuadrature` w.r.t. positions and measures |
| 59 | + |
3 | 60 | ## [1.2.2] - 2024-07-04
|
4 | 61 |
|
5 | 62 | - Support for NumPy >= 2.0
|
|
0 commit comments