warp-lang 1.9.1__py3-none-manylinux_2_34_aarch64.whl → 1.10.0rc2__py3-none-manylinux_2_34_aarch64.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 (346) hide show
  1. warp/__init__.py +301 -287
  2. warp/__init__.pyi +794 -305
  3. warp/_src/__init__.py +14 -0
  4. warp/_src/autograd.py +1075 -0
  5. warp/_src/build.py +618 -0
  6. warp/_src/build_dll.py +640 -0
  7. warp/{builtins.py → _src/builtins.py} +1382 -377
  8. warp/_src/codegen.py +4359 -0
  9. warp/{config.py → _src/config.py} +178 -169
  10. warp/_src/constants.py +57 -0
  11. warp/_src/context.py +8294 -0
  12. warp/_src/dlpack.py +462 -0
  13. warp/_src/fabric.py +355 -0
  14. warp/_src/fem/__init__.py +14 -0
  15. warp/_src/fem/adaptivity.py +508 -0
  16. warp/_src/fem/cache.py +687 -0
  17. warp/_src/fem/dirichlet.py +188 -0
  18. warp/{fem → _src/fem}/domain.py +40 -30
  19. warp/_src/fem/field/__init__.py +131 -0
  20. warp/_src/fem/field/field.py +701 -0
  21. warp/{fem → _src/fem}/field/nodal_field.py +30 -15
  22. warp/{fem → _src/fem}/field/restriction.py +1 -1
  23. warp/{fem → _src/fem}/field/virtual.py +53 -27
  24. warp/_src/fem/geometry/__init__.py +32 -0
  25. warp/{fem → _src/fem}/geometry/adaptive_nanogrid.py +77 -163
  26. warp/_src/fem/geometry/closest_point.py +97 -0
  27. warp/{fem → _src/fem}/geometry/deformed_geometry.py +14 -22
  28. warp/{fem → _src/fem}/geometry/element.py +32 -10
  29. warp/{fem → _src/fem}/geometry/geometry.py +48 -20
  30. warp/{fem → _src/fem}/geometry/grid_2d.py +12 -23
  31. warp/{fem → _src/fem}/geometry/grid_3d.py +12 -23
  32. warp/{fem → _src/fem}/geometry/hexmesh.py +40 -63
  33. warp/{fem → _src/fem}/geometry/nanogrid.py +255 -248
  34. warp/{fem → _src/fem}/geometry/partition.py +121 -63
  35. warp/{fem → _src/fem}/geometry/quadmesh.py +26 -45
  36. warp/{fem → _src/fem}/geometry/tetmesh.py +40 -63
  37. warp/{fem → _src/fem}/geometry/trimesh.py +26 -45
  38. warp/{fem → _src/fem}/integrate.py +164 -158
  39. warp/_src/fem/linalg.py +383 -0
  40. warp/_src/fem/operator.py +396 -0
  41. warp/_src/fem/polynomial.py +229 -0
  42. warp/{fem → _src/fem}/quadrature/pic_quadrature.py +15 -20
  43. warp/{fem → _src/fem}/quadrature/quadrature.py +95 -47
  44. warp/_src/fem/space/__init__.py +248 -0
  45. warp/{fem → _src/fem}/space/basis_function_space.py +20 -11
  46. warp/_src/fem/space/basis_space.py +679 -0
  47. warp/{fem → _src/fem}/space/dof_mapper.py +3 -3
  48. warp/{fem → _src/fem}/space/function_space.py +14 -13
  49. warp/{fem → _src/fem}/space/grid_2d_function_space.py +4 -7
  50. warp/{fem → _src/fem}/space/grid_3d_function_space.py +4 -4
  51. warp/{fem → _src/fem}/space/hexmesh_function_space.py +4 -10
  52. warp/{fem → _src/fem}/space/nanogrid_function_space.py +3 -9
  53. warp/{fem → _src/fem}/space/partition.py +117 -60
  54. warp/{fem → _src/fem}/space/quadmesh_function_space.py +4 -10
  55. warp/{fem → _src/fem}/space/restriction.py +66 -33
  56. warp/_src/fem/space/shape/__init__.py +152 -0
  57. warp/{fem → _src/fem}/space/shape/cube_shape_function.py +9 -9
  58. warp/{fem → _src/fem}/space/shape/shape_function.py +8 -9
  59. warp/{fem → _src/fem}/space/shape/square_shape_function.py +6 -6
  60. warp/{fem → _src/fem}/space/shape/tet_shape_function.py +3 -3
  61. warp/{fem → _src/fem}/space/shape/triangle_shape_function.py +3 -3
  62. warp/{fem → _src/fem}/space/tetmesh_function_space.py +3 -9
  63. warp/_src/fem/space/topology.py +459 -0
  64. warp/{fem → _src/fem}/space/trimesh_function_space.py +3 -9
  65. warp/_src/fem/types.py +112 -0
  66. warp/_src/fem/utils.py +486 -0
  67. warp/_src/jax.py +186 -0
  68. warp/_src/jax_experimental/__init__.py +14 -0
  69. warp/_src/jax_experimental/custom_call.py +387 -0
  70. warp/_src/jax_experimental/ffi.py +1284 -0
  71. warp/_src/jax_experimental/xla_ffi.py +656 -0
  72. warp/_src/marching_cubes.py +708 -0
  73. warp/_src/math.py +414 -0
  74. warp/_src/optim/__init__.py +14 -0
  75. warp/_src/optim/adam.py +163 -0
  76. warp/_src/optim/linear.py +1606 -0
  77. warp/_src/optim/sgd.py +112 -0
  78. warp/_src/paddle.py +406 -0
  79. warp/_src/render/__init__.py +14 -0
  80. warp/_src/render/imgui_manager.py +289 -0
  81. warp/_src/render/render_opengl.py +3636 -0
  82. warp/_src/render/render_usd.py +937 -0
  83. warp/_src/render/utils.py +160 -0
  84. warp/_src/sparse.py +2716 -0
  85. warp/_src/tape.py +1206 -0
  86. warp/{thirdparty → _src/thirdparty}/unittest_parallel.py +9 -2
  87. warp/_src/torch.py +391 -0
  88. warp/_src/types.py +5870 -0
  89. warp/_src/utils.py +1693 -0
  90. warp/autograd.py +12 -1054
  91. warp/bin/warp-clang.so +0 -0
  92. warp/bin/warp.so +0 -0
  93. warp/build.py +8 -588
  94. warp/build_dll.py +6 -721
  95. warp/codegen.py +6 -4251
  96. warp/constants.py +6 -39
  97. warp/context.py +12 -8062
  98. warp/dlpack.py +6 -444
  99. warp/examples/distributed/example_jacobi_mpi.py +4 -5
  100. warp/examples/fem/example_adaptive_grid.py +1 -1
  101. warp/examples/fem/example_apic_fluid.py +1 -1
  102. warp/examples/fem/example_burgers.py +8 -8
  103. warp/examples/fem/example_diffusion.py +1 -1
  104. warp/examples/fem/example_distortion_energy.py +1 -1
  105. warp/examples/fem/example_mixed_elasticity.py +2 -2
  106. warp/examples/fem/example_navier_stokes.py +1 -1
  107. warp/examples/fem/example_nonconforming_contact.py +7 -7
  108. warp/examples/fem/example_stokes.py +1 -1
  109. warp/examples/fem/example_stokes_transfer.py +1 -1
  110. warp/examples/fem/utils.py +2 -2
  111. warp/examples/interop/example_jax_callable.py +1 -1
  112. warp/examples/interop/example_jax_ffi_callback.py +1 -1
  113. warp/examples/interop/example_jax_kernel.py +1 -1
  114. warp/examples/tile/example_tile_mcgp.py +191 -0
  115. warp/fabric.py +6 -337
  116. warp/fem/__init__.py +159 -97
  117. warp/fem/adaptivity.py +7 -489
  118. warp/fem/cache.py +9 -648
  119. warp/fem/dirichlet.py +6 -184
  120. warp/fem/field/__init__.py +8 -109
  121. warp/fem/field/field.py +7 -652
  122. warp/fem/geometry/__init__.py +7 -18
  123. warp/fem/geometry/closest_point.py +11 -77
  124. warp/fem/linalg.py +18 -366
  125. warp/fem/operator.py +11 -369
  126. warp/fem/polynomial.py +9 -209
  127. warp/fem/space/__init__.py +5 -211
  128. warp/fem/space/basis_space.py +6 -662
  129. warp/fem/space/shape/__init__.py +41 -118
  130. warp/fem/space/topology.py +6 -437
  131. warp/fem/types.py +6 -81
  132. warp/fem/utils.py +11 -444
  133. warp/jax.py +8 -165
  134. warp/jax_experimental/__init__.py +14 -1
  135. warp/jax_experimental/custom_call.py +8 -365
  136. warp/jax_experimental/ffi.py +17 -873
  137. warp/jax_experimental/xla_ffi.py +5 -605
  138. warp/marching_cubes.py +5 -689
  139. warp/math.py +16 -393
  140. warp/native/array.h +385 -37
  141. warp/native/builtin.h +314 -37
  142. warp/native/bvh.cpp +43 -9
  143. warp/native/bvh.cu +62 -27
  144. warp/native/bvh.h +310 -309
  145. warp/native/clang/clang.cpp +102 -97
  146. warp/native/coloring.cpp +0 -1
  147. warp/native/crt.h +208 -0
  148. warp/native/exports.h +156 -0
  149. warp/native/hashgrid.cu +2 -0
  150. warp/native/intersect.h +24 -1
  151. warp/native/intersect_tri.h +44 -35
  152. warp/native/mat.h +1456 -276
  153. warp/native/mesh.cpp +4 -4
  154. warp/native/mesh.cu +4 -2
  155. warp/native/mesh.h +176 -61
  156. warp/native/quat.h +0 -52
  157. warp/native/scan.cu +2 -0
  158. warp/native/sparse.cu +7 -3
  159. warp/native/spatial.h +12 -0
  160. warp/native/tile.h +681 -89
  161. warp/native/tile_radix_sort.h +1 -1
  162. warp/native/tile_reduce.h +394 -46
  163. warp/native/tile_scan.h +4 -4
  164. warp/native/vec.h +469 -0
  165. warp/native/version.h +23 -0
  166. warp/native/volume.cpp +1 -1
  167. warp/native/volume.cu +1 -0
  168. warp/native/volume.h +1 -1
  169. warp/native/volume_builder.cu +2 -0
  170. warp/native/warp.cpp +57 -29
  171. warp/native/warp.cu +253 -171
  172. warp/native/warp.h +11 -8
  173. warp/optim/__init__.py +6 -3
  174. warp/optim/adam.py +6 -145
  175. warp/optim/linear.py +14 -1585
  176. warp/optim/sgd.py +6 -94
  177. warp/paddle.py +6 -388
  178. warp/render/__init__.py +8 -4
  179. warp/render/imgui_manager.py +7 -267
  180. warp/render/render_opengl.py +6 -3618
  181. warp/render/render_usd.py +6 -919
  182. warp/render/utils.py +6 -142
  183. warp/sparse.py +37 -2563
  184. warp/tape.py +6 -1188
  185. warp/tests/__main__.py +1 -1
  186. warp/tests/cuda/test_async.py +4 -4
  187. warp/tests/cuda/test_conditional_captures.py +1 -1
  188. warp/tests/cuda/test_multigpu.py +1 -1
  189. warp/tests/cuda/test_streams.py +58 -1
  190. warp/tests/geometry/test_bvh.py +157 -22
  191. warp/tests/geometry/test_marching_cubes.py +0 -1
  192. warp/tests/geometry/test_mesh.py +5 -3
  193. warp/tests/geometry/test_mesh_query_aabb.py +5 -12
  194. warp/tests/geometry/test_mesh_query_point.py +5 -2
  195. warp/tests/geometry/test_mesh_query_ray.py +15 -3
  196. warp/tests/geometry/test_volume_write.py +5 -5
  197. warp/tests/interop/test_dlpack.py +14 -14
  198. warp/tests/interop/test_jax.py +772 -49
  199. warp/tests/interop/test_paddle.py +1 -1
  200. warp/tests/test_adam.py +0 -1
  201. warp/tests/test_arithmetic.py +9 -9
  202. warp/tests/test_array.py +527 -100
  203. warp/tests/test_array_reduce.py +3 -3
  204. warp/tests/test_atomic.py +12 -8
  205. warp/tests/test_atomic_bitwise.py +209 -0
  206. warp/tests/test_atomic_cas.py +4 -4
  207. warp/tests/test_bool.py +2 -2
  208. warp/tests/test_builtins_resolution.py +5 -571
  209. warp/tests/test_codegen.py +33 -14
  210. warp/tests/test_conditional.py +1 -1
  211. warp/tests/test_context.py +6 -6
  212. warp/tests/test_copy.py +242 -161
  213. warp/tests/test_ctypes.py +3 -3
  214. warp/tests/test_devices.py +24 -2
  215. warp/tests/test_examples.py +16 -84
  216. warp/tests/test_fabricarray.py +35 -35
  217. warp/tests/test_fast_math.py +0 -2
  218. warp/tests/test_fem.py +56 -10
  219. warp/tests/test_fixedarray.py +3 -3
  220. warp/tests/test_func.py +8 -5
  221. warp/tests/test_generics.py +1 -1
  222. warp/tests/test_indexedarray.py +24 -24
  223. warp/tests/test_intersect.py +39 -9
  224. warp/tests/test_large.py +1 -1
  225. warp/tests/test_lerp.py +3 -1
  226. warp/tests/test_linear_solvers.py +1 -1
  227. warp/tests/test_map.py +35 -4
  228. warp/tests/test_mat.py +52 -62
  229. warp/tests/test_mat_constructors.py +4 -5
  230. warp/tests/test_mat_lite.py +1 -1
  231. warp/tests/test_mat_scalar_ops.py +121 -121
  232. warp/tests/test_math.py +34 -0
  233. warp/tests/test_module_aot.py +4 -4
  234. warp/tests/test_modules_lite.py +28 -2
  235. warp/tests/test_print.py +11 -11
  236. warp/tests/test_quat.py +93 -58
  237. warp/tests/test_runlength_encode.py +1 -1
  238. warp/tests/test_scalar_ops.py +38 -10
  239. warp/tests/test_smoothstep.py +1 -1
  240. warp/tests/test_sparse.py +126 -15
  241. warp/tests/test_spatial.py +105 -87
  242. warp/tests/test_special_values.py +6 -6
  243. warp/tests/test_static.py +7 -7
  244. warp/tests/test_struct.py +13 -2
  245. warp/tests/test_triangle_closest_point.py +48 -1
  246. warp/tests/test_types.py +27 -15
  247. warp/tests/test_utils.py +52 -52
  248. warp/tests/test_vec.py +29 -29
  249. warp/tests/test_vec_constructors.py +5 -5
  250. warp/tests/test_vec_scalar_ops.py +97 -97
  251. warp/tests/test_version.py +75 -0
  252. warp/tests/tile/test_tile.py +178 -0
  253. warp/tests/tile/test_tile_atomic_bitwise.py +403 -0
  254. warp/tests/tile/test_tile_cholesky.py +7 -4
  255. warp/tests/tile/test_tile_load.py +26 -2
  256. warp/tests/tile/test_tile_mathdx.py +3 -3
  257. warp/tests/tile/test_tile_matmul.py +1 -1
  258. warp/tests/tile/test_tile_mlp.py +2 -4
  259. warp/tests/tile/test_tile_reduce.py +214 -13
  260. warp/tests/unittest_suites.py +6 -14
  261. warp/tests/unittest_utils.py +10 -9
  262. warp/tests/walkthrough_debug.py +3 -1
  263. warp/torch.py +6 -373
  264. warp/types.py +29 -5764
  265. warp/utils.py +10 -1659
  266. {warp_lang-1.9.1.dist-info → warp_lang-1.10.0rc2.dist-info}/METADATA +46 -99
  267. warp_lang-1.10.0rc2.dist-info/RECORD +468 -0
  268. warp_lang-1.10.0rc2.dist-info/licenses/licenses/Gaia-LICENSE.txt +6 -0
  269. warp_lang-1.10.0rc2.dist-info/licenses/licenses/appdirs-LICENSE.txt +22 -0
  270. warp_lang-1.10.0rc2.dist-info/licenses/licenses/asset_pixel_jpg-LICENSE.txt +3 -0
  271. warp_lang-1.10.0rc2.dist-info/licenses/licenses/cuda-LICENSE.txt +1582 -0
  272. warp_lang-1.10.0rc2.dist-info/licenses/licenses/dlpack-LICENSE.txt +201 -0
  273. warp_lang-1.10.0rc2.dist-info/licenses/licenses/fp16-LICENSE.txt +28 -0
  274. warp_lang-1.10.0rc2.dist-info/licenses/licenses/libmathdx-LICENSE.txt +220 -0
  275. warp_lang-1.10.0rc2.dist-info/licenses/licenses/llvm-LICENSE.txt +279 -0
  276. warp_lang-1.10.0rc2.dist-info/licenses/licenses/moller-LICENSE.txt +16 -0
  277. warp_lang-1.10.0rc2.dist-info/licenses/licenses/nanovdb-LICENSE.txt +2 -0
  278. warp_lang-1.10.0rc2.dist-info/licenses/licenses/nvrtc-LICENSE.txt +1592 -0
  279. warp_lang-1.10.0rc2.dist-info/licenses/licenses/svd-LICENSE.txt +23 -0
  280. warp_lang-1.10.0rc2.dist-info/licenses/licenses/unittest_parallel-LICENSE.txt +21 -0
  281. warp_lang-1.10.0rc2.dist-info/licenses/licenses/usd-LICENSE.txt +213 -0
  282. warp_lang-1.10.0rc2.dist-info/licenses/licenses/windingnumber-LICENSE.txt +21 -0
  283. warp/examples/assets/cartpole.urdf +0 -110
  284. warp/examples/assets/crazyflie.usd +0 -0
  285. warp/examples/assets/nv_ant.xml +0 -92
  286. warp/examples/assets/nv_humanoid.xml +0 -183
  287. warp/examples/assets/quadruped.urdf +0 -268
  288. warp/examples/optim/example_bounce.py +0 -266
  289. warp/examples/optim/example_cloth_throw.py +0 -228
  290. warp/examples/optim/example_drone.py +0 -870
  291. warp/examples/optim/example_inverse_kinematics.py +0 -182
  292. warp/examples/optim/example_inverse_kinematics_torch.py +0 -191
  293. warp/examples/optim/example_softbody_properties.py +0 -400
  294. warp/examples/optim/example_spring_cage.py +0 -245
  295. warp/examples/optim/example_trajectory.py +0 -227
  296. warp/examples/sim/example_cartpole.py +0 -143
  297. warp/examples/sim/example_cloth.py +0 -225
  298. warp/examples/sim/example_cloth_self_contact.py +0 -316
  299. warp/examples/sim/example_granular.py +0 -130
  300. warp/examples/sim/example_granular_collision_sdf.py +0 -202
  301. warp/examples/sim/example_jacobian_ik.py +0 -244
  302. warp/examples/sim/example_particle_chain.py +0 -124
  303. warp/examples/sim/example_quadruped.py +0 -203
  304. warp/examples/sim/example_rigid_chain.py +0 -203
  305. warp/examples/sim/example_rigid_contact.py +0 -195
  306. warp/examples/sim/example_rigid_force.py +0 -133
  307. warp/examples/sim/example_rigid_gyroscopic.py +0 -115
  308. warp/examples/sim/example_rigid_soft_contact.py +0 -140
  309. warp/examples/sim/example_soft_body.py +0 -196
  310. warp/examples/tile/example_tile_walker.py +0 -327
  311. warp/sim/__init__.py +0 -74
  312. warp/sim/articulation.py +0 -793
  313. warp/sim/collide.py +0 -2570
  314. warp/sim/graph_coloring.py +0 -307
  315. warp/sim/import_mjcf.py +0 -791
  316. warp/sim/import_snu.py +0 -227
  317. warp/sim/import_urdf.py +0 -579
  318. warp/sim/import_usd.py +0 -898
  319. warp/sim/inertia.py +0 -357
  320. warp/sim/integrator.py +0 -245
  321. warp/sim/integrator_euler.py +0 -2000
  322. warp/sim/integrator_featherstone.py +0 -2101
  323. warp/sim/integrator_vbd.py +0 -2487
  324. warp/sim/integrator_xpbd.py +0 -3295
  325. warp/sim/model.py +0 -4821
  326. warp/sim/particles.py +0 -121
  327. warp/sim/render.py +0 -431
  328. warp/sim/utils.py +0 -431
  329. warp/tests/sim/disabled_kinematics.py +0 -244
  330. warp/tests/sim/test_cloth.py +0 -863
  331. warp/tests/sim/test_collision.py +0 -743
  332. warp/tests/sim/test_coloring.py +0 -347
  333. warp/tests/sim/test_inertia.py +0 -161
  334. warp/tests/sim/test_model.py +0 -226
  335. warp/tests/sim/test_sim_grad.py +0 -287
  336. warp/tests/sim/test_sim_grad_bounce_linear.py +0 -212
  337. warp/tests/sim/test_sim_kinematics.py +0 -98
  338. warp/thirdparty/__init__.py +0 -0
  339. warp_lang-1.9.1.dist-info/RECORD +0 -456
  340. /warp/{fem → _src/fem}/quadrature/__init__.py +0 -0
  341. /warp/{tests/sim → _src/thirdparty}/__init__.py +0 -0
  342. /warp/{thirdparty → _src/thirdparty}/appdirs.py +0 -0
  343. /warp/{thirdparty → _src/thirdparty}/dlpack.py +0 -0
  344. {warp_lang-1.9.1.dist-info → warp_lang-1.10.0rc2.dist-info}/WHEEL +0 -0
  345. {warp_lang-1.9.1.dist-info → warp_lang-1.10.0rc2.dist-info}/licenses/LICENSE.md +0 -0
  346. {warp_lang-1.9.1.dist-info → warp_lang-1.10.0rc2.dist-info}/top_level.txt +0 -0
