warp-lang 0.9.0__py3-none-win_amd64.whl → 0.11.0__py3-none-win_amd64.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 (315) hide show
  1. warp/__init__.py +15 -7
  2. warp/__init__.pyi +1 -0
  3. warp/bin/warp-clang.dll +0 -0
  4. warp/bin/warp.dll +0 -0
  5. warp/build.py +22 -443
  6. warp/build_dll.py +384 -0
  7. warp/builtins.py +998 -488
  8. warp/codegen.py +1307 -739
  9. warp/config.py +5 -3
  10. warp/constants.py +6 -0
  11. warp/context.py +1291 -548
  12. warp/dlpack.py +31 -31
  13. warp/fabric.py +326 -0
  14. warp/fem/__init__.py +27 -0
  15. warp/fem/cache.py +389 -0
  16. warp/fem/dirichlet.py +181 -0
  17. warp/fem/domain.py +263 -0
  18. warp/fem/field/__init__.py +101 -0
  19. warp/fem/field/field.py +149 -0
  20. warp/fem/field/nodal_field.py +299 -0
  21. warp/fem/field/restriction.py +21 -0
  22. warp/fem/field/test.py +181 -0
  23. warp/fem/field/trial.py +183 -0
  24. warp/fem/geometry/__init__.py +19 -0
  25. warp/fem/geometry/closest_point.py +70 -0
  26. warp/fem/geometry/deformed_geometry.py +271 -0
  27. warp/fem/geometry/element.py +744 -0
  28. warp/fem/geometry/geometry.py +186 -0
  29. warp/fem/geometry/grid_2d.py +373 -0
  30. warp/fem/geometry/grid_3d.py +435 -0
  31. warp/fem/geometry/hexmesh.py +953 -0
  32. warp/fem/geometry/partition.py +376 -0
  33. warp/fem/geometry/quadmesh_2d.py +532 -0
  34. warp/fem/geometry/tetmesh.py +840 -0
  35. warp/fem/geometry/trimesh_2d.py +577 -0
  36. warp/fem/integrate.py +1616 -0
  37. warp/fem/operator.py +191 -0
  38. warp/fem/polynomial.py +213 -0
  39. warp/fem/quadrature/__init__.py +2 -0
  40. warp/fem/quadrature/pic_quadrature.py +245 -0
  41. warp/fem/quadrature/quadrature.py +294 -0
  42. warp/fem/space/__init__.py +292 -0
  43. warp/fem/space/basis_space.py +489 -0
  44. warp/fem/space/collocated_function_space.py +105 -0
  45. warp/fem/space/dof_mapper.py +236 -0
  46. warp/fem/space/function_space.py +145 -0
  47. warp/fem/space/grid_2d_function_space.py +267 -0
  48. warp/fem/space/grid_3d_function_space.py +306 -0
  49. warp/fem/space/hexmesh_function_space.py +352 -0
  50. warp/fem/space/partition.py +350 -0
  51. warp/fem/space/quadmesh_2d_function_space.py +369 -0
  52. warp/fem/space/restriction.py +160 -0
  53. warp/fem/space/shape/__init__.py +15 -0
  54. warp/fem/space/shape/cube_shape_function.py +738 -0
  55. warp/fem/space/shape/shape_function.py +103 -0
  56. warp/fem/space/shape/square_shape_function.py +611 -0
  57. warp/fem/space/shape/tet_shape_function.py +567 -0
  58. warp/fem/space/shape/triangle_shape_function.py +429 -0
  59. warp/fem/space/tetmesh_function_space.py +292 -0
  60. warp/fem/space/topology.py +295 -0
  61. warp/fem/space/trimesh_2d_function_space.py +221 -0
  62. warp/fem/types.py +77 -0
  63. warp/fem/utils.py +495 -0
  64. warp/native/array.h +164 -55
  65. warp/native/builtin.h +150 -174
  66. warp/native/bvh.cpp +75 -328
  67. warp/native/bvh.cu +406 -23
  68. warp/native/bvh.h +37 -45
  69. warp/native/clang/clang.cpp +136 -24
  70. warp/native/crt.cpp +1 -76
  71. warp/native/crt.h +111 -104
  72. warp/native/cuda_crt.h +1049 -0
  73. warp/native/cuda_util.cpp +15 -3
  74. warp/native/cuda_util.h +3 -1
  75. warp/native/cutlass/tools/library/scripts/conv2d_operation.py +463 -0
  76. warp/native/cutlass/tools/library/scripts/conv3d_operation.py +321 -0
  77. warp/native/cutlass/tools/library/scripts/gemm_operation.py +988 -0
  78. warp/native/cutlass/tools/library/scripts/generator.py +4625 -0
  79. warp/native/cutlass/tools/library/scripts/library.py +799 -0
  80. warp/native/cutlass/tools/library/scripts/manifest.py +402 -0
  81. warp/native/cutlass/tools/library/scripts/pycutlass/docs/source/conf.py +96 -0
  82. warp/native/cutlass/tools/library/scripts/pycutlass/profile/conv/conv2d_f16_sm80.py +106 -0
  83. warp/native/cutlass/tools/library/scripts/pycutlass/profile/gemm/gemm_f32_sm80.py +91 -0
  84. warp/native/cutlass/tools/library/scripts/pycutlass/setup.py +80 -0
  85. warp/native/cutlass/tools/library/scripts/pycutlass/src/pycutlass/__init__.py +48 -0
  86. warp/native/cutlass/tools/library/scripts/pycutlass/src/pycutlass/arguments.py +118 -0
  87. warp/native/cutlass/tools/library/scripts/pycutlass/src/pycutlass/c_types.py +241 -0
  88. warp/native/cutlass/tools/library/scripts/pycutlass/src/pycutlass/compiler.py +432 -0
  89. warp/native/cutlass/tools/library/scripts/pycutlass/src/pycutlass/conv2d_operation.py +631 -0
  90. warp/native/cutlass/tools/library/scripts/pycutlass/src/pycutlass/epilogue.py +1026 -0
  91. warp/native/cutlass/tools/library/scripts/pycutlass/src/pycutlass/frontend.py +104 -0
  92. warp/native/cutlass/tools/library/scripts/pycutlass/src/pycutlass/gemm_operation.py +1276 -0
  93. warp/native/cutlass/tools/library/scripts/pycutlass/src/pycutlass/library.py +744 -0
  94. warp/native/cutlass/tools/library/scripts/pycutlass/src/pycutlass/memory_manager.py +74 -0
  95. warp/native/cutlass/tools/library/scripts/pycutlass/src/pycutlass/operation.py +110 -0
  96. warp/native/cutlass/tools/library/scripts/pycutlass/src/pycutlass/parser.py +619 -0
  97. warp/native/cutlass/tools/library/scripts/pycutlass/src/pycutlass/reduction_operation.py +398 -0
  98. warp/native/cutlass/tools/library/scripts/pycutlass/src/pycutlass/tensor_ref.py +70 -0
  99. warp/native/cutlass/tools/library/scripts/pycutlass/src/pycutlass/test/__init__.py +4 -0
  100. warp/native/cutlass/tools/library/scripts/pycutlass/src/pycutlass/test/conv2d_testbed.py +646 -0
  101. warp/native/cutlass/tools/library/scripts/pycutlass/src/pycutlass/test/gemm_grouped_testbed.py +235 -0
  102. warp/native/cutlass/tools/library/scripts/pycutlass/src/pycutlass/test/gemm_testbed.py +557 -0
  103. warp/native/cutlass/tools/library/scripts/pycutlass/src/pycutlass/test/profiler.py +70 -0
  104. warp/native/cutlass/tools/library/scripts/pycutlass/src/pycutlass/type_hint.py +39 -0
  105. warp/native/cutlass/tools/library/scripts/pycutlass/src/pycutlass/utils/__init__.py +1 -0
  106. warp/native/cutlass/tools/library/scripts/pycutlass/src/pycutlass/utils/device.py +76 -0
  107. warp/native/cutlass/tools/library/scripts/pycutlass/src/pycutlass/utils/reference_model.py +255 -0
  108. warp/native/cutlass/tools/library/scripts/pycutlass/test/conv/__init__.py +0 -0
  109. warp/native/cutlass/tools/library/scripts/pycutlass/test/conv/conv2d_dgrad_implicit_gemm_f16nhwc_f16nhwc_f16nhwc_tensor_op_f16_sm80.py +201 -0
  110. warp/native/cutlass/tools/library/scripts/pycutlass/test/conv/conv2d_dgrad_implicit_gemm_f16nhwc_f16nhwc_f32nhwc_tensor_op_f32_sm80.py +177 -0
  111. warp/native/cutlass/tools/library/scripts/pycutlass/test/conv/conv2d_dgrad_implicit_gemm_f32nhwc_f32nhwc_f32nhwc_simt_f32_sm80.py +98 -0
  112. warp/native/cutlass/tools/library/scripts/pycutlass/test/conv/conv2d_dgrad_implicit_gemm_tf32nhwc_tf32nhwc_f32nhwc_tensor_op_f32_sm80.py +95 -0
  113. warp/native/cutlass/tools/library/scripts/pycutlass/test/conv/conv2d_fprop_few_channels_f16nhwc_f16nhwc_f16nhwc_tensor_op_f32_sm80.py +163 -0
  114. warp/native/cutlass/tools/library/scripts/pycutlass/test/conv/conv2d_fprop_fixed_channels_f16nhwc_f16nhwc_f16nhwc_tensor_op_f32_sm80.py +187 -0
  115. warp/native/cutlass/tools/library/scripts/pycutlass/test/conv/conv2d_fprop_implicit_gemm_f16nhwc_f16nhwc_f16nhwc_tensor_op_f16_sm80.py +309 -0
  116. warp/native/cutlass/tools/library/scripts/pycutlass/test/conv/conv2d_fprop_implicit_gemm_f16nhwc_f16nhwc_f32nhwc_tensor_op_f32_sm80.py +54 -0
  117. warp/native/cutlass/tools/library/scripts/pycutlass/test/conv/conv2d_fprop_implicit_gemm_f32nhwc_f32nhwc_f32nhwc_simt_f32_sm80.py +96 -0
  118. warp/native/cutlass/tools/library/scripts/pycutlass/test/conv/conv2d_fprop_implicit_gemm_tf32nhwc_tf32nhwc_f32nhwc_tensor_op_f32_sm80.py +107 -0
  119. warp/native/cutlass/tools/library/scripts/pycutlass/test/conv/conv2d_strided_dgrad_implicit_gemm_f16nhwc_f16nhwc_f32nhwc_tensor_op_f32_sm80.py +253 -0
  120. warp/native/cutlass/tools/library/scripts/pycutlass/test/conv/conv2d_wgrad_implicit_gemm_f16nhwc_f16nhwc_f16nhwc_tensor_op_f16_sm80.py +97 -0
  121. warp/native/cutlass/tools/library/scripts/pycutlass/test/conv/conv2d_wgrad_implicit_gemm_f16nhwc_f16nhwc_f32nhwc_tensor_op_f32_sm80.py +242 -0
  122. warp/native/cutlass/tools/library/scripts/pycutlass/test/conv/conv2d_wgrad_implicit_gemm_f32nhwc_f32nhwc_f32nhwc_simt_f32_sm80.py +96 -0
  123. warp/native/cutlass/tools/library/scripts/pycutlass/test/conv/conv2d_wgrad_implicit_gemm_tf32nhwc_tf32nhwc_f32nhwc_tensor_op_f32_sm80.py +107 -0
  124. warp/native/cutlass/tools/library/scripts/pycutlass/test/conv/run_all_tests.py +10 -0
  125. warp/native/cutlass/tools/library/scripts/pycutlass/test/frontend/test_frontend.py +146 -0
  126. warp/native/cutlass/tools/library/scripts/pycutlass/test/gemm/__init__.py +0 -0
  127. warp/native/cutlass/tools/library/scripts/pycutlass/test/gemm/gemm_bf16_sm80.py +96 -0
  128. warp/native/cutlass/tools/library/scripts/pycutlass/test/gemm/gemm_f16_sm80.py +447 -0
  129. warp/native/cutlass/tools/library/scripts/pycutlass/test/gemm/gemm_f32_sm80.py +146 -0
  130. warp/native/cutlass/tools/library/scripts/pycutlass/test/gemm/gemm_f64_sm80.py +102 -0
  131. warp/native/cutlass/tools/library/scripts/pycutlass/test/gemm/gemm_grouped_sm80.py +203 -0
  132. warp/native/cutlass/tools/library/scripts/pycutlass/test/gemm/gemm_s8_sm80.py +229 -0
  133. warp/native/cutlass/tools/library/scripts/pycutlass/test/gemm/run_all_tests.py +9 -0
  134. warp/native/cutlass/tools/library/scripts/pycutlass/test/unit/test_sm80.py +453 -0
  135. warp/native/cutlass/tools/library/scripts/rank_2k_operation.py +398 -0
  136. warp/native/cutlass/tools/library/scripts/rank_k_operation.py +387 -0
  137. warp/native/cutlass/tools/library/scripts/rt.py +796 -0
  138. warp/native/cutlass/tools/library/scripts/symm_operation.py +400 -0
  139. warp/native/cutlass/tools/library/scripts/trmm_operation.py +407 -0
  140. warp/native/cutlass_gemm.cu +5 -3
  141. warp/native/exports.h +1240 -949
  142. warp/native/fabric.h +228 -0
  143. warp/native/hashgrid.cpp +4 -4
  144. warp/native/hashgrid.h +22 -2
  145. warp/native/initializer_array.h +2 -2
  146. warp/native/intersect.h +22 -7
  147. warp/native/intersect_adj.h +8 -8
  148. warp/native/intersect_tri.h +13 -16
  149. warp/native/marching.cu +157 -161
  150. warp/native/mat.h +119 -19
  151. warp/native/matnn.h +2 -2
  152. warp/native/mesh.cpp +108 -83
  153. warp/native/mesh.cu +243 -6
  154. warp/native/mesh.h +1547 -458
  155. warp/native/nanovdb/NanoVDB.h +1 -1
  156. warp/native/noise.h +272 -329
  157. warp/native/quat.h +51 -8
  158. warp/native/rand.h +45 -35
  159. warp/native/range.h +6 -2
  160. warp/native/reduce.cpp +157 -0
  161. warp/native/reduce.cu +348 -0
  162. warp/native/runlength_encode.cpp +62 -0
  163. warp/native/runlength_encode.cu +46 -0
  164. warp/native/scan.cu +11 -13
  165. warp/native/scan.h +1 -0
  166. warp/native/solid_angle.h +442 -0
  167. warp/native/sort.cpp +13 -0
  168. warp/native/sort.cu +9 -1
  169. warp/native/sparse.cpp +338 -0
  170. warp/native/sparse.cu +545 -0
  171. warp/native/spatial.h +2 -2
  172. warp/native/temp_buffer.h +30 -0
  173. warp/native/vec.h +126 -24
  174. warp/native/volume.h +120 -0
  175. warp/native/warp.cpp +658 -53
  176. warp/native/warp.cu +660 -68
  177. warp/native/warp.h +112 -12
  178. warp/optim/__init__.py +1 -0
  179. warp/optim/linear.py +922 -0
  180. warp/optim/sgd.py +92 -0
  181. warp/render/render_opengl.py +392 -152
  182. warp/render/render_usd.py +11 -11
  183. warp/sim/__init__.py +2 -2
  184. warp/sim/articulation.py +385 -185
  185. warp/sim/collide.py +21 -8
  186. warp/sim/import_mjcf.py +297 -106
  187. warp/sim/import_urdf.py +389 -210
  188. warp/sim/import_usd.py +198 -97
  189. warp/sim/inertia.py +17 -18
  190. warp/sim/integrator_euler.py +14 -8
  191. warp/sim/integrator_xpbd.py +161 -19
  192. warp/sim/model.py +795 -291
  193. warp/sim/optimizer.py +2 -6
  194. warp/sim/render.py +65 -3
  195. warp/sim/utils.py +3 -0
  196. warp/sparse.py +1227 -0
  197. warp/stubs.py +665 -223
  198. warp/tape.py +66 -15
  199. warp/tests/__main__.py +3 -6
  200. warp/tests/assets/curlnoise_golden.npy +0 -0
  201. warp/tests/assets/pnoise_golden.npy +0 -0
  202. warp/tests/assets/torus.usda +105 -105
  203. warp/tests/{test_class_kernel.py → aux_test_class_kernel.py} +9 -1
  204. warp/tests/aux_test_conditional_unequal_types_kernels.py +21 -0
  205. warp/tests/{test_dependent.py → aux_test_dependent.py} +2 -2
  206. warp/tests/{test_reference.py → aux_test_reference.py} +1 -1
  207. warp/tests/aux_test_unresolved_func.py +14 -0
  208. warp/tests/aux_test_unresolved_symbol.py +14 -0
  209. warp/tests/disabled_kinematics.py +239 -0
  210. warp/tests/run_coverage_serial.py +31 -0
  211. warp/tests/test_adam.py +103 -106
  212. warp/tests/test_arithmetic.py +128 -74
  213. warp/tests/test_array.py +1497 -211
  214. warp/tests/test_array_reduce.py +150 -0
  215. warp/tests/test_atomic.py +64 -28
  216. warp/tests/test_bool.py +99 -0
  217. warp/tests/test_builtins_resolution.py +1292 -0
  218. warp/tests/test_bvh.py +75 -43
  219. warp/tests/test_closest_point_edge_edge.py +54 -57
  220. warp/tests/test_codegen.py +233 -128
  221. warp/tests/test_compile_consts.py +28 -20
  222. warp/tests/test_conditional.py +108 -24
  223. warp/tests/test_copy.py +10 -12
  224. warp/tests/test_ctypes.py +112 -88
  225. warp/tests/test_dense.py +21 -14
  226. warp/tests/test_devices.py +98 -0
  227. warp/tests/test_dlpack.py +136 -108
  228. warp/tests/test_examples.py +277 -0
  229. warp/tests/test_fabricarray.py +955 -0
  230. warp/tests/test_fast_math.py +15 -11
  231. warp/tests/test_fem.py +1271 -0
  232. warp/tests/test_fp16.py +53 -19
  233. warp/tests/test_func.py +187 -74
  234. warp/tests/test_generics.py +194 -49
  235. warp/tests/test_grad.py +180 -116
  236. warp/tests/test_grad_customs.py +176 -0
  237. warp/tests/test_hash_grid.py +52 -37
  238. warp/tests/test_import.py +10 -23
  239. warp/tests/test_indexedarray.py +577 -24
  240. warp/tests/test_intersect.py +18 -9
  241. warp/tests/test_large.py +141 -0
  242. warp/tests/test_launch.py +251 -15
  243. warp/tests/test_lerp.py +64 -65
  244. warp/tests/test_linear_solvers.py +154 -0
  245. warp/tests/test_lvalue.py +493 -0
  246. warp/tests/test_marching_cubes.py +12 -13
  247. warp/tests/test_mat.py +508 -2778
  248. warp/tests/test_mat_lite.py +115 -0
  249. warp/tests/test_mat_scalar_ops.py +2889 -0
  250. warp/tests/test_math.py +103 -9
  251. warp/tests/test_matmul.py +305 -69
  252. warp/tests/test_matmul_lite.py +410 -0
  253. warp/tests/test_mesh.py +71 -14
  254. warp/tests/test_mesh_query_aabb.py +41 -25
  255. warp/tests/test_mesh_query_point.py +325 -34
  256. warp/tests/test_mesh_query_ray.py +39 -22
  257. warp/tests/test_mlp.py +30 -22
  258. warp/tests/test_model.py +92 -89
  259. warp/tests/test_modules_lite.py +39 -0
  260. warp/tests/test_multigpu.py +88 -114
  261. warp/tests/test_noise.py +12 -11
  262. warp/tests/test_operators.py +16 -20
  263. warp/tests/test_options.py +11 -11
  264. warp/tests/test_pinned.py +17 -18
  265. warp/tests/test_print.py +32 -11
  266. warp/tests/test_quat.py +275 -129
  267. warp/tests/test_rand.py +18 -16
  268. warp/tests/test_reload.py +38 -34
  269. warp/tests/test_rounding.py +50 -43
  270. warp/tests/test_runlength_encode.py +190 -0
  271. warp/tests/test_smoothstep.py +9 -11
  272. warp/tests/test_snippet.py +143 -0
  273. warp/tests/test_sparse.py +460 -0
  274. warp/tests/test_spatial.py +276 -243
  275. warp/tests/test_streams.py +110 -85
  276. warp/tests/test_struct.py +331 -85
  277. warp/tests/test_tape.py +39 -21
  278. warp/tests/test_torch.py +118 -89
  279. warp/tests/test_transient_module.py +12 -13
  280. warp/tests/test_types.py +614 -0
  281. warp/tests/test_utils.py +494 -0
  282. warp/tests/test_vec.py +354 -1987
  283. warp/tests/test_vec_lite.py +73 -0
  284. warp/tests/test_vec_scalar_ops.py +2099 -0
  285. warp/tests/test_volume.py +457 -293
  286. warp/tests/test_volume_write.py +124 -134
  287. warp/tests/unittest_serial.py +35 -0
  288. warp/tests/unittest_suites.py +341 -0
  289. warp/tests/unittest_utils.py +568 -0
  290. warp/tests/unused_test_misc.py +71 -0
  291. warp/tests/{test_debug.py → walkthough_debug.py} +3 -17
  292. warp/thirdparty/appdirs.py +36 -45
  293. warp/thirdparty/unittest_parallel.py +549 -0
  294. warp/torch.py +72 -30
  295. warp/types.py +1744 -713
  296. warp/utils.py +360 -350
  297. warp_lang-0.11.0.dist-info/LICENSE.md +36 -0
  298. warp_lang-0.11.0.dist-info/METADATA +238 -0
  299. warp_lang-0.11.0.dist-info/RECORD +332 -0
  300. {warp_lang-0.9.0.dist-info → warp_lang-0.11.0.dist-info}/WHEEL +1 -1
  301. warp/bin/warp-clang.exp +0 -0
  302. warp/bin/warp-clang.lib +0 -0
  303. warp/bin/warp.exp +0 -0
  304. warp/bin/warp.lib +0 -0
  305. warp/tests/test_all.py +0 -215
  306. warp/tests/test_array_scan.py +0 -60
  307. warp/tests/test_base.py +0 -208
  308. warp/tests/test_unresolved_func.py +0 -7
  309. warp/tests/test_unresolved_symbol.py +0 -7
  310. warp_lang-0.9.0.dist-info/METADATA +0 -20
  311. warp_lang-0.9.0.dist-info/RECORD +0 -177
  312. /warp/tests/{test_compile_consts_dummy.py → aux_test_compile_consts_dummy.py} +0 -0
  313. /warp/tests/{test_reference_reference.py → aux_test_reference_reference.py} +0 -0
  314. /warp/tests/{test_square.py → aux_test_square.py} +0 -0
  315. {warp_lang-0.9.0.dist-info → warp_lang-0.11.0.dist-info}/top_level.txt +0 -0
