warp-lang 1.9.1__py3-none-win_amd64.whl → 1.10.0rc2__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 (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.dll +0 -0
  92. warp/bin/warp.dll +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
warp/native/warp.cpp CHANGED
@@ -20,6 +20,7 @@
20
20
  #include "array.h"
21
21
  #include "exports.h"
22
22
  #include "error.h"
23
+ #include "version.h"
23
24
 
24
25
  #include <stdlib.h>
25
26
  #include <string.h>
@@ -116,8 +117,27 @@ float wp_half_bits_to_float(uint16_t u)
116
117
  return o.f;
117
118
  }
118
119
 
119
- int wp_init()
120
+ int wp_init(const char* expected_version)
120
121
  {
122
+ // Check version mismatch (guard against NULL expected_version)
123
+ if (expected_version != NULL && strcmp(expected_version, WP_VERSION_STRING) != 0)
124
+ {
125
+ fprintf(stderr,
126
+ "Warp Warning: Version mismatch detected in Warp native library.\n"
127
+ " Expected Warp version: %s\n"
128
+ " Loaded native library version: %s\n"
129
+ " This may occur due to environment variables or multiple Warp installations.\n",
130
+ expected_version,
131
+ WP_VERSION_STRING);
132
+ }
133
+ else if (expected_version == NULL)
134
+ {
135
+ fprintf(stderr,
136
+ "Warp Warning: Version check skipped (NULL version provided).\n"
137
+ " Loaded native library version: %s\n",
138
+ WP_VERSION_STRING);
139
+ }
140
+
121
141
  #if WP_ENABLE_CUDA
122
142
  int cuda_init(void);
123
143
  // note: it's safe to proceed even if CUDA initialization failed
@@ -131,6 +151,11 @@ void wp_shutdown()
131
151
  {
132
152
  }
133
153
 
154
+ const char* wp_version()
155
+ {
156
+ return WP_VERSION_STRING;
157
+ }
158
+
134
159
  const char* wp_get_error_string()
135
160
  {
136
161
  return wp::get_error_string();
@@ -260,14 +285,14 @@ void wp_array_scan_float_host(uint64_t in, uint64_t out, int len, bool inclusive
260
285
  static void array_copy_nd(void* dst, const void* src,
261
286
  const int* dst_strides, const int* src_strides,
262
287
  const int*const* dst_indices, const int*const* src_indices,
263
- const int* shape, int ndim, int elem_size)
288
+ const int* shape, int ndim, size_t elem_size)
264
289
  {
265
290
  if (ndim == 1)
266
291
  {
267
292
  for (int i = 0; i < shape[0]; i++)
268
293
  {
269
- int src_idx = src_indices[0] ? src_indices[0][i] : i;
270
- int dst_idx = dst_indices[0] ? dst_indices[0][i] : i;
294
+ size_t src_idx = src_indices[0] ? src_indices[0][i] : i;
295
+ size_t dst_idx = dst_indices[0] ? dst_indices[0][i] : i;
271
296
  const char* p = (const char*)src + src_idx * src_strides[0];
272
297
  char* q = (char*)dst + dst_idx * dst_strides[0];
273
298
  // copy element
@@ -278,8 +303,8 @@ static void array_copy_nd(void* dst, const void* src,
278
303
  {
279
304
  for (int i = 0; i < shape[0]; i++)
280
305
  {
281
- int src_idx = src_indices[0] ? src_indices[0][i] : i;
282
- int dst_idx = dst_indices[0] ? dst_indices[0][i] : i;
306
+ size_t src_idx = src_indices[0] ? src_indices[0][i] : i;
307
+ size_t dst_idx = dst_indices[0] ? dst_indices[0][i] : i;
283
308
  const char* p = (const char*)src + src_idx * src_strides[0];
284
309
  char* q = (char*)dst + dst_idx * dst_strides[0];
285
310
  // recurse on next inner dimension
@@ -290,7 +315,7 @@ static void array_copy_nd(void* dst, const void* src,
290
315
 
291
316
 
292
317
  static void array_copy_to_fabric(wp::fabricarray_t<void>& dst, const void* src_data,
293
- int src_stride, const int* src_indices, int elem_size)
318
+ size_t src_stride, const int* src_indices, size_t elem_size)
294
319
  {
295
320
  const int8_t* src_ptr = static_cast<const int8_t*>(src_data);
296
321
 
@@ -304,7 +329,7 @@ static void array_copy_to_fabric(wp::fabricarray_t<void>& dst, const void* src_d
304
329
  size_t bucket_size = bucket.index_end - bucket.index_start;
305
330
  for (size_t j = 0; j < bucket_size; j++)
306
331
  {
307
- int idx = *src_indices;
332
+ size_t idx = *src_indices;
308
333
  memcpy(dst_ptr, src_ptr + idx * elem_size, elem_size);
309
334
  dst_ptr += elem_size;
310
335
  ++src_indices;
@@ -344,7 +369,7 @@ static void array_copy_to_fabric(wp::fabricarray_t<void>& dst, const void* src_d
344
369
  }
345
370
 
346
371
  static void array_copy_from_fabric(const wp::fabricarray_t<void>& src, void* dst_data,
347
- int dst_stride, const int* dst_indices, int elem_size)
372
+ size_t dst_stride, const int* dst_indices, size_t elem_size)
348
373
  {
349
374
  int8_t* dst_ptr = static_cast<int8_t*>(dst_data);
350
375
 
@@ -397,7 +422,7 @@ static void array_copy_from_fabric(const wp::fabricarray_t<void>& src, void* dst
397
422
  }
398
423
  }
399
424
 
400
- static void array_copy_fabric_to_fabric(wp::fabricarray_t<void>& dst, const wp::fabricarray_t<void>& src, int elem_size)
425
+ static void array_copy_fabric_to_fabric(wp::fabricarray_t<void>& dst, const wp::fabricarray_t<void>& src, size_t elem_size)
401
426
  {
402
427
  wp::fabricbucket_t* dst_bucket = dst.buckets;
403
428
  const wp::fabricbucket_t* src_bucket = src.buckets;
@@ -450,7 +475,7 @@ static void array_copy_fabric_to_fabric(wp::fabricarray_t<void>& dst, const wp::
450
475
 
451
476
 
452
477
  static void array_copy_to_fabric_indexed(wp::indexedfabricarray_t<void>& dst, const void* src_data,
453
- int src_stride, const int* src_indices, int elem_size)
478
+ size_t src_stride, const int* src_indices, size_t elem_size)
454
479
  {
455
480
  const int8_t* src_ptr = static_cast<const int8_t*>(src_data);
456
481
 
@@ -482,7 +507,7 @@ static void array_copy_to_fabric_indexed(wp::indexedfabricarray_t<void>& dst, co
482
507
  }
483
508
 
484
509
 
485
- static void array_copy_fabric_indexed_to_fabric(wp::fabricarray_t<void>& dst, const wp::indexedfabricarray_t<void>& src, int elem_size)
510
+ static void array_copy_fabric_indexed_to_fabric(wp::fabricarray_t<void>& dst, const wp::indexedfabricarray_t<void>& src, size_t elem_size)
486
511
  {
487
512
  wp::fabricbucket_t* dst_bucket = dst.buckets;
488
513
  int8_t* dst_ptr = static_cast<int8_t*>(dst_bucket->ptr);
@@ -508,7 +533,7 @@ static void array_copy_fabric_indexed_to_fabric(wp::fabricarray_t<void>& dst, co
508
533
  }
509
534
 
510
535
 
511
- static void array_copy_fabric_indexed_to_fabric_indexed(wp::indexedfabricarray_t<void>& dst, const wp::indexedfabricarray_t<void>& src, int elem_size)
536
+ static void array_copy_fabric_indexed_to_fabric_indexed(wp::indexedfabricarray_t<void>& dst, const wp::indexedfabricarray_t<void>& src, size_t elem_size)
512
537
  {
513
538
  for (size_t i = 0; i < src.size; i++)
514
539
  {
@@ -523,7 +548,7 @@ static void array_copy_fabric_indexed_to_fabric_indexed(wp::indexedfabricarray_t
523
548
  }
524
549
 
525
550
 
526
- static void array_copy_fabric_to_fabric_indexed(wp::indexedfabricarray_t<void>& dst, const wp::fabricarray_t<void>& src, int elem_size)
551
+ static void array_copy_fabric_to_fabric_indexed(wp::indexedfabricarray_t<void>& dst, const wp::fabricarray_t<void>& src, size_t elem_size)
527
552
  {
528
553
  wp::fabricbucket_t* src_bucket = src.buckets;
529
554
  const int8_t* src_ptr = static_cast<const int8_t*>(src_bucket->ptr);
@@ -550,7 +575,7 @@ static void array_copy_fabric_to_fabric_indexed(wp::indexedfabricarray_t<void>&
550
575
 
551
576
 
552
577
  static void array_copy_from_fabric_indexed(const wp::indexedfabricarray_t<void>& src, void* dst_data,
553
- int dst_stride, const int* dst_indices, int elem_size)
578
+ size_t dst_stride, const int* dst_indices, size_t elem_size)
554
579
  {
555
580
  int8_t* dst_ptr = static_cast<int8_t*>(dst_data);
556
581
 
@@ -563,7 +588,7 @@ static void array_copy_from_fabric_indexed(const wp::indexedfabricarray_t<void>&
563
588
  if (idx < src.fa.size)
564
589
  {
565
590
  const void* src_ptr = fabricarray_element_ptr(src.fa, idx, elem_size);
566
- int dst_idx = dst_indices[i];
591
+ size_t dst_idx = dst_indices[i];
567
592
  memcpy(dst_ptr + dst_idx * elem_size, src_ptr, elem_size);
568
593
  }
569
594
  else
@@ -811,22 +836,23 @@ WP_API bool wp_array_copy_host(void* dst, void* src, int dst_type, int src_type,
811
836
  }
812
837
 
813
838
 
814
- static void array_fill_strided(void* data, const int* shape, const int* strides, int ndim, const void* value, int value_size)
839
+ static void array_fill_strided(void* data, const int* shape, const int* strides, int ndim, const void* value, size_t value_size)
815
840
  {
841
+ size_t stride = strides[0];
816
842
  if (ndim == 1)
817
843
  {
818
844
  char* p = (char*)data;
819
845
  for (int i = 0; i < shape[0]; i++)
820
846
  {
821
847
  memcpy(p, value, value_size);
822
- p += strides[0];
848
+ p += stride;
823
849
  }
824
850
  }
825
851
  else
826
852
  {
827
853
  for (int i = 0; i < shape[0]; i++)
828
854
  {
829
- char* p = (char*)data + i * strides[0];
855
+ char* p = (char*)data + i * stride;
830
856
  // recurse on next inner dimension
831
857
  array_fill_strided(p, shape + 1, strides + 1, ndim - 1, value, value_size);
832
858
  }
@@ -834,14 +860,15 @@ static void array_fill_strided(void* data, const int* shape, const int* strides,
834
860
  }
835
861
 
836
862
 
837
- static void array_fill_indexed(void* data, const int* shape, const int* strides, const int*const* indices, int ndim, const void* value, int value_size)
863
+ static void array_fill_indexed(void* data, const int* shape, const int* strides, const int*const* indices, int ndim, const void* value, size_t value_size)
838
864
  {
865
+ size_t stride = strides[0];
839
866
  if (ndim == 1)
840
867
  {
841
868
  for (int i = 0; i < shape[0]; i++)
842
869
  {
843
- int idx = indices[0] ? indices[0][i] : i;
844
- char* p = (char*)data + idx * strides[0];
870
+ size_t idx = indices[0] ? indices[0][i] : i;
871
+ char* p = (char*)data + idx * stride;
845
872
  memcpy(p, value, value_size);
846
873
  }
847
874
  }
@@ -849,8 +876,8 @@ static void array_fill_indexed(void* data, const int* shape, const int* strides,
849
876
  {
850
877
  for (int i = 0; i < shape[0]; i++)
851
878
  {
852
- int idx = indices[0] ? indices[0][i] : i;
853
- char* p = (char*)data + idx * strides[0];
879
+ size_t idx = indices[0] ? indices[0][i] : i;
880
+ char* p = (char*)data + idx * stride;
854
881
  // recurse on next inner dimension
855
882
  array_fill_indexed(p, shape + 1, strides + 1, indices + 1, ndim - 1, value, value_size);
856
883
  }
@@ -858,7 +885,7 @@ static void array_fill_indexed(void* data, const int* shape, const int* strides,
858
885
  }
859
886
 
860
887
 
861
- static void array_fill_fabric(wp::fabricarray_t<void>& fa, const void* value_ptr, int value_size)
888
+ static void array_fill_fabric(wp::fabricarray_t<void>& fa, const void* value_ptr, size_t value_size)
862
889
  {
863
890
  for (size_t i = 0; i < fa.nbuckets; i++)
864
891
  {
@@ -869,7 +896,7 @@ static void array_fill_fabric(wp::fabricarray_t<void>& fa, const void* value_ptr
869
896
  }
870
897
 
871
898
 
872
- static void array_fill_fabric_indexed(wp::indexedfabricarray_t<void>& ifa, const void* value_ptr, int value_size)
899
+ static void array_fill_fabric_indexed(wp::indexedfabricarray_t<void>& ifa, const void* value_ptr, size_t value_size)
873
900
  {
874
901
  for (size_t i = 0; i < ifa.size; i++)
875
902
  {
@@ -1002,6 +1029,7 @@ void wp_array_fill_device(void* context, void* arr, int arr_type, const void* va
1002
1029
 
1003
1030
  WP_API int wp_cuda_driver_version() { return 0; }
1004
1031
  WP_API int wp_cuda_toolkit_version() { return 0; }
1032
+
1005
1033
  WP_API bool wp_cuda_driver_is_initialized() { return false; }
1006
1034
 
1007
1035
  WP_API int wp_nvrtc_supported_arch_count() { return 0; }
@@ -1057,8 +1085,8 @@ WP_API void wp_cuda_stream_register(void* context, void* stream) {}
1057
1085
  WP_API void wp_cuda_stream_unregister(void* context, void* stream) {}
1058
1086
  WP_API void* wp_cuda_stream_get_current() { return NULL; }
1059
1087
  WP_API void wp_cuda_stream_synchronize(void* stream) {}
1060
- WP_API void wp_cuda_stream_wait_event(void* stream, void* event) {}
1061
- WP_API void wp_cuda_stream_wait_stream(void* stream, void* other_stream, void* event) {}
1088
+ WP_API void wp_cuda_stream_wait_event(void* stream, void* event, bool external) {}
1089
+ WP_API void wp_cuda_stream_wait_stream(void* stream, void* other_stream, void* event, bool external) {}
1062
1090
  WP_API int wp_cuda_stream_is_capturing(void* stream) { return 0; }
1063
1091
  WP_API uint64_t wp_cuda_stream_get_capture_id(void* stream) { return 0; }
1064
1092
  WP_API int wp_cuda_stream_get_priority(void* stream) { return 0; }
@@ -1066,7 +1094,7 @@ WP_API int wp_cuda_stream_get_priority(void* stream) { return 0; }
1066
1094
  WP_API void* wp_cuda_event_create(void* context, unsigned flags) { return NULL; }
1067
1095
  WP_API void wp_cuda_event_destroy(void* event) {}
1068
1096
  WP_API int wp_cuda_event_query(void* event) { return 0; }
1069
- WP_API void wp_cuda_event_record(void* event, void* stream, bool timing) {}
1097
+ WP_API void wp_cuda_event_record(void* event, void* stream, bool external) {}
1070
1098
  WP_API void wp_cuda_event_synchronize(void* event) {}
1071
1099
  WP_API float wp_cuda_event_elapsed_time(void* start_event, void* end_event) { return 0.0f; }
1072
1100