@@ -23,11 +23,28 @@ from warp.tests.unittest_utils import *
23
23
 
24
24
  @wp.kernel
25
25
  def intersect_tri(
26
- v0: wp.vec3, v1: wp.vec3, v2: wp.vec3, u0: wp.vec3, u1: wp.vec3, u2: wp.vec3, result: wp.array(dtype=int)
26
+ v0: wp.vec3,
27
+ v1: wp.vec3,
28
+ v2: wp.vec3,
29
+ u0: wp.vec3,
30
+ u1: wp.vec3,
31
+ u2: wp.vec3,
32
+ result_single_precision: wp.array(dtype=int),
33
+ result_double_precision: wp.array(dtype=int),
27
34
  ):
28
35
  tid = wp.tid()
29
36
 
30
- result[0] = wp.intersect_tri_tri(v0, v1, v2, u0, u1, u2)
37
+ result_single_precision[0] = wp.intersect_tri_tri(v0, v1, v2, u0, u1, u2)
38
+
39
+ u0_d = wp.vec3d(u0)
40
+ u1_d = wp.vec3d(u1)
41
+ u2_d = wp.vec3d(u2)
42
+
43
+ v0_d = wp.vec3d(v0)
44
+ v1_d = wp.vec3d(v1)
45
+ v2_d = wp.vec3d(v2)
46
+
47
+ result_double_precision[0] = wp.intersect_tri_tri(v0_d, v1_d, v2_d, u0_d, u1_d, u2_d)
31
48
 
32
49
 
33
50
  def test_intersect_tri(test, device):
@@ -49,13 +66,26 @@ def test_intersect_tri(test, device):
49
66
  wp.vec3(-0.5, 0.5, 0.0),
50
67
  ]
51
68
 
52
- result = wp.zeros(1, dtype=int, device=device)
53
-
54
- wp.launch(intersect_tri, dim=1, inputs=[*points_intersect, result], device=device)
55
- assert_np_equal(result.numpy(), np.array([1]))
56
-
57
- wp.launch(intersect_tri, dim=1, inputs=[*points_separated, result], device=device)
58
- assert_np_equal(result.numpy(), np.array([0]))
69
+ result_single_precision = wp.zeros(1, dtype=int, device=device)
70
+ result_double_precision = wp.zeros(1, dtype=int, device=device)
71
+
72
+ wp.launch(
73
+ intersect_tri,
74
+ dim=1,
75
+ inputs=[*points_intersect, result_single_precision, result_double_precision],
76
+ device=device,
77
+ )
78
+ assert_np_equal(result_single_precision.numpy(), np.array([1]))
79
+ assert_np_equal(result_double_precision.numpy(), np.array([1]))
80
+
81
+ wp.launch(
82
+ intersect_tri,
83
+ dim=1,
84
+ inputs=[*points_separated, result_single_precision, result_double_precision],
85
+ device=device,
86
+ )
87
+ assert_np_equal(result_single_precision.numpy(), np.array([0]))
88
+ assert_np_equal(result_double_precision.numpy(), np.array([0]))
59
89
 
60
90
 
61
91
  devices = get_test_devices()
warp/tests/test_large.py CHANGED
@@ -93,7 +93,7 @@ def test_large_arrays_slow(test, device):
93
93
  dim_x = math.ceil(total_elements ** (1 / total_dims))
94
94
  shape_tuple = tuple([dim_x] * total_dims)
95
95
 
96
- for wptype in wp.types.scalar_types:
96
+ for wptype in wp._src.types.scalar_types:
97
97
  a1 = wp.zeros(shape_tuple, dtype=wptype, device=device)
98
98
  assert_np_equal(a1.numpy(), np.zeros_like(a1.numpy()))
99
99
 
warp/tests/test_lerp.py CHANGED
@@ -119,7 +119,9 @@ def test_lerp(test, device):
119
119
  a = wp.array([test_data.a], dtype=data_type, device=device, requires_grad=True)
120
120
  b = wp.array([test_data.b], dtype=data_type, device=device, requires_grad=True)
121
121
  t = wp.array([test_data.t], dtype=float, device=device, requires_grad=True)
122
- out = wp.array([0] * wp.types.type_size(data_type), dtype=data_type, device=device, requires_grad=True)
122
+ out = wp.array(
123
+ [0] * wp._src.types.type_size(data_type), dtype=data_type, device=device, requires_grad=True
124
+ )
123
125
 
124
126
  with wp.Tape() as tape:
125
127
  wp.launch(kernel, dim=1, inputs=[a, b, t, out], device=device)
@@ -18,7 +18,7 @@ import unittest
18
18
  import numpy as np
19
19
 
20
20
  import warp as wp
21
- from warp.context import assert_conditional_graph_support
21
+ from warp._src.context import assert_conditional_graph_support
22
22
  from warp.optim.linear import bicgstab, cg, cr, gmres, preconditioner
23
23
  from warp.tests.unittest_utils import *
24
24
 
warp/tests/test_map.py CHANGED
@@ -18,7 +18,7 @@ import unittest
18
18
  import numpy as np
19
19
 
20
20
  import warp as wp
21
- import warp.context
21
+ import warp._src.context
22
22
  import warp.tests.aux_test_name_clash1 as name_clash_module_1
23
23
  import warp.tests.aux_test_name_clash2 as name_clash_module_2
24
24
  from warp.tests.unittest_utils import add_function_test, assert_np_equal, get_cuda_test_devices, get_test_devices
@@ -101,6 +101,37 @@ def test_lambda(test, device):
101
101
  expected = np.array(np.arange(10) * local_var, dtype=np.float32)
102
102
  assert_np_equal(out2.numpy(), expected)
103
103
 