warp/bin/warp.exp DELETED
Binary file
warp/bin/warp.lib DELETED
Binary file
warp/tests/test_all.py DELETED
@@ -1,215 +0,0 @@
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.
7
-
8
- import unittest
9
- import os
10
-
11
- import warp as wp
12
-
13
- # Uncomment to run the tests on all devices
14
- # import warp.tests.test_base
15
- # warp.tests.test_base.test_mode = "all"
16
-
17
- from warp.tests.test_base import get_test_devices
18
-
19
- import warp.tests.test_codegen
20
- import warp.tests.test_mesh_query_aabb
21
- import warp.tests.test_mesh_query_point
22
- import warp.tests.test_mesh_query_ray
23
- import warp.tests.test_conditional
24
- import warp.tests.test_operators
25
- import warp.tests.test_rounding
26
- import warp.tests.test_hash_grid
27
- import warp.tests.test_ctypes
28
- import warp.tests.test_rand
29
- import warp.tests.test_noise
30
- import warp.tests.test_tape
31
- import warp.tests.test_compile_consts
32
- import warp.tests.test_volume
33
- import warp.tests.test_mlp
34
- import warp.tests.test_grad
35
- import warp.tests.test_intersect
36
- import warp.tests.test_array
37
- import warp.tests.test_launch
38
- import warp.tests.test_import
39
- import warp.tests.test_func
40
- import warp.tests.test_fp16
41
- import warp.tests.test_reload
42
- import warp.tests.test_struct
43
- import warp.tests.test_closest_point_edge_edge
44
- import warp.tests.test_multigpu
45
- import warp.tests.test_quat
46
- import warp.tests.test_atomic
47
- import warp.tests.test_adam
48
- import warp.tests.test_transient_module
49
- import warp.tests.test_lerp
50
- import warp.tests.test_smoothstep
51
- import warp.tests.test_model
52
- import warp.tests.test_fast_math
53
- import warp.tests.test_streams
54
- import warp.tests.test_torch
55
- import warp.tests.test_pinned
56
- import warp.tests.test_matmul
57
- import warp.tests.test_options
58
- import warp.tests.test_dlpack
59
- import warp.tests.test_vec
60
- import warp.tests.test_mat
61
- import warp.tests.test_arithmetic
62
- import warp.tests.test_spatial
63
- import warp.tests.test_math
64
- import warp.tests.test_generics
65
- import warp.tests.test_indexedarray
66
- import warp.tests.test_copy
67
- import warp.tests.test_mesh
68
-
69
-
70
- def register_tests(parent):
71
- tests = []
72
-
73
- tests.append(warp.tests.test_codegen.register(parent))
74
- tests.append(warp.tests.test_mesh_query_aabb.register(parent))
75
- tests.append(warp.tests.test_mesh_query_point.register(parent))
76
- tests.append(warp.tests.test_mesh_query_ray.register(parent))
77
- tests.append(warp.tests.test_conditional.register(parent))
78
- tests.append(warp.tests.test_operators.register(parent))
79
- tests.append(warp.tests.test_rounding.register(parent))
80
- tests.append(warp.tests.test_hash_grid.register(parent))
81
- tests.append(warp.tests.test_ctypes.register(parent))
82
- tests.append(warp.tests.test_rand.register(parent))
83
- tests.append(warp.tests.test_noise.register(parent))
84
- tests.append(warp.tests.test_tape.register(parent))
85
- tests.append(warp.tests.test_compile_consts.register(parent))
86
- tests.append(warp.tests.test_volume.register(parent))
87
- tests.append(warp.tests.test_mlp.register(parent))
88
- tests.append(warp.tests.test_grad.register(parent))
89
- tests.append(warp.tests.test_intersect.register(parent))
90
- tests.append(warp.tests.test_array.register(parent))
91
- tests.append(warp.tests.test_launch.register(parent))
92
- tests.append(warp.tests.test_import.register(parent))
93
- tests.append(warp.tests.test_func.register(parent))
94
- tests.append(warp.tests.test_fp16.register(parent))
95
- tests.append(warp.tests.test_reload.register(parent))
96
- tests.append(warp.tests.test_struct.register(parent))
97
- tests.append(warp.tests.test_closest_point_edge_edge.register(parent))
98
- tests.append(warp.tests.test_multigpu.register(parent))
99
- tests.append(warp.tests.test_quat.register(parent))
100
- tests.append(warp.tests.test_atomic.register(parent))
101
- tests.append(warp.tests.test_adam.register(parent))
102
- tests.append(warp.tests.test_transient_module.register(parent))
103
- tests.append(warp.tests.test_lerp.register(parent))
104
- tests.append(warp.tests.test_smoothstep.register(parent))
105
- tests.append(warp.tests.test_model.register(parent))
106
- tests.append(warp.tests.test_fast_math.register(parent))
107
- tests.append(warp.tests.test_streams.register(parent))
108
- tests.append(warp.tests.test_torch.register(parent))
109
- tests.append(warp.tests.test_pinned.register(parent))
110
- tests.append(warp.tests.test_matmul.register(parent))
111
- tests.append(warp.tests.test_options.register(parent))
112
- tests.append(warp.tests.test_dlpack.register(parent))
113
- tests.append(warp.tests.test_vec.register(parent))
114
- tests.append(warp.tests.test_mat.register(parent))
115
- tests.append(warp.tests.test_arithmetic.register(parent))
116
- tests.append(warp.tests.test_spatial.register(parent))
117
- tests.append(warp.tests.test_math.register(parent))
118
- tests.append(warp.tests.test_generics.register(parent))
119
- tests.append(warp.tests.test_indexedarray.register(parent))
120
- tests.append(warp.tests.test_copy.register(parent))
121
- tests.append(warp.tests.test_mesh.register(parent))
122
-
123
- return tests
124
-
125
-
126
- class TeamCityTestResult(unittest.TextTestResult):
127
- """This class will report each test result to TeamCity"""
128
-
129
- def __init__(self, stream, descriptions, verbosity):
130
- super(TeamCityTestResult, self).__init__(stream, descriptions, verbosity)
131
-
132
- def addSuccess(self, test):
133
- super(TeamCityTestResult, self).addSuccess(test)
134
- self.reportSuccess(test)
135
-
136
- def addError(self, test, err):
137
- super(TeamCityTestResult, self).addError(test, err)
138
- self.reportFailure(test)
139
-
140
- def addFailure(self, test, err):
141
- super(TeamCityTestResult, self).addFailure(test, err)
142
- self.reportFailure(test)
143
-
144
- def addSkip(self, test, reason):
145
- super(TeamCityTestResult, self).addSkip(test, reason)
146
-
147
- def addExpectedFailure(self, test, err):
148
- super(TeamCityTestResult, self).addExpectedFailure(test, err)
149
- self.reportSuccess(test)
150
-
151
- def addUnexpectedSuccess(self, test):
152
- super(TeamCityTestResult, self).addUnexpectedSuccess(test)
153
- self.reportFailure(test)
154
-
155
- def reportSuccess(self, test):
156
- test_id = test.id()
157
- print(f"##teamcity[testStarted name='{test_id}']")
158
- print(f"##teamcity[testFinished name='{test_id}']")
159
-
160
- def reportFailure(self, test):
161
- test_id = test.id()
162
- print(f"##teamcity[testStarted name='{test_id}']")
163
- print(f"##teamcity[testFailed name='{test_id}']")
164
- print(f"##teamcity[testFinished name='{test_id}']")
165
-
166
-
167
- class TeamCityTestRunner(unittest.TextTestRunner):
168
- """Test runner that will report test results to TeamCity if running in TeamCity"""
169
-
170
- def __init__(self, **kwargs):
171
- self.running_in_teamcity = os.environ.get("TEAMCITY_VERSION") is not None
172
- if self.running_in_teamcity:
173
- kwargs["resultclass"] = TeamCityTestResult
174
- super(TeamCityTestRunner, self).__init__(**kwargs)
175
-
176
- def run(self, test, name):
177
- if self.running_in_teamcity:
178
- print(f"##teamcity[testSuiteStarted name='{name}']")
179
-
180
- result = super(TeamCityTestRunner, self).run(test)
181
-
182
- if self.running_in_teamcity:
183
- print(f"##teamcity[testSuiteFinished name='{name}']")
184
- if not result.wasSuccessful():
185
- print(f"##teamcity[buildStatus status='FAILURE']")
186
-
187
- return result
188
-
189
-
190
- def run():
191
- test_suite = unittest.TestSuite()
192
-
193
- tests = register_tests(unittest.TestCase)
194
-
195
- for test in tests:
196
- test_suite.addTest(unittest.defaultTestLoader.loadTestsFromTestCase(test))
197
-
198
- # force rebuild of all kernels
199
- wp.build.clear_kernel_cache()
200
-
201
- # load all modules
202
- for device in get_test_devices():
203
- wp.force_load(device)
204
-
205
- runner = TeamCityTestRunner(verbosity=2, failfast=False)
206
- ret = not runner.run(test_suite, "WarpTests").wasSuccessful()
207
- return ret
208
-
209
-
210
- if __name__ == "__main__":
211
- ret = run()
212
-
213
- import sys
214
-
215
- sys.exit(ret)
@@ -1,60 +0,0 @@
1
- import sys
2
- import os
3
-
4
- sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), "..")))
5
-
6
- import warp as wp
7
- import numpy as np
8
-
9
- wp.config.mode = "release"
10
- wp.config.verbose = True
11
- wp.config.verify_cuda = True
12
-
13
- wp.init()
14
-
15
- n = 100000
16
- num_runs = 16
17
-
18
-
19
- def test_for_type(dtype, device):
20
- dtype_str = dtype.__name__
21
- if dtype == int:
22
- values = np.random.randint(-1e6, 1e6, n, dtype=dtype)
23
- else:
24
- values = np.random.uniform(-1, 1, n)
25
-
26
- results_ref = np.cumsum(values)
27
-
28
- in_values = wp.array(values, dtype=dtype, device=device)
29
- out_values_inc = wp.zeros(len(values), dtype=dtype, device=device)
30
- out_values_exc = wp.zeros(len(values), dtype=dtype, device=device)
31
-
32
- wp.utils.array_scan(in_values, out_values_inc, True)
33
- wp.utils.array_scan(in_values, out_values_exc, False)
34
-
35
- tolerance = 0 if dtype == int else 1e-3
36
-
37
- results_inc = out_values_inc.numpy().squeeze()
38
- results_exc = out_values_exc.numpy().squeeze()
39
- error_inc = np.max(np.abs(results_inc - results_ref)) / abs(results_ref[-1])
40
- error_exc = max(np.max(np.abs(results_exc[1:] - results_ref[:-1])), abs(results_exc[0])) / abs(results_ref[-2])
41
- if error_inc > tolerance:
42
- print(f"FAIL! Max error in inclusive scan for {dtype_str}: {error_inc}")
43
- else:
44
- print(f"PASS! Max error in inclusive scan for {dtype_str}: {error_inc}")
45
-
46
- if error_exc > tolerance:
47
- print(f"FAIL! Max error in exclusive scan for {dtype_str}: {error_exc}")
48
- # else:
49
- # print(f"PASS! Max error in exclusive scan for {dtype_str}: {error_exc}")
50
-
51
-
52
- np.random.seed(1008)
53
- for device in ("cuda", "cpu"):
54
- print(f"\n\nTesting {device}")
55
- for i in range(num_runs):
56
- print(f"Run: {i+1}")
57
- print("---------")
58
-
59
- test_for_type(int, device)
60
- test_for_type(float, device)
warp/tests/test_base.py DELETED
@@ -1,208 +0,0 @@
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.
7
-
8
- import unittest
9
- import os
10
- import sys
11
-
12
- import numpy as np
13
- import warp as wp
14
-
15
- # default test mode (see get_test_devices())
16
- # "basic" - only run on CPU and first GPU device
17
- # "unique" - run on CPU and all unique GPU arches
18
- # "all" - run on all devices
19
- test_mode = "basic"
20
-
21
-
22
- def get_test_devices(mode=None):
23
- if mode is None:
24
- global test_mode
25
- mode = test_mode
26
-
27
- devices = []
28
-
29
- # only run on CPU and first GPU device
30
- if mode == "basic":
31
- if wp.is_cpu_available():
32
- devices.append(wp.get_device("cpu"))
33
- if wp.is_cuda_available():
34
- devices.append(wp.get_device("cuda:0"))
35
-
36
- # run on CPU and all unique GPU arches
37
- elif mode == "unique":
38
- if wp.is_cpu_available():
39
- devices.append(wp.get_device("cpu"))
40
-
41
- cuda_devices = wp.get_cuda_devices()
42
-
43
- unique_cuda_devices = {}
44
- for d in cuda_devices:
45
- if d.arch not in unique_cuda_devices:
46
- unique_cuda_devices[d.arch] = d
47
-
48
- devices.extend(list(unique_cuda_devices.values()))
49
-
50
- # run on all devices
51
- elif mode == "all":
52
- devices = wp.get_devices()
53
-
54
- return devices
55
-
56
-
57
- # redirects and captures all stdout output (including from C-libs)
58
- class StdOutCapture:
59
- def begin(self):
60
- # save original
61
- self.saved = sys.stdout
62
- self.target = os.dup(self.saved.fileno())
63
-
64
- # create temporary capture stream
65
- import io, tempfile
66
-
67
- self.tempfile = io.TextIOWrapper(
68
- tempfile.TemporaryFile(buffering=0), encoding="utf-8", errors="replace", newline="", write_through=True
69
- )
70
-
71
- os.dup2(self.tempfile.fileno(), self.saved.fileno())
72
-
73
- sys.stdout = self.tempfile
74
-
75
- def end(self):
76
- os.dup2(self.target, self.saved.fileno())
77
- os.close(self.target)
78
-
79
- self.tempfile.seek(0)
80
- res = self.tempfile.buffer.read()
81
- self.tempfile.close()
82
-
83
- sys.stdout = self.saved
84
-
85
- return str(res.decode("utf-8"))
86
-
87
-
88
- class CheckOutput:
89
- def __init__(self, test):
90
- self.test = test
91
-
92
- def __enter__(self):
93
- # wp.force_load()
94
-
95
- self.capture = StdOutCapture()
96
- self.capture.begin()
97
-
98
- def __exit__(self, exc_type, exc_value, traceback):
99
- # ensure any stdout output is flushed
100
- wp.synchronize()
101
-
102
- s = self.capture.end()
103
- if s != "":
104
- print(s.rstrip())
105
-
106
- # fail if test produces unexpected output (e.g.: from wp.expect_eq() builtins)
107
- # we allow strings starting of the form "Module xxx load on device xxx"
108
- # for lazy loaded modules
109
- if s != "" and not s.startswith("Module"):
110
- self.test.fail(f"Unexpected output:\n'{s.rstrip()}'")
111
-
112
-
113
- def assert_array_equal(result, expect):
114
- a = result.numpy()
115
- b = expect.numpy()
116
-
117
- if (a == b).all() == False:
118
- raise AssertionError(f"Unexpected result, got: {a} expected: {b}")
119
-
120
-
121
- def assert_np_equal(result, expect, tol=0.0):
122
- a = result.flatten()
123
- b = expect.flatten()
124
-
125
- if tol == 0.0:
126
- if (a == b).all() == False:
127
- raise AssertionError(f"Unexpected result, got: {a} expected: {b}")
128
-
129
- else:
130
- delta = a - b
131
- err = np.max(np.abs(delta))
132
- if err > tol:
133
- raise AssertionError(
134
- f"Maximum expected error exceeds tolerance got: {a}, expected: {b}, with err: {err} > {tol}"
135
- )
136
-
137
-
138
- def create_test_func(func, device, **kwargs):
139
- # pass args to func
140
- def test_func(self):
141
- with CheckOutput(self):
142
- func(self, device, **kwargs)
143
-
144
- return test_func
145
-
146
-
147
- def sanitize_identifier(s):
148
- """replace all non-identifier characters with '_'"""
149
-
150
- s = str(s)
151
- if s.isidentifier():
152
- return s
153
- else:
154
- import re
155
-
156
- return re.sub("\W|^(?=\d)", "_", s)
157
-
158
-
159
- def add_function_test(cls, name, func, devices=None, **kwargs):
160
- if devices is None:
161
- setattr(cls, name, create_test_func(func, None, **kwargs))
162
- else:
163
- for device in devices:
164
- setattr(cls, name + "_" + sanitize_identifier(device), create_test_func(func, device, **kwargs))
165
-
166
-
167
- def add_kernel_test(cls, kernel, dim, name=None, expect=None, inputs=None, devices=None):
168
- def test_func(self, device):
169
- args = []
170
- if inputs:
171
- args.extend(inputs)
172
-
173
- if expect:
174
- # allocate outputs to match results
175
- result = wp.array(expect, dtype=int, device=device)
176
- output = wp.zeros_like(result)
177
-
178
- args.append(output)
179
-
180
- # force load so that we don't generate any log output during launch
181
- kernel.module.load(device)
182
-
183
- with CheckOutput(self):
184
- wp.launch(kernel, dim=dim, inputs=args, device=device)
185
-
186
- # check output values
187
- if expect:
188
- assert_array_equal(output, result)
189
-
190
- if name is None:
191
- name = kernel.key
192
-
193
- # device is required for kernel tests, so use all devices if none were given
194
- if devices is None:
195
- devices = get_test_devices()
196
-
197
- # register test func with class for the given devices
198
- for d in devices:
199
- # use a lambda to forward the device to the inner test function
200
- test_lambda = lambda test, device=d: test_func(test, device)
201
- setattr(cls, name + "_" + sanitize_identifier(d), test_lambda)
202
-
203
-
204
- # helper that first calls the test function to generate all kernel permuations
205
- # so that compilation is done in one-shot instead of per-test
206
- def add_function_test_register_kernel(cls, name, func, devices=None, **kwargs):
207
- func(None, None, **kwargs, register_kernels=True)
208
- add_function_test(cls, name, func, devices=devices, **kwargs)
@@ -1,7 +0,0 @@
1
- import warp as wp
2
-
3
-
4
- @wp.kernel
5
- def unresolved_func_kernel():
6
- # this should trigger an exception due to unresolved function
7
- x = wp.missing_func(42)
@@ -1,7 +0,0 @@
1
- import warp as wp
2
-
3
-
4
- @wp.kernel
5
- def unresolved_symbol_kernel():
6
- # this should trigger an exception due to unresolved symbol
7
- x = missing_symbol
@@ -1,20 +0,0 @@
1
- Metadata-Version: 2.1
2
- Name: warp-lang
3
- Version: 0.9.0
4
- Summary: A Python framework for high-performance simulation and graphics programming
5
- Home-page: https://github.com/NVIDIA/warp
6
- Author: NVIDIA
7
- Author-email: mmacklin@nvidia.com
8
- License: NVSCL
9
- Project-URL: Documentation, https://nvidia.github.io/warp
10
- Classifier: Programming Language :: Python :: 3.7
11
- Classifier: Programming Language :: Python :: 3.8
12
- Classifier: Programming Language :: Python :: 3.9
13
- Classifier: Programming Language :: Python :: 3.10
14
- Classifier: Programming Language :: Python :: 3.11
15
- Classifier: License :: Other/Proprietary License
16
- Classifier: Operating System :: OS Independent
17
- Requires-Python: >=3.7
18
- Description-Content-Type: text/markdown
19
- Requires-Dist: numpy
20
-