Skip to content

Commit

Permalink
Merge branch 'ershi/release-1.5-stable' into 'release-1.5'
Browse files Browse the repository at this point in the history
Changes for the stable 1.5.0 release

See merge request omniverse/warp!907
  • Loading branch information
shi-eric committed Dec 2, 2024
2 parents 81b7dc5 + 99d147e commit 75544df
Show file tree
Hide file tree
Showing 20 changed files with 2,725 additions and 104 deletions.
21 changes: 12 additions & 9 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
[documentation](https://nvidia.github.io/warp/modules/tiles.html) for details.
- Expose a `reversed()` built-in for iterators ([GH-311](https://github.com/NVIDIA/warp/issues/311)).
- Support for saving Volumes into `.nvdb` files with the `save_to_nvdb` method.
- warp.fem: Add `Trimesh3D` and `Quadmesh3D` geometry types for 3D surfaces with new `example_distortion_energy` example.
- warp.fem: Add `wp.fem.Trimesh3D` and `wp.fem.Quadmesh3D` geometry types for 3D surfaces with new `example_distortion_energy` example.
- warp.fem: Add `"add"` option to `wp.fem.integrate()` for accumulating integration result to existing output.
- warp.fem: Add `"assembly"` option to `wp.fem.integrate()` for selecting between more memory-efficient or more
computationally efficient integration algorithms.
Expand All @@ -22,33 +22,35 @@
hard-coded value of 0.01 ([GH-329](https://github.com/NVIDIA/warp/issues/329)).
- Add a `particle_radius` parameter to `wp.sim.ModelBuilder.add_cloth_mesh()` and `wp.sim.ModelBuilder.add_cloth_grid()`
to set a uniform radius for the added particles.
- Document `array` attributes ([GH-364](https://github.com/NVIDIA/warp/issues/364)).
- Document `wp.array` attributes ([GH-364](https://github.com/NVIDIA/warp/issues/364)).
- Document time-to-compile tradeoffs when using vector component assignment statements in kernels.
- Add introductory Jupyter notebooks to the `notebooks` directory.

### Changed

- Drop support for Python 3.7; Python 3.8 is now the minimum-supported version.
- Promote the `wp.Int`, `wp.Float`, and `wp.Scalar` generic annotation types to the public API.
- warp.fem: Simplify querying neighboring cell quantities when integrating on sides using new
`warp.fem.cells()`, `warp.fem.to_inner_cell()`, `warp.fem.to_outer_cell()` operators.
`wp.fem.cells()`, `wp.fem.to_inner_cell()`, `wp.fem.to_outer_cell()` operators.
- Show an error message when the type returned by a function differs from its annotation, which would have led to the compilation stage failing.
- Clarify that `randn()` samples a normal distribution of mean 0 and variance 1.
- Raise error when passing more than 32 variadic argument to the `wp.printf` built-in.
- Clarify that `wp.randn()` samples a normal distribution of mean 0 and variance 1.
- Raise error when passing more than 32 variadic argument to the `wp.printf()` built-in.

### Fixed

- Fix `place` setting of paddle backend.
- warp.fem: Fix tri-cubic shape functions on quadrilateral meshes.
- warp.fem: Fix caching of integrand kernels when changing code-generation options.
- Fix `wp.expect_neq()` overloads missing for scalar types.
- Fix the OpenGL renderer's window not closing when clicking the X button.
- Fix the OpenGL renderer's camera snapping to a different direction from the initial camera's orientation when first looking around.
- Fix custom colors being ignored when rendering meshes in OpenGL ([GH-343](https://github.com/NVIDIA/warp/issues/343)).
- Fix an error when a `wp.kernel` or a `wp.func` object is annotated to return a `None` value.
- Fix error when reading multi-volume, BLOSC-compressed `.nvdb` files.
- Fix `wp.printf()` erroring out when no variadic arguments are passed ([GH-333](https://github.com/NVIDIA/warp/issues/333)).
- Fix memory access issues in soft-rigid contact collisions ([GH-362](https://github.com/NVIDIA/warp/issues/362)).
- Fix gradient propagation for in-place addition/subtraction operations on custom vector-type arrays.
- Fix the OpenGL renderer's window not closing when clicking the X button.
- Fix the OpenGL renderer's camera snapping to a different direction from the initial camera's orientation when first looking around.
- Fix custom colors being ignored when rendering meshes in OpenGL ([GH-343](https://github.com/NVIDIA/warp/issues/343)).
- Fix topology updates not being supported by the the OpenGL renderer.

## [1.4.2] - 2024-11-13

Expand Down Expand Up @@ -1218,7 +1220,8 @@

- Initial publish for alpha testing

[Unreleased]: https://github.com/NVIDIA/warp/compare/v1.4.2...HEAD
[Unreleased]: https://github.com/NVIDIA/warp/compare/v1.5.0...HEAD
[1.5.0]: https://github.com/NVIDIA/warp/releases/tag/v1.5.0
[1.4.2]: https://github.com/NVIDIA/warp/releases/tag/v1.4.2
[1.4.1]: https://github.com/NVIDIA/warp/releases/tag/v1.4.1
[1.4.0]: https://github.com/NVIDIA/warp/releases/tag/v1.4.0
Expand Down
31 changes: 28 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.4.2/warp_lang-1.4.2+cu11-py3-none-manylinux2014_aarch64.whl` |
| Linux x86-64 | `pip install https://github.com/NVIDIA/warp/releases/download/v1.4.2/warp_lang-1.4.2+cu11-py3-none-manylinux2014_x86_64.whl` |
| Windows x86-64 | `pip install https://github.com/NVIDIA/warp/releases/download/v1.4.2/warp_lang-1.4.2+cu11-py3-none-win_amd64.whl` |
| Linux aarch64 | `pip install https://github.com/NVIDIA/warp/releases/download/v1.5.0/warp_lang-1.5.0+cu11-py3-none-manylinux2014_aarch64.whl` |
| Linux x86-64 | `pip install https://github.com/NVIDIA/warp/releases/download/v1.5.0/warp_lang-1.5.0+cu11-py3-none-manylinux2014_x86_64.whl` |
| Windows x86-64 | `pip install https://github.com/NVIDIA/warp/releases/download/v1.5.0/warp_lang-1.5.0+cu11-py3-none-win_amd64.whl` |

The `--force-reinstall` option may need to be used to overwrite a previous installation.

Expand Down Expand Up @@ -297,6 +297,31 @@ python -m warp.tests
</tbody>
</table>

## Running Notebooks

A few notebooks are available in the [notebooks](./notebooks/) directory to provide an overview over the key features available in Warp.

To run these notebooks, ``jupyterlab`` is required to be installed using:


```text
pip install jupyterlab
```

From there, opening the notebooks can be done with the following command:

```text
jupyter lab ./notebooks
```

- [Warp Core Tutorial: Basics](https://github.com/NVIDIA/warp/tree/main/warp/notebooks/core_01_basics.ipynb) <a target="_blank" href="https://colab.research.google.com/github/NVIDIA/warp/blob/main/notebooks/core_01_basics.ipynb"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/></a>
- [Warp Core Tutorial: Generics](https://github.com/NVIDIA/warp/tree/main/warp/notebooks/core_02_generics.ipynb) <a target="_blank" href="https://colab.research.google.com/github/NVIDIA/warp/blob/main/notebooks/notebooks/core_02_generics.ipynb"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/></a>
- [Warp Core Tutorial: Points](https://github.com/NVIDIA/warp/tree/main/warp/notebooks/core_03_points.ipynb) <a target="_blank" href="https://colab.research.google.com/github/NVIDIA/warp/blob/main/notebooks/notebooks/core_03_points.ipynb"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/></a>
- [Warp Core Tutorial: Meshes](https://github.com/NVIDIA/warp/tree/main/warp/notebooks/core_04_meshes.ipynb) <a target="_blank" href="https://colab.research.google.com/github/NVIDIA/warp/blob/main/notebooks/notebooks/core_04_meshes.ipynb"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/></a>
- [Warp Core Tutorial: Volumes](https://github.com/NVIDIA/warp/tree/main/warp/notebooks/core_05_volumes.ipynb) <a target="_blank" href="https://colab.research.google.com/github/NVIDIA/warp/blob/main/notebooks/notebooks/core_05_volumes.ipynb"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/></a>



## Building

For developers who want to build the library themselves, the following tools are required:
Expand Down
2 changes: 1 addition & 1 deletion VERSION.md
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.5.0-rc.2
1.5.0
14 changes: 6 additions & 8 deletions docs/modules/tiles.rst
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,7 @@ Tiles

.. warning:: Tile-based operations in Warp are under preview, APIs are subject to change.

Block-based programming models such as those in OpenAI Triton have proved to be effective ways of expressing high-performance kernels that can leverage cooperative operations on modern GPUs.

Warp 1.5.0 introduces tile extensions that expose a block-based programming to Warp kernels.
Block-based programming models such as those in OpenAI Triton have proved to be effective ways of expressing high-performance kernels that can leverage cooperative operations on modern GPUs. With Warp 1.5.0 developers now have access to new tile-based programming primitives in Warp kernels. Leveraging cuBLASDx and cuFFTDx, these new tools provide developers with efficient matrix multiplication and Fourier transforms for accelerated simulation and scientific computing.

Requirements
------------
Expand Down Expand Up @@ -35,7 +33,7 @@ In the following example, we launch a grid of threads where each block is respon
# load a row from global memory
t = wp.tile_load(array[i], i, TILE_SIZE)
s = wp.sum(t)
s = wp.tile_sum(t)
...
wp.launch_tiled(compute, dim=[a.shape[0]], inputs=[a], block_dim=TILE_THREADS)
Expand All @@ -62,7 +60,7 @@ In Warp, tile objects are 2D arrays of data where the tile elements may be scala
# load a 2d tile from global memory
t = wp.tile_load(array, i, j, m=TILE_M, n=TILE_N)
s = wp.sum(t)
s = wp.tile_sum(t)
...
wp.launch_tiled(compute, dim=[a.shape[0]/TILE_M, a.shape[1]/TILE_N], inputs=[a], block_dim=TILE_THREADS)
Expand Down Expand Up @@ -193,8 +191,8 @@ Maps/Reductions
* :func:`warp.tile_min`
* :func:`warp.tile_max`

MathDx
^^^^^^
Linear Algebra
^^^^^^^^^^^^^^

* :func:`warp.tile_matmul`
* :func:`warp.tile_transpose`
Expand Down Expand Up @@ -241,7 +239,7 @@ Please see the :ref:`differentiability` section for more details.
Building with MathDx
--------------------

The tile operations described in `MathDx`_ require Warp to be built with the MathDx library.
The tile operations described in `Linear Algebra`_ require Warp to be built with the MathDx library.
Starting with Warp 1.5.0, PyPI distributions will come with out-of-the-box support for tile operations
leveraging MathDx APIs.

Expand Down
2 changes: 1 addition & 1 deletion exts/omni.warp.core/config/extension.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
# Semantic Versioning is used: https://semver.org/
version = "1.5.0-rc.2"
version = "1.5.0"
authors = ["NVIDIA"]
title = "Warp Core"
description="The core Warp Python module"
Expand Down
20 changes: 11 additions & 9 deletions exts/omni.warp.core/docs/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
# CHANGELOG

## [1.5.0-rc.2] - 2024-12-02
## [1.5.0] - 2024-12-02

### Added

- Support for cooperative tile-based primitives using cuBLASDx and cuFFTDx, please see the tile
[documentation](https://nvidia.github.io/warp/modules/tiles.html) for details.
- Expose a `reversed()` built-in for iterators ([GH-311](https://github.com/NVIDIA/warp/issues/311)).
- Support for saving Volumes into `.nvdb` files with the `save_to_nvdb` method.
- warp.fem: Add `Trimesh3D` and `Quadmesh3D` geometry types for 3D surfaces with new `example_distortion_energy` example.
- warp.fem: Add `wp.fem.Trimesh3D` and `wp.fem.Quadmesh3D` geometry types for 3D surfaces with new `example_distortion_energy` example.
- warp.fem: Add `"add"` option to `wp.fem.integrate()` for accumulating integration result to existing output.
- warp.fem: Add `"assembly"` option to `wp.fem.integrate()` for selecting between more memory-efficient or more
computationally efficient integration algorithms.
Expand All @@ -22,33 +22,35 @@
hard-coded value of 0.01 ([GH-329](https://github.com/NVIDIA/warp/issues/329)).
- Add a `particle_radius` parameter to `wp.sim.ModelBuilder.add_cloth_mesh()` and `wp.sim.ModelBuilder.add_cloth_grid()`
to set a uniform radius for the added particles.
- Document `array` attributes ([GH-364](https://github.com/NVIDIA/warp/issues/364)).
- Document `wp.array` attributes ([GH-364](https://github.com/NVIDIA/warp/issues/364)).
- Document time-to-compile tradeoffs when using vector component assignment statements in kernels.
- Add introductory Jupyter notebooks to the `notebooks` directory.

### Changed

- Drop support for Python 3.7; Python 3.8 is now the minimum-supported version.
- Promote the `wp.Int`, `wp.Float`, and `wp.Scalar` generic annotation types to the public API.
- warp.fem: Simplify querying neighboring cell quantities when integrating on sides using new
`warp.fem.cells()`, `warp.fem.to_inner_cell()`, `warp.fem.to_outer_cell()` operators.
`wp.fem.cells()`, `wp.fem.to_inner_cell()`, `wp.fem.to_outer_cell()` operators.
- Show an error message when the type returned by a function differs from its annotation, which would have led to the compilation stage failing.
- Clarify that `randn()` samples a normal distribution of mean 0 and variance 1.
- Raise error when passing more than 32 variadic argument to the `wp.printf` built-in.
- Clarify that `wp.randn()` samples a normal distribution of mean 0 and variance 1.
- Raise error when passing more than 32 variadic argument to the `wp.printf()` built-in.

### Fixed

- Fix `place` setting of paddle backend.
- warp.fem: Fix tri-cubic shape functions on quadrilateral meshes.
- warp.fem: Fix caching of integrand kernels when changing code-generation options.
- Fix `wp.expect_neq()` overloads missing for scalar types.
- Fix the OpenGL renderer's window not closing when clicking the X button.
- Fix the OpenGL renderer's camera snapping to a different direction from the initial camera's orientation when first looking around.
- Fix custom colors being ignored when rendering meshes in OpenGL ([GH-343](https://github.com/NVIDIA/warp/issues/343)).
- Fix an error when a `wp.kernel` or a `wp.func` object is annotated to return a `None` value.
- Fix error when reading multi-volume, BLOSC-compressed `.nvdb` files.
- Fix `wp.printf()` erroring out when no variadic arguments are passed ([GH-333](https://github.com/NVIDIA/warp/issues/333)).
- Fix memory access issues in soft-rigid contact collisions ([GH-362](https://github.com/NVIDIA/warp/issues/362)).
- Fix gradient propagation for in-place addition/subtraction operations on custom vector-type arrays.
- Fix the OpenGL renderer's window not closing when clicking the X button.
- Fix the OpenGL renderer's camera snapping to a different direction from the initial camera's orientation when first looking around.
- Fix custom colors being ignored when rendering meshes in OpenGL ([GH-343](https://github.com/NVIDIA/warp/issues/343)).
- Fix topology updates not being supported by the the OpenGL renderer.

## [1.4.2] - 2024-11-13

Expand Down
4 changes: 2 additions & 2 deletions exts/omni.warp/config/extension.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
# Semantic Versioning is used: https://semver.org/
version = "1.5.0-rc.2"
version = "1.5.0"
authors = ["NVIDIA"]
title = "Warp"
description="Warp OmniGraph Nodes and Sample Scenes"
Expand Down Expand Up @@ -35,7 +35,7 @@ exclude = ["Ogn*Database.py", "*/ogn*"]
"omni.timeline" = {}
"omni.ui" = {optional = true}
"omni.usd" = {}
"omni.warp.core" = {version = "1.5.0-rc.2", exact = true}
"omni.warp.core" = {version = "1.5.0", exact = true}

[[python.module]]
name = "omni.warp._extension"
Expand Down
20 changes: 11 additions & 9 deletions exts/omni.warp/docs/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
# CHANGELOG

## [1.5.0-rc.2] - 2024-12-02
## [1.5.0] - 2024-12-02

### Added

- Support for cooperative tile-based primitives using cuBLASDx and cuFFTDx, please see the tile
[documentation](https://nvidia.github.io/warp/modules/tiles.html) for details.
- Expose a `reversed()` built-in for iterators ([GH-311](https://github.com/NVIDIA/warp/issues/311)).
- Support for saving Volumes into `.nvdb` files with the `save_to_nvdb` method.
- warp.fem: Add `Trimesh3D` and `Quadmesh3D` geometry types for 3D surfaces with new `example_distortion_energy` example.
- warp.fem: Add `wp.fem.Trimesh3D` and `wp.fem.Quadmesh3D` geometry types for 3D surfaces with new `example_distortion_energy` example.
- warp.fem: Add `"add"` option to `wp.fem.integrate()` for accumulating integration result to existing output.
- warp.fem: Add `"assembly"` option to `wp.fem.integrate()` for selecting between more memory-efficient or more
computationally efficient integration algorithms.
Expand All @@ -22,33 +22,35 @@
hard-coded value of 0.01 ([GH-329](https://github.com/NVIDIA/warp/issues/329)).
- Add a `particle_radius` parameter to `wp.sim.ModelBuilder.add_cloth_mesh()` and `wp.sim.ModelBuilder.add_cloth_grid()`
to set a uniform radius for the added particles.
- Document `array` attributes ([GH-364](https://github.com/NVIDIA/warp/issues/364)).
- Document `wp.array` attributes ([GH-364](https://github.com/NVIDIA/warp/issues/364)).
- Document time-to-compile tradeoffs when using vector component assignment statements in kernels.
- Add introductory Jupyter notebooks to the `notebooks` directory.

### Changed

- Drop support for Python 3.7; Python 3.8 is now the minimum-supported version.
- Promote the `wp.Int`, `wp.Float`, and `wp.Scalar` generic annotation types to the public API.
- warp.fem: Simplify querying neighboring cell quantities when integrating on sides using new
`warp.fem.cells()`, `warp.fem.to_inner_cell()`, `warp.fem.to_outer_cell()` operators.
`wp.fem.cells()`, `wp.fem.to_inner_cell()`, `wp.fem.to_outer_cell()` operators.
- Show an error message when the type returned by a function differs from its annotation, which would have led to the compilation stage failing.
- Clarify that `randn()` samples a normal distribution of mean 0 and variance 1.
- Raise error when passing more than 32 variadic argument to the `wp.printf` built-in.
- Clarify that `wp.randn()` samples a normal distribution of mean 0 and variance 1.
- Raise error when passing more than 32 variadic argument to the `wp.printf()` built-in.

### Fixed

- Fix `place` setting of paddle backend.
- warp.fem: Fix tri-cubic shape functions on quadrilateral meshes.
- warp.fem: Fix caching of integrand kernels when changing code-generation options.
- Fix `wp.expect_neq()` overloads missing for scalar types.
- Fix the OpenGL renderer's window not closing when clicking the X button.
- Fix the OpenGL renderer's camera snapping to a different direction from the initial camera's orientation when first looking around.
- Fix custom colors being ignored when rendering meshes in OpenGL ([GH-343](https://github.com/NVIDIA/warp/issues/343)).
- Fix an error when a `wp.kernel` or a `wp.func` object is annotated to return a `None` value.
- Fix error when reading multi-volume, BLOSC-compressed `.nvdb` files.
- Fix `wp.printf()` erroring out when no variadic arguments are passed ([GH-333](https://github.com/NVIDIA/warp/issues/333)).
- Fix memory access issues in soft-rigid contact collisions ([GH-362](https://github.com/NVIDIA/warp/issues/362)).
- Fix gradient propagation for in-place addition/subtraction operations on custom vector-type arrays.
- Fix the OpenGL renderer's window not closing when clicking the X button.
- Fix the OpenGL renderer's camera snapping to a different direction from the initial camera's orientation when first looking around.
- Fix custom colors being ignored when rendering meshes in OpenGL ([GH-343](https://github.com/NVIDIA/warp/issues/343)).
- Fix topology updates not being supported by the the OpenGL renderer.

## [1.4.2] - 2024-11-13

Expand Down
Loading

0 comments on commit 75544df

Please sign in to comment.