warp-lang 1.6.2__py3-none-win_amd64.whl → 1.7.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 (179) hide show
  1. warp/__init__.py +7 -1
  2. warp/bin/warp-clang.dll +0 -0
  3. warp/bin/warp.dll +0 -0
  4. warp/build.py +410 -0
  5. warp/build_dll.py +6 -14
  6. warp/builtins.py +452 -362
  7. warp/codegen.py +179 -119
  8. warp/config.py +42 -6
  9. warp/context.py +490 -271
  10. warp/dlpack.py +8 -6
  11. warp/examples/assets/nonuniform.usd +0 -0
  12. warp/examples/assets/nvidia_logo.png +0 -0
  13. warp/examples/benchmarks/benchmark_tile_load_store.py +103 -0
  14. warp/examples/core/example_sample_mesh.py +300 -0
  15. warp/examples/fem/example_apic_fluid.py +1 -1
  16. warp/examples/fem/example_burgers.py +2 -2
  17. warp/examples/fem/example_deformed_geometry.py +1 -1
  18. warp/examples/fem/example_distortion_energy.py +1 -1
  19. warp/examples/fem/example_magnetostatics.py +6 -6
  20. warp/examples/fem/utils.py +9 -3
  21. warp/examples/interop/example_jax_callable.py +116 -0
  22. warp/examples/interop/example_jax_ffi_callback.py +132 -0
  23. warp/examples/interop/example_jax_kernel.py +205 -0
  24. warp/examples/optim/example_fluid_checkpoint.py +497 -0
  25. warp/examples/tile/example_tile_matmul.py +2 -4
  26. warp/fem/__init__.py +11 -1
  27. warp/fem/adaptivity.py +4 -4
  28. warp/fem/field/nodal_field.py +22 -68
  29. warp/fem/field/virtual.py +62 -23
  30. warp/fem/geometry/adaptive_nanogrid.py +9 -10
  31. warp/fem/geometry/closest_point.py +1 -1
  32. warp/fem/geometry/deformed_geometry.py +5 -2
  33. warp/fem/geometry/geometry.py +5 -0
  34. warp/fem/geometry/grid_2d.py +12 -12
  35. warp/fem/geometry/grid_3d.py +12 -15
  36. warp/fem/geometry/hexmesh.py +5 -7
  37. warp/fem/geometry/nanogrid.py +9 -11
  38. warp/fem/geometry/quadmesh.py +13 -13
  39. warp/fem/geometry/tetmesh.py +3 -4
  40. warp/fem/geometry/trimesh.py +3 -8
  41. warp/fem/integrate.py +262 -93
  42. warp/fem/linalg.py +5 -5
  43. warp/fem/quadrature/pic_quadrature.py +37 -22
  44. warp/fem/quadrature/quadrature.py +194 -25
  45. warp/fem/space/__init__.py +1 -1
  46. warp/fem/space/basis_function_space.py +4 -2
  47. warp/fem/space/basis_space.py +25 -18
  48. warp/fem/space/hexmesh_function_space.py +2 -2
  49. warp/fem/space/partition.py +6 -2
  50. warp/fem/space/quadmesh_function_space.py +8 -8
  51. warp/fem/space/shape/cube_shape_function.py +23 -23
  52. warp/fem/space/shape/square_shape_function.py +12 -12
  53. warp/fem/space/shape/triangle_shape_function.py +1 -1
  54. warp/fem/space/tetmesh_function_space.py +3 -3
  55. warp/fem/space/trimesh_function_space.py +2 -2
  56. warp/fem/utils.py +12 -6
  57. warp/jax.py +14 -1
  58. warp/jax_experimental/__init__.py +16 -0
  59. warp/{jax_experimental.py → jax_experimental/custom_call.py} +14 -27
  60. warp/jax_experimental/ffi.py +698 -0
  61. warp/jax_experimental/xla_ffi.py +602 -0
  62. warp/math.py +89 -0
  63. warp/native/array.h +13 -0
  64. warp/native/builtin.h +29 -3
  65. warp/native/bvh.cpp +3 -1
  66. warp/native/bvh.cu +42 -14
  67. warp/native/bvh.h +2 -1
  68. warp/native/clang/clang.cpp +30 -3
  69. warp/native/cuda_util.cpp +14 -0
  70. warp/native/cuda_util.h +2 -0
  71. warp/native/exports.h +68 -63
  72. warp/native/intersect.h +26 -26
  73. warp/native/intersect_adj.h +33 -33
  74. warp/native/marching.cu +1 -1
  75. warp/native/mat.h +513 -9
  76. warp/native/mesh.h +10 -10
  77. warp/native/quat.h +99 -11
  78. warp/native/rand.h +6 -0
  79. warp/native/sort.cpp +122 -59
  80. warp/native/sort.cu +152 -15
  81. warp/native/sort.h +8 -1
  82. warp/native/sparse.cpp +43 -22
  83. warp/native/sparse.cu +52 -17
  84. warp/native/svd.h +116 -0
  85. warp/native/tile.h +301 -105
  86. warp/native/tile_reduce.h +46 -3
  87. warp/native/vec.h +68 -7
  88. warp/native/volume.cpp +85 -113
  89. warp/native/volume_builder.cu +25 -10
  90. warp/native/volume_builder.h +6 -0
  91. warp/native/warp.cpp +5 -6
  92. warp/native/warp.cu +99 -10
  93. warp/native/warp.h +19 -10
  94. warp/optim/linear.py +10 -10
  95. warp/sim/articulation.py +4 -4
  96. warp/sim/collide.py +21 -10
  97. warp/sim/import_mjcf.py +449 -155
  98. warp/sim/import_urdf.py +32 -12
  99. warp/sim/integrator_euler.py +5 -5
  100. warp/sim/integrator_featherstone.py +3 -10
  101. warp/sim/integrator_vbd.py +207 -2
  102. warp/sim/integrator_xpbd.py +5 -5
  103. warp/sim/model.py +42 -13
  104. warp/sim/utils.py +2 -2
  105. warp/sparse.py +642 -555
  106. warp/stubs.py +216 -19
  107. warp/tests/__main__.py +0 -15
  108. warp/tests/cuda/__init__.py +0 -0
  109. warp/tests/{test_mempool.py → cuda/test_mempool.py} +39 -0
  110. warp/tests/{test_streams.py → cuda/test_streams.py} +71 -0
  111. warp/tests/geometry/__init__.py +0 -0
  112. warp/tests/{test_mesh_query_point.py → geometry/test_mesh_query_point.py} +66 -63
  113. warp/tests/{test_mesh_query_ray.py → geometry/test_mesh_query_ray.py} +1 -1
  114. warp/tests/{test_volume.py → geometry/test_volume.py} +41 -6
  115. warp/tests/interop/__init__.py +0 -0
  116. warp/tests/{test_dlpack.py → interop/test_dlpack.py} +28 -5
  117. warp/tests/sim/__init__.py +0 -0
  118. warp/tests/{disabled_kinematics.py → sim/disabled_kinematics.py} +9 -10
  119. warp/tests/{test_collision.py → sim/test_collision.py} +2 -2
  120. warp/tests/{test_model.py → sim/test_model.py} +40 -0
  121. warp/tests/{test_sim_kinematics.py → sim/test_sim_kinematics.py} +2 -1
  122. warp/tests/sim/test_vbd.py +597 -0
  123. warp/tests/test_bool.py +1 -1
  124. warp/tests/test_examples.py +28 -36
  125. warp/tests/test_fem.py +23 -4
  126. warp/tests/test_linear_solvers.py +0 -11
  127. warp/tests/test_mat.py +233 -79
  128. warp/tests/test_mat_scalar_ops.py +4 -4
  129. warp/tests/test_overwrite.py +0 -60
  130. warp/tests/test_quat.py +67 -46
  131. warp/tests/test_rand.py +44 -37
  132. warp/tests/test_sparse.py +47 -6
  133. warp/tests/test_spatial.py +75 -0
  134. warp/tests/test_static.py +1 -1
  135. warp/tests/test_utils.py +84 -4
  136. warp/tests/test_vec.py +46 -34
  137. warp/tests/tile/__init__.py +0 -0
  138. warp/tests/{test_tile.py → tile/test_tile.py} +136 -51
  139. warp/tests/{test_tile_load.py → tile/test_tile_load.py} +1 -1
  140. warp/tests/{test_tile_mathdx.py → tile/test_tile_mathdx.py} +9 -6
  141. warp/tests/{test_tile_mlp.py → tile/test_tile_mlp.py} +25 -14
  142. warp/tests/{test_tile_reduce.py → tile/test_tile_reduce.py} +60 -1
  143. warp/tests/{test_tile_view.py → tile/test_tile_view.py} +1 -1
  144. warp/tests/unittest_serial.py +1 -0
  145. warp/tests/unittest_suites.py +45 -59
  146. warp/tests/unittest_utils.py +2 -1
  147. warp/thirdparty/unittest_parallel.py +3 -1
  148. warp/types.py +110 -658
  149. warp/utils.py +137 -72
  150. {warp_lang-1.6.2.dist-info → warp_lang-1.7.0.dist-info}/METADATA +29 -7
  151. {warp_lang-1.6.2.dist-info → warp_lang-1.7.0.dist-info}/RECORD +172 -162
  152. {warp_lang-1.6.2.dist-info → warp_lang-1.7.0.dist-info}/WHEEL +1 -1
  153. warp/examples/optim/example_walker.py +0 -317
  154. warp/native/cutlass_gemm.cpp +0 -43
  155. warp/native/cutlass_gemm.cu +0 -382
  156. warp/tests/test_matmul.py +0 -511
  157. warp/tests/test_matmul_lite.py +0 -411
  158. warp/tests/test_vbd.py +0 -386
  159. warp/tests/unused_test_misc.py +0 -77
  160. /warp/tests/{test_async.py → cuda/test_async.py} +0 -0
  161. /warp/tests/{test_ipc.py → cuda/test_ipc.py} +0 -0
  162. /warp/tests/{test_multigpu.py → cuda/test_multigpu.py} +0 -0
  163. /warp/tests/{test_peer.py → cuda/test_peer.py} +0 -0
  164. /warp/tests/{test_pinned.py → cuda/test_pinned.py} +0 -0
  165. /warp/tests/{test_bvh.py → geometry/test_bvh.py} +0 -0
  166. /warp/tests/{test_hash_grid.py → geometry/test_hash_grid.py} +0 -0
  167. /warp/tests/{test_marching_cubes.py → geometry/test_marching_cubes.py} +0 -0
  168. /warp/tests/{test_mesh.py → geometry/test_mesh.py} +0 -0
  169. /warp/tests/{test_mesh_query_aabb.py → geometry/test_mesh_query_aabb.py} +0 -0
  170. /warp/tests/{test_volume_write.py → geometry/test_volume_write.py} +0 -0
  171. /warp/tests/{test_jax.py → interop/test_jax.py} +0 -0
  172. /warp/tests/{test_paddle.py → interop/test_paddle.py} +0 -0
  173. /warp/tests/{test_torch.py → interop/test_torch.py} +0 -0
  174. /warp/tests/{flaky_test_sim_grad.py → sim/flaky_test_sim_grad.py} +0 -0
  175. /warp/tests/{test_coloring.py → sim/test_coloring.py} +0 -0
  176. /warp/tests/{test_sim_grad_bounce_linear.py → sim/test_sim_grad_bounce_linear.py} +0 -0
  177. /warp/tests/{test_tile_shared_memory.py → tile/test_tile_shared_memory.py} +0 -0
  178. {warp_lang-1.6.2.dist-info → warp_lang-1.7.0.dist-info/licenses}/LICENSE.md +0 -0
  179. {warp_lang-1.6.2.dist-info → warp_lang-1.7.0.dist-info}/top_level.txt +0 -0