104
+ # inline variable construction which uses parentheses
105
+ out = wp.map(lambda a: wp.length(wp.vec3(a, a + 1.0, a + 2.0)), a1)
106
+ expected = np.array([np.sqrt(i * i + (i + 1) * (i + 1) + (i + 2) * (i + 2)) for i in range(10)], dtype=np.float32)
107
+ assert_np_equal(out.numpy(), expected)
108
+
109
+ # multi-line lambda
110
+ # fmt: off
111
+ out = wp.map(lambda a: (\
112
+ a + 1.0 + 2.0 + 3.0 + 4.0 + 5.0 \
113
+ + 6.0 + 7.0 + 8.0 + 9.0 + 10.0\
114
+ ), a1)
115
+ # fmt: on
116
+ expected = np.array([np.sum(np.arange(1, 11)) + i for i in range(10)], dtype=np.float32)
117
+ assert_np_equal(out.numpy(), expected)
118
+
119
+ # complicated expression with parentheses and line continuation
120
+ # fmt: off
121
+ out = wp.map(lambda a: (
122
+ a + 1.0 + ((
123
+ + 6.0 + 7.0 + 8.0) + 9.0 + (10.0
124
+ # an inline comment to make sure it is ignored
125
+ + 0.0) \
126
+ + wp.clamp(a, -0.5, 0.5) \
127
+ + (wp.sin(a) + wp.cos(a))
128
+ )), a1)
129
+ # fmt: on
130
+ expected = np.array(
131
+ [41.0 + i + np.clip(i, -0.5, 0.5) + (np.sin(i) + np.cos(i)) for i in range(10)], dtype=np.float32
132
+ )
133
+ assert_np_equal(out.numpy(), expected, tol=1e-6)
134
+
104
135
 
105
136
  def test_multiple_return_values(test, device):
106
137
  @wp.func
@@ -152,7 +183,7 @@ def test_custom_struct_operator(test, device):
152
183
 
153
184
 
154
185
  def test_name_clash(test, device):
155
- vec5 = wp.types.vector(5, dtype=wp.float32)
186
+ vec5 = wp._src.types.vector(5, dtype=wp.float32)
156
187
 
157
188
  @wp.func
158
189
  def name_clash_structs_args_func(
@@ -415,8 +446,8 @@ def test_kernel_creation(test, device):
415
446
 
416
447
 
417
448
  def test_graph_capture(test, device):
418
- assert warp.context.runtime.driver_version is not None
419
- if warp.context.runtime.driver_version < (12, 3):
449
+ assert warp._src.context.runtime.driver_version is not None
450
+ if warp._src.context.runtime.driver_version < (12, 3):
420
451
  test.skipTest("Module loading during CUDA graph capture is not supported on driver versions < 12.3")
421
452
  a_np = np.arange(10, dtype=np.float32)
422
453
  b_np = np.arange(1, 11, dtype=np.float32)
warp/tests/test_mat.py CHANGED
@@ -67,17 +67,17 @@ def test_shape_mismatch(test, device):
67
67
 
68
68
 
69
69
  def test_py_arithmetic_ops(test, device, dtype):
70
- wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
70
+ wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
71
71
 
72
72
  def make_mat(*args):
73
- if wptype in wp.types.int_types:
73
+ if wptype in wp._src.types.int_types:
74
74
  # Cast to the correct integer type to simulate wrapping.
75
75
  return tuple(tuple(wptype._type_(x).value for x in row) for row in args)
76
76
 
77
77
  return args
78
78
 
79
79
  def make_vec(*args):
80
- if wptype in wp.types.int_types:
80
+ if wptype in wp._src.types.int_types:
81
81
  # Cast to the correct integer type to simulate wrapping.
82
82
  return tuple(wptype._type_(x).value for x in args)
83
83
 
@@ -116,11 +116,11 @@ def test_negation(test, device, dtype, register_kernels=False):
116
116
  np.float64: 1.0e-8,
117
117
  }.get(dtype, 0)
118
118
 
119
- wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
120
- mat22 = wp.types.matrix(shape=(2, 2), dtype=wptype)
121
- mat33 = wp.types.matrix(shape=(3, 3), dtype=wptype)
122
- mat44 = wp.types.matrix(shape=(4, 4), dtype=wptype)
123
- mat55 = wp.types.matrix(shape=(5, 5), dtype=wptype)
119
+ wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
120
+ mat22 = wp._src.types.matrix(shape=(2, 2), dtype=wptype)
121
+ mat33 = wp._src.types.matrix(shape=(3, 3), dtype=wptype)
122
+ mat44 = wp._src.types.matrix(shape=(4, 4), dtype=wptype)
123
+ mat55 = wp._src.types.matrix(shape=(5, 5), dtype=wptype)
124
124
 
125
125
  output_select_kernel = get_select_kernel(wptype)
126
126
 
@@ -205,12 +205,12 @@ def test_matmul(test, device, dtype, register_kernels=False):
205
205
  np.float64: 1.0e-12,
206
206
  }.get(dtype, 0)
207
207
 
208
- wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
209
- mat22 = wp.types.matrix(shape=(2, 2), dtype=wptype)
210
- mat33 = wp.types.matrix(shape=(3, 3), dtype=wptype)
211
- mat23 = wp.types.matrix(shape=(2, 3), dtype=wptype)
212
- mat32 = wp.types.matrix(shape=(3, 2), dtype=wptype)
213
- mat44 = wp.types.matrix(shape=(4, 4), dtype=wptype)
208
+ wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
209
+ mat22 = wp._src.types.matrix(shape=(2, 2), dtype=wptype)
210
+ mat33 = wp._src.types.matrix(shape=(3, 3), dtype=wptype)
211
+ mat23 = wp._src.types.matrix(shape=(2, 3), dtype=wptype)
212
+ mat32 = wp._src.types.matrix(shape=(3, 2), dtype=wptype)
213
+ mat44 = wp._src.types.matrix(shape=(4, 4), dtype=wptype)
214
214
 
215
215
  output_select_kernel = get_select_kernel(wptype)
216
216
 
@@ -276,11 +276,11 @@ def test_subtraction(test, device, dtype, register_kernels=False):
276
276
  np.float64: 1.0e-8,
277
277
  }.get(dtype, 0)
278
278
 
279
- wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
280
- mat22 = wp.types.matrix(shape=(2, 2), dtype=wptype)
281
- mat33 = wp.types.matrix(shape=(3, 3), dtype=wptype)
282
- mat44 = wp.types.matrix(shape=(4, 4), dtype=wptype)
283
- mat55 = wp.types.matrix(shape=(5, 5), dtype=wptype)
279
+ wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
280
+ mat22 = wp._src.types.matrix(shape=(2, 2), dtype=wptype)
281
+ mat33 = wp._src.types.matrix(shape=(3, 3), dtype=wptype)
282
+ mat44 = wp._src.types.matrix(shape=(4, 4), dtype=wptype)
283
+ mat55 = wp._src.types.matrix(shape=(5, 5), dtype=wptype)
284
284
 
285
285
  output_select_kernel = get_select_kernel(wptype)
286
286
 
@@ -397,10 +397,10 @@ def test_determinant(test, device, dtype, register_kernels=False):
397
397
  np.float64: 1.0e-8,
398
398
  }.get(dtype, 0)
399
399
 
400
- wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
401
- mat22 = wp.types.matrix(shape=(2, 2), dtype=wptype)
402
- mat33 = wp.types.matrix(shape=(3, 3), dtype=wptype)
403
- mat44 = wp.types.matrix(shape=(4, 4), dtype=wptype)
400
+ wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
401
+ mat22 = wp._src.types.matrix(shape=(2, 2), dtype=wptype)
402
+ mat33 = wp._src.types.matrix(shape=(3, 3), dtype=wptype)
403
+ mat44 = wp._src.types.matrix(shape=(4, 4), dtype=wptype)
404
404
 
405
405
  def check_mat_det(
406
406
  v2: wp.array(dtype=mat22),
@@ -535,8 +535,8 @@ def test_determinant(test, device, dtype, register_kernels=False):
535
535
  # np.float64: 1.0e-8,
536
536
  # }.get(dtype, 0)
537
537
  #
538
- # wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
539
- # mat55 = wp.types.vector(shape=(5, 5), dtype=wptype)
538
+ # wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
539
+ # mat55 = wp._src.types.vector(shape=(5, 5), dtype=wptype)
540
540
  #
541
541
  # output_select_kernel = get_select_kernel(wptype)
542
542
  #
@@ -590,10 +590,10 @@ def test_inverse(test, device, dtype, register_kernels=False):
590
590
  np.float64: 1.0e-8,
591
591
  }.get(dtype, 0)
592
592
 
593
- wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
594
- mat22 = wp.types.matrix(shape=(2, 2), dtype=wptype)
595
- mat33 = wp.types.matrix(shape=(3, 3), dtype=wptype)
596
- mat44 = wp.types.matrix(shape=(4, 4), dtype=wptype)
593
+ wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
594
+ mat22 = wp._src.types.matrix(shape=(2, 2), dtype=wptype)
595
+ mat33 = wp._src.types.matrix(shape=(3, 3), dtype=wptype)
596
+ mat44 = wp._src.types.matrix(shape=(4, 4), dtype=wptype)
597
597
 
598
598
  output_select_kernel = get_select_kernel(wptype)
599
599
 
@@ -760,9 +760,9 @@ def test_svd(test, device, dtype, register_kernels=False):
760
760
  np.float64: 1.0e-12,
761
761
  }.get(dtype, 0)
762
762
 
763
- wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
764
- vec3 = wp.types.vector(length=3, dtype=wptype)
765
- mat33 = wp.types.matrix(shape=(3, 3), dtype=wptype)
763
+ wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
764
+ vec3 = wp._src.types.vector(length=3, dtype=wptype)
765
+ mat33 = wp._src.types.matrix(shape=(3, 3), dtype=wptype)
766
766
 
767
767
  def check_mat_svd(
768
768
  m3: wp.array(dtype=mat33),
@@ -879,9 +879,9 @@ def test_svd_2D(test, device, dtype, register_kernels=False):
879
879
  np.float64: 1.0e-12,
880
880
  }.get(dtype, 0)
881
881
 
882
- wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
883
- vec2 = wp.types.vector(length=2, dtype=wptype)
884
- mat22 = wp.types.matrix(shape=(2, 2), dtype=wptype)
882
+ wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
883
+ vec2 = wp._src.types.vector(length=2, dtype=wptype)
884
+ mat22 = wp._src.types.matrix(shape=(2, 2), dtype=wptype)
885
885
 
886
886
  def check_mat_svd2(
887
887
  m2: wp.array(dtype=mat22),
@@ -1027,8 +1027,8 @@ def test_qr(test, device, dtype, register_kernels=False):
1027
1027
  np.float64: 1.0e-12,
1028
1028
  }.get(dtype, 0)
1029
1029
 
1030
- wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
1031
- mat33 = wp.types.matrix(shape=(3, 3), dtype=wptype)
1030
+ wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
1031
+ mat33 = wp._src.types.matrix(shape=(3, 3), dtype=wptype)
1032
1032
 
1033
1033
  def check_mat_qr(
1034
1034
  m3: wp.array(dtype=mat33),
@@ -1139,9 +1139,9 @@ def test_eig(test, device, dtype, register_kernels=False):
1139
1139
  np.float64: 1.0e-5,
1140
1140
  }.get(dtype, 0)
1141
1141
 
1142
- wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
1143
- vec3 = wp.types.vector(length=3, dtype=wptype)
1144
- mat33 = wp.types.matrix(shape=(3, 3), dtype=wptype)
1142
+ wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
1143
+ vec3 = wp._src.types.vector(length=3, dtype=wptype)
1144
+ mat33 = wp._src.types.matrix(shape=(3, 3), dtype=wptype)
1145
1145
 
