更新日志#
1.7.1 - 2025-04-30#
新增#
添加使用
mpi4py
的分布式 Jacobi 求解器示例,位于warp/examples/distributed/example_jacobi_mpi.py
(GH-475)。
修改#
修复#
修复涉及 Warp 内核中返回语句的代码生成错误,该错误可能导致在 GPU 上处理时跳过 Warp 中的某些线程 (GH-594)。
修复从
wp.fem.Trimesh3D
几何体构造DeformedGeometry
的问题 (GH-614)。修复
wp.fem.Trimesh3D
的lookup
运算符 (GH-618)。在 Cholesky 求解器的 LTO 文件哈希中包含块维度 (GH-639)。
修复对于源内存对齐的小瓦片进行的瓦片加载问题 (GH-622)。
修复 Python 作用域中向量和矩阵的长度/形状匹配问题。
修复
wp.quaternion()
缺少dtype
参数的问题。修复使用字面值和显式
dtype
参数时,wp.matrix()
/wp.vector()
/wp.quaternion()
构造函数中无效的dtype
比较问题 (GH-651)。修复
wp.sim.collide()
后向传递中不正确的线程索引查找问题 (GH-459)。修复
wp.sim.ModelBuilder
以 -1 作为顶点索引添加弹簧的错误 (GH-621)。修复网格形状的质心和惯性计算问题 (GH-251)。
修复计算物体质心时未考虑形状方向的问题 (GH-648)。
修复
show_joints
在wp.sim.render.SimRenderer
设置为渲染到 USD 时不起作用的问题 (GH-510)。修复
OgnParticlesFromMesh
节点抖动计算不正确的问题。修复
wp.autograd.gradcheck()
和wp.autograd.gradcheck_tape()
的参数atol
和rtol
的文档问题 (GH-508)。
1.7.0 - 2025-03-30#
新增#
通过在 CUDA-C 代码中发出
#line
指令,支持 Nsight Compute 报告中的 Python/SASS 关联。此设置由wp.config.line_directives
控制,默认值为True
。 (文档, GH-437)支持在
wp.Volume.allocate_by_tiles()
中构造vec4f
网格。添加 2D SVD
wp.svd2()
(GH-436)。添加
wp.randu()
用于生成随机uint32
。添加矩阵构造函数
wp.matrix_from_cols()
和wp.matrix_from_rows()
(GH-278)。添加
wp.transform_from_matrix()
以从 4x4 矩阵获取变换 (GH-211)。添加
wp.where()
以使用更直观的参数顺序 (cond
,value_if_true
,value_if_false
) 有条件地在两个参数之间进行选择 (GH-469)。添加
wp.get_mempool_used_mem_current()
和wp.get_mempool_used_mem_high()
,以查询内存池分配器的当前和最高水位标记内存使用情况。 (GH-446)。添加
Stream.is_complete
和Event.is_complete
属性以查询完成状态 (GH-435)。支持在 CUDA 图中进行计时事件 (GH-556)。
添加 LTO 缓存以加快使用 MathDx 瓦片函数的内核的编译时间。使用
wp.clear_lto_cache()
清除 LTO 缓存 (GH-507)。添加示例,演示在
warp/examples/optim/example_fluid_checkpoint.py
中进行流体优化的梯度检查点。向
wp.sim.VBDIntegrator
添加基于铰链角度的弯曲力。添加示例以展示使用 CDF 进行网格采样 (GH-476)。
修改#
重大变更:移除 CUTLASS 依赖项和
wp.matmul()
功能(包括批处理版本)。用户应改用瓦片原语进行矩阵乘法运算。弃用使用
wp.matrix()
从向量构造矩阵的方法。弃用
wp.select()
,改用wp.where()
。用户应将其代码更新为使用wp.where(cond, value_if_true, value_if_false)
,而不是wp.select(cond, value_if_false, value_if_true)
。wp.sim.Control
不再具有model
属性 (GH-487)。wp.sim.Control.reset()
已弃用,现在仅将控制器归零(之前会将控制器恢复到初始model
状态)。请改用wp.sim.Control.clear()
。向量/矩阵/四元数分量赋值操作(例如,
v[0] = x
)现在在后向传递中编译和运行速度更快。注意:为了正确的梯度计算,每个分量应仅赋值一次。@wp.kernel
现在有一个可选的module
参数,允许将wp.context.Module
传递给内核,或者,如果设置为"unique"
,则让 Warp 仅为此内核创建一个新的唯一模块。使用当前模块的默认行为保持不变。默认 PTX 架构现在根据系统中存在的设备自动确定,确保最佳兼容性和性能 (GH-537)。
结构体现在具有简单的默认构造函数,允许在具有结构体数据类型的瓦片上使用
wp.tile_reduce()
。扩展
wp.tile_broadcast()
以支持广播到 1D、3D 和 4D 形状(除了现有的 2D 支持)。wp.fem.integrate()
和wp.fem.interpolate()
现在可以在单元内并行评估高斯积分点。wp.fem.interpolate()
现在可以构建插值函数相对于试探场的雅可比稀疏矩阵。多个
wp.sparse
例程 (bsr_set_from_triplets
,bsr_assign
,bsr_axpy
,bsr_mm
) 现在接受masked
标志,以丢弃目标矩阵中尚不存在的任何非零值。wp.sparse.bsr_assign()
不再要求源块形状和目标块形状彼此整除。扩展
wp.expect_near()
以支持所有向量和四元数。扩展
wp.quat_from_matrix()
以支持 4x4 矩阵。更新
OgnClothSimulate
节点以使用 VBD 积分器 (GH-512)。从
OgnClothSimulate
节点移除globalScale
参数。
修复#
1.6.2 - 2025-03-07#
修改#
将项目许可证从 NVIDIA Software License 更新为 Apache License, Version 2.0(参见
LICENSE.md
)。
1.6.1 - 2025-03-03#
新增#
修复#
修复在
wp.tile_load()
中使用偏移 2D 瓦片进行未对齐加载的问题。修复线程级矩阵乘法的 FP64 精度问题 (GH-489)。
修复当目标设备是 CPU 时,
wp.array()
未从定义 CUDA 数组接口的数组进行初始化的问题 (GH-523)。修复
wp.Launch
对象未能存储和重放伴随内核启动的问题 (GH-449)。修复
wp.config.verify_autograd_array_access
未能检测到泛型 Warp 函数中覆盖的问题 (GH-493)。修复在 Windows 上关闭
OpenGLRenderer
应用程序时出现错误的问题 (GH-488)。修复传递恒定颜色时,顶点颜色未正确写入 USD 网格的问题 (GH-480)。
修复在启用
handle_self_contact
时,使用 CUDA 图捕获wp.sim.VBDIntegrator
时出现错误的问题 (GH-441)。修复
wp.collide.TriMeshCollisionDetector
中 AABB 计算错误的问题。修复 URDF 导入的平面关节未按预期设置
target_ke
,target_kd
和mode
参数的问题 (GH-454)。修复
ModelBuilder.add_builder()
未对ModelBuilder.joint_parent
和ModelBuilder.joint_child
使用正确偏移量的问题 (GH-432)修复盒-球体和盒-胶囊体碰撞接触点分配不足的问题。
修复
wp.randi()
文档未显示正确输出范围[-2^31, 2^31)
的问题。
1.6.0 - 2025-02-03#
新增#
通过
wp.tile_cholesky()
,tile_cholesky_solve()
和tile_diag_add()
添加瓦片 Cholesky 分解和求解 API 预览(预览 API 可能随时更改)。支持从形状不是瓦片维度倍数的数组加载瓦片。越界读取将填充零,越界写入将被跳过。
支持更高维度(最高 4D)的瓦片形状和内存操作。
通过传递
handle_self_contact=True
,在wp.sim.VBDIntegrator
中添加无交集自接触支持。有关用法示例,请参见warp/examples/sim/example_cloth_self_contact.py
。为向量类型添加函数
wp.norm_l1()
,wp.norm_l2()
,wp.norm_huber()
,wp.norm_pseudo_huber()
和wp.smooth_normalize()
到新的wp.math
模块。wp.sim.SemiImplicitIntegrator
和wp.sim.FeatherstoneIntegrator
现在有一个可选的friction_smoothing
构造函数参数(默认为 1.0),用于控制摩擦范数计算的柔和度。支持 Linux 上的 CUDA IPC。调用
ipc_handle()
方法以获取wp.Event
或wp.array
的 IPC 句柄,并在另一个进程中调用wp.from_ipc_handle()
或wp.event_from_ipc_handle()
以打开该句柄 (文档)。添加按模块选项以禁用融合浮点运算,使用
wp.set_module_options({"fuse_fp": False})
(GH-379)。添加按模块选项以添加用于性能分析的 CUDA-C 行信息,使用
wp.set_module_options({"lineinfo": True})
。通过定义
wp.func
函数,支持wp.struct
对象的运算符重载 (GH-392)。添加内置函数
wp.len()
,用于检索向量、四元数、矩阵和数组的元素数量 (GH-389)。添加
warp/examples/optim/example_softbody_properties.py
作为软体属性的优化示例 (GH-419)。添加
warp/examples/tile/example_tile_walker.py
,它重写了现有的example_walker.py
以使用 Warp 的瓦片 API 进行矩阵乘法。添加
warp/examples/tile/example_tile_nbody.py
作为使用 Warp 瓦片原语进行 N 体仿真的示例。
修改#
重大变更:更改
wp.tile_load()
和wp.tile_store()
索引行为,使索引现在以数组元素而不是瓦片倍数来指定。重大变更:瓦片操作现在接受
shape
和offset
参数作为元组,例如:wp.tile_load(array, shape=(m,n), offset=(i,j))
。重大变更:更改瓦片函数抛出的异常类型和错误消息,以提高一致性。
每当共享内存瓦片的数据被重新初始化时(例如在动态循环中),添加隐式瓦片同步。这可能导致性能下降。
wp.Bvh
构造函数现在通过constructor
参数支持各种构造算法,包括"sah"
(表面积启发式)、"median"
和"lbvh"
(文档)提高
wp.Bvh
和wp.Mesh
的查询效率。在使用
enable_backward
设置为False
的内核中进行就地向量/矩阵赋值时,改进内存消耗、编译和运行时性能 (GH-332)。向量/矩阵/四元数分量
+=
和-=
运算在后向传递中编译和运行速度更快 (GH-332)。根据目录命名内核缓存中的文件。以前,所有文件都以
module_codegen
开头 (GH-431)。更改
block_dim
时避免模块重新编译。wp.autograd.gradcheck_tape()
现在具有额外的可选参数reverse_launches
和skip_to_launch_index
。wp.autograd.gradcheck()
,wp.autograd.jacobian()
和wp.autograd.jacobian_fd()
现在也接受以 Warp 数组作为输入和输出的任意 Python 函数。OpenGL 渲染器中的
update_vbo_transforms
内核启动不再记录到 Tape 上。当
enable_backward
设置为False
时,跳过在生成的 C++/CUDA 代码中发出后向函数/内核。对在
wp.array
初始化器中使用owner
和length
关键字发出弃用警告。对使用
wp.mlp()
,wp.matmul()
和wp.batched_matmul()
发出弃用警告。请改用瓦片原语。
修复#
修复后向传递过程中意外修改非 Warp 数组的问题 (GH-394)。
修复
wp.Tape.zero()
在wp.Tape.backward()
中通过grads
参数传递的梯度归零的问题 (GH-407)。修复模块卸载导致图捕获过程中出现错误的问题 (GH-401)。
修复使用跨步分配数组时潜在的内存损坏错误 (GH-404)。
修复当给定数据是具有 CUDA 接口的另一个数组时,
wp.array()
未遵守目标dtype
和shape
的问题 (GH-363)。负常量被评估为编译时常量 (GH-403)
修复在 Windows 上使用 OpenGL 渲染器时,解释器关闭期间抛出
ImportError
异常的问题 (GH-412)。修复 OpenGL 渲染器在多个实例同时存在时无法工作的问题 (GH-385)。
修复在 OpenGL 渲染器中移动相机时出现的
AttributeError
崩溃问题 (GH-426)。修复 OpenGL 渲染器无法正确显示重复的胶囊体、圆锥体和圆柱体形状的问题 (GH-388)。
修复
wp.sim.ModelBuilder
默认参数被覆盖的问题 (GH-429)。修复当块维度小于瓦片大小时
wp.tile_extract()
的索引问题。修复颗粒碰撞 SDF 示例中使用的岩石几何体的缩放和旋转问题 (GH-409)。
修复
wp.autograd.jacobian()
中的自动微分雅可比计算问题,在某些情况下梯度未正确归零。修复
wp.autograd.jacobian_plot()
中的绘图问题。修复
len()
运算符返回矩阵总大小而非其第一维度的问题。修复
wp.sim.SemiImplicitIntegrator
和wp.sim.FeatherstoneIntegrator
中刚体接触处理的梯度不稳定性问题 (GH-349)。修复带有默认参数的泛型 Warp 函数的重载解析问题。
修复在
OpenGLRenderer
中渲染不同up_axis
,color
箭头的 问题 (GH-448)。
1.5.1 - 2025-01-02#
新增#
将 PyTorch 基础和自定义运算符 Notebook 添加到
notebooks
目录中。更新 PyTorch 互操作文档,增加关于自定义运算符的部分 (文档)。
修复#
warp.sim: 修复色彩平衡算法未更新着色的错误。
修复在 OpenGL 中渲染静态拓扑网格时自定义颜色未更新的问题 (GH-343)。
修复
wp.launch_tiled()
在传递record_cmd=True
时未返回Launch
对象的问题。修复从 Python 运行时调用
wp.func
时未解析默认参数的问题 (GH-386)。数组覆盖跟踪:修复未将传递给
wp.atomic_add()
,wp.atomic_sub()
,wp.atomic_max()
, 或wp.atomic_min()
的数组标记为已写入的问题 (GH-378)。修复在 Windows 上偶尔无法将
.meta
文件更新到 Warp 内核缓存的问题。修复 OpenGL 渲染器在没有可用的 CUDA 设备时无法运行的问题 (GH-344)。
修复不正确的 CUDA 驱动程序函数版本问题 (GH-402)。
1.5.0 - 2024-12-02#
新增#
支持使用 cuBLASDx 和 cuFFTDx 的协作式基于瓦片的原语,详情请参见瓦片 文档。
为迭代器公开一个内置的
reversed()
函数 (GH-311)。支持使用
save_to_nvdb
方法将 Volumes 保存到.nvdb
文件中。warp.fem: 为 3D 表面添加
wp.fem.Trimesh3D
和wp.fem.Quadmesh3D
几何类型,并附带新的example_distortion_energy
示例。warp.fem: 为
wp.fem.integrate()
添加"add"
选项,用于将积分结果累加到现有输出。warp.fem: 为
wp.fem.integrate()
添加"assembly"
选项,用于选择内存效率更高或计算效率更高的积分算法。warp.fem: 添加 Nédélec(第一类)和 Raviart-Thomas 向量值函数空间,分别提供
curl
和div
算子的符合条件的离散化。warp.sim: 添加一个图着色模块,支持将三角网格转换为顶点图并应用着色。
wp.sim.ModelBuilder
现在包含用于为粒子着色的方法,以便与wp.sim.VBDIntegrator()
一起使用,用户应在最终确定资产之前调用builder.color()
。warp.sim: 支持使用
wp.sim.Model.particle_radius
数组 (文档) 为软体三角形接触添加每个粒子的半径,替换了之前硬编码的值 0.01 (GH-329)。为
wp.sim.ModelBuilder.add_cloth_mesh()
和wp.sim.ModelBuilder.add_cloth_grid()
添加particle_radius
参数,用于设置新增粒子的统一半径。文档化
wp.array
属性 (GH-364)。文档化在内核中使用向量分量赋值语句时的编译时间权衡。
在
notebooks
目录中添加入门级 Jupyter Notebook。
变更#
停止支持 Python 3.7;Python 3.8 现在是最低支持版本。
将
wp.Int
,wp.Float
, 和wp.Scalar
泛型注解类型提升为公共 API。warp.fem: 使用新的
wp.fem.cells()
,wp.fem.to_inner_cell()
,wp.fem.to_outer_cell()
运算符,简化在侧面积分时查询相邻单元格量的工作。当函数返回类型与其注解不同时显示错误消息,这之前会导致编译阶段失败。
澄清
wp.randn()
采样的是均值为 0、方差为 1 的正态分布。当向内置的
wp.printf()
传递超过 32 个可变参数时引发错误。
修复#
修复 paddle 后端的
place
设置问题。warp.fem: 修复四边形网格上的三三次形状函数问题。
warp.fem: 修复更改代码生成选项时被积函数内核的缓存问题。
修复标量类型缺失
wp.expect_neq()
重载的问题。修复当
wp.kernel
或wp.func
对象被注解为返回None
值时出现的错误。修复读取多卷、BLOSC 压缩的
.nvdb
文件时出现的错误。修复
wp.printf()
在未传递可变参数时报错的问题 (GH-333)。修复软体-刚体接触碰撞中的内存访问问题 (GH-362)。
修复自定义向量类型数组原地加/减操作的梯度传播问题。
修复点击 X 按钮时 OpenGL 渲染器窗口未关闭的问题。
修复 OpenGL 渲染器在首次环顾四周时相机方向突然跳到与初始相机方向不同的问题。
修复在 OpenGL 中渲染网格时忽略自定义颜色问题 (GH-343)。
修复 OpenGL 渲染器不支持拓扑更新的问题。
1.4.2 - 2024-11-13#
变更#
使
wp.print()
在反向传播内核中的输出对于所有支持的数据类型保持一致。
修复#
1.4.1 - 2024-10-15#
修复#
修复
iter_reverse()
对于步长不为 1 的范围无法按预期工作的问题 (GH-311)。修复当
wp.sparse.BsrMatrix
对象被重复用于存储不同形状的矩阵时可能出现的越界内存访问问题。修复
wp.fem.utils.symmetric_eigenvalues_qr
在非常低期望容差下的鲁棒性问题。修复嵌套动态和静态 for 循环时无效代码生成错误消息问题。
修复带有静态表达式的内核的缓存问题。
修复
ModelBuilder.add_builder(builder)
在builder
包含多个关节时无法正确更新articulation_start
并因此更新articulation_count
的问题。将
wp.rand*()
,wp.sample*()
, 和wp.poisson()
重新引入到 Python 作用域,以恢复一个破坏性变更。
1.4.0 - 2024-10-01#
新增#
支持一个新的
wp.static(expr)
函数,允许在函数/内核定义时评估任意 Python 表达式 (文档)。支持流优先级,以提示设备在可能的情况下优先处理高优先级流中的待处理工作,而不是低优先级流中的待处理工作 (文档)。
为
warp.fem
添加自适应稀疏网格几何体 (文档)。支持在闭包内部定义
wp.kernel
和wp.func
对象。支持定义多个版本的内核、函数和结构体,而无需手动分配唯一键。
支持使用
wp.func
修饰的用户函数的默认参数值。允许向
jax_kernel()
传递自定义启动维度 (GH-310)。JAX 分片和矩阵乘法的互操作示例 (文档)。
支持与 PaddlePaddle 机器学习框架的互操作 (GH-318)。
支持向量类型的
wp.mod()
(GH-282)。将模运算符
%
公开给 Python 运行时的标量和向量类型。支持 fp64
atomic_add
、atomic_max
和atomic_min
(GH-284)。支持四元数索引(例如
q.w
)。支持遮蔽内置函数 (GH-308)。
支持重新定义函数重载。
为
omni.warp
扩展添加一个海洋示例。warp.sim.VBDIntegrator
现在支持刚体-粒子碰撞。在 Sphinx 文档中添加一个贡献指南。
添加动态代码生成的文档 (文档)。
变更#
wp.sim.Model.edge_indices
现在包含边界边。从 Python 作用域中移除对
wp.rand*()
,wp.sample*()
, 和wp.poisson()
的暴露。在模块代码生成中跳过未使用的函数,提高性能。
如果模块内容未更改,则避免重新加载模块,提高性能。
wp.Mesh.points
现在是一个属性,而不是原始数据成员,其引用可以在网格初始化后更改。改进在 Warp 内核中引用无效对象时的错误消息。
带有常量条件的
if
/else
/elif
语句在编译时被解析,生成的代码中不会插入分支。在存根文件中包含所有非隐藏的内置函数。
提高
warp.fem
中对称特征值例程的精度。
修复#
修复
wp.func
在定义Tuple
作为返回类型提示时报错的问题 (GH-302)。修复数组原地操作 (
+=
,-=
) 伴随矩阵在反向传播中正确计算梯度的问题修复向量、矩阵原地赋值伴随矩阵在反向传播中正确计算梯度的问题,例如:
v[1] = x
修复 Python 文档字符串在生成的代码中被创建为局部函数变量的错误。
修复不同模块函数中 autograd 数组访问验证的错误。
修复在某些系统上由于 glibc 不匹配导致的错误报告时的罕见崩溃问题。
处理
--num_tiles 1
在example_render_opengl.py
中 (GH-306)。修复
FeatherstoneIntegrator
中刚体与粒子碰撞时刚体接触力计算的问题。修复
FeatherstoneIntegrator
中的错误,该错误会导致当刚体和关节索引顺序不同时,eval_rigid_jacobian
可能给出不正确的结果或陷入无限循环。添加了Model.joint_ancestor
以修复关节到其父关节在关节结构中的索引问题。修复从
ModelBuilder.add_cloth_mesh()
调用add_edges()
时传递了错误的顶点索引的问题 (GH-319)。在使用
wp.Mesh
时,在compute-sanitizer
初始化检查工具中添加了未初始化内存读取警告的临时解决方案。修复当 Warp 函数和结构体多次从 Python 函数返回时出现的名称冲突问题。
修复在不同模块中定义的 Warp 函数和结构体之间的名称冲突问题。
修复在 Python 函数中重载泛型内核时出现的代码生成错误问题。
修复不相关的函数被视为重载(例如,闭包)的问题。
修复
array.__dlpack__()
中stream
参数的处理问题。修复与重新加载 CPU 模块相关的错误。
修复在 CPU 模块中找不到内核函数时发生的崩溃问题。
修复
while
语句中条件未按预期评估的问题。修复打印布尔值和 8 位整数值的问题。
修复用于布尔值和 8 位整数值的数组接口类型字符串问题。
修复设置结构体成员时出现的初始化错误问题。
修复进入
wp.Tape
上下文时 Warp 未初始化的问题。对于布尔值的 DLPack 互操作,使用
kDLBool
而不是kDLUInt
。
1.3.3 - 2024-09-04#
Bug 修复
修复 Warp 1.3.0 中引入的从 NumPy 进行零拷贝数组初始化时出现的别名问题。
修复当
bg_value
是值序列时wp.Volume.load_from_numpy()
的行为问题 (GH-312)。
1.3.2 - 2024-08-30#
Bug 修复
修复使用 fp64 数字时 3x3 SVD
wp.svd3
的精度问题 (GH-281)。修复当内核参数包含结构体数组时模块哈希的问题 (GH-287)。
修复
wp.bvh_query_ray()
中的一个 bug,该 bug 会使用方向而不是倒数方向 (GH-288)。修复模块重新加载后启动 CUDA 图时出现的错误。在图捕获期间使用的模块在图释放之前将不再卸载。
修复
wp.sim.collide.triangle_closest_point_barycentric()
中的一个 bug,该 bug 会导致当最近点位于边缘时,返回的重心坐标可能不正确。修复使用
np.int32
指定数组形状时出现的 32 位溢出问题。修复
autograd.jacobian
和autograd.jacobian_fd
的input_output_mask
参数中整数索引的处理问题 (GH-289)。修复
ModelBuilder.collapse_fixed_joints()
无法正确更新刚体质心和ModelBuilder.articulation_start
数组的问题。修复闭包常量优先于全局常量的问题。
修复
wp.fem.ExplicitQuadrature
中的求积点索引问题(1.3.0 中的回归)。
文档改进
为内置函数添加缺失的返回类型。
澄清原子操作也返回之前的值。
澄清
wp.bvh_query_aabb()
返回与边界体积重叠的部分。
1.3.1 - 2024-07-27#
从 PyTorch autograd 函数示例中移除
wp.synchronize()
Tape.check_kernel_array_access()
和Tape.reset_array_read_flags()
现在是私有方法。修复报告不匹配参数类型的问题
1.3.0 - 2024-07-25#
Warp Core 改进
默认更新到 CUDA 12.x(需要 NVIDIA 驱动程序 525 或更高版本),请参见 README.md 获取适用于旧驱动程序的 CUDA 11.x 二进制文件安装命令
在模块加载的打印输出中添加信息,指示模块是已编译 (
compiled
)、从缓存加载 (cached
),还是无法加载 (error
)。wp.config.verbose = True
现在在进入wp.ScopedTimer
时也会打印一条消息。将
wp.clear_kernel_cache()
添加到公共 API。这等同于wp.build.clear_kernel_cache()
。为
wp.config
变量添加代码补全支持。移除 CPU 内核使用静态任务(线程)索引来解决多线程问题的方式 (GH-224)
改进内核中对不受支持的 Python 操作(如序列构造)的错误消息
更新
wp.matmul()
CPU 回退,在np.matmul()
调用中显式使用 dtype添加对 PEP 563 的
from __future__ import annotations
的支持 (GH-256)。允许通过
__cuda_array_interface__
和__array_interface__
直接将外部数组/张量传递给wp.launch()
,从 PyTorch 转换速度提高达 2.5 倍使用
return_ctype
参数向wp.from_torch()
添加更快的 Torch 互操作路径优雅地处理不兼容的 CUDA 驱动程序版本
为向量类型添加
wp.abs()
和wp.sign()
将标量算术运算符公开给 Python 运行时(例如:
wp.float16(1.23) * wp.float16(2.34)
)添加支持创建具有各向异性变换的 Volume
允许用户在内核中使用标准的 Python 调用语义,通过关键字传递函数参数
添加额外文档和示例,演示
wp.copy()
,wp.clone()
, 和array.assign()
的可微性为所有类的
__del__()
方法添加__new__()
方法,以处理在垃圾回收之前创建但未实例化类实例的情况为
wp.quat
实现赋值运算符使几何相关的内置函数仅在内核内部可用
重命名面向 API 的查询类型以移除其
_t
后缀:wp.BVHQuery
,wp.HashGridQuery
,wp.MeshQueryAABB
,wp.MeshQueryPoint
, 和wp.MeshQueryRay
添加
wp.array(ptr=...)
允许在内核内部从指针地址初始化数组 (GH-206)
warp.autograd
改进warp.sim
改进改进当
self.rigid_mesh_contact_max
为零(默认行为)时刚体接触处理的内存使用和性能。wp.sim.eval_fk()
的mask
参数现在接受整数和布尔数组来掩盖关节。修复
ModelBuilder.collapse_fixed_joints()
中对ModelBuilder.joint_act
的处理问题(影响浮动基系统)修复并改进
ModelBuilder.plot_articulation()
的实现,以可视化刚体机构的关节树修复 ShapeInstancer 的
__new__()
方法(缺少实例返回和*args
参数)修复
ModelBuilder
中对upaxis
变量的处理以及在OpenGLRenderer
中的渲染问题
warp.sparse
改进稀疏矩阵分配(来自
bsr_from_triplets()
,bsr_axpy()
等)现在可以在 CUDA 图中捕获;可以异步选择性地请求非零元素的精确数量。bsr_assign()
现在支持更改块形状(包括 CSR/BSR 转换)为常见的稀疏矩阵操作添加 Python 运算符重载,例如
A += 0.5 * B
,y = x @ C
warp.fem
新功能和修复支持每个元素的可变节点数
全局
wp.fem.lookup()
运算符现在支持wp.fem.Tetmesh
和wp.fem.Trimesh2D
几何体简化了自定义子域 (
wp.fem.Subdomain
) 的定义,自由滑移边界条件新增字段类型:
wp.fem.UniformField
,wp.fem.ImplicitField
和wp.fem.NonconformingField
新增
streamlines
,magnetostatics
和nonconforming_contact
示例,更新了mixed_elasticity
以使用非线性模型函数空间现在可以导出与 VTK 兼容的单元格用于可视化
修复 NanoVDB 函数空间的边缘情况问题。
修复
wp.fem.PicQuadrature
相对于位置和度量的可微性问题。
1.2.2 - 2024-07-04#
修复 replay 函数和代码片段的哈希问题。
添加额外文档和示例,演示
wp.copy()
,wp.clone()
, 和array.assign()
的可微性为所有类的
__del__()
方法添加__new__()
方法,以处理在垃圾回收之前创建但未实例化类实例的情况。添加动态循环 autograd 限制的文档
允许用户在内核中使用标准的 Python 调用语义,通过关键字传递函数参数
为
wp.quat
实现赋值运算符
1.2.2 - 2024-07-04#
支持 NumPy >= 2.0
1.2.1 - 2024-06-14#
修复泛型函数缓存问题。
修复使用
wp.array()
构造数组时 Warp 未初始化的问题。修复
wp.is_mempool_access_supported()
未将提供的设备参数解析为wp.context.Device
的问题。
1.2.0 - 2024-06-06#
添加一个非数字浮点常量,可用作
wp.NAN
或wp.nan
。为标量、向量、矩阵等添加
wp.isnan()
,wp.isinf()
, 和wp.isfinite()
。通过仅哈希本地模块常量来提高内核缓存的复用。之前,模块的哈希值受 Warp 程序中声明的所有
wp.constant()
变量影响。修改了模块编译过程,允许多个进程使用同一个内核缓存目录。缓存的内核现在将存储在特定哈希的子目录中。
为
wp.MarchingCubes
添加字段维度和大小的运行时检查。修复
wp.Mesh
BVH 中的内存泄漏问题 (GH-225)。构建 Warp 库和用户内核时使用 C++17。
将 PTX 目标架构提高到
sm_75
(从sm_70
),启用 Turing ISA 特性。扩展了 NanoVDB 支持(参见
warp.Volume
)。添加对数据无关索引网格的支持,按体素粒度进行分配。
新增
wp.volume_lookup_index()
、wp.volume_sample_index()
以及通用的wp.volume_sample()
/wp.volume_lookup()
/wp.volume_store()
内核级函数内存中网格的零拷贝别名,支持多网格缓冲区
网格内省和盲数据访问功能
warp.fem
现在可以使用warp.fem.Nanogrid
直接在 NanoVDB 网格上工作修复了
wp.volume_sample_v()
和wp.volume_store_*()
的伴随阻止
wp.volume_store()
覆盖网格背景值
改进
warp.fem
中用户提供的字段和值的验证通过设置
pyglet.options["headless"] = True
支持wp.render.OpenGLRenderer
的无头渲染如果 CUDA/OpenGL 互操作不可用,
wp.render.RegisteredGLBuffer
可以回退到 CPU 绑定复制澄清外部贡献条款,详情请参阅 CONTRIBUTING.md
在基准测试问题上将
wp.sparse.bsr_mm()
的性能提高了约 5 倍修复了 XPBD 错误索引关节致动
joint_act
数组的问题修复了
wp.sim.FeatherstoneIntegrator()
中质量矩阵梯度计算的问题修复了构建脚本中
--msvc_path
的处理问题修复了
wp.copy()
参数在wp.Tape()
上记录目标和源偏移参数的问题修复了
wp.randn()
以确保返回值是有限的修复了内核中带有梯度的数组切片问题
修复了函数重载缓存问题,确保如果任何函数重载被修改,模块将重新构建
修复了通用内核中
bool
类型的处理问题发布支持 Hopper 的 CUDA 12.5 二进制文件,详情请参阅 https://github.com/nvidia/warp?tab=readme-ov-file#installing
1.1.1 - 2024-05-24#
wp.init()
不再需要显式调用,将在首次调用 API 时执行加快
omni.warp.core
的启动时间
1.1.0 - 2024-05-09#
支持使用类型提示从
@wp.func_native
CUDA 函数返回值改进了
wp.sim.FeatherstoneIntegrator
的可微分性修复了
wp.sim.collide()
中刚体接触的梯度传播问题增加了基于事件的计时支持,请参阅
wp.ScopedTimer()
增加了 Tape 可视化和调试函数,请参阅
wp.Tape.visualize()
支持从定义了
__cuda_array_interface__
属性的对象构建 Warp 数组支持将结构体复制到另一个设备,使用
struct.to(device)
迁移结构体数组允许刚体形状在
wp.sim.Model
中不与任何其他形状发生碰撞更改默认测试行为,以测试冗余 GPU(最多 2 个)
在单独的子进程中测试每个示例
润色和优化各种示例和测试
允许将非连续点数组传递给
wp.HashGrid.build()
从源代码构建和 Linux x86-64 构建时,将 LLVM 升级到 18.1.3
将 DLL 源代码构建为 C++17 并要求最低版本为 GCC 9.4
数组克隆、赋值和复制现在是可微分的
使用
Ruff
进行格式化和 linting各种文档改进(无穷大、数学常数等)
改进 URDF 导入器,处理关节电枢
允许在 Warp 数据结构中使用 builtins.bool
在向
wp.launch()
传递时,在反向传播中使用外部梯度数组添加 Conjugate Residual 线性求解器,请参阅
wp.optim.linear.cr()
修复了内核中变量别名副本的梯度传播问题
通过消除引发任何异常,方便调试并加速
import warp
改进对结构体中嵌套向量/矩阵赋值的支持
推荐使用 Python 3.9 或更高版本,JAX 和即将发布的 PyTorch 需要此版本。
支持索引切片多维数组的梯度传播,即
a[i][j]
对比a[i, j]
如果设置 DLL C 类型失败,提供一条信息丰富的消息,指导用户尝试重新构建库
1.0.3 - 2024-04-17#
在扩展的配置文件中添加
support_level
条目
1.0.2 - 2024-03-22#
使示例可以在任何位置运行
修复示例无法直接从其 Python 文件运行的问题
将示例图库添加到文档中
更新
README.md
示例 USD 位置更新
example_graph_capture.py
描述
1.0.1 - 2024-03-15#
文档说明 Device 的
total_memory
和free_memory
关于分配器、流、对等访问和泛型的文档
将示例输出目录更改为当前工作目录
添加了
python -m warp.examples.browse
用于浏览示例文件夹打印 USD 场景文件保存的位置
添加了
examples/optim/example_walker.py
示例使无人机示例不特定于 USD
减少运行某些示例所需的时间
优化使用单色渲染点
澄清需要 USD 的错误消息
在图捕捉期间模块卸载时引发异常
添加了
wp.synchronize_event()
用于阻塞主机线程直到记录的事件完成结束
stdout
捕捉时刷新 C 打印缓冲区移除更多不必要的 CUTLASS 文件
允许将内存池释放阈值设置为分数
1.0.0 - 2024-03-07#
添加
FeatherstoneIntegrator
,它在广义坐标中提供了更稳定的关节刚体动力学仿真(State.joint_q
和State.joint_qd
)引入
warp.sim.Control
结构体来存储仿真的控制输入(可选,默认情况下使用之前的Model
控制输入);积分器现在具有不同的仿真签名:integrator.simulate(model: Model, state_in: State, state_out: State, dt: float, control: Control)
joint_act
现在可以以 3 种模式运行:将joint_axis_mode
设置为JOINT_MODE_FORCE
时,它表现为力/扭矩;设置为JOINT_MODE_VELOCITY
时,它表现为速度目标;设置为JOINT_MODE_POSITION
时,它表现为位置目标;joint_target
已移除通过
Model.shape_materials.ka
向欧拉积分器添加粘性接触,该参数控制应用粘性力时的接触距离改进 URDF 导入器中对视觉/碰撞形状的处理,以便视觉形状不参与接触动力学
实验性 JAX 内核回调支持
改进模块加载异常消息
添加
wp.ScopedCapture
移除对可调用对象的
enable_backward
警告从包装的内核、函数、结构体复制 docstring 和注释
0.15.1 - 2024-03-05#
将示例资产添加到 wheel 包中
修复文档中损坏的图片链接
修复调用其相应前向函数的自定义梯度函数的代码生成问题
修复没有输出的自定义梯度函数处理问题
修复设置
wp.config.quiet = True
时的问题
0.15.0 - 2024-03-04#
为示例图库添加缩略图
对示例应用彩色照明
将
examples
目录移动到warp/
下在
python -m warp.tests --help
中添加示例用法添加
torch.autograd.function
示例 + 文档在创建数组时添加错误检查
添加
example_graph_capture
添加一个无人机微分仿真示例
修复
verify_fp
导致编译器错误的问题,并支持 CPU 内核修复以使
matmul
可以在 CUDA 图捕捉中调用默认启用内存池
更新
wp.launch
以支持元组参数修复 BiCGSTAB 和 GMRES 在提前收敛时产生 NaNs 的问题
修复
test_fem
中关于禁用反向代码生成的警告修复涉及 NaN 和容差时
assert_np_equal
的问题改进错误消息以区分 CUDA 被禁用或不支持的情况
支持带有用户定义梯度的跨模块函数
在错误后结束捕捉时抑制多余的 CUDA 错误
使初始化期间的输出原子化
添加
warp.config.max_unroll
,修复自定义梯度展开使用
@wp.func_native(snippet, replay_snippet=replay_snippet)
支持原生重放片段如果未使用
CUDA_PATH
环境变量或--cuda_path
构建选项,则在默认位置查找 CUDA Toolkit添加了
wp.ones()
以高效创建初始化为 1 的数组将
wp.config.graph_capture_module_load_default
重命名为wp.config.enable_graph_capture_module_load_by_default
0.14.0 - 2024-02-19#
添加了对 CUDA 池化(流有序)分配器的支持
支持图捕捉期间的内存分配
支持图捕捉期间复制非连续 CUDA 数组
改进了使用池化分配器时的内存分配/释放性能
使用
wp.config.enable_mempools_at_init
在 Warp 初始化期间启用池化分配器(如果支持)wp.is_mempool_supported()
- 检查设备是否支持池化分配器wp.is_mempool_enabled()
、wp.set_mempool_enabled()
- 按设备启用或禁用池化分配器wp.set_mempool_release_threshold()
、wp.get_mempool_release_threshold()
- 配置内存池释放阈值
添加了对设备之间直接内存访问的支持
如果启用了对等访问,则改进了对等内存传输性能
注意:启用对等访问可能会影响内存分配/释放性能并增加内存消耗
wp.is_peer_access_supported()
- 检查对等设备是否可以访问设备的内存wp.is_peer_access_enabled()
、wp.set_peer_access_enabled()
- 管理使用默认 CUDA 分配器分配的内存的对等访问wp.is_mempool_access_supported()
- 检查对等设备是否可以访问设备的内存池wp.is_mempool_access_enabled()
、wp.set_mempool_access_enabled()
- 管理使用池化 CUDA 分配器分配的内存的访问
改进了流同步语义
wp.ScopedStream
可以在进入和/或退出时与上一个流同步(默认只在进入时同步)接受可选流参数的函数不会进行隐式同步以实现最大性能(例如,
wp.copy()
、wp.launch()
、wp.capture_launch()
)
支持在构建数组时传递自定义
deleter
参数弃用
owner
参数 - 使用deleter
转移所有权
优化各种核心 API 函数(例如,
wp.zeros()
、wp.full()
等)修复
wp.matmul()
以始终使用正确的 CUDA 上下文修复 BSR 转置中的内存泄漏
修复复制非连续数组时的流同步问题
API 更改:
wp.matmul()
不再接受设备作为参数;而是从要相乘的数组推断出正确的设备DLPack 工具已更新到最新发布的标准
外部数组可以直接导入到 Warp 中,例如:
wp.from_dlpack(external_array)
Warp 数组可以直接导出到消费框架中,例如:
jax.dlpack.from_dlpack(warp_array)
添加了 CUDA 数组的 CUDA 流同步
当不需要流同步时,仍可使用原始 DLPack 协议以获得更好的性能,详情请参阅互操作性文档
在常见情况下,
warp.to_dlpack()
速度提高了约 3-4 倍使用 DLPack capsule 调用时,
warp.from_dlpack()
速度提高了约 2 倍修复了与 DLPack 互操作相关的少量 CPU 内存泄漏
提高了创建数组的性能
0.13.1 - 2024-02-22#
确保
Noise Deform
的结果在不同的 Kit session 中是确定性的
0.13.0 - 2024-02-16#
将许可证更新为 NVIDIA Software License,允许商业使用(请参阅
LICENSE.md
)添加
CONTRIBUTING.md
指南(针对 NVIDIA 员工)对 CUDA
snippet
和adj_snippet
字符串进行哈希以修复缓存问题修复 Windows 上
build_docs.py
的问题为
warp/tests/walkthrough_debug
添加缺失的.py
扩展名允许在向量和矩阵类型中使用
wp.bool
0.12.0 - 2024-02-05#
在调用
wp.Tape.backward()
时,如果enable_backward
设置为False
,则添加警告修复了使用闭包定义的内核未按预期重新编译的问题
将内核缓存 appauthor 子目录更改为仅“NVIDIA”
确保附加到 PyTorch 张量的梯度在调用
wp.from_torch()
时具有兼容的步长为 OmniGraph 添加一个
Noise Deform
节点,该节点使用 Perlin/Curl 噪声变形点
0.11.0 - 2024-01-23#
将 1.0.0-beta.7 重新发布为非预发布的 0.11.0 版本,以便
pip install warp-lang
可以选中它。引入新的版本控制和发布流程,详情请参阅
PACKAGING.md
,该流程类似于 Python 本身的版本控制0.11 版本(如果发布)可在
release-0.11
分支上找到。点发布(如果发布)将在同一子版本分支上进行,并且仅包含错误修复,不包含新功能。
之前用于合并发布的
public
分支,与 GitHubmain
分支相对应,现已停用。
1.0.0-beta.7 - 2024-01-23#
确保捕捉始终包含在
try
/finally
中仅将 warp 子目录中的 .py 文件包含到 wheel 包中
修复扩展的示例节点在解析某些版本号时失败的问题
允许示例在可能的情况下无需 USD 即可运行
添加一个设置以禁用 Kit 中的主 Warp 菜单
添加迭代线性求解器,请参阅
wp.optim.linear.cg
、wp.optim.linear.bicgstab
、wp.optim.linear.gmres
和wp.optim.linear.LinearOperator
改进关于全局变量的错误消息
改进关于矩阵/向量赋值的错误消息
支持将标量转换为原生/ctypes,例如:
float(wp.float32(1.23))
或ctypes.c_float(wp.float32(1.23))
添加无穷大常数,请参阅
wp.inf
添加关于数组赋值的常见问题解答条目
添加质量弹簧笼微分仿真示例,请参阅
examples/example_diffsim_mass_spring_cage.py
添加
-s
、--suite
选项,仅运行属于给定套件的测试修复常见拼写错误
修复生成代码的缩进问题
仅显示一次弃用警告
改进
wp.render.OpenGLRenderer
在运行时创建扩展到核心库的符号链接
修复一些内置函数在嵌套在 if/else 块中时无法编译反向传播的问题
更新示例以使用 mesh query 内置函数的新变体
修复未归零初始化的类型成员
修复
wp.mesh_query_ray()
缺失的伴随函数
1.0.0-beta.6 - 2024-01-10#
调用
array.numpy()
时不创建 grad 数组的 CPU 副本修复
assert_np_equal()
错误支持 Linux AArch64 平台,包括 Jetson/Tegra 设备
添加并行测试运行器(使用
python -m warp.tests
调用,使用warp/tests/unittest_serial.py
进行串行测试)修复对
range()
中函数调用的支持wp.matmul()
伴随现在会累积扩展可用运算符(例如向量 @ 矩阵,标量作为被除数)并改进对调用原生内置函数的支持
修复
sparse.py
中的多 GPU 同步问题为
wp.render.OpenGLRenderer
添加深度渲染,并文档说明wp.render
使
wp.atomic_min()
、wp.atomic_max()
可微分使用精确的源代码段修复错误报告
添加用户友好的 mesh query 重载,返回结构体而不是覆盖参数
解决了多个可微分性问题
修复返回数组元素引用的反向传播问题
支持将返回值传递给伴随
为
wp.fem
添加点基空间和显式基于点的积分支持使用
build_lib.py --build_llvm --llvm_source_path=
覆盖 LLVM 项目源代码目录路径修复访问不存在属性的错误消息
在 URDF 解析器中为 Mesh 构造函数平坦化面数组
1.0.0-beta.5 - 2023-11-22#
修复函数参数类型更改时的内核缓存问题
修复依赖结构体的代码生成顺序
修复 MGPU 系统上
wp.Mesh
的构建问题修复与伴随代码的名称冲突错误:https://github.com/NVIDIA/warp/issues/154
添加
wp.frac()
以返回浮点值的小数部分添加使用
@wp.func_native
装饰器支持自定义原生 CUDA 片段添加支持批大小 > 2^16-1 的批量矩阵乘法
添加支持转置 CUTLASS
wp.matmul()
和额外的错误检查添加支持
wp.fem
中的四边形和六面体网格检测并警告构建时 C++ 运行时与编译器不匹配,例如:
libstdc++.so.6: version `GLIBCXX_3.4.30' not found
更新
wp.BVH
的文档关于运行时内核特化
wp.Kernel
的文档和简化 API
1.0.0-beta.4 - 2023-11-01#
添加
wp.cbrt()
用于计算立方根添加
wp.mesh_furthest_point_no_sign()
以计算曲面上离查询点最远的点添加对 GPU BVH 构建的支持,大型网格比 CPU 构建快 10-100 倍
添加对链式比较的支持,即:
0 < x < 2
添加支持无头运行
wp.fem
示例修复单元测试确定性问题
修复图捕捉期间可能发生的数组 GC 回收问题
修复
wp.utils.array_sum()
在与向量类型一起使用时的输出初始化问题覆盖率和文档更新
1.0.0-beta.3 - 2023-10-19#
添加对代码覆盖率扫描的支持 (test_coverage.py),
omni.warp.core
的覆盖率达到 85%添加对向量类型的命名组件访问支持,例如:
a = v.x
添加对左值表达式的支持,例如:
array[i] += b
添加矩阵和向量类型的强制类型转换构造函数
添加对
type()
运算符的支持,该运算符可用于在内核内部返回类型添加对网格跨步内核的支持,以支持具有 > 2^31-1 个线程块的内核
修复多进程初始化警告
修复空
wp.struct
的对齐问题修复带有返回元组的函数的 return 语句警告
修复
wp.batched_matmul()
在 Tape 中注册错误函数的问题修复和文档说明
wp.sim
前向 + 逆运动学修复
wp.func
在函数并非所有控制路径都返回值时返回默认值的问题重构
wp.fem
支持新的基函数和解耦的函数空间优化
wp.noise
函数,在大多数情况下速度提高达 10 倍优化数组构造中使用的
type_size_in_bytes()
’
重大变更#
为了支持网格跨步内核,
wp.tid()
不再可以在wp.func
函数内部调用。
1.0.0-beta.2 - 2023-09-01#
修复将 bool 传递给
wp.func
函数的问题修复弃用警告显示在
stderr
上,现已重定向到stdout
修复使用
for i in wp.hash_grid_query(..)
语法的问题
1.0.0-beta.1 - 2023-08-29#
修复
wp.float16
作为内核参数传递的问题修复反向传播中使用结构体的内核编译错误
修复
wp.Mesh.refit()
由于同步临时分配而无法进行 CUDA 图捕捉的问题通过重用
ui.DynamicImageProvider
实例,修复 Kit 中动态纹理示例闪烁/MGPU 演示崩溃的问题修复了禁用示例中捆绑包变更跟踪的回归问题
修复
OgnClothSimulate
中网格变形时表面速度不正确的问题修复示例中设置 USD stage “up_axis” 时大小写不正确的问题
修复将 PyTorch 张量包装为向量或矩阵类型时,梯度类型不兼容的问题
修复在
wp.sim.ModelBuilder.add_cloth_mesh()
中从网格构建布料约束时添加开放边缘的问题添加对
wp.fabricarray
的支持,可以直接从 Warp 内核访问 Fabric 数据,示例请参阅 https://docs.omniverse.nvidia.com/kit/docs/usdrt/latest/docs/usdrt_prim_selection.html添加对用户定义梯度函数的支持,请参阅
@wp.func_replay
和@wp.func_grad
装饰器添加支持
omni.warp.from_omni_graph()
中的更多 OG 属性类型添加支持从密集 NumPy 数组创建 NanoVDB
wp.Volume
对象添加对
wp.volume_sample_grad_f()
的支持,该函数可以高效地从 NVDB 体积返回值 + 梯度添加对 LLVM fp16 内在函数的支持,用于半精度算术
添加随机梯度下降的实现,请参阅
wp.optim.SGD
添加
wp.fem
框架,用于解决弱形式偏微分方程问题(参见 https://nvda.org.cn/warp/modules/fem.html)优化
omni.warp
扩展加载时间(冷启动从 2.2 秒缩短至 625 毫秒)使所有
omni.ui
依赖项成为可选,以便 Warp 单元测试可以在无头模式下运行弃用在内核函数外部使用
wp.tid()
的方式,用户应将tid()
值显式传递给wp.func
函数弃用
wp.sim.Model.flatten()
方法,该方法曾用于返回模型中包含的所有张量在
wp.sim.Model.particle_max_velocity
中添加对限制粒子最大速度的支持移除对
urdfpy
包的依赖,改进 MJCF 解析器对默认值的处理
0.10.1 - 2023-07-25#
修复大型多维内核启动(> 2^32 线程)的问题
修复使用泛型时模块哈希计算的问题
修复包含 break 或 continue 语句的循环展开问题(将跳过展开)
修复向 build_lib.py 传递布尔参数的问题(之前会被忽略)
修复 Linux 上的构建警告
修复从 NumPy 结构化数组创建结构体数组的问题
修复在 Kit 中使用
wp.sim
时内核加载时间退化的问题更新
wp.array.reshape()
以支持处理-1
维度更新在使用
wp.sim.create_soft_body_contacts()
进行网格查询时使用的边距改进使用
wp.from_torch()
、wp.to_torch()
处理梯度,并更新文档
0.10.0 - 2023-07-05#
添加对 macOS 通用二进制文件(x86 + aarch64)的支持,以支持 M1+ 芯片
添加更多 SDF 生成方法,请参阅以下新方法
wp.mesh_query_point_nosign()
- 不进行符号确定的最近点查询wp.mesh_query_point_sign_normal()
- 通过角度加权法线确定符号的最近点查询wp.mesh_query_point_sign_winding_number()
- 通过快速缠绕数确定符号的最近点查询
添加 CSR/BSR 稀疏矩阵支持,详见
wp.sparse
模块wp.sparse.BsrMatrix
使用
wp.sparse.bsr_zeros()
、wp.sparse.bsr_set_from_triplets()
进行构建使用
wp.sparse.bsr_mm()
、wp.sparse_bsr_mv()
分别进行矩阵-矩阵和矩阵-向量乘积计算
添加数组范围内的实用函数
wp.utils.array_scan()
- 前缀和(包含或不包含)wp.utils.array_sum()
- 数组求和wp.utils.radix_sort_pairs()
- 对 (key,value) 对进行原地基数排序
添加从 Python 中调用
@wp.func
函数的支持(在内核范围之外)添加对使用
wp.Launch
对象记录内核启动的支持,该对象可以以低开销重放;使用wp.launch(..., record_cmd=True)
生成命令对象优化
wp.struct
内核参数,对于包含大型结构体或大量参数的内核,启动速度最高可提升 20 倍更新 USD 示例,使用基于 bundle 的工作流程 + 变更跟踪
添加用于操作 OmniGraph 中网格和点 bundle 数据的 Python API,详见
omni.warp.nodes
模块,以及omni.warp.nodes.mesh_create_bundle()
、omni.warp.nodes.mesh_get_points()
等函数改进
wp.array
修复多个数组方法在处理空数组时行为异常的问题
修复与梯度数组相关的多个 bug 和内存泄漏
修复从可分页内存中的数据源创建固定内存数组时的数组构造问题
wp.empty()
不再清零内存,而是返回未初始化的数组,这是预期的行为array.zero_()
和array.fill_()
支持非连续数组支持无需复制即可封装非连续的 NumPy 数组
将 NumPy 数组封装为 Warp 的向量或矩阵类型数组时,支持保留外部维度
改进 PyTorch 和 DLPack 与任意向量和矩阵的 Warp 数组的互操作性
array.fill_()
现在在填充向量或矩阵数组时可以接受列表或其他序列,例如arr.fill_([[1, 2], [3, 4]])
array.fill_()
现在支持结构体数组(传递一个结构体实例)wp.copy()
可以妥善处理不同设备上非连续数组之间的复制添加
wp.full()
和wp.full_like()
函数,例如a = wp.full(shape, value)
为
wp.empty_like()
、wp.zeros_like()
,wp.full_like()
和wp.clone()
添加可选的device
参数为
indexedarray
添加方法.zero_()
、.fill_()
和.assign()
修复
indexedarray
的.numpy()
和.list()
方法修复
array.list()
以支持任何 Warp 数据类型的数组修复
array.list()
在处理 CUDA 数组时的同步问题对结构体数组调用
array.numpy()
将返回一个带有命名字段的结构化 NumPy 数组提高创建数组的性能
修复在运行某些 Kit 配置(例如:stubgen)时出现
Error: No module named 'omni.warp.core'
的问题修复
wp.struct
实例地址被包含在模块内容哈希中的问题修复函数名被覆盖时的代码生成问题
修复内核哈希计算问题,使其在代码生成后和加载前进行,以解决内核缓存过时的问题
修复在 CPU 上执行
wp.BVH.refit()
的问题修复
wp.struct
构造函数的伴随矩阵计算修复 Python 中访问
wp.float16
向量和矩阵元素的问题修复结构体中的
wp.float16
成员问题移除已弃用的
wp.ScopedCudaGuard()
,请改用wp.ScopedDevice()
0.9.0 - 2023-06-01#
添加在内核内部对向量、矩阵和结构体类型进行原地修改的支持(如果在反向传播中使用梯度,使用
wp.verbose
时将发出警告)添加使用独立 LLVM 编译器对内核代码进行 VSCode 步进调试的支持,详见
wp.breakpoint()
和walkthrough_debug.py
添加对内置函数默认值的支持
添加对多值
@wp.func
函数的支持添加对
pass
、continue
和break
语句的支持添加 macOS 缺失的
__sincos_stret
符号添加通过
wp.Mesh.points
以及将数组传递给原生函数的其他情况进行梯度传播的支持添加对 Python
@
运算符的支持,作为wp.matmul()
的别名为粒子-粒子碰撞添加 XPBD 支持
添加对单独粒子半径的支持:
ModelBuilder.add_particle
现在有一个新的radius
参数,Model.particle_radius
现在是 Warp 数组添加作为
Model.particle_flags
Warp 数组的每个粒子标志,引入PARTICLE_FLAG_ACTIVE
用于定义粒子是否正在模拟并参与接触动力学添加对 Python 按位运算符
&
、|
、~
、<<
、>>
的支持对于
cpu
设备,默认切换到使用独立 LLVM 编译器将
omni.warp
拆分为omni.warp.core
,供希望使用 Warp Python 模块且只需要最少额外依赖项的 Omniverse 应用程序使用在 Omniverse 内部默认禁用内核梯度生成,以提高编译速度
修复访问向量/矩阵类型元素时的边界检查问题
修复当在调用线程上设置了自定义(非主要)外部 CUDA 上下文时流初始化的问题
修复热重载期间
@wp.struct
重复注册的问题修复数组
unot()
运算符,以便内核编写者可以使用if not array:
语法修复动态循环嵌套在展开循环中的情况
更改
wp.hash_grid_point_id()
,如果wp.HashGrid
之前未保留,则现在返回 -1弃用
wp.Model.soft_contact_distance
,现已被wp.Model.particle_radius
替代弃用单个标量粒子半径(应改为每个粒子的数组)
0.8.2 - 2023-04-21#
添加
ModelBuilder.soft_contact_max
以控制可以注册的最大软接触数。使用Model.allocate_soft_contacts(new_count)
更改现有Model
对象的计数。添加对
bool
参数的支持添加对
int
类型的逻辑布尔运算符的支持修复
wp.quat()
默认构造函数的问题修复条件重赋值问题
添加使用角度加权法线确定符号的
wp.mesh_query_point()
版本,即wp.mesh_query_sign_normal()
添加使用缠绕数确定符号的
wp.mesh_query_point()
版本,即wp.mesh_query_sign_winding_number()
添加不进行符号确定的查询点函数
wp.mesh_query_no_sign()
0.8.1 - 2023-04-13#
修复将展平的数字列表作为矩阵参数传递给内核时出现的回归问题
修复在传递包含未初始化(
None
)成员属性的wp.struct
类型时出现的回归问题
0.8.0 - 2023-04-05#
添加
Texture Write
节点,用于从 Warp 内核/节点更新动态 RTX 纹理为 Warp Kernel Node 添加多维内核支持
添加
wp.load_module()
以预加载特定模块(传递recursive=True
进行递归加载)添加
wp.poisson()
用于采样泊松分布添加对 UsdPhysics schema 的支持,详见
wp.sim.parse_usd()
添加 XPBD 刚体实现以及微分模拟示例
添加支持使用 LLVM 后端进行独立 CPU 编译(无需主机编译器),通过
--standalone
构建选项启用在
wp.ScopedTimer()
中添加支持按计时器设置颜色添加支持在内核外部进行基于行的矩阵类型构造
添加对 Python 矩阵设置和获取行向量的支持,详见
matrix.get_row()
、matrix.set_row()
添加支持在内核中实例化
wp.struct
类型添加对索引数组的支持,
slice = array[indices]
现在将生成数组数据的稀疏切片添加对泛型内核参数的支持,使用
def compute(param: Any):
添加支持
with wp.ScopedDevice("cuda") as device:
语法(wp.ScopedStream()
和wp.Tape()
也相同)添加支持在内核中创建自定义长度的向量/矩阵,详见
wp.vector()
和wp.matrix()
添加支持在内核中创建单位矩阵,例如:
I = wp.identity(n=3, dtype=float)
添加对一元加号运算符 (
wp.pos()
) 的支持添加支持在 Python 中直接使用
wp.constant
变量,而无需使用.val
成员添加对嵌套
wp.struct
类型的支持添加支持从函数返回
wp.struct
类型添加
--quick
构建选项,用于加快本地开发迭代(使用减少的 SASS 架构集)为
wp.from_torch()
添加可选的requires_grad
参数,以覆盖梯度分配在 Python stub 文件中添加泛型向量/矩阵类型的类型提示
添加支持在
wp.Tape()
中记录自定义用户函数添加支持将 CUTLASS
wp.matmul()
注册到 Tape 的反向传播中添加支持线程数 > 2^31 的网格(每个维度长度可达 INT_MAX)
为
wp.matmul()
添加 CPU 回退支持优化
wp.launch()
,在常见情况下启动速度最高可提升 3 倍修复
wp.randf()
转换为浮点数时减少均匀采样偏差的问题修复从 Python 闭包内部捕获
wp.func
和wp.constant
类型的问题修复 WSL 上的 CUDA 问题
修复结构体中的矩阵问题
修复某些非方阵的转置索引问题
默认启用 Python faulthandler
更新至 VS2019
不兼容变更#
wp.constant
变量现在可以被视为其真实类型,不再支持通过constant.val
访问底层值wp.sim.model.ground_plane
现在是一个wp.array
以支持梯度,用户应调用builder.set_ground_plane()
来创建地面wp.sim
的胶囊体、圆锥体和圆柱体现在与默认的 USD 上轴对齐
0.7.2 - 2023-02-15#
缩短 vec/math 类型的测试时间
清理禁用 CUDA 的构建管道
移除 extension.gen.toml,使 Kit 包不受 Python 版本限制
处理 Python 中数组索引的额外情况
0.7.1 - 2023-02-14#
为 Kit 禁用一些耗时测试
默认使单元测试仅在第一个 GPU 上运行
0.7.0 - 2023-02-13#
添加对任意长度/类型的向量和矩阵的支持,例如:
wp.vec(length=7, dtype=wp.float16)
,详见wp.vec()
和wp.mat()
添加支持具有 NumPy 语义的
array.flatten()
、array.reshape()
和array.view()
添加对 Python 中
wp.array
类型切片的支持添加
wp.from_ptr()
助手函数,用于从现有分配构造数组添加支持在 ranged-for 和 while 循环中使用
break
语句(反向传播支持目前未实现)添加内置数学常量,详见
wp.pi
、wp.e
、wp.log2e
等添加内置的度与弧度之间的转换函数,详见
wp.degrees()
、wp.radians()
为 Kernel Node 添加安全弹出窗口
改进内核返回值的错误处理
0.6.3 - 2023-01-31#
添加 DLPack 实用函数,详见
wp.from_dlpack()
、wp.to_dlpack()
添加 Jax 实用函数,详见
wp.from_jax()
、wp.to_jax()
、wp.device_from_jax()
、wp.device_to_jax()
修复 Linux Kit 扩展 OM-80132、OM-80133 的问题
0.6.2 - 2023-01-19#
更新
wp.from_torch()
以支持更多数据类型更新
wp.from_torch()
,如果未指定目标 Warp 数据类型,则自动确定更新
wp.from_torch()
以支持具有任意步长的非连续张量添加 CUTLASS 集成以支持密集 GEMM,详见
wp.matmul()
和wp.matmul_batched()
为
mat33
类型添加 QR 分解和特征分解,详见wp.qr3()
和wp.eig3()
为矩阵类型添加默认(零)构造函数
添加一个标志以抑制除错误和警告之外的所有输出(设置
wp.config.quiet = True
)编辑 Kernel Node 属性时跳过重新编译
允许 Kernel Node 使用可选属性
允许按内核禁用反向传播代码生成,使用
@wp.kernel(enable_backward=False)
将 Python
imp
包替换为importlib
修复四元数球面线性插值梯度(
wp.quat_slerp()
)的问题
0.6.1 - 2022-12-05#
修复非 CUDA 构建的问题
修复 array_t 构造函数中的步长计算问题,解决了通过 mesh.indices[] 访问网格索引时的 bug
禁用 Kernel Node 的反向传播代码生成(编译速度提高 4-6 倍)
对于通用 Linux 二进制文件,切换到 linbuild(仅影响 TeamCity 构建)
0.6.0 - 2022-11-28#
添加对 CUDA 流的支持,详见
wp.Stream
、wp.get_stream()
、wp.set_stream()
、wp.synchronize_stream()
、wp.ScopedStream
添加对 CUDA 事件的支持,详见
wp.Event
、wp.record_event()
、wp.wait_event()
、wp.wait_stream()
、wp.Stream.record_event()
、wp.Stream.wait_event()
、wp.Stream.wait_stream()
添加对 PyTorch 流互操作的支持,详见
wp.stream_from_torch()
、wp.stream_to_torch()
添加支持在固定内存中分配主机数组以进行异步数据传输,使用
wp.array(..., pinned=True)
(默认为非固定)添加对所有标量类型之间直接转换的支持,例如:
x = wp.uint8(wp.float64(3.0))
添加按模块启用快速数学运算的选项,使用
wp.set_module_options({"fast_math": True})
,快速数学运算现在默认禁用在驱动程序较旧的系统上,添加支持生成 CUBIN 内核而不是 PTX
添加 CUDA 内核输出的用户首选项选项(“ptx”或“cubin”,例如:
wp.config.cuda_output = "ptx"
或按模块设置wp.set_module_options({"cuda_output": "ptx"})
)为 OmniGraph 添加内核节点
添加
wp.quat_slerp()
、wp.quat_to_axis_angle()
、wp.rotate_rodriquez()
以及所有剩余四元数操作的伴随计算添加支持当范围是
wp.constant
时展开 for 循环添加支持在
wp.kernel
之外对内置向量/矩阵类型使用算术运算符在
wp.optim
Adam 优化器中添加对多个解变量的支持为
wp.struct
属性添加嵌套属性支持为空间数学类型添加缺失的伴随实现,并记录所有缺失伴随的函数
添加支持检索 NanoVDB tiles 和体素大小,详见
wp.Volume.get_tiles()
和wp.Volume.get_voxel_size()
添加支持对整数 NanoVDB 体积进行存储操作,详见
wp.volume_store_i()
在内核中将
wp.Mesh
的点、索引公开为数组,详见wp.mesh_get()
优化
wp.array
构造,平均速度提升 2-3 倍优化 URDF 导入
通过静态链接所有 CUDA 库修复各种部署问题
将 warp.so/warp.dll 更新到 CUDA Toolkit 11.5
0.5.1 - 2022-11-01#
修复 Kit 中的单元测试问题
0.5.0 - 2022-10-31#
添加光滑粒子流体动力学(SPH)示例,详见
example_sph.py
添加支持在内核中访问
array.shape
,例如:width = arr.shape[0]
添加依赖跟踪,如果依赖项被修改,则热重载模块
添加 CUDA 内核上下文的延迟获取(在 MGPU 环境中节省约 300Mb 显存)
添加 BVH 对象,详见
wp.Bvh
以及bvh_query_ray()
、bvh_query_aabb()
函数为
spatial_vector
、spatial_matrix
类型添加分量索引操作添加
wp.lerp()
和wp.smoothstep()
内置函数添加
wp.optim
模块,实现用于浮点和向量类型的 Adam 优化器添加对瞬态 Python 模块的支持(修复 Houdini 集成问题)
分别为向量/矩阵类型添加
wp.length_sq()
和wp.trace()
为
wp.quat_rpy()
、wp.determinant()
添加缺失的伴随计算添加
wp.atomic_min()
、wp.atomic_max()
运算符添加
wp.sim.model.add_cloth_mesh()
的向量化版本添加 NVDB 体积分配 API,详见
wp.Volume.allocate()
和wp.Volume.allocate_by_tiles()
添加 NVDB 体积写入方法,详见
wp.volume_store_i()
、wp.volume_store_f()
、wp.volume_store_v()
添加 MGPU 文档
添加并行计算多个环境雅可比矩阵的示例,详见
example_jacobian_ik.py
为
wp.struct
类型添加wp.Tape.zero()
支持使 SampleBrowser 成为 Kit 扩展的可选依赖项
使
wp.Mesh
对象同时接受 1d 和 2d 的面顶点索引数组修复使用
importlib.reload()
重新加载类成员内核/函数定义的问题修复
wp.constants()
散列未导致内核失效的问题修复存在多个
.ptx
版本时的重新加载问题改进代码生成过程中的错误报告
0.4.3 - 2022-09-20#
默认更新所有样本以使用 GPU 互操作路径
修复长度大于 2GB 的数组问题
为
wp.render
类添加对每顶点 USD 网格颜色的支持
0.4.2 - 2022-09-07#
在 Kit 的样本浏览器中注册 Warp 样本
在发布模式内核构建中添加 NDEBUG 标志
修复粒子求解器节点在使用大量粒子时的问题
修复 Warp 样本场景中损坏的相机问题
0.4.1 - 2022-08-30#
添加几何体采样方法,参见
wp.sample_unit_cube()
、wp.sample_unit_disk()
等添加用于搜索排序数组的
wp.lower_bound()
添加一个选项用于禁用反向传播的代码生成以改善编译时间,参见
wp.set_module_options({"enable_backward": False})
,默认值为 True修复从 Script Editor 或模块没有
__file__
属性时使用 Warp 的问题修复包含
wp.func()
定义的模块热重载问题修复
wp.config.mode == "debug"
时 CUDA 上未正确设置调试标志的问题,这使得在调试模式下 CUDA 内核启用边界检查修复不返回值的函数的代码生成问题
0.4.0 - 2022-08-09#
修复没有硬件支持的 GPU 上的 FP16 转换问题
修复重新加载 Warp 模块时出现的
runtime = None
错误修复使用旧驱动程序运行时 PTX 架构版本的问题,参见
wp.config.ptx_target_arch
修复从
__init__.py
导入 USD 的问题,将其延迟到需要它们的单个函数中修复
wp.mesh_query_point()
确定符号的鲁棒性问题修复创建/销毁网格时
wp.HashGrid
内存泄漏问题添加工具包和驱动程序的 CUDA 版本检查
添加跨模块
@wp.struct
引用的支持即使 CUDA 初始化失败也支持运行,使用
wp.is_cuda_available()
检查可用性静态链接 CUDA 运行时库以避免部署问题
破坏性更改#
从顶层模块中移除
wp.runtime
引用,应将其视为私有
0.3.2 - 2022-07-19#
从
__init__.py
中移除 Torch 导入,将导入延迟到wp.from_torch()
、wp.to_torch()
0.3.1 - 2022-07-12#
修复初始化后行进立方体重新分配的问题
添加支持线段之间的最近点测试,参见
wp.closest_point_edge_edge()
内置函数添加支持模拟中每个三角形弹性系数的功能,参见
wp.sim.ModelBuilder.add_cloth_mesh()
添加支持指定默认设备的功能,参见
wp.set_device()
、wp.get_device()
、wp.ScopedDevice
添加支持多 GPU(例如
"cuda:0"
、"cuda:1"
)的功能,参见wp.get_cuda_devices()
、wp.get_cuda_device_count()
、wp.get_cuda_device()
添加支持使用设备别名
"cuda"
显式指定当前 CUDA 上下文的功能添加支持使用任意外部 CUDA 上下文的功能,参见
wp.map_cuda_device()
、wp.unmap_cuda_device()
添加 PyTorch 设备别名函数,参见
wp.device_from_torch()
、wp.device_to_torch()
破坏性更改#
默认使用 CUDA 设备(如果可用)(与
wp.get_preferred_device()
对齐)wp.ScopedCudaGuard
已弃用,请改用wp.ScopedDevice
wp.synchronize()
现在同步所有设备;如需更精细控制,请使用wp.synchronize_device()
设备别名
"cuda"
现在指代当前 CUDA 上下文,而非特定设备(例如"cuda:0"
或"cuda:1"
)
0.3.0 - 2022-07-08#
添加对 FP16 存储类型的支持,参见
wp.float16
添加对每维度字节步长的支持,参见
wp.array.strides
添加支持将 Python 类作为内核参数传递的功能,参见
@wp.struct
修饰器为内置矩阵类型添加额外的边界检查
添加额外的浮点检查,参见
wp.config.verify_fp
添加交错的用户源代码与生成的代码,以帮助调试
添加通用的 GPU 行进立方体实现,参见
wp.MarchingCubes
类添加额外的标量*矩阵向量运算符
添加支持从内置类型检索单行,例如:
r = m33[i]
添加
wp.log2()
和wp.log10()
内置函数添加支持快速实例化
wp.sim.ModelBuilder
对象的功能,以提高 RL 的环境创建性能移除自定义 CUB 版本并改进与 CUDA 11.7 的兼容性
修复调用
wp.Tape.zero()
时保留外部用户梯度的问题修复仅在
requires_grad=True
时才分配 Torch 张量梯度的问题修复缺少
wp.mat22
构造函数伴随的问题修复 GPU 边缘情况下光线投射精度的问题(水密性问题)
修复定义更改时内核热重载的问题
修复 Linux 上的 NVCC 警告问题
修复内核定义为类函数时生成的函数名称问题
修复 Linux 上生成的 CPU 内核代码重载问题
修复示例脚本输出 USD 为每秒 60 时间码(更好的 Kit 兼容性)的问题
0.2.3 - 2022-06-13#
修复不正确的 4d 数组边界检查问题
修复
wp.constant
更改未更新模块散列的问题修复先启动 CPU 内核时 CUDA 内核缓存过时的问题
数组梯度现在与数组一起分配,可通过
wp.array.grad
访问,用户应注意始终调用wp.Tape.zero()
来清除不同wp.Tape.backward()
调用之间的梯度添加
wp.array.fill_()
以将所有条目设置为标量值(目前仅限 4 字节值)
破坏性更改#
Tape
capture
选项已移除,用户现在可以在现有 CUDA 图(例如 Torch 内部)中捕获 Tape标量损失数组现在应在创建时显式设置
requires_grad=True
0.2.2 - 2022-05-30#
修复 Warp 初始化内部
from import *
的问题修复使用带缩放的变形 Mesh 对象时的体空间速度问题
修复影响
wp.curlnoise()
的噪声梯度不连续性问题修复
wp.from_torch()
未正确保留形状的问题修复 URDF 解析器错误地将密度传递给缩放参数的问题
启动时间优化,从 3 秒缩短到 0.3 秒
添加自定义内核缓存位置支持,Warp 现在将生成的二进制文件存储在用户应用程序目录中
添加跨模块函数引用支持,例如:调用另一个模块的 @wp.func 函数
添加支持基于参数类型重载
@wp.func
函数的功能添加支持从内核外部的 Python 解释器直接调用内置函数的功能(实验性)
添加支持在 VSCode、PyCharm 等 IDE 中进行内置函数的自动完成和文档字符串查找
添加支持进行部分数组复制的功能,详情参见
wp.copy()
添加支持直接在内核中访问网格数据的功能,参见
wp.mesh_get_point()
、wp.mesh_get_index()
、wp.mesh_eval_face_normal()
更改为仅针对启动内核的目标进行编译(例如:除非明确请求,否则不会编译 CPU)
破坏性更改#
内置方法(例如
wp.quat_identity()
)现在直接调用 Warp 原生实现,并将返回一个wp.quat
对象,而不是 NumPy 数组许多内置方法的 NumPy 实现已移至
wp.utils
并将被弃用调用本地
@wp.func
函数时不应使用命名空间,例如:以前即使myfunc()
不是内置函数,wp.myfunc()
也会工作移除
wp.rpy2quat()
,请改用wp.quat_rpy()
0.2.1 - 2022-05-11#
修复 Kit 中的单元测试问题
0.2.0 - 2022-05-02#
Warp Core#
修复带有负边界的循环展开问题
修复在未编译 CUDA 支持的情况下编译库时找不到未解析符号
hash_grid_build_device()
的问题修复用户机器上安装了较新 CUDA 工具包时无法加载 nvrtc-builtins64_113.dll 的问题
修复将 Torch 张量转换为带有向量 dtype 的
wp.array
时的问题(行数不正确)修复在某些 Windows 安装中找不到
warp.dll
的问题修复 Clang 13.x 上 macOS 构建问题
修复 Linux 上内核的单步调试问题
为用户定义的
@wp.func
函数添加参数类型检查添加对自定义可迭代类型的支持,支持 ranges、hash grid 和 mesh query 对象
添加对多维数组的支持,例如使用
x = array[i,j,k]
语法访问三维数组添加对多维内核启动的支持,使用
launch(kernel, dim=(i,j,k), ...
和i,j,k = wp.tid()
获取线程索引添加支持在调试模式下对数组内存访问进行边界检查,使用
wp.config.mode = "debug"
启用添加支持对动态和嵌套 for 循环进行微分的功能
添加支持在内核内部使用自定义激活函数评估 MLP 神经网络层的功能,参见
wp.mlp()
添加额外的 NVDB 采样方法和伴随,参见
wp.volume_sample_i()
、wp.volume_sample_f()
和wp.volume_sample_vec()
添加支持加载 zlib 压缩的 NVDB 体积的功能,参见
wp.Volume.load_from_nvdb()
添加支持三角形相交测试的功能,参见
wp.intersect_tri_tri()
添加支持在
wp.ScopedTimer()
中使用 NVTX 配置文件区域的功能添加对额外变换和四元数数学运算的支持,参见
wp.inverse()
、wp.quat_to_matrix()
、wp.quat_from_matrix()
默认将快速数学 (
--fast-math
) 添加到内核编译中默认添加
wp.torch
导入(如果安装了 PyTorch)
Warp Kit#
在 'Window->Warp' 下添加用于浏览 Warp 文档和示例场景的 Kit 菜单
修复当碰撞器来自 Read Prim 到 Bundle 节点时 OgnParticleSolver.py 示例的问题
Warp Sim#
修复关节附着力问题
修复 URDF 导入器和浮动基座支持问题
添加示例,展示如何使用可微分正向运动学解决逆向运动学问题
添加 URDF 倒立摆和四足机器人模拟示例
破坏性更改#
wp.volume_sample_world()
现在被在索引(本地)空间中操作的wp.volume_sample_f/i/vec()
取代。用户在采样之前应使用wp.volume_world_to_index()
将点从世界空间转换为索引空间。wp.mlp()
在推理时期望多维数组而非一维数组,所有其他语义与此 API 的早期版本保持一致。wp.array.length
成员已移除,请使用wp.array.shape
访问数组维度,或使用wp.array.size
获取总元素数量将
dense_gemm()
、dense_chol()
等方法标记为实验性,直到我们重新审查它们
0.1.25 - 2022-03-20#
添加支持将类方法作为 Warp 内核的功能
添加 HashGrid reserve(),以便与 CUDA 图配合使用
添加支持 Tape 前向/后向传播的 CUDA 图捕获的功能
添加对 Python 3.8.x 和 3.9.x 的支持
添加双曲三角函数,参见
wp.tanh()
、wp.sinh()
、wp.cosh()
添加对整数类型的向下取整除法的支持
将测试移入核心库,以便在 Kit 环境中运行
0.1.24 - 2022-03-03#
Warp Core#
添加 NanoVDB 支持,参见
wp.volume_sample*()
方法添加支持在内核中读取编译时常量的功能,参见
wp.constant()
添加对
__cuda_array_interface__
协议的支持,实现与 PyTorch 的零拷贝互操作,参见wp.torch.to_torch()
添加支持额外的数值类型,i8、u8、i16、u16 等
在分配/启动期间对设备字符串添加更好的检查
添加支持使用正态分布采样随机数的功能,参见
wp.randn()
升级到 CUDA 11.3
将示例场景更新到 Kit 103.1
未提供 dtype 时,从 np.array 推断数组 dtype
修复带有负步长的范围 for 循环问题
修复 3d 和 4d 球形梯度分布问题
0.1.23 - 2022-02-17#
Warp Core#
修复 Showroom 安装期间生成的代码文件夹被移除的问题
修复 macOS 支持问题
修复动态 for 循环代码生成边缘情况问题
添加程序化噪声基元,参见
wp.noise()
、wp.pnoise()
、wp.curlnoise()
将模拟助手从测试中移到
wp.sim
模块中
0.1.22 - 2022-02-14#
Warp Core#
修复 Linux 上 .so 重载问题
修复某些边缘情况下 while 循环代码生成问题
添加舍入函数
wp.round()
、wp.rint()
、wp.trunc()
、wp.floor()
、wp.ceil()
添加支持在内核中打印字符串和格式化字符串的功能
添加 MSVC 编译器版本检测并要求最低版本
Warp Sim#
添加对万向和复合关节类型的支持
0.1.21 - 2022-01-19#
Warp Core#
修复空
wp.array
对象在关闭时抛出异常的问题修复 Kit 中 CPU 内核的热重载问题
添加用于基于点的空间查询的散列网格基元,参见
wp.hash_grid_query()
、wp.hash_grid_query_next()
添加使用基于 PCG 的生成器的新 PRNG 方法,参见
wp.rand_init()
、wp.randf()
、wp.randi()
添加对 AABB 网格查询的支持,参见
wp.mesh_query_aabb()
、wp.mesh_query_aabb_next()
添加对所有 Python
range()
循环变体的支持添加内置 vec2 类型和额外的数学运算符,
wp.pow()
、wp.tan()
、wp.atan()
、wp.atan2()
移除构建时对 CUDA 驱动库的依赖
移除未使用的 NVRTC 二进制依赖项(Linux 分发减少 50MB)
Warp Sim#
捆绑导入多个形状用于模拟节点
新的 OgnParticleVolume 节点用于采样形状 -> 粒子
新的 OgnParticleSolver 节点用于 DEM 风格的颗粒材料
0.1.20 - 2021-11-02#
更新 GTC 的波纹求解器(支持多个碰撞器、浮力等)
0.1.19 - 2021-10-15#
从 2021.3 发布以避免 omni.graph 数据库不兼容问题
0.1.18 - 2021-10-08#
启用 Linux 支持(在 20.04 上测试)
0.1.17 - 2021-09-30#
修复 3x3 SVD 伴随问题
修复 A6000 GPU 问题(计算模型最低要求提升至 sm_52)
修复重建时 .dll 卸载问题
修复关闭时可能出现的数组销毁警告
重命名 spatial_transform -> transform
文档更新
0.1.16 - 2021-09-06#
修复简单赋值 (a = b) 错误地生成引用而非值复制的情况
处理将零长度(空)数组传递给内核
0.1.15 - 2021-09-03#
添加额外的数学库函数 (asin 等)
添加内置 3x3 SVD 支持
添加支持命名常量(True, False, None)
添加支持 if/else 语句(可微分)
添加自定义 memset 内核以避免 cudaMemset() 的 CPU 开销
在
wp.sim
中添加刚体关节模型(基于 Brax)在核心库中添加 Linux、MacOS 支持
修复错误地将纯赋值视为引用而非值复制的问题
移除在 numpy 转换前将数组传输到 CPU 的需要(将隐式完成)
更新示例 OgnRipple 波方程求解器以使用 bundles
0.1.14 - 2021-08-09#
修复 CUDA BVH 中的内存越界访问问题
改进内核启动后的错误检查(使用
wp.config.verify_cuda=True
)修复 vec3 normalize 伴随代码问题
0.1.13 - 2021-07-29#
移除 OgnShrinkWrap.py 测试节点
0.1.12 - 2021-07-29#
切换到 Woop 等人的水密光线-三角形相交测试
在 CUDA 编译步骤中禁用 --fast-math 以提高精度
0.1.11 - 2021-07-28#
修复
wp.mesh_query_ray()
返回不正确 t 值的问题
0.1.10 - 2021-07-28#
修复 OV 扩展 fwatcher 过滤器问题,避免因 OGN 重建导致热重载循环
0.1.9 - 2021-07-21#
修复加载同级 DLL 路径问题
改进内置函数参数的类型检查
添加运行时文档,现在可以使用
wp.print_builtins()
列出所有内置函数
0.1.8 - 2021-07-14#
修复 CUDA 内核热重载问题
添加 Tape 对象用于重放可微分内核
添加 Torch 互操作助手(转换
torch.Tensor
到wp.Array
)
0.1.7 - 2021-07-05#
切换到 NVRTC 作为 CUDA 运行时
允许在没有主机编译器的情况下运行
在内核发布模式中禁用断言(小幅性能提升)
0.1.6 - 2021-06-14#
在 target-deps 中查找 CUDA 工具链
0.1.5 - 2021-06-14#
重命名 OgLang -> Warp
改进 CUDA 环境错误检查
清理部分日志记录,添加详细模式(
wp.config.verbose
)
0.1.4 - 2021-06-10#
添加网格光线投射支持
0.1.3 - 2021-06-09#
添加一元负号运算符支持
添加支持在动态循环中修改变量(不可微分)
添加就地运算符支持
改进内核缓存启动时间(避免在检查缓存前进行伴随计算)
更新 README.md,包含要求/示例
0.1.2 - 2021-06-03#
添加查询网格速度支持
添加 CUDA 图支持,参见
wp.capture_begin()
、wp.capture_end()
、wp.capture_launch()
添加显式初始化阶段,
wp.init()
添加变分欧拉求解器 (sim)
添加接触缓存,切换到非线性摩擦模型 (sim)
修复 Linux/macOS 支持问题
0.1.1 - 2021-05-18#
修复 CUDA 上下文冲突的 bug
0.1.0 - 2021-05-17#
初次发布用于 alpha 测试