diff --git a/CHANGELOG.md b/CHANGELOG.md index 571dea804..736e46205 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # CHANGELOG -## [Unreleased] - 2024-?? +## [1.4.0] - 2024-10-01 ### Added @@ -10,7 +10,7 @@ in high-priority streams over pending work in low-priority streams when possible ([docs](https://nvidia.github.io/warp/modules/concurrency.html#stream-priorities)). - Adaptive sparse grid geometry to `warp.fem` ([docs](https://nvidia.github.io/warp/modules/fem.html#adaptivity)). -- Support for `wp.kernel` and `wp.func` closures. +- 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](https://github.com/NVIDIA/warp/pull/310)). @@ -19,7 +19,6 @@ - Support `wp.mod()` for vector types ([GH-282](https://github.com/NVIDIA/warp/issues/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](https://github.com/NVIDIA/warp/issues/284)). -- Support for local vec/mat/quat component gradient tracking in backwards mode. - Support for quaternion indexing (e.g. `q.w`). - Support shadowing builtin functions ([GH-308](https://github.com/NVIDIA/warp/issues/308)). - Support for redefining function overloads. @@ -65,7 +64,6 @@ - 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 some bugs related to module hashing and caching. - 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. @@ -73,6 +71,7 @@ - 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. ## [1.3.3] - 2024-09-04 @@ -1136,7 +1135,8 @@ - Initial publish for alpha testing -[Unreleased]: https://github.com/NVIDIA/warp/compare/v1.3.3...HEAD +[Unreleased]: https://github.com/NVIDIA/warp/compare/v1.4.0...HEAD +[1.4.0]: https://github.com/NVIDIA/warp/releases/tag/v1.4.0 [1.3.3]: https://github.com/NVIDIA/warp/releases/tag/v1.3.3 [1.3.2]: https://github.com/NVIDIA/warp/releases/tag/v1.3.2 [1.3.1]: https://github.com/NVIDIA/warp/releases/tag/v1.3.1 diff --git a/README.md b/README.md index 4f5be9638..54c1bbfd9 100644 --- a/README.md +++ b/README.md @@ -45,9 +45,9 @@ the `pip install` command, e.g. | Platform | Install Command | | --------------- | ----------------------------------------------------------------------------------------------------------------------------- | -| Linux aarch64 | `pip install https://github.com/NVIDIA/warp/releases/download/v1.3.3/warp_lang-1.3.3+cu11-py3-none-manylinux2014_aarch64.whl` | -| Linux x86-64 | `pip install https://github.com/NVIDIA/warp/releases/download/v1.3.3/warp_lang-1.3.3+cu11-py3-none-manylinux2014_x86_64.whl` | -| Windows x86-64 | `pip install https://github.com/NVIDIA/warp/releases/download/v1.3.3/warp_lang-1.3.3+cu11-py3-none-win_amd64.whl` | +| Linux aarch64 | `pip install https://github.com/NVIDIA/warp/releases/download/v1.4.0/warp_lang-1.4.0+cu11-py3-none-manylinux2014_aarch64.whl` | +| Linux x86-64 | `pip install https://github.com/NVIDIA/warp/releases/download/v1.4.0/warp_lang-1.4.0+cu11-py3-none-manylinux2014_x86_64.whl` | +| Windows x86-64 | `pip install https://github.com/NVIDIA/warp/releases/download/v1.4.0/warp_lang-1.4.0+cu11-py3-none-win_amd64.whl` | The `--force-reinstall` option may need to be used to overwrite a previous installation. diff --git a/VERSION.md b/VERSION.md index 31e5c8434..88c5fb891 100644 --- a/VERSION.md +++ b/VERSION.md @@ -1 +1 @@ -1.3.3 +1.4.0 diff --git a/docs/installation.rst b/docs/installation.rst index f218a64e3..b432a3263 100644 --- a/docs/installation.rst +++ b/docs/installation.rst @@ -25,11 +25,11 @@ the ``pip install`` command, e.g. * - Platform - Install Command * - Linux aarch64 - - ``pip install https://github.com/NVIDIA/warp/releases/download/v1.3.3/warp_lang-1.3.3+cu11-py3-none-manylinux2014_aarch64.whl`` + - ``pip install https://github.com/NVIDIA/warp/releases/download/v1.4.0/warp_lang-1.4.0+cu11-py3-none-manylinux2014_aarch64.whl`` * - Linux x86-64 - - ``pip install https://github.com/NVIDIA/warp/releases/download/v1.3.3/warp_lang-1.3.3+cu11-py3-none-manylinux2014_x86_64.whl`` + - ``pip install https://github.com/NVIDIA/warp/releases/download/v1.4.0/warp_lang-1.4.0+cu11-py3-none-manylinux2014_x86_64.whl`` * - Windows x86-64 - - ``pip install https://github.com/NVIDIA/warp/releases/download/v1.3.3/warp_lang-1.3.3+cu11-py3-none-win_amd64.whl`` + - ``pip install https://github.com/NVIDIA/warp/releases/download/v1.4.0/warp_lang-1.4.0+cu11-py3-none-win_amd64.whl`` The ``--force-reinstall`` option may need to be used to overwrite a previous installation. diff --git a/exts/omni.warp.core/config/extension.toml b/exts/omni.warp.core/config/extension.toml index e39e4dd2c..841caf50a 100644 --- a/exts/omni.warp.core/config/extension.toml +++ b/exts/omni.warp.core/config/extension.toml @@ -1,6 +1,6 @@ [package] # Semantic Versioning is used: https://semver.org/ -version = "1.3.3" +version = "1.4.0" authors = ["NVIDIA"] title = "Warp Core" description="The core Warp Python module" diff --git a/exts/omni.warp.core/docs/CHANGELOG.md b/exts/omni.warp.core/docs/CHANGELOG.md index 73426dca5..f89959d3e 100644 --- a/exts/omni.warp.core/docs/CHANGELOG.md +++ b/exts/omni.warp.core/docs/CHANGELOG.md @@ -1,5 +1,78 @@ # 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](https://nvidia.github.io/warp/codegen.html#static-expressions)). +- 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](https://nvidia.github.io/warp/modules/concurrency.html#stream-priorities)). +- Adaptive sparse grid geometry to `warp.fem` ([docs](https://nvidia.github.io/warp/modules/fem.html#adaptivity)). +- 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](https://github.com/NVIDIA/warp/pull/310)). +- JAX interoperability examples for sharding and matrix multiplication ([docs](https://nvidia.github.io/warp/modules/interoperability.html#using-shardmap-for-distributed-computation)). +- Interoperability support for the PaddlePaddle ML framework ([GH-318](https://github.com/NVIDIA/warp/pull/318)). +- Support `wp.mod()` for vector types ([GH-282](https://github.com/NVIDIA/warp/issues/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](https://github.com/NVIDIA/warp/issues/284)). +- Support for quaternion indexing (e.g. `q.w`). +- Support shadowing builtin functions ([GH-308](https://github.com/NVIDIA/warp/issues/308)). +- Support for redefining function overloads. +- Add an ocean sample to the `omni.warp` extension. +- Support for a new `wp.static(expr)` function that allows arbitrary Python expressions to be evaluated at the time of + function/kernel definition ([docs](https://nvidia.github.io/warp/codegen.html#static-expressions)). +- Add a contributing guide to the Sphinx docs. +- Add documentation for dynamic code generation. +- Support for a new `wp.static(expr)` function that allows arbitrary Python expressions to be evaluated at the time of function/kernel definition ([docs](https://nvidia.github.io/warp/codegen.html#static-expressions)). +- `warp.sim.VBDIntegrator` now supports body-particle collision. +- Add a [contributing guide](https://nvidia.github.io/warp/modules/contribution_guide.html) to the Sphinx docs . +- Add documentation for dynamic code generation ([docs](https://nvidia.github.io/warp/codegen.html#dynamic-kernel-creation)). + +### 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](https://github.com/NVIDIA/warp/issues/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](https://github.com/NVIDIA/warp/issues/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](https://github.com/NVIDIA/warp/issues/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. + ## [1.3.3] - 2024-09-04 - Bug fixes diff --git a/exts/omni.warp/config/extension.toml b/exts/omni.warp/config/extension.toml index 8e80c45d2..cfebd3b6e 100644 --- a/exts/omni.warp/config/extension.toml +++ b/exts/omni.warp/config/extension.toml @@ -1,6 +1,6 @@ [package] # Semantic Versioning is used: https://semver.org/ -version = "1.3.3" +version = "1.4.0" authors = ["NVIDIA"] title = "Warp" description="Warp OmniGraph Nodes and Sample Scenes" @@ -35,7 +35,7 @@ exclude = ["Ogn*Database.py", "*/ogn*"] "omni.timeline" = {} "omni.ui" = {optional = true} "omni.usd" = {} -"omni.warp.core" = {version = "1.3.3", exact = true} +"omni.warp.core" = {version = "1.4.0", exact = true} [[python.module]] name = "omni.warp._extension" diff --git a/exts/omni.warp/docs/CHANGELOG.md b/exts/omni.warp/docs/CHANGELOG.md index 73426dca5..f89959d3e 100644 --- a/exts/omni.warp/docs/CHANGELOG.md +++ b/exts/omni.warp/docs/CHANGELOG.md @@ -1,5 +1,78 @@ # 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](https://nvidia.github.io/warp/codegen.html#static-expressions)). +- 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](https://nvidia.github.io/warp/modules/concurrency.html#stream-priorities)). +- Adaptive sparse grid geometry to `warp.fem` ([docs](https://nvidia.github.io/warp/modules/fem.html#adaptivity)). +- 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](https://github.com/NVIDIA/warp/pull/310)). +- JAX interoperability examples for sharding and matrix multiplication ([docs](https://nvidia.github.io/warp/modules/interoperability.html#using-shardmap-for-distributed-computation)). +- Interoperability support for the PaddlePaddle ML framework ([GH-318](https://github.com/NVIDIA/warp/pull/318)). +- Support `wp.mod()` for vector types ([GH-282](https://github.com/NVIDIA/warp/issues/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](https://github.com/NVIDIA/warp/issues/284)). +- Support for quaternion indexing (e.g. `q.w`). +- Support shadowing builtin functions ([GH-308](https://github.com/NVIDIA/warp/issues/308)). +- Support for redefining function overloads. +- Add an ocean sample to the `omni.warp` extension. +- Support for a new `wp.static(expr)` function that allows arbitrary Python expressions to be evaluated at the time of + function/kernel definition ([docs](https://nvidia.github.io/warp/codegen.html#static-expressions)). +- Add a contributing guide to the Sphinx docs. +- Add documentation for dynamic code generation. +- Support for a new `wp.static(expr)` function that allows arbitrary Python expressions to be evaluated at the time of function/kernel definition ([docs](https://nvidia.github.io/warp/codegen.html#static-expressions)). +- `warp.sim.VBDIntegrator` now supports body-particle collision. +- Add a [contributing guide](https://nvidia.github.io/warp/modules/contribution_guide.html) to the Sphinx docs . +- Add documentation for dynamic code generation ([docs](https://nvidia.github.io/warp/codegen.html#dynamic-kernel-creation)). + +### 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](https://github.com/NVIDIA/warp/issues/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](https://github.com/NVIDIA/warp/issues/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](https://github.com/NVIDIA/warp/issues/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. + ## [1.3.3] - 2024-09-04 - Bug fixes diff --git a/warp/config.py b/warp/config.py index e732f71b5..49df51ea6 100644 --- a/warp/config.py +++ b/warp/config.py @@ -7,7 +7,7 @@ from typing import Optional -version: str = "1.3.3" +version: str = "1.4.0" """Warp version string""" verify_fp: bool = False