1146
1146
  def check_mat_eig(
1147
1147
  m3: wp.array(dtype=mat33),
@@ -1251,8 +1251,8 @@ def test_skew(test, device, dtype, register_kernels=False):
1251
1251
  np.float64: 1.0e-8,
1252
1252
  }.get(dtype, 0)
1253
1253
 
1254
- wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
1255
- vec3 = wp.types.vector(length=3, dtype=wptype)
1254
+ wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
1255
+ vec3 = wp._src.types.vector(length=3, dtype=wptype)
1256
1256
 
1257
1257
  output_select_kernel = get_select_kernel(wptype)
1258
1258
 
@@ -1283,7 +1283,6 @@ def test_skew(test, device, dtype, register_kernels=False):
1283
1283
 
1284
1284
  # make sure it gives you a cross product matrix:
1285
1285
  crossprodmat = outcomponents.numpy().reshape(3, 3)
1286
- v = np.array([1, 0, 0])
1287
1286
  assert_np_equal(
1288
1287
  np.matmul(crossprodmat, np.array([1, 0, 0])).reshape(-1),
1289
1288
  2 * np.cross(v3.numpy()[0], np.array([1, 0, 0])),
@@ -1353,9 +1352,9 @@ def test_transform_point(test, device, dtype, register_kernels=False):
1353
1352
  np.float64: 1.0e-8,
1354
1353
  }.get(dtype, 0)
1355
1354
 
1356
- wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
1357
- vec3 = wp.types.vector(length=3, dtype=wptype)
1358
- mat44 = wp.types.matrix(shape=(4, 4), dtype=wptype)
1355
+ wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
1356
+ vec3 = wp._src.types.vector(length=3, dtype=wptype)
1357
+ mat44 = wp._src.types.matrix(shape=(4, 4), dtype=wptype)
1359
1358
 
1360
1359
  output_select_kernel = get_select_kernel(wptype)
1361
1360
 
@@ -1414,9 +1413,9 @@ def test_transform_vector(test, device, dtype, register_kernels=False):
1414
1413
  np.float64: 1.0e-8,
1415
1414
  }.get(dtype, 0)
1416
1415
 
1417
- wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
1418
- vec3 = wp.types.vector(length=3, dtype=wptype)
1419
- mat44 = wp.types.matrix(shape=(4, 4), dtype=wptype)
1416
+ wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
1417
+ vec3 = wp._src.types.vector(length=3, dtype=wptype)
1418
+ mat44 = wp._src.types.matrix(shape=(4, 4), dtype=wptype)
1420
1419
 
1421
1420
  output_select_kernel = get_select_kernel(wptype)
1422
1421
 
@@ -1466,22 +1465,13 @@ def test_transform_vector(test, device, dtype, register_kernels=False):
1466
1465
 
1467
1466
 
1468
1467
  @wp.kernel
1469
- def test_matrix_mutation(expected: wp.types.matrix(shape=(10, 3), dtype=float)):
1468
+ def test_matrix_mutation(expected: wp._src.types.matrix(shape=(10, 3), dtype=float)):
1470
1469
  m = wp.matrix(shape=(10, 3), dtype=float)
1471
1470
 
1472
1471
  # test direct element indexing
1473
1472
  m[0, 0] = 1.0
1474
- m[0, 1] = 2.0
1475
- m[0, 2] = 3.0
1476
-
1477
- # The nested indexing (matrix->vector->scalar) below does not
1478
- # currently modify m because m[0] returns row vector by
1479
- # value rather than reference, this is different from NumPy
1480
- # which always returns by ref. Not clear how we can support
1481
- # this as well as auto-diff.
1482
-
1483
- # m[0][1] = 2.0
1484
- # m[0][2] = 3.0
1473
+ m[0][1] = 2.0
1474
+ m[0][2] = 3.0
1485
1475
 
1486
1476
  # test setting rows
1487
1477
  for i in range(1, 10):
@@ -3443,7 +3433,7 @@ class TestMat(unittest.TestCase):
3443
3433
  self.assertSequenceEqual(m, ((0.0, 1.0), (2.0, 3.0)))
3444
3434
 
3445
3435
 
3446
- mat103 = wp.types.matrix(shape=(10, 3), dtype=float)
3436
+ mat103 = wp._src.types.matrix(shape=(10, 3), dtype=float)
3447
3437
  add_kernel_test(
3448
3438
  TestMat,
3449
3439
  test_matrix_mutation,
@@ -419,11 +419,10 @@ def test_quat_constructor(test, device, dtype, register_kernels=False):
419
419
  np.float64: 1.0e-8,
420
420
  }.get(dtype, 0)
421
421
 
422
- wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
423
- mat44 = wp.types.matrix(shape=(4, 4), dtype=wptype)
424
- vec4 = wp.types.vector(length=4, dtype=wptype)
425
- vec3 = wp.types.vector(length=3, dtype=wptype)
426
- quat = wp.types.quaternion(dtype=wptype)
422
+ wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
423
+ vec4 = wp._src.types.vector(length=4, dtype=wptype)
424
+ vec3 = wp._src.types.vector(length=3, dtype=wptype)
425
+ quat = wp._src.types.quaternion(dtype=wptype)
427
426
 
428
427
  output_select_kernel = get_select_kernel(wptype)
429
428
 
@@ -81,7 +81,7 @@ def test_constructors_default_precision():
81
81
 
82
82
 
83
83
  @wp.kernel
84
- def test_matrix_mutation(expected: wp.types.matrix(shape=(10, 3), dtype=float)):
84
+ def test_matrix_mutation(expected: wp._src.types.matrix(shape=(10, 3), dtype=float)):
85
85
  m = wp.matrix(shape=(10, 3), dtype=float)
86
86
 
87
87
  # test direct element indexing