warp/tests/test_vbd.py DELETED
@@ -1,386 +0,0 @@
1
- # SPDX-FileCopyrightText: Copyright (c) 2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2
- # SPDX-License-Identifier: Apache-2.0
3
- #
4
- # Licensed under the Apache License, Version 2.0 (the "License");
5
- # you may not use this file except in compliance with the License.
6
- # You may obtain a copy of the License at
7
- #
8
- # http://www.apache.org/licenses/LICENSE-2.0
9
- #
10
- # Unless required by applicable law or agreed to in writing, software
11
- # distributed under the License is distributed on an "AS IS" BASIS,
12
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- # See the License for the specific language governing permissions and
14
- # limitations under the License.
15
-
16
- import contextlib
17
- import io
18
- import unittest
19
-
20
- import warp as wp
21
- import warp.optim
22
- import warp.sim
23
- from warp.sim.model import (
24
- PARTICLE_FLAG_ACTIVE,
25
- )
26
- from warp.tests.unittest_utils import *
27
-
28
-
29
- class VBDClothSim:
30
- def __init__(self, device):
31
- # fmt: off
32
- self.pts = [
33
- (-50.0000000, 0.0000000, -50.0000000),
34
- (-38.8888893, 11.1111107, -50.0000000),
35
- (-27.7777786, 22.2222214, -50.0000000),
36
- (-16.6666679, 33.3333321, -50.0000000),
37
- (-5.5555558, 44.4444427, -50.0000000),
38
- (5.5555558, 55.5555573, -50.0000000),
39
- (16.6666679, 66.6666641, -50.0000000),
40
- (27.7777786, 77.7777786, -50.0000000),
41
- (38.8888893, 88.8888855, -50.0000000),
42
- (50.0000000, 100.0000000, -50.0000000),
43
- (-50.0000000, 0.0000000, -38.8888893),
44
- (-38.8888893, 11.1111107, -38.8888893),
45
- (-27.7777786, 22.2222214, -38.8888893),
46
- (-16.6666679, 33.3333321, -38.8888893),
47
- (-5.5555558, 44.4444427, -38.8888893),
48
- (5.5555558, 55.5555573, -38.8888893),
49
- (16.6666679, 66.6666641, -38.8888893),
50
- (27.7777786, 77.7777786, -38.8888893),
51
- (38.8888893, 88.8888855, -38.8888893),
52
- (50.0000000, 100.0000000, -38.8888893),
53
- (-50.0000000, 0.0000000, -27.7777786),
54
- (-38.8888893, 11.1111107, -27.7777786),
55
- (-27.7777786, 22.2222214, -27.7777786),
56
- (-16.6666679, 33.3333321, -27.7777786),
57
- (-5.5555558, 44.4444427, -27.7777786),
58
- (5.5555558, 55.5555573, -27.7777786),
59
- (16.6666679, 66.6666641, -27.7777786),
60
- (27.7777786, 77.7777786, -27.7777786),
61
- (38.8888893, 88.8888855, -27.7777786),
62
- (50.0000000, 100.0000000, -27.7777786),
63
- (-50.0000000, 0.0000000, -16.6666679),
64
- (-38.8888893, 11.1111107, -16.6666679),
65
- (-27.7777786, 22.2222214, -16.6666679),
66
- (-16.6666679, 33.3333321, -16.6666679),
67
- (-5.5555558, 44.4444427, -16.6666679),
68
- (5.5555558, 55.5555573, -16.6666679),
69
- (16.6666679, 66.6666641, -16.6666679),
70
- (27.7777786, 77.7777786, -16.6666679),
71
- (38.8888893, 88.8888855, -16.6666679),
72
- (50.0000000, 100.0000000, -16.6666679),
73
- (-50.0000000, 0.0000000, -5.5555558),
74
- (-38.8888893, 11.1111107, -5.5555558),
75
- (-27.7777786, 22.2222214, -5.5555558),
76
- (-16.6666679, 33.3333321, -5.5555558),
77
- (-5.5555558, 44.4444427, -5.5555558),
78
- (5.5555558, 55.5555573, -5.5555558),
79
- (16.6666679, 66.6666641, -5.5555558),
80
- (27.7777786, 77.7777786, -5.5555558),
81
- (38.8888893, 88.8888855, -5.5555558),
82
- (50.0000000, 100.0000000, -5.5555558),
83
- (-50.0000000, 0.0000000, 5.5555558),
84
- (-38.8888893, 11.1111107, 5.5555558),
85
- (-27.7777786, 22.2222214, 5.5555558),
86
- (-16.6666679, 33.3333321, 5.5555558),
87
- (-5.5555558, 44.4444427, 5.5555558),
88
- (5.5555558, 55.5555573, 5.5555558),
89
- (16.6666679, 66.6666641, 5.5555558),
90
- (27.7777786, 77.7777786, 5.5555558),
91
- (38.8888893, 88.8888855, 5.5555558),
92
- (50.0000000, 100.0000000, 5.5555558),
93
- (-50.0000000, 0.0000000, 16.6666679),
94
- (-38.8888893, 11.1111107, 16.6666679),
95
- (-27.7777786, 22.2222214, 16.6666679),
96
- (-16.6666679, 33.3333321, 16.6666679),
97
- (-5.5555558, 44.4444427, 16.6666679),
98
- (5.5555558, 55.5555573, 16.6666679),
99
- (16.6666679, 66.6666641, 16.6666679),
100
- (27.7777786, 77.7777786, 16.6666679),
101
- (38.8888893, 88.8888855, 16.6666679),
102
- (50.0000000, 100.0000000, 16.6666679),
103
- (-50.0000000, 0.0000000, 27.7777786),
104
- (-38.8888893, 11.1111107, 27.7777786),
105
- (-27.7777786, 22.2222214, 27.7777786),
106
- (-16.6666679, 33.3333321, 27.7777786),
107
- (-5.5555558, 44.4444427, 27.7777786),
108
- (5.5555558, 55.5555573, 27.7777786),
109
- (16.6666679, 66.6666641, 27.7777786),
110
- (27.7777786, 77.7777786, 27.7777786),
111
- (38.8888893, 88.8888855, 27.7777786),
112
- (50.0000000, 100.0000000, 27.7777786),
113
- (-50.0000000, 0.0000000, 38.8888893),
114
- (-38.8888893, 11.1111107, 38.8888893),
115
- (-27.7777786, 22.2222214, 38.8888893),
116
- (-16.6666679, 33.3333321, 38.8888893),
117
- (-5.5555558, 44.4444427, 38.8888893),
118
- (5.5555558, 55.5555573, 38.8888893),
119
- (16.6666679, 66.6666641, 38.8888893),
120
- (27.7777786, 77.7777786, 38.8888893),
121
- (38.8888893, 88.8888855, 38.8888893),
122
- (50.0000000, 100.0000000, 38.8888893),
123
- (-50.0000000, 0.0000000, 50.0000000),
124
- (-38.8888893, 11.1111107, 50.0000000),
125
- (-27.7777786, 22.2222214, 50.0000000),
126
- (-16.6666679, 33.3333321, 50.0000000),
127
- (-5.5555558, 44.4444427, 50.0000000),
128
- (5.5555558, 55.5555573, 50.0000000),
129
- (16.6666679, 66.6666641, 50.0000000),
130
- (27.7777786, 77.7777786, 50.0000000),
131
- (38.8888893, 88.8888855, 50.0000000),
132
- (50.0000000, 100.0000000, 50.0000000),
133
- ]
134
-
135
- self.faces = [
136
- 1, 12, 2,
137
- 1, 11, 12,
138
- 2, 12, 3,
139
- 12, 13, 3,
140
- 3, 14, 4,
141
- 3, 13, 14,
142
- 4, 14, 5,
143
- 14, 15, 5,
144
- 5, 16, 6,
145
- 5, 15, 16,
146
- 6, 16, 7,
147
- 16, 17, 7,
148
- 7, 18, 8,
149
- 7, 17, 18,
150
- 8, 18, 9,
151
- 18, 19, 9,
152
- 9, 20, 10,
153
- 9, 19, 20,
154
- 11, 21, 12,
155
- 21, 22, 12,
156
- 12, 23, 13,
157
- 12, 22, 23,
158
- 13, 23, 14,
159
- 23, 24, 14,
160
- 14, 25, 15,
161
- 14, 24, 25,
162
- 15, 25, 16,
163
- 25, 26, 16,
164
- 16, 27, 17,
165
- 16, 26, 27,
166
- 17, 27, 18,
167
- 27, 28, 18,
168
- 18, 29, 19,
169
- 18, 28, 29,
170
- 19, 29, 20,
171
- 29, 30, 20,
172
- 21, 32, 22,
173
- 21, 31, 32,
174
- 22, 32, 23,
175
- 32, 33, 23,
176
- 23, 34, 24,
177
- 23, 33, 34,
178
- 24, 34, 25,
179
- 34, 35, 25,
180
- 25, 36, 26,
181
- 25, 35, 36,
182
- 26, 36, 27,
183
- 36, 37, 27,
184
- 27, 38, 28,
185
- 27, 37, 38,
186
- 28, 38, 29,
187
- 38, 39, 29,
188
- 29, 40, 30,
189
- 29, 39, 40,
190
- 31, 41, 32,
191
- 41, 42, 32,
192
- 32, 43, 33,
193
- 32, 42, 43,
194
- 33, 43, 34,
195
- 43, 44, 34,
196
- 34, 45, 35,
197
- 34, 44, 45,
198
- 35, 45, 36,
199
- 45, 46, 36,
200
- 36, 47, 37,
201
- 36, 46, 47,
202
- 37, 47, 38,
203
- 47, 48, 38,
204
- 38, 49, 39,
205
- 38, 48, 49,
206
- 39, 49, 40,
207
- 49, 50, 40,
208
- 41, 52, 42,
209
- 41, 51, 52,
210
- 42, 52, 43,
211
- 52, 53, 43,
212
- 43, 54, 44,
213
- 43, 53, 54,
214
- 44, 54, 45,
215
- 54, 55, 45,
216
- 45, 56, 46,
217
- 45, 55, 56,
218
- 46, 56, 47,
219
- 56, 57, 47,
220
- 47, 58, 48,
221
- 47, 57, 58,
222
- 48, 58, 49,
223
- 58, 59, 49,
224
- 49, 60, 50,
225
- 49, 59, 60,
226
- 51, 61, 52,
227
- 61, 62, 52,
228
- 52, 63, 53,
229
- 52, 62, 63,
230
- 53, 63, 54,
231
- 63, 64, 54,
232
- 54, 65, 55,
233
- 54, 64, 65,
234
- 55, 65, 56,
235
- 65, 66, 56,
236
- 56, 67, 57,
237
- 56, 66, 67,
238
- 57, 67, 58,
239
- 67, 68, 58,
240
- 58, 69, 59,
241
- 58, 68, 69,
242
- 59, 69, 60,
243
- 69, 70, 60,
244
- 61, 72, 62,
245
- 61, 71, 72,
246
- 62, 72, 63,
247
- 72, 73, 63,
248
- 63, 74, 64,
249
- 63, 73, 74,
250
- 64, 74, 65,
251
- 74, 75, 65,
252
- 65, 76, 66,
253
- 65, 75, 76,
254
- 66, 76, 67,
255
- 76, 77, 67,
256
- 67, 78, 68,
257
- 67, 77, 78,
258
- 68, 78, 69,
259
- 78, 79, 69,
260
- 69, 80, 70,
261
- 69, 79, 80,
262
- 71, 81, 72,
263
- 81, 82, 72,
264
- 72, 83, 73,
265
- 72, 82, 83,
266
- 73, 83, 74,
267
- 83, 84, 74,
268
- 74, 85, 75,
269
- 74, 84, 85,
270
- 75, 85, 76,
271
- 85, 86, 76,
272
- 76, 87, 77,
273
- 76, 86, 87,
274
- 77, 87, 78,
275
- 87, 88, 78,
276
- 78, 89, 79,
277
- 78, 88, 89,
278
- 79, 89, 80,
279
- 89, 90, 80,
280
- 81, 92, 82,
281
- 81, 91, 92,
282
- 82, 92, 83,
283
- 92, 93, 83,
284
- 83, 94, 84,
285
- 83, 93, 94,
286
- 84, 94, 85,
287
- 94, 95, 85,
288
- 85, 96, 86,
289
- 85, 95, 96,
290
- 86, 96, 87,
291
- 96, 97, 87,
292
- 87, 98, 88,
293
- 87, 97, 98,
294
- 88, 98, 89,
295
- 98, 99, 89,
296
- 89, 100, 90,
297
- 89, 99, 100
298
- ]
299
-
300
- # fmt: on
301
-
302
- self.dt = 1 / 60
303
- self.num_test_frames = 100
304
- self.num_substeps = 10
305
- self.iterations = 10
306
-
307
- stiffness = 1e5
308
- kd = 1.0e-7
309
-
310
- self.input_scale_factor = 1.0
311
- self.renderer_scale_factor = 0.01
312
- vertices = [wp.vec3(v) * self.input_scale_factor for v in self.pts]
313
- fs_flatten = [fv - 1 for fv in self.faces]
314
-
315
- builder = wp.sim.ModelBuilder()
316
- builder.add_cloth_mesh(
317
- pos=wp.vec3(0.0, 200.0, 0.0),
318
- rot=wp.quat_from_axis_angle(wp.vec3(1.0, 0.0, 0.0), 0.0),
319
- scale=1.0,
320
- vertices=vertices,
321
- indices=fs_flatten,
322
- vel=wp.vec3(0.0, 0.0, 0.0),
323
- density=0.02,
324
- tri_ke=stiffness,
325
- tri_ka=stiffness,
326
- tri_kd=kd,
327
- )
328
- builder.color()
329
-
330
- self.model = builder.finalize(device=device)
331
- self.model.ground = True
332
- self.model.gravity = wp.vec3(0, -1000.0, 0)
333
-
334
- self.model.soft_contact_ke = 1.0e4
335
- self.model.soft_contact_kd = 1.0e2
336
-
337
- self.dt = self.dt / self.num_substeps
338
- self.fixed_particles = [0, 9]
339
-
340
- self.set_points_fixed(self.model, self.fixed_particles)
341
-
342
- self.integrator = wp.sim.VBDIntegrator(self.model, self.iterations)
343
- self.state0 = self.model.state()
344
- self.state1 = self.model.state()
345
-
346
- self.init_pos = np.array(self.state0.particle_q.numpy(), copy=True)
347
-
348
- def run(self, test):
349
- for _step in range(self.num_substeps * self.num_test_frames):
350
- self.integrator.simulate(self.model, self.state0, self.state1, self.dt, None)
351
- (self.state0, self.state1) = (self.state1, self.state0)
352
-
353
- # examine that the simulation does not explode
354
- final_pos = self.state0.particle_q.numpy()
355
- test.assertTrue((final_pos < 1e5).all())
356
- # examine that the simulation have moved
357
- test.assertTrue((self.init_pos != final_pos).any())
358
-
359
- def set_points_fixed(self, model, fixed_particles):
360
- if len(fixed_particles):
361
- flags = model.particle_flags.numpy()
362
- for fixed_v_id in fixed_particles:
363
- flags[fixed_v_id] = wp.uint32(int(flags[fixed_v_id]) & ~int(PARTICLE_FLAG_ACTIVE))
364
-
365
- model.particle_flags = wp.array(flags, device=model.device)
366
-
367
-
368
- devices = get_test_devices()
369
-
370
-
371
- class TestVBD(unittest.TestCase):
372
- def test_vbd_cloth(self):
373
- for device in devices:
374
- with contextlib.redirect_stdout(io.StringIO()) as f:
375
- example = VBDClothSim(device)
376
- self.assertRegex(
377
- f.getvalue(),
378
- r"Warp UserWarning: The graph is not optimizable anymore, terminated with a max/min ratio: 2.0 without reaching the target ratio: 1.1",
379
- )
380
-
381
- example.run(self)
382
-
383
-
384
- if __name__ == "__main__":
385
- wp.clear_kernel_cache()
386
- unittest.main(verbosity=2)
@@ -1,77 +0,0 @@
1
- # SPDX-FileCopyrightText: Copyright (c) 2021 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2
- # SPDX-License-Identifier: Apache-2.0
3
- #
4
- # Licensed under the Apache License, Version 2.0 (the "License");
5
- # you may not use this file except in compliance with the License.
6
- # You may obtain a copy of the License at
7
- #
8
- # http://www.apache.org/licenses/LICENSE-2.0
9
- #
10
- # Unless required by applicable law or agreed to in writing, software
11
- # distributed under the License is distributed on an "AS IS" BASIS,
12
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- # See the License for the specific language governing permissions and
14
- # limitations under the License.
15
-
16
- import numpy as np
17
-
18
- import warp as wp
19
-
20
-
21
- @wp.kernel
22
- def arange(out: wp.array(dtype=int)):
23
- tid = wp.tid()
24
- out[tid] = tid
25
-
26
-
27
- device = "cuda:0"
28
- cmds = []
29
-
30
- n = 10
31
- arrays = []
32
-
33
- for _i in range(5):
34
- arrays.append(wp.zeros(n, dtype=int, device=device))
35
-
36
- # setup CUDA graph
37
- wp.capture_begin()
38
-
39
- # launch kernels and keep command object around
40
- for i in range(5):
41
- cmd = wp.launch(arange, dim=n, inputs=[arrays[i]], device=device, record_cmd=True)
42
- cmds.append(cmd)
43
-
44
- graph = wp.capture_end()
45
-
46
- # ---------------------------------------
47
-
48
- ref = np.arange(0, n, dtype=int)
49
- wp.capture_launch(graph)
50
-
51
- for i in range(5):
52
- print(arrays[i].numpy())
53
-
54
-
55
- # ---------------------------------------
56
-
57
- n = 16
58
- arrays = []
59
-
60
- for _i in range(5):
61
- arrays.append(wp.zeros(n, dtype=int, device=device))
62
-
63
- # update graph params
64
- for i in range(5):
65
- cmd.set_dim(n)
66
- cmd.set_param(arrays[i])
67
-
68
- cmd.update_graph()
69
-
70
-
71
- wp.capture_launch(graph)
72
- wp.synchronize()
73
-
74
- ref = np.arange(0, n, dtype=int)
75
-
76
- for i in range(5):
77
- print(arrays[i].numpy())
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes