warp-lang 1.6.1__py3-none-macosx_10_13_universal2.whl → 1.7.0__py3-none-macosx_10_13_universal2.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of warp-lang might be problematic. Click here for more details.

Files changed (401) hide show
  1. warp/__init__.py +21 -7
  2. warp/autograd.py +14 -6
  3. warp/bin/libwarp-clang.dylib +0 -0
  4. warp/bin/libwarp.dylib +0 -0
  5. warp/build.py +424 -6
  6. warp/build_dll.py +20 -20
  7. warp/builtins.py +467 -368
  8. warp/codegen.py +193 -125
  9. warp/config.py +56 -12
  10. warp/constants.py +14 -6
  11. warp/context.py +524 -277
  12. warp/dlpack.py +22 -12
  13. warp/examples/__init__.py +14 -6
  14. warp/examples/assets/nonuniform.usd +0 -0
  15. warp/examples/assets/nvidia_logo.png +0 -0
  16. warp/examples/benchmarks/benchmark_api.py +14 -6
  17. warp/examples/benchmarks/benchmark_cloth.py +14 -6
  18. warp/examples/benchmarks/benchmark_cloth_cupy.py +14 -6
  19. warp/examples/benchmarks/benchmark_cloth_jax.py +14 -6
  20. warp/examples/benchmarks/benchmark_cloth_numba.py +15 -0
  21. warp/examples/benchmarks/benchmark_cloth_numpy.py +14 -6
  22. warp/examples/benchmarks/benchmark_cloth_paddle.py +14 -6
  23. warp/examples/benchmarks/benchmark_cloth_pytorch.py +14 -6
  24. warp/examples/benchmarks/benchmark_cloth_taichi.py +14 -6
  25. warp/examples/benchmarks/benchmark_cloth_warp.py +14 -6
  26. warp/examples/benchmarks/benchmark_gemm.py +82 -48
  27. warp/examples/benchmarks/benchmark_interop_paddle.py +14 -6
  28. warp/examples/benchmarks/benchmark_interop_torch.py +14 -6
  29. warp/examples/benchmarks/benchmark_launches.py +14 -6
  30. warp/examples/benchmarks/benchmark_tile_load_store.py +103 -0
  31. warp/examples/browse.py +14 -6
  32. warp/examples/core/example_cupy.py +14 -6
  33. warp/examples/core/example_dem.py +14 -6
  34. warp/examples/core/example_fluid.py +14 -6
  35. warp/examples/core/example_graph_capture.py +14 -6
  36. warp/examples/core/example_marching_cubes.py +14 -6
  37. warp/examples/core/example_mesh.py +14 -6
  38. warp/examples/core/example_mesh_intersect.py +14 -6
  39. warp/examples/core/example_nvdb.py +14 -6
  40. warp/examples/core/example_raycast.py +14 -6
  41. warp/examples/core/example_raymarch.py +14 -6
  42. warp/examples/core/example_render_opengl.py +14 -6
  43. warp/examples/core/example_sample_mesh.py +300 -0
  44. warp/examples/core/example_sph.py +14 -6
  45. warp/examples/core/example_torch.py +14 -6
  46. warp/examples/core/example_wave.py +14 -6
  47. warp/examples/fem/example_adaptive_grid.py +14 -6
  48. warp/examples/fem/example_apic_fluid.py +15 -7
  49. warp/examples/fem/example_burgers.py +16 -8
  50. warp/examples/fem/example_convection_diffusion.py +14 -6
  51. warp/examples/fem/example_convection_diffusion_dg.py +14 -6
  52. warp/examples/fem/example_deformed_geometry.py +15 -7
  53. warp/examples/fem/example_diffusion.py +14 -6
  54. warp/examples/fem/example_diffusion_3d.py +14 -6
  55. warp/examples/fem/example_diffusion_mgpu.py +14 -6
  56. warp/examples/fem/example_distortion_energy.py +15 -7
  57. warp/examples/fem/example_magnetostatics.py +20 -12
  58. warp/examples/fem/example_mixed_elasticity.py +14 -6
  59. warp/examples/fem/example_navier_stokes.py +14 -6
  60. warp/examples/fem/example_nonconforming_contact.py +14 -6
  61. warp/examples/fem/example_stokes.py +14 -6
  62. warp/examples/fem/example_stokes_transfer.py +14 -6
  63. warp/examples/fem/example_streamlines.py +14 -6
  64. warp/examples/fem/utils.py +24 -3
  65. warp/examples/interop/example_jax_callable.py +116 -0
  66. warp/examples/interop/example_jax_ffi_callback.py +132 -0
  67. warp/examples/interop/example_jax_kernel.py +205 -0
  68. warp/examples/optim/example_bounce.py +14 -6
  69. warp/examples/optim/example_cloth_throw.py +14 -6
  70. warp/examples/optim/example_diffray.py +14 -6
  71. warp/examples/optim/example_drone.py +14 -6
  72. warp/examples/optim/example_fluid_checkpoint.py +497 -0
  73. warp/examples/optim/example_inverse_kinematics.py +14 -6
  74. warp/examples/optim/example_inverse_kinematics_torch.py +14 -6
  75. warp/examples/optim/example_softbody_properties.py +14 -6
  76. warp/examples/optim/example_spring_cage.py +14 -6
  77. warp/examples/optim/example_trajectory.py +14 -6
  78. warp/examples/sim/example_cartpole.py +14 -6
  79. warp/examples/sim/example_cloth.py +14 -6
  80. warp/examples/sim/example_cloth_self_contact.py +14 -6
  81. warp/examples/sim/example_granular.py +14 -6
  82. warp/examples/sim/example_granular_collision_sdf.py +14 -6
  83. warp/examples/sim/example_jacobian_ik.py +14 -6
  84. warp/examples/sim/example_particle_chain.py +14 -6
  85. warp/examples/sim/example_quadruped.py +14 -6
  86. warp/examples/sim/example_rigid_chain.py +14 -6
  87. warp/examples/sim/example_rigid_contact.py +14 -6
  88. warp/examples/sim/example_rigid_force.py +14 -6
  89. warp/examples/sim/example_rigid_gyroscopic.py +14 -6
  90. warp/examples/sim/example_rigid_soft_contact.py +14 -6
  91. warp/examples/sim/example_soft_body.py +14 -6
  92. warp/examples/tile/example_tile_cholesky.py +14 -6
  93. warp/examples/tile/example_tile_convolution.py +14 -6
  94. warp/examples/tile/example_tile_fft.py +14 -6
  95. warp/examples/tile/example_tile_filtering.py +14 -6
  96. warp/examples/tile/example_tile_matmul.py +16 -10
  97. warp/examples/tile/example_tile_mlp.py +14 -6
  98. warp/examples/tile/example_tile_nbody.py +14 -6
  99. warp/examples/tile/example_tile_walker.py +14 -6
  100. warp/fabric.py +15 -0
  101. warp/fem/__init__.py +26 -1
  102. warp/fem/adaptivity.py +19 -4
  103. warp/fem/cache.py +15 -0
  104. warp/fem/dirichlet.py +15 -0
  105. warp/fem/domain.py +15 -0
  106. warp/fem/field/__init__.py +15 -0
  107. warp/fem/field/field.py +15 -0
  108. warp/fem/field/nodal_field.py +37 -68
  109. warp/fem/field/restriction.py +15 -0
  110. warp/fem/field/virtual.py +77 -23
  111. warp/fem/geometry/__init__.py +15 -0
  112. warp/fem/geometry/adaptive_nanogrid.py +24 -10
  113. warp/fem/geometry/closest_point.py +16 -1
  114. warp/fem/geometry/deformed_geometry.py +20 -2
  115. warp/fem/geometry/element.py +15 -0
  116. warp/fem/geometry/geometry.py +20 -0
  117. warp/fem/geometry/grid_2d.py +27 -12
  118. warp/fem/geometry/grid_3d.py +27 -15
  119. warp/fem/geometry/hexmesh.py +20 -7
  120. warp/fem/geometry/nanogrid.py +24 -11
  121. warp/fem/geometry/partition.py +15 -0
  122. warp/fem/geometry/quadmesh.py +28 -13
  123. warp/fem/geometry/tetmesh.py +18 -4
  124. warp/fem/geometry/trimesh.py +18 -8
  125. warp/fem/integrate.py +277 -93
  126. warp/fem/linalg.py +20 -5
  127. warp/fem/operator.py +15 -0
  128. warp/fem/polynomial.py +15 -0
  129. warp/fem/quadrature/__init__.py +15 -0
  130. warp/fem/quadrature/pic_quadrature.py +52 -22
  131. warp/fem/quadrature/quadrature.py +209 -25
  132. warp/fem/space/__init__.py +16 -1
  133. warp/fem/space/basis_function_space.py +19 -2
  134. warp/fem/space/basis_space.py +40 -18
  135. warp/fem/space/dof_mapper.py +15 -0
  136. warp/fem/space/function_space.py +15 -0
  137. warp/fem/space/grid_2d_function_space.py +15 -0
  138. warp/fem/space/grid_3d_function_space.py +15 -0
  139. warp/fem/space/hexmesh_function_space.py +17 -2
  140. warp/fem/space/nanogrid_function_space.py +15 -0
  141. warp/fem/space/partition.py +21 -2
  142. warp/fem/space/quadmesh_function_space.py +23 -8
  143. warp/fem/space/restriction.py +15 -0
  144. warp/fem/space/shape/__init__.py +15 -0
  145. warp/fem/space/shape/cube_shape_function.py +38 -23
  146. warp/fem/space/shape/shape_function.py +15 -0
  147. warp/fem/space/shape/square_shape_function.py +27 -12
  148. warp/fem/space/shape/tet_shape_function.py +15 -0
  149. warp/fem/space/shape/triangle_shape_function.py +16 -1
  150. warp/fem/space/tetmesh_function_space.py +18 -3
  151. warp/fem/space/topology.py +15 -0
  152. warp/fem/space/trimesh_function_space.py +17 -2
  153. warp/fem/types.py +15 -0
  154. warp/fem/utils.py +27 -6
  155. warp/jax.py +28 -7
  156. warp/jax_experimental/__init__.py +16 -0
  157. warp/{jax_experimental.py → jax_experimental/custom_call.py} +28 -33
  158. warp/jax_experimental/ffi.py +698 -0
  159. warp/jax_experimental/xla_ffi.py +602 -0
  160. warp/math.py +103 -6
  161. warp/native/array.h +28 -6
  162. warp/native/builtin.h +44 -9
  163. warp/native/bvh.cpp +18 -7
  164. warp/native/bvh.cu +57 -20
  165. warp/native/bvh.h +17 -7
  166. warp/native/clang/clang.cpp +45 -9
  167. warp/native/coloring.cpp +15 -6
  168. warp/native/crt.cpp +15 -6
  169. warp/native/crt.h +15 -6
  170. warp/native/cuda_crt.h +15 -6
  171. warp/native/cuda_util.cpp +29 -6
  172. warp/native/cuda_util.h +17 -6
  173. warp/native/error.cpp +15 -6
  174. warp/native/error.h +15 -6
  175. warp/native/exports.h +85 -63
  176. warp/native/fabric.h +15 -6
  177. warp/native/hashgrid.cpp +15 -6
  178. warp/native/hashgrid.cu +15 -6
  179. warp/native/hashgrid.h +15 -6
  180. warp/native/initializer_array.h +15 -6
  181. warp/native/intersect.h +41 -32
  182. warp/native/intersect_adj.h +48 -39
  183. warp/native/intersect_tri.h +17 -0
  184. warp/native/marching.cpp +16 -0
  185. warp/native/marching.cu +16 -7
  186. warp/native/marching.h +17 -0
  187. warp/native/mat.h +528 -15
  188. warp/native/mathdx.cpp +15 -6
  189. warp/native/matnn.h +15 -6
  190. warp/native/mesh.cpp +15 -6
  191. warp/native/mesh.cu +15 -6
  192. warp/native/mesh.h +25 -16
  193. warp/native/noise.h +15 -6
  194. warp/native/quat.h +114 -17
  195. warp/native/rand.h +21 -6
  196. warp/native/range.h +15 -6
  197. warp/native/reduce.cpp +15 -6
  198. warp/native/reduce.cu +15 -6
  199. warp/native/runlength_encode.cpp +15 -6
  200. warp/native/runlength_encode.cu +15 -6
  201. warp/native/scan.cpp +15 -6
  202. warp/native/scan.cu +15 -6
  203. warp/native/scan.h +15 -6
  204. warp/native/solid_angle.h +17 -0
  205. warp/native/sort.cpp +137 -65
  206. warp/native/sort.cu +167 -21
  207. warp/native/sort.h +23 -7
  208. warp/native/sparse.cpp +58 -28
  209. warp/native/sparse.cu +67 -23
  210. warp/native/spatial.h +15 -6
  211. warp/native/svd.h +131 -6
  212. warp/native/temp_buffer.h +15 -6
  213. warp/native/tile.h +316 -111
  214. warp/native/tile_reduce.h +61 -9
  215. warp/native/vec.h +83 -13
  216. warp/native/volume.cpp +100 -119
  217. warp/native/volume.cu +15 -6
  218. warp/native/volume.h +15 -6
  219. warp/native/volume_builder.cu +40 -16
  220. warp/native/volume_builder.h +21 -6
  221. warp/native/volume_impl.h +15 -6
  222. warp/native/warp.cpp +20 -12
  223. warp/native/warp.cu +114 -16
  224. warp/native/warp.h +34 -16
  225. warp/optim/__init__.py +14 -6
  226. warp/optim/adam.py +14 -6
  227. warp/optim/linear.py +25 -10
  228. warp/optim/sgd.py +14 -6
  229. warp/paddle.py +14 -6
  230. warp/render/__init__.py +14 -6
  231. warp/render/render_opengl.py +14 -6
  232. warp/render/render_usd.py +14 -6
  233. warp/render/utils.py +14 -6
  234. warp/sim/__init__.py +14 -7
  235. warp/sim/articulation.py +18 -10
  236. warp/sim/collide.py +35 -16
  237. warp/sim/graph_coloring.py +14 -6
  238. warp/sim/import_mjcf.py +463 -162
  239. warp/sim/import_snu.py +14 -7
  240. warp/sim/import_urdf.py +46 -18
  241. warp/sim/import_usd.py +14 -7
  242. warp/sim/inertia.py +14 -6
  243. warp/sim/integrator.py +14 -6
  244. warp/sim/integrator_euler.py +19 -11
  245. warp/sim/integrator_featherstone.py +17 -16
  246. warp/sim/integrator_vbd.py +222 -8
  247. warp/sim/integrator_xpbd.py +19 -11
  248. warp/sim/model.py +56 -19
  249. warp/sim/particles.py +14 -6
  250. warp/sim/render.py +14 -6
  251. warp/sim/utils.py +17 -2
  252. warp/sparse.py +657 -555
  253. warp/stubs.py +231 -19
  254. warp/tape.py +14 -6
  255. warp/tests/aux_test_class_kernel.py +14 -6
  256. warp/tests/aux_test_compile_consts_dummy.py +14 -6
  257. warp/tests/aux_test_conditional_unequal_types_kernels.py +14 -6
  258. warp/tests/aux_test_dependent.py +14 -6
  259. warp/tests/aux_test_grad_customs.py +14 -6
  260. warp/tests/aux_test_instancing_gc.py +14 -6
  261. warp/tests/aux_test_module_unload.py +14 -6
  262. warp/tests/aux_test_name_clash1.py +14 -6
  263. warp/tests/aux_test_name_clash2.py +14 -6
  264. warp/tests/aux_test_unresolved_func.py +14 -6
  265. warp/tests/aux_test_unresolved_symbol.py +14 -6
  266. warp/tests/cuda/__init__.py +0 -0
  267. warp/tests/{test_async.py → cuda/test_async.py} +14 -6
  268. warp/tests/{test_ipc.py → cuda/test_ipc.py} +14 -6
  269. warp/tests/{test_mempool.py → cuda/test_mempool.py} +53 -6
  270. warp/tests/{test_multigpu.py → cuda/test_multigpu.py} +14 -6
  271. warp/tests/{test_peer.py → cuda/test_peer.py} +14 -6
  272. warp/tests/{test_pinned.py → cuda/test_pinned.py} +14 -6
  273. warp/tests/{test_streams.py → cuda/test_streams.py} +85 -6
  274. warp/tests/geometry/__init__.py +0 -0
  275. warp/tests/{test_bvh.py → geometry/test_bvh.py} +14 -6
  276. warp/tests/{test_hash_grid.py → geometry/test_hash_grid.py} +14 -6
  277. warp/tests/{test_marching_cubes.py → geometry/test_marching_cubes.py} +14 -6
  278. warp/tests/{test_mesh.py → geometry/test_mesh.py} +14 -6
  279. warp/tests/{test_mesh_query_aabb.py → geometry/test_mesh_query_aabb.py} +14 -6
  280. warp/tests/{test_mesh_query_point.py → geometry/test_mesh_query_point.py} +80 -69
  281. warp/tests/{test_mesh_query_ray.py → geometry/test_mesh_query_ray.py} +15 -7
  282. warp/tests/{test_volume.py → geometry/test_volume.py} +55 -12
  283. warp/tests/{test_volume_write.py → geometry/test_volume_write.py} +14 -6
  284. warp/tests/interop/__init__.py +0 -0
  285. warp/tests/{test_dlpack.py → interop/test_dlpack.py} +42 -11
  286. warp/tests/{test_jax.py → interop/test_jax.py} +14 -6
  287. warp/tests/{test_paddle.py → interop/test_paddle.py} +14 -6
  288. warp/tests/{test_torch.py → interop/test_torch.py} +14 -6
  289. warp/tests/run_coverage_serial.py +14 -6
  290. warp/tests/sim/__init__.py +0 -0
  291. warp/tests/{disabled_kinematics.py → sim/disabled_kinematics.py} +23 -16
  292. warp/tests/{flaky_test_sim_grad.py → sim/flaky_test_sim_grad.py} +14 -6
  293. warp/tests/{test_collision.py → sim/test_collision.py} +16 -8
  294. warp/tests/{test_coloring.py → sim/test_coloring.py} +14 -7
  295. warp/tests/{test_model.py → sim/test_model.py} +55 -7
  296. warp/tests/{test_sim_grad_bounce_linear.py → sim/test_sim_grad_bounce_linear.py} +14 -6
  297. warp/tests/{test_sim_kinematics.py → sim/test_sim_kinematics.py} +16 -7
  298. warp/tests/sim/test_vbd.py +597 -0
  299. warp/tests/test_adam.py +14 -6
  300. warp/tests/test_arithmetic.py +14 -6
  301. warp/tests/test_array.py +14 -6
  302. warp/tests/test_array_reduce.py +14 -6
  303. warp/tests/test_assert.py +14 -6
  304. warp/tests/test_atomic.py +14 -6
  305. warp/tests/test_bool.py +15 -7
  306. warp/tests/test_builtins_resolution.py +14 -6
  307. warp/tests/test_closest_point_edge_edge.py +14 -6
  308. warp/tests/test_codegen.py +14 -6
  309. warp/tests/test_codegen_instancing.py +14 -6
  310. warp/tests/test_compile_consts.py +14 -6
  311. warp/tests/test_conditional.py +14 -6
  312. warp/tests/test_context.py +14 -6
  313. warp/tests/test_copy.py +14 -6
  314. warp/tests/test_ctypes.py +14 -6
  315. warp/tests/test_dense.py +14 -6
  316. warp/tests/test_devices.py +14 -6
  317. warp/tests/test_examples.py +42 -42
  318. warp/tests/test_fabricarray.py +14 -6
  319. warp/tests/test_fast_math.py +14 -6
  320. warp/tests/test_fem.py +37 -10
  321. warp/tests/test_fp16.py +14 -6
  322. warp/tests/test_func.py +14 -6
  323. warp/tests/test_future_annotations.py +14 -6
  324. warp/tests/test_generics.py +14 -6
  325. warp/tests/test_grad.py +14 -6
  326. warp/tests/test_grad_customs.py +14 -6
  327. warp/tests/test_grad_debug.py +14 -6
  328. warp/tests/test_implicit_init.py +14 -6
  329. warp/tests/test_import.py +14 -6
  330. warp/tests/test_indexedarray.py +14 -6
  331. warp/tests/test_intersect.py +14 -6
  332. warp/tests/test_iter.py +14 -6
  333. warp/tests/test_large.py +14 -6
  334. warp/tests/test_launch.py +14 -6
  335. warp/tests/test_lerp.py +14 -6
  336. warp/tests/test_linear_solvers.py +15 -11
  337. warp/tests/test_lvalue.py +14 -6
  338. warp/tests/test_mat.py +247 -85
  339. warp/tests/test_mat_lite.py +14 -6
  340. warp/tests/test_mat_scalar_ops.py +18 -10
  341. warp/tests/test_math.py +14 -6
  342. warp/tests/test_mlp.py +14 -6
  343. warp/tests/test_module_hashing.py +14 -6
  344. warp/tests/test_modules_lite.py +14 -6
  345. warp/tests/test_noise.py +14 -6
  346. warp/tests/test_operators.py +14 -6
  347. warp/tests/test_options.py +14 -6
  348. warp/tests/test_overwrite.py +15 -60
  349. warp/tests/test_print.py +14 -6
  350. warp/tests/test_quat.py +81 -52
  351. warp/tests/test_rand.py +58 -43
  352. warp/tests/test_reload.py +14 -6
  353. warp/tests/test_rounding.py +14 -6
  354. warp/tests/test_runlength_encode.py +14 -6
  355. warp/tests/test_scalar_ops.py +14 -6
  356. warp/tests/test_smoothstep.py +14 -6
  357. warp/tests/test_snippet.py +15 -0
  358. warp/tests/test_sparse.py +61 -12
  359. warp/tests/test_spatial.py +89 -6
  360. warp/tests/test_special_values.py +14 -6
  361. warp/tests/test_static.py +15 -7
  362. warp/tests/test_struct.py +14 -6
  363. warp/tests/test_tape.py +14 -6
  364. warp/tests/test_transient_module.py +14 -6
  365. warp/tests/test_triangle_closest_point.py +14 -6
  366. warp/tests/test_types.py +14 -6
  367. warp/tests/test_utils.py +98 -10
  368. warp/tests/test_vec.py +60 -40
  369. warp/tests/test_vec_lite.py +14 -6
  370. warp/tests/test_vec_scalar_ops.py +14 -6
  371. warp/tests/test_verify_fp.py +14 -6
  372. warp/tests/tile/__init__.py +0 -0
  373. warp/tests/{test_tile.py → tile/test_tile.py} +150 -57
  374. warp/tests/{test_tile_load.py → tile/test_tile_load.py} +15 -7
  375. warp/tests/{test_tile_mathdx.py → tile/test_tile_mathdx.py} +23 -12
  376. warp/tests/{test_tile_mlp.py → tile/test_tile_mlp.py} +39 -20
  377. warp/tests/{test_tile_reduce.py → tile/test_tile_reduce.py} +74 -7
  378. warp/tests/{test_tile_shared_memory.py → tile/test_tile_shared_memory.py} +14 -6
  379. warp/tests/{test_tile_view.py → tile/test_tile_view.py} +15 -7
  380. warp/tests/unittest_serial.py +15 -6
  381. warp/tests/unittest_suites.py +59 -65
  382. warp/tests/unittest_utils.py +16 -7
  383. warp/tests/walkthrough_debug.py +14 -6
  384. warp/thirdparty/unittest_parallel.py +15 -8
  385. warp/torch.py +14 -6
  386. warp/types.py +124 -664
  387. warp/utils.py +151 -78
  388. {warp_lang-1.6.1.dist-info → warp_lang-1.7.0.dist-info}/METADATA +39 -12
  389. warp_lang-1.7.0.dist-info/RECORD +429 -0
  390. {warp_lang-1.6.1.dist-info → warp_lang-1.7.0.dist-info}/WHEEL +1 -1
  391. warp_lang-1.7.0.dist-info/licenses/LICENSE.md +202 -0
  392. warp/examples/optim/example_walker.py +0 -309
  393. warp/native/cutlass_gemm.cpp +0 -34
  394. warp/native/cutlass_gemm.cu +0 -373
  395. warp/tests/test_matmul.py +0 -503
  396. warp/tests/test_matmul_lite.py +0 -403
  397. warp/tests/test_vbd.py +0 -378
  398. warp/tests/unused_test_misc.py +0 -69
  399. warp_lang-1.6.1.dist-info/LICENSE.md +0 -126
  400. warp_lang-1.6.1.dist-info/RECORD +0 -419
  401. {warp_lang-1.6.1.dist-info → warp_lang-1.7.0.dist-info}/top_level.txt +0 -0
@@ -1,9 +1,17 @@
1
- # Copyright (c) 2022 NVIDIA CORPORATION. All rights reserved.
2
- # NVIDIA CORPORATION and its licensors retain all intellectual property
3
- # and proprietary rights in and to this software, related documentation
4
- # and any modifications thereto. Any use, reproduction, disclosure or
5
- # distribution of this software and related documentation without an express
6
- # license agreement from NVIDIA CORPORATION is strictly prohibited.
1
+ # SPDX-FileCopyrightText: Copyright (c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2
+ # SPDX-License-Identifier: Apache-2.0
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
7
15
 
8
16
  import unittest
9
17
 
@@ -1,9 +1,17 @@
1
- # Copyright (c) 2022 NVIDIA CORPORATION. All rights reserved.
2
- # NVIDIA CORPORATION and its licensors retain all intellectual property
3
- # and proprietary rights in and to this software, related documentation
4
- # and any modifications thereto. Any use, reproduction, disclosure or
5
- # distribution of this software and related documentation without an express
6
- # license agreement from NVIDIA CORPORATION is strictly prohibited.
1
+ # SPDX-FileCopyrightText: Copyright (c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2
+ # SPDX-License-Identifier: Apache-2.0
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
7
15
 
8
16
  import contextlib
9
17
  import io
@@ -1,3 +1,18 @@
1
+ # SPDX-FileCopyrightText: Copyright (c) 2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2
+ # SPDX-License-Identifier: Apache-2.0
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+
1
16
  import contextlib
2
17
  import io
3
18
  import unittest
@@ -8,8 +23,6 @@ import numpy as np
8
23
  import warp as wp
9
24
  from warp.tests.unittest_utils import *
10
25
 
11
- wp.init() # For wp.context.runtime.core.is_cutlass_enabled()
12
-
13
26
  # kernels are defined in the global scope, to ensure wp.Kernel objects are not GC'ed in the MGPU case
14
27
  # kernel args are assigned array modes during codegen, so wp.Kernel objects generated during codegen
15
28
  # must be preserved for overwrite tracking to function
@@ -363,62 +376,6 @@ def test_copy(test, device):
363
376
  wp.config.verify_autograd_array_access = saved_verify_autograd_array_access_setting
364
377
 
365
378
 
366
- # wp.matmul uses wp.record_func. Ensure array modes are propagated correctly.
367
- def test_matmul(test, device):
368
- if device.is_cuda and not wp.context.runtime.core.is_cutlass_enabled():
369
- test.skipTest("Warp was not built with CUTLASS support")
370
-
371
- saved_verify_autograd_array_access_setting = wp.config.verify_autograd_array_access
372
- try:
373
- wp.config.verify_autograd_array_access = True
374
-
375
- a = wp.ones((3, 3), dtype=float, requires_grad=True, device=device)
376
- b = wp.ones_like(a)
377
- c = wp.ones_like(a)
378
- d = wp.zeros_like(a)
379
-
380
- tape = wp.Tape()
381
-
382
- with tape:
383
- wp.matmul(a, b, c, d)
384
-
385
- test.assertEqual(a._is_read, True)
386
- test.assertEqual(b._is_read, True)
387
- test.assertEqual(c._is_read, True)
388
- test.assertEqual(d._is_read, False)
389
-
390
- finally:
391
- wp.config.verify_autograd_array_access = saved_verify_autograd_array_access_setting
392
-
393
-
394
- # wp.batched_matmul uses wp.record_func. Ensure array modes are propagated correctly.
395
- def test_batched_matmul(test, device):
396
- if device.is_cuda and not wp.context.runtime.core.is_cutlass_enabled():
397
- test.skipTest("Warp was not built with CUTLASS support")
398
-
399
- saved_verify_autograd_array_access_setting = wp.config.verify_autograd_array_access
400
- try:
401
- wp.config.verify_autograd_array_access = True
402
-
403
- a = wp.ones((1, 3, 3), dtype=float, requires_grad=True, device=device)
404
- b = wp.ones_like(a)
405
- c = wp.ones_like(a)
406
- d = wp.zeros_like(a)
407
-
408
- tape = wp.Tape()
409
-
410
- with tape:
411
- wp.batched_matmul(a, b, c, d)
412
-
413
- test.assertEqual(a._is_read, True)
414
- test.assertEqual(b._is_read, True)
415
- test.assertEqual(c._is_read, True)
416
- test.assertEqual(d._is_read, False)
417
-
418
- finally:
419
- wp.config.verify_autograd_array_access = saved_verify_autograd_array_access_setting
420
-
421
-
422
379
  # write after read warning with in-place operators within a kernel
423
380
  def test_in_place_operators_warning(test, device):
424
381
  saved_verify_autograd_array_access_setting = wp.config.verify_autograd_array_access
@@ -578,8 +535,6 @@ add_function_test(TestOverwrite, "test_views", test_views, devices=devices)
578
535
  add_function_test(TestOverwrite, "test_reset", test_reset, devices=devices)
579
536
 
580
537
  add_function_test(TestOverwrite, "test_copy", test_copy, devices=devices)
581
- add_function_test(TestOverwrite, "test_matmul", test_matmul, devices=devices, check_output=False)
582
- add_function_test(TestOverwrite, "test_batched_matmul", test_batched_matmul, devices=devices, check_output=False)
583
538
  add_function_test(TestOverwrite, "test_atomic_operations", test_atomic_operations, devices=devices)
584
539
 
585
540
  # Some warning are only issued during codegen, and codegen only runs on cuda_0 in the MGPU case.
warp/tests/test_print.py CHANGED
@@ -1,9 +1,17 @@
1
- # Copyright (c) 2022 NVIDIA CORPORATION. All rights reserved.
2
- # NVIDIA CORPORATION and its licensors retain all intellectual property
3
- # and proprietary rights in and to this software, related documentation
4
- # and any modifications thereto. Any use, reproduction, disclosure or
5
- # distribution of this software and related documentation without an express
6
- # license agreement from NVIDIA CORPORATION is strictly prohibited.
1
+ # SPDX-FileCopyrightText: Copyright (c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2
+ # SPDX-License-Identifier: Apache-2.0
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
7
15
 
8
16
  import sys
9
17
  import unittest
warp/tests/test_quat.py CHANGED
@@ -1,9 +1,17 @@
1
- # Copyright (c) 2022 NVIDIA CORPORATION. All rights reserved.
2
- # NVIDIA CORPORATION and its licensors retain all intellectual property
3
- # and proprietary rights in and to this software, related documentation
4
- # and any modifications thereto. Any use, reproduction, disclosure or
5
- # distribution of this software and related documentation without an express
6
- # license agreement from NVIDIA CORPORATION is strictly prohibited.
1
+ # SPDX-FileCopyrightText: Copyright (c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2
+ # SPDX-License-Identifier: Apache-2.0
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
7
15
 
8
16
  import unittest
9
17
 
@@ -1197,7 +1205,6 @@ def test_quat_to_matrix(test, device, dtype, register_kernels=False):
1197
1205
 
1198
1206
  wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
1199
1207
  quat = wp.types.quaternion(dtype=wptype)
1200
- mat3 = wp.types.matrix(shape=(3, 3), dtype=wptype)
1201
1208
  vec3 = wp.types.vector(length=3, dtype=wptype)
1202
1209
 
1203
1210
  def check_quat_to_matrix(
@@ -1231,7 +1238,7 @@ def test_quat_to_matrix(test, device, dtype, register_kernels=False):
1231
1238
  wptype(1),
1232
1239
  ),
1233
1240
  )
1234
- result_manual = mat3(xaxis, yaxis, zaxis)
1241
+ result_manual = wp.matrix_from_cols(xaxis, yaxis, zaxis)
1235
1242
 
1236
1243
  idx = 0
1237
1244
  for i in range(3):
@@ -1703,18 +1710,31 @@ def test_quat_rpy_grad(test, device, dtype, register_kernels=False):
1703
1710
  def test_quat_from_matrix(test, device, dtype, register_kernels=False):
1704
1711
  wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
1705
1712
  mat33 = wp.types.matrix((3, 3), wptype)
1713
+ mat44 = wp.types.matrix((4, 4), wptype)
1706
1714
  quat = wp.types.quaternion(wptype)
1707
1715
 
1708
1716
  def quat_from_matrix(m: wp.array2d(dtype=wptype), loss: wp.array(dtype=wptype), idx: int):
1709
1717
  tid = wp.tid()
1710
1718
 
1711
- matrix = mat33(
1712
- m[tid, 0], m[tid, 1], m[tid, 2], m[tid, 3], m[tid, 4], m[tid, 5], m[tid, 6], m[tid, 7], m[tid, 8]
1719
+ # fmt: off
1720
+ m3 = mat33(
1721
+ m[tid, 0], m[tid, 1], m[tid, 2],
1722
+ m[tid, 3], m[tid, 4], m[tid, 5],
1723
+ m[tid, 6], m[tid, 7], m[tid, 8],
1713
1724
  )
1725
+ q1 = wp.quat_from_matrix(m3)
1714
1726
 
1715
- q = wp.quat_from_matrix(matrix)
1727
+ m4 = mat44(
1728
+ m[tid, 0], m[tid, 1], m[tid, 2], wptype(0.0),
1729
+ m[tid, 3], m[tid, 4], m[tid, 5], wptype(0.0),
1730
+ m[tid, 6], m[tid, 7], m[tid, 8], wptype(0.0),
1731
+ wptype(0.0), wptype(0.0), wptype(0.0), wptype(1.0),
1732
+ )
1733
+ q2 = wp.quat_from_matrix(m4)
1734
+ # fmt: on
1716
1735
 
1717
- wp.atomic_add(loss, 0, q[idx])
1736
+ wp.expect_eq(q1, q2)
1737
+ wp.atomic_add(loss, 0, q1[idx])
1718
1738
 
1719
1739
  def quat_from_matrix_forward(mats: wp.array2d(dtype=wptype), loss: wp.array(dtype=wptype), idx: int):
1720
1740
  tid = wp.tid()
@@ -1886,7 +1906,7 @@ def test_quat_identity(test, device, dtype, register_kernels=False):
1886
1906
  ############################################################
1887
1907
 
1888
1908
 
1889
- def test_quat_assign(test, device, dtype, register_kernels=False):
1909
+ def test_quat_assign_inplace(test, device, dtype, register_kernels=False):
1890
1910
  np_type = np.dtype(dtype)
1891
1911
  wp_type = wp.types.np_dtype_to_warp_type[np_type]
1892
1912
 
@@ -1907,16 +1927,6 @@ def test_quat_assign(test, device, dtype, register_kernels=False):
1907
1927
  g = q[0] + wp_type(2.0) * q[1] + wp_type(3.0) * q[2] + wp_type(4.0) * q[3]
1908
1928
  x[tid] = g
1909
1929
 
1910
- def quattest_in_register_overwrite(x: wp.array(dtype=quat), a: wp.array(dtype=quat)):
1911
- tid = wp.tid()
1912
-
1913
- f = quat()
1914
- a_quat = a[tid]
1915
- f = a_quat
1916
- f[1] = wp_type(3.0)
1917
-
1918
- x[tid] = f
1919
-
1920
1930
  def quattest_component(x: wp.array(dtype=quat), y: wp.array(dtype=wp_type)):
1921
1931
  i = wp.tid()
1922
1932
 
@@ -1929,7 +1939,6 @@ def test_quat_assign(test, device, dtype, register_kernels=False):
1929
1939
 
1930
1940
  kernel_read_write_store = getkernel(quattest_read_write_store, suffix=dtype.__name__)
1931
1941
  kernel_in_register = getkernel(quattest_in_register, suffix=dtype.__name__)
1932
- kernel_in_register_overwrite = getkernel(quattest_in_register_overwrite, suffix=dtype.__name__)
1933
1942
  kernel_component = getkernel(quattest_component, suffix=dtype.__name__)
1934
1943
 
1935
1944
  if register_kernels:
@@ -1965,7 +1974,6 @@ def test_quat_assign(test, device, dtype, register_kernels=False):
1965
1974
  x = wp.zeros(1, dtype=quat, requires_grad=True)
1966
1975
  y = wp.ones(1, dtype=wp_type, requires_grad=True)
1967
1976
 
1968
- tape = wp.Tape()
1969
1977
  with tape:
1970
1978
  wp.launch(kernel_component, dim=1, inputs=[x, y])
1971
1979
 
@@ -1974,18 +1982,6 @@ def test_quat_assign(test, device, dtype, register_kernels=False):
1974
1982
  assert_np_equal(x.numpy(), np.array([[1.0, 2.0, 3.0, 4.0]], dtype=np_type))
1975
1983
  assert_np_equal(y.grad.numpy(), np.array([10.0], dtype=np_type))
1976
1984
 
1977
- x = wp.zeros(1, dtype=quat, device=device, requires_grad=True)
1978
- a = wp.ones(1, dtype=quat, device=device, requires_grad=True)
1979
-
1980
- tape = wp.Tape()
1981
- with tape:
1982
- wp.launch(kernel_in_register_overwrite, dim=1, inputs=[x, a], device=device)
1983
-
1984
- tape.backward(grads={x: wp.ones_like(x, requires_grad=False)})
1985
-
1986
- assert_np_equal(x.numpy(), np.array([[1.0, 3.0, 1.0, 1.0]], dtype=np_type))
1987
- assert_np_equal(a.grad.numpy(), np.array([[1.0, 0.0, 1.0, 1.0]], dtype=np_type))
1988
-
1989
1985
 
1990
1986
  ############################################################
1991
1987
 
@@ -2120,7 +2116,7 @@ def test_quat_len(test, device):
2120
2116
 
2121
2117
 
2122
2118
  @wp.kernel
2123
- def vector_augassign_kernel(
2119
+ def quat_augassign_kernel(
2124
2120
  a: wp.array(dtype=wp.quat), b: wp.array(dtype=wp.quat), c: wp.array(dtype=wp.quat), d: wp.array(dtype=wp.quat)
2125
2121
  ):
2126
2122
  i = wp.tid()
@@ -2138,26 +2134,26 @@ def vector_augassign_kernel(
2138
2134
  q3 = wp.quat()
2139
2135
  q4 = d[i]
2140
2136
 
2141
- q3[0] += q4[0]
2142
- q3[1] += q4[1]
2143
- q3[2] += q4[2]
2144
- q3[3] += q4[3]
2137
+ q3[0] -= q4[0]
2138
+ q3[1] -= q4[1]
2139
+ q3[2] -= q4[2]
2140
+ q3[3] -= q4[3]
2145
2141
 
2146
- c[i] = q1
2142
+ c[i] = q3
2147
2143
 
2148
2144
 
2149
- def test_vector_augassign(test, device):
2145
+ def test_quat_augassign(test, device):
2150
2146
  N = 3
2151
2147
 
2152
- a = wp.zeros(N, dtype=wp.quat, requires_grad=True)
2153
- b = wp.ones(N, dtype=wp.quat, requires_grad=True)
2148
+ a = wp.zeros(N, dtype=wp.quat, requires_grad=True, device=device)
2149
+ b = wp.ones(N, dtype=wp.quat, requires_grad=True, device=device)
2154
2150
 
2155
- c = wp.zeros(N, dtype=wp.quat, requires_grad=True)
2156
- d = wp.ones(N, dtype=wp.quat, requires_grad=True)
2151
+ c = wp.zeros(N, dtype=wp.quat, requires_grad=True, device=device)
2152
+ d = wp.ones(N, dtype=wp.quat, requires_grad=True, device=device)
2157
2153
 
2158
2154
  tape = wp.Tape()
2159
2155
  with tape:
2160
- wp.launch(vector_augassign_kernel, N, inputs=[a, b, c, d])
2156
+ wp.launch(quat_augassign_kernel, N, inputs=[a, b, c, d], device=device)
2161
2157
 
2162
2158
  tape.backward(grads={a: wp.ones_like(a), c: wp.ones_like(c)})
2163
2159
 
@@ -2170,6 +2166,38 @@ def test_vector_augassign(test, device):
2170
2166
  assert_np_equal(d.grad.numpy(), -wp.ones_like(d).numpy())
2171
2167
 
2172
2168
 
2169
+ def test_quat_assign_copy(test, device):
2170
+ saved_enable_vector_component_overwrites_setting = wp.config.enable_vector_component_overwrites
2171
+ try:
2172
+ wp.config.enable_vector_component_overwrites = True
2173
+
2174
+ @wp.kernel
2175
+ def quat_in_register_overwrite(x: wp.array(dtype=wp.quat), a: wp.array(dtype=wp.quat)):
2176
+ tid = wp.tid()
2177
+
2178
+ f = wp.quat()
2179
+ a_quat = a[tid]
2180
+ f = a_quat
2181
+ f[1] = 3.0
2182
+
2183
+ x[tid] = f
2184
+
2185
+ x = wp.zeros(1, dtype=wp.quat, device=device, requires_grad=True)
2186
+ a = wp.ones(1, dtype=wp.quat, device=device, requires_grad=True)
2187
+
2188
+ tape = wp.Tape()
2189
+ with tape:
2190
+ wp.launch(quat_in_register_overwrite, dim=1, inputs=[x, a], device=device)
2191
+
2192
+ tape.backward(grads={x: wp.ones_like(x, requires_grad=False)})
2193
+
2194
+ assert_np_equal(x.numpy(), np.array([[1.0, 3.0, 1.0, 1.0]], dtype=float))
2195
+ assert_np_equal(a.grad.numpy(), np.array([[1.0, 0.0, 1.0, 1.0]], dtype=float))
2196
+
2197
+ finally:
2198
+ wp.config.enable_vector_component_overwrites = saved_enable_vector_component_overwrites_setting
2199
+
2200
+
2173
2201
  devices = get_test_devices()
2174
2202
 
2175
2203
 
@@ -2269,8 +2297,8 @@ for dtype in np_float_types:
2269
2297
  )
2270
2298
  add_function_test_register_kernel(
2271
2299
  TestQuat,
2272
- f"test_quat_assign_{dtype.__name__}",
2273
- test_quat_assign,
2300
+ f"test_quat_assign_inplace_{dtype.__name__}",
2301
+ test_quat_assign_inplace,
2274
2302
  devices=devices,
2275
2303
  dtype=dtype,
2276
2304
  )
@@ -2279,7 +2307,8 @@ for dtype in np_float_types:
2279
2307
  )
2280
2308
 
2281
2309
  add_function_test(TestQuat, "test_quat_len", test_quat_len, devices=devices)
2282
-
2310
+ add_function_test(TestQuat, "test_quat_augassign", test_quat_augassign, devices=devices)
2311
+ add_function_test(TestQuat, "test_quat_assign_copy", test_quat_assign_copy, devices=devices)
2283
2312
 
2284
2313
  if __name__ == "__main__":
2285
2314
  wp.clear_kernel_cache()
warp/tests/test_rand.py CHANGED
@@ -1,9 +1,17 @@
1
- # Copyright (c) 2022 NVIDIA CORPORATION. All rights reserved.
2
- # NVIDIA CORPORATION and its licensors retain all intellectual property
3
- # and proprietary rights in and to this software, related documentation
4
- # and any modifications thereto. Any use, reproduction, disclosure or
5
- # distribution of this software and related documentation without an express
6
- # license agreement from NVIDIA CORPORATION is strictly prohibited.
1
+ # SPDX-FileCopyrightText: Copyright (c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2
+ # SPDX-License-Identifier: Apache-2.0
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
7
15
 
8
16
  import unittest
9
17
 
@@ -18,6 +26,8 @@ def test_kernel(
18
26
  kernel_seed: int,
19
27
  int_a: wp.array(dtype=int),
20
28
  int_ab: wp.array(dtype=int),
29
+ uint_a: wp.array(dtype=wp.uint32),
30
+ uint_ab: wp.array(dtype=wp.uint32),
21
31
  float_01: wp.array(dtype=float),
22
32
  float_ab: wp.array(dtype=float),
23
33
  ):
@@ -27,6 +37,8 @@ def test_kernel(
27
37
 
28
38
  int_a[tid] = wp.randi(state)
29
39
  int_ab[tid] = wp.randi(state, 0, 100)
40
+ uint_a[tid] = wp.randu(state)
41
+ uint_ab[tid] = wp.randu(state, wp.uint32(0), wp.uint32(100))
30
42
  float_01[tid] = wp.randf(state)
31
43
  float_ab[tid] = wp.randf(state, 0.0, 100.0)
32
44
 
@@ -34,37 +46,25 @@ def test_kernel(
34
46
  def test_rand(test, device):
35
47
  N = 10
36
48
 
37
- int_a_device = wp.zeros(N, dtype=int, device=device)
38
- int_a_host = wp.zeros(N, dtype=int, device="cpu")
39
- int_ab_device = wp.zeros(N, dtype=int, device=device)
40
- int_ab_host = wp.zeros(N, dtype=int, device="cpu")
49
+ int_a = wp.zeros(N, dtype=int, device=device)
50
+ int_ab = wp.zeros(N, dtype=int, device=device)
41
51
 
42
- float_01_device = wp.zeros(N, dtype=float, device=device)
43
- float_01_host = wp.zeros(N, dtype=float, device="cpu")
44
- float_ab_device = wp.zeros(N, dtype=float, device=device)
45
- float_ab_host = wp.zeros(N, dtype=float, device="cpu")
52
+ uint_a = wp.zeros(N, dtype=wp.uint32, device=device)
53
+ uint_ab = wp.zeros(N, dtype=wp.uint32, device=device)
54
+
55
+ float_01 = wp.zeros(N, dtype=float, device=device)
56
+ float_ab = wp.zeros(N, dtype=float, device=device)
46
57
 
47
58
  seed = 42
48
59
 
49
60
  wp.launch(
50
61
  kernel=test_kernel,
51
62
  dim=N,
52
- inputs=[seed, int_a_device, int_ab_device, float_01_device, float_ab_device],
63
+ inputs=[seed, int_a, int_ab, uint_a, uint_ab, float_01, float_ab],
53
64
  outputs=[],
54
65
  device=device,
55
66
  )
56
67
 
57
- wp.copy(int_a_host, int_a_device)
58
- wp.copy(int_ab_host, int_ab_device)
59
- wp.copy(float_01_host, float_01_device)
60
- wp.copy(float_ab_host, float_ab_device)
61
- wp.synchronize_device(device)
62
-
63
- int_a = int_a_host.numpy()
64
- int_ab = int_ab_host.numpy()
65
- float_01 = float_01_host.numpy()
66
- float_ab = float_ab_host.numpy()
67
-
68
68
  int_a_true = np.array(
69
69
  [
70
70
  -575632308,
@@ -80,32 +80,47 @@ def test_rand(test, device):
80
80
  ]
81
81
  )
82
82
  int_ab_true = np.array([46, 58, 46, 83, 85, 39, 72, 99, 18, 41])
83
+ uint_a_true = np.array(
84
+ [
85
+ 3133687854,
86
+ 3702303309,
87
+ 1235698096,
88
+ 3516599792,
89
+ 800302729,
90
+ 2620462179,
91
+ 2423739693,
92
+ 3024873594,
93
+ 2783682377,
94
+ 1188846332,
95
+ ]
96
+ )
97
+ uint_ab_true = np.array([6, 55, 2, 92, 55, 93, 65, 23, 48, 0])
83
98
  float_01_true = np.array(
84
99
  [
85
- 0.72961855,
86
- 0.86200964,
87
- 0.28770837,
88
- 0.8187722,
89
- 0.186335,
90
- 0.6101239,
91
- 0.56432086,
92
- 0.70428324,
93
- 0.64812654,
94
- 0.27679986,
100
+ 0.8265858,
101
+ 0.5874614,
102
+ 0.1508659,
103
+ 0.9498008,
104
+ 0.02531803,
105
+ 0.8520948,
106
+ 0.0001185536,
107
+ 0.4855958,
108
+ 0.06277305,
109
+ 0.2214079,
95
110
  ]
96
111
  )
97
112
  float_ab_true = np.array(
98
- [96.04259, 73.33809, 63.601555, 38.647305, 71.813896, 64.65809, 77.79791, 46.579605, 94.614456, 91.921814]
113
+ [79.84678, 76.362206, 32.135242, 99.70866, 70.45863, 20.6523, 45.164482, 55.583008, 76.60291, 35.36277]
99
114
  )
100
115
 
101
- test.assertTrue((int_a == int_a_true).all())
102
- test.assertTrue((int_ab == int_ab_true).all())
116
+ assert_np_equal(int_a.numpy(), int_a_true)
117
+ assert_np_equal(int_ab.numpy(), int_ab_true)
103
118
 
104
- err = np.max(np.abs(float_01 - float_01_true))
105
- test.assertTrue(err < 1e-04)
119
+ assert_np_equal(uint_a.numpy(), uint_a_true)
120
+ assert_np_equal(uint_ab.numpy(), uint_ab_true)
106
121
 
107
- err = np.max(np.abs(float_ab - float_ab_true))
108
- test.assertTrue(err < 1e-04)
122
+ assert_np_equal(float_01.numpy(), float_01_true, 1e-04)
123
+ assert_np_equal(float_ab.numpy(), float_ab_true, 1e-04)
109
124
 
110
125
 
111
126
  @wp.kernel
warp/tests/test_reload.py CHANGED
@@ -1,9 +1,17 @@
1
- # Copyright (c) 2022 NVIDIA CORPORATION. All rights reserved.
2
- # NVIDIA CORPORATION and its licensors retain all intellectual property
3
- # and proprietary rights in and to this software, related documentation
4
- # and any modifications thereto. Any use, reproduction, disclosure or
5
- # distribution of this software and related documentation without an express
6
- # license agreement from NVIDIA CORPORATION is strictly prohibited.
1
+ # SPDX-FileCopyrightText: Copyright (c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2
+ # SPDX-License-Identifier: Apache-2.0
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
7
15
 
8
16
  import importlib
9
17
  import os
@@ -1,9 +1,17 @@
1
- # Copyright (c) 2022 NVIDIA CORPORATION. All rights reserved.
2
- # NVIDIA CORPORATION and its licensors retain all intellectual property
3
- # and proprietary rights in and to this software, related documentation
4
- # and any modifications thereto. Any use, reproduction, disclosure or
5
- # distribution of this software and related documentation without an express
6
- # license agreement from NVIDIA CORPORATION is strictly prohibited.
1
+ # SPDX-FileCopyrightText: Copyright (c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2
+ # SPDX-License-Identifier: Apache-2.0
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
7
15
 
8
16
  import unittest
9
17
 
@@ -1,9 +1,17 @@
1
- # Copyright (c) 2023 NVIDIA CORPORATION. All rights reserved.
2
- # NVIDIA CORPORATION and its licensors retain all intellectual property
3
- # and proprietary rights in and to this software, related documentation
4
- # and any modifications thereto. Any use, reproduction, disclosure or
5
- # distribution of this software and related documentation without an express
6
- # license agreement from NVIDIA CORPORATION is strictly prohibited.
1
+ # SPDX-FileCopyrightText: Copyright (c) 2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2
+ # SPDX-License-Identifier: Apache-2.0
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
7
15
 
8
16
  import unittest
9
17
  from functools import partial