warp-lang 1.0.0b5__py3-none-manylinux2014_x86_64.whl → 1.0.0b6__py3-none-manylinux2014_x86_64.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.
- docs/conf.py +3 -4
- examples/env/env_ant.py +1 -1
- examples/env/env_cartpole.py +1 -1
- examples/env/env_humanoid.py +1 -1
- examples/example_dem.py +28 -26
- examples/example_diffray.py +37 -30
- examples/example_fluid.py +7 -3
- examples/example_jacobian_ik.py +1 -1
- examples/example_mesh_intersect.py +10 -7
- examples/example_nvdb.py +3 -3
- examples/example_render_opengl.py +19 -10
- examples/example_sim_cartpole.py +9 -5
- examples/example_sim_cloth.py +29 -25
- examples/example_sim_fk_grad.py +2 -2
- examples/example_sim_fk_grad_torch.py +3 -3
- examples/example_sim_grad_bounce.py +11 -8
- examples/example_sim_grad_cloth.py +12 -9
- examples/example_sim_granular.py +2 -2
- examples/example_sim_granular_collision_sdf.py +13 -13
- examples/example_sim_neo_hookean.py +3 -3
- examples/example_sim_particle_chain.py +2 -2
- examples/example_sim_quadruped.py +8 -5
- examples/example_sim_rigid_chain.py +8 -5
- examples/example_sim_rigid_contact.py +13 -10
- examples/example_sim_rigid_fem.py +2 -2
- examples/example_sim_rigid_gyroscopic.py +2 -2
- examples/example_sim_rigid_kinematics.py +1 -1
- examples/example_sim_trajopt.py +3 -2
- examples/fem/example_apic_fluid.py +5 -7
- examples/fem/example_diffusion_mgpu.py +18 -16
- warp/__init__.py +3 -2
- warp/bin/warp.so +0 -0
- warp/build_dll.py +29 -9
- warp/builtins.py +206 -7
- warp/codegen.py +58 -38
- warp/config.py +3 -1
- warp/context.py +234 -128
- warp/fem/__init__.py +2 -2
- warp/fem/cache.py +2 -1
- warp/fem/field/nodal_field.py +18 -17
- warp/fem/geometry/hexmesh.py +11 -6
- warp/fem/geometry/quadmesh_2d.py +16 -12
- warp/fem/geometry/tetmesh.py +19 -8
- warp/fem/geometry/trimesh_2d.py +18 -7
- warp/fem/integrate.py +341 -196
- warp/fem/quadrature/__init__.py +1 -1
- warp/fem/quadrature/pic_quadrature.py +138 -53
- warp/fem/quadrature/quadrature.py +81 -9
- warp/fem/space/__init__.py +1 -1
- warp/fem/space/basis_space.py +169 -51
- warp/fem/space/grid_2d_function_space.py +2 -2
- warp/fem/space/grid_3d_function_space.py +2 -2
- warp/fem/space/hexmesh_function_space.py +2 -2
- warp/fem/space/partition.py +9 -6
- warp/fem/space/quadmesh_2d_function_space.py +2 -2
- warp/fem/space/shape/cube_shape_function.py +27 -15
- warp/fem/space/shape/square_shape_function.py +29 -18
- warp/fem/space/tetmesh_function_space.py +2 -2
- warp/fem/space/topology.py +10 -0
- warp/fem/space/trimesh_2d_function_space.py +2 -2
- warp/fem/utils.py +10 -5
- warp/native/array.h +49 -8
- warp/native/builtin.h +31 -14
- warp/native/cuda_util.cpp +8 -3
- warp/native/cuda_util.h +1 -0
- warp/native/exports.h +1177 -1108
- warp/native/intersect.h +4 -4
- warp/native/intersect_adj.h +8 -8
- warp/native/mat.h +65 -6
- warp/native/mesh.h +126 -5
- warp/native/quat.h +28 -4
- warp/native/vec.h +76 -14
- warp/native/warp.cu +1 -6
- warp/render/render_opengl.py +261 -109
- warp/sim/import_mjcf.py +13 -7
- warp/sim/import_urdf.py +14 -14
- warp/sim/inertia.py +17 -18
- warp/sim/model.py +67 -67
- warp/sim/render.py +1 -1
- warp/sparse.py +6 -6
- warp/stubs.py +19 -81
- warp/tape.py +1 -1
- warp/tests/__main__.py +3 -6
- warp/tests/{test_class_kernel.py → aux_test_class_kernel.py} +9 -1
- warp/tests/aux_test_conditional_unequal_types_kernels.py +21 -0
- warp/tests/{test_dependent.py → aux_test_dependent.py} +2 -2
- warp/tests/{test_reference.py → aux_test_reference.py} +1 -1
- warp/tests/aux_test_unresolved_func.py +14 -0
- warp/tests/aux_test_unresolved_symbol.py +14 -0
- warp/tests/{test_kinematics.py → disabled_kinematics.py} +10 -12
- warp/tests/run_coverage_serial.py +31 -0
- warp/tests/test_adam.py +102 -106
- warp/tests/test_arithmetic.py +39 -40
- warp/tests/test_array.py +46 -48
- warp/tests/test_array_reduce.py +25 -19
- warp/tests/test_atomic.py +62 -26
- warp/tests/test_bool.py +16 -11
- warp/tests/test_builtins_resolution.py +1292 -0
- warp/tests/test_bvh.py +9 -12
- warp/tests/test_closest_point_edge_edge.py +53 -57
- warp/tests/test_codegen.py +164 -134
- warp/tests/test_compile_consts.py +13 -19
- warp/tests/test_conditional.py +30 -32
- warp/tests/test_copy.py +9 -12
- warp/tests/test_ctypes.py +90 -98
- warp/tests/test_dense.py +20 -14
- warp/tests/test_devices.py +34 -35
- warp/tests/test_dlpack.py +74 -75
- warp/tests/test_examples.py +215 -97
- warp/tests/test_fabricarray.py +15 -21
- warp/tests/test_fast_math.py +14 -11
- warp/tests/test_fem.py +280 -97
- warp/tests/test_fp16.py +19 -15
- warp/tests/test_func.py +177 -194
- warp/tests/test_generics.py +71 -77
- warp/tests/test_grad.py +83 -32
- warp/tests/test_grad_customs.py +7 -9
- warp/tests/test_hash_grid.py +6 -10
- warp/tests/test_import.py +9 -23
- warp/tests/test_indexedarray.py +19 -21
- warp/tests/test_intersect.py +15 -9
- warp/tests/test_large.py +17 -19
- warp/tests/test_launch.py +14 -17
- warp/tests/test_lerp.py +63 -63
- warp/tests/test_lvalue.py +84 -35
- warp/tests/test_marching_cubes.py +9 -13
- warp/tests/test_mat.py +388 -3004
- warp/tests/test_mat_lite.py +9 -12
- warp/tests/test_mat_scalar_ops.py +2889 -0
- warp/tests/test_math.py +10 -11
- warp/tests/test_matmul.py +104 -100
- warp/tests/test_matmul_lite.py +72 -98
- warp/tests/test_mesh.py +35 -32
- warp/tests/test_mesh_query_aabb.py +18 -25
- warp/tests/test_mesh_query_point.py +39 -23
- warp/tests/test_mesh_query_ray.py +9 -21
- warp/tests/test_mlp.py +8 -9
- warp/tests/test_model.py +89 -93
- warp/tests/test_modules_lite.py +15 -25
- warp/tests/test_multigpu.py +87 -114
- warp/tests/test_noise.py +10 -12
- warp/tests/test_operators.py +14 -21
- warp/tests/test_options.py +10 -11
- warp/tests/test_pinned.py +16 -18
- warp/tests/test_print.py +16 -20
- warp/tests/test_quat.py +121 -88
- warp/tests/test_rand.py +12 -13
- warp/tests/test_reload.py +27 -32
- warp/tests/test_rounding.py +7 -10
- warp/tests/test_runlength_encode.py +105 -106
- warp/tests/test_smoothstep.py +8 -9
- warp/tests/test_snippet.py +13 -22
- warp/tests/test_sparse.py +30 -29
- warp/tests/test_spatial.py +179 -174
- warp/tests/test_streams.py +100 -107
- warp/tests/test_struct.py +98 -67
- warp/tests/test_tape.py +11 -17
- warp/tests/test_torch.py +89 -86
- warp/tests/test_transient_module.py +9 -12
- warp/tests/test_types.py +328 -50
- warp/tests/test_utils.py +217 -218
- warp/tests/test_vec.py +133 -2133
- warp/tests/test_vec_lite.py +8 -11
- warp/tests/test_vec_scalar_ops.py +2099 -0
- warp/tests/test_volume.py +391 -382
- warp/tests/test_volume_write.py +122 -135
- warp/tests/unittest_serial.py +35 -0
- warp/tests/unittest_suites.py +291 -0
- warp/tests/{test_base.py → unittest_utils.py} +138 -25
- warp/tests/{test_misc.py → unused_test_misc.py} +13 -5
- warp/tests/{test_debug.py → walkthough_debug.py} +2 -15
- warp/thirdparty/unittest_parallel.py +257 -54
- warp/types.py +119 -98
- warp/utils.py +14 -0
- {warp_lang-1.0.0b5.dist-info → warp_lang-1.0.0b6.dist-info}/METADATA +2 -1
- {warp_lang-1.0.0b5.dist-info → warp_lang-1.0.0b6.dist-info}/RECORD +182 -178
- {warp_lang-1.0.0b5.dist-info → warp_lang-1.0.0b6.dist-info}/WHEEL +1 -1
- warp/tests/test_all.py +0 -239
- warp/tests/test_conditional_unequal_types_kernels.py +0 -14
- warp/tests/test_coverage.py +0 -38
- warp/tests/test_unresolved_func.py +0 -7
- warp/tests/test_unresolved_symbol.py +0 -7
- /warp/tests/{test_compile_consts_dummy.py → aux_test_compile_consts_dummy.py} +0 -0
- /warp/tests/{test_reference_reference.py → aux_test_reference_reference.py} +0 -0
- /warp/tests/{test_square.py → aux_test_square.py} +0 -0
- {warp_lang-1.0.0b5.dist-info → warp_lang-1.0.0b6.dist-info}/LICENSE.md +0 -0
- {warp_lang-1.0.0b5.dist-info → warp_lang-1.0.0b6.dist-info}/top_level.txt +0 -0
warp/tests/test_bvh.py
CHANGED
|
@@ -10,8 +10,7 @@ import unittest
|
|
|
10
10
|
import numpy as np
|
|
11
11
|
|
|
12
12
|
import warp as wp
|
|
13
|
-
from warp.tests.
|
|
14
|
-
|
|
13
|
+
from warp.tests.unittest_utils import *
|
|
15
14
|
|
|
16
15
|
wp.init()
|
|
17
16
|
|
|
@@ -118,8 +117,8 @@ def test_bvh(test, type, device):
|
|
|
118
117
|
if test_case == 0:
|
|
119
118
|
lowers = rng.random(size=(num_bounds, 3)) * 5.0
|
|
120
119
|
uppers = lowers + rng.random(size=(num_bounds, 3)) * 5.0
|
|
121
|
-
wp.copy(device_lowers, wp.array(lowers, dtype=wp.vec3))
|
|
122
|
-
wp.copy(device_uppers, wp.array(uppers, dtype=wp.vec3))
|
|
120
|
+
wp.copy(device_lowers, wp.array(lowers, dtype=wp.vec3, device=device))
|
|
121
|
+
wp.copy(device_uppers, wp.array(uppers, dtype=wp.vec3, device=device))
|
|
123
122
|
bvh.refit()
|
|
124
123
|
bounds_intersected.zero_()
|
|
125
124
|
|
|
@@ -132,19 +131,17 @@ def test_bvh_query_ray(test, device):
|
|
|
132
131
|
test_bvh(test, "ray", device)
|
|
133
132
|
|
|
134
133
|
|
|
135
|
-
|
|
136
|
-
|
|
134
|
+
devices = get_test_devices()
|
|
135
|
+
|
|
137
136
|
|
|
138
|
-
|
|
139
|
-
|
|
137
|
+
class TestBvh(unittest.TestCase):
|
|
138
|
+
pass
|
|
140
139
|
|
|
141
|
-
add_function_test(TestBvh, "test_bvh_aabb", test_bvh_query_aabb, devices=devices)
|
|
142
|
-
add_function_test(TestBvh, "test_bvh_ray", test_bvh_query_ray, devices=devices)
|
|
143
140
|
|
|
144
|
-
|
|
141
|
+
add_function_test(TestBvh, "test_bvh_aabb", test_bvh_query_aabb, devices=devices)
|
|
142
|
+
add_function_test(TestBvh, "test_bvh_ray", test_bvh_query_ray, devices=devices)
|
|
145
143
|
|
|
146
144
|
|
|
147
145
|
if __name__ == "__main__":
|
|
148
146
|
wp.build.clear_kernel_cache()
|
|
149
|
-
_ = register(unittest.TestCase)
|
|
150
147
|
unittest.main(verbosity=2)
|
|
@@ -5,12 +5,12 @@
|
|
|
5
5
|
# distribution of this software and related documentation without an express
|
|
6
6
|
# license agreement from NVIDIA CORPORATION is strictly prohibited.
|
|
7
7
|
|
|
8
|
-
import numpy as np
|
|
9
|
-
|
|
10
8
|
import unittest
|
|
11
9
|
|
|
10
|
+
import numpy as np
|
|
11
|
+
|
|
12
12
|
import warp as wp
|
|
13
|
-
from warp.tests.
|
|
13
|
+
from warp.tests.unittest_utils import *
|
|
14
14
|
|
|
15
15
|
wp.init()
|
|
16
16
|
epsilon = 0.00001
|
|
@@ -171,62 +171,58 @@ def test_edge_edge_perpendicular_s0_t1(test, device):
|
|
|
171
171
|
test.assertAlmostEqual(st0[1], 1.0) # t value
|
|
172
172
|
|
|
173
173
|
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
)
|
|
225
|
-
|
|
226
|
-
return TestClosestPointEdgeEdgeMethods
|
|
174
|
+
devices = get_test_devices()
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
class TestClosestPointEdgeEdgeMethods(unittest.TestCase):
|
|
178
|
+
pass
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
add_function_test(
|
|
182
|
+
TestClosestPointEdgeEdgeMethods,
|
|
183
|
+
"test_edge_edge_middle_crossing",
|
|
184
|
+
test_edge_edge_middle_crossing,
|
|
185
|
+
devices=devices,
|
|
186
|
+
)
|
|
187
|
+
add_function_test(
|
|
188
|
+
TestClosestPointEdgeEdgeMethods, "test_edge_edge_parallel_s1_t0", test_edge_edge_parallel_s1_t0, devices=devices
|
|
189
|
+
)
|
|
190
|
+
add_function_test(
|
|
191
|
+
TestClosestPointEdgeEdgeMethods, "test_edge_edge_parallel_s0_t1", test_edge_edge_parallel_s0_t1, devices=devices
|
|
192
|
+
)
|
|
193
|
+
add_function_test(
|
|
194
|
+
TestClosestPointEdgeEdgeMethods,
|
|
195
|
+
"test_edge_edge_both_degenerate_case",
|
|
196
|
+
test_edge_edge_both_degenerate_case,
|
|
197
|
+
devices=devices,
|
|
198
|
+
)
|
|
199
|
+
add_function_test(
|
|
200
|
+
TestClosestPointEdgeEdgeMethods,
|
|
201
|
+
"test_edge_edge_degenerate_first_edge",
|
|
202
|
+
test_edge_edge_degenerate_first_edge,
|
|
203
|
+
devices=devices,
|
|
204
|
+
)
|
|
205
|
+
add_function_test(
|
|
206
|
+
TestClosestPointEdgeEdgeMethods,
|
|
207
|
+
"test_edge_edge_degenerate_second_edge",
|
|
208
|
+
test_edge_edge_degenerate_second_edge,
|
|
209
|
+
devices=devices,
|
|
210
|
+
)
|
|
211
|
+
add_function_test(TestClosestPointEdgeEdgeMethods, "test_edge_edge_parallel", test_edge_edge_parallel, devices=devices)
|
|
212
|
+
add_function_test(
|
|
213
|
+
TestClosestPointEdgeEdgeMethods,
|
|
214
|
+
"test_edge_edge_perpendicular_s1_t0",
|
|
215
|
+
test_edge_edge_perpendicular_s1_t0,
|
|
216
|
+
devices=devices,
|
|
217
|
+
)
|
|
218
|
+
add_function_test(
|
|
219
|
+
TestClosestPointEdgeEdgeMethods,
|
|
220
|
+
"test_edge_edge_perpendicular_s0_t1",
|
|
221
|
+
test_edge_edge_perpendicular_s0_t1,
|
|
222
|
+
devices=devices,
|
|
223
|
+
)
|
|
227
224
|
|
|
228
225
|
|
|
229
226
|
if __name__ == "__main__":
|
|
230
227
|
wp.build.clear_kernel_cache()
|
|
231
|
-
_ = register(unittest.TestCase)
|
|
232
228
|
unittest.main(verbosity=2)
|
warp/tests/test_codegen.py
CHANGED
|
@@ -5,12 +5,11 @@
|
|
|
5
5
|
# distribution of this software and related documentation without an express
|
|
6
6
|
# license agreement from NVIDIA CORPORATION is strictly prohibited.
|
|
7
7
|
|
|
8
|
-
# include parent path
|
|
9
8
|
import sys
|
|
10
9
|
import unittest
|
|
11
10
|
|
|
12
11
|
import warp as wp
|
|
13
|
-
from warp.tests.
|
|
12
|
+
from warp.tests.unittest_utils import *
|
|
14
13
|
|
|
15
14
|
# wp.config.mode = "debug"
|
|
16
15
|
|
|
@@ -317,9 +316,36 @@ def test_range_constant_dynamic_nested(m: int):
|
|
|
317
316
|
wp.expect_eq(s, N * m * N)
|
|
318
317
|
|
|
319
318
|
|
|
319
|
+
@wp.kernel
|
|
320
|
+
def test_range_expression():
|
|
321
|
+
idx = 1
|
|
322
|
+
batch_size = 100
|
|
323
|
+
|
|
324
|
+
a = wp.float(0.0)
|
|
325
|
+
c = wp.float(1.0)
|
|
326
|
+
|
|
327
|
+
# constant expression with a function
|
|
328
|
+
for i in range(4 * idx, wp.min(4 * idx + 4, batch_size)):
|
|
329
|
+
a += c
|
|
330
|
+
|
|
331
|
+
for i in range(4 * idx, min(4 * idx + 4, batch_size)):
|
|
332
|
+
a += c
|
|
333
|
+
|
|
334
|
+
tid = wp.tid()
|
|
335
|
+
|
|
336
|
+
# dynamic expression with a function
|
|
337
|
+
for i in range(4 * idx, wp.min(4 * idx, tid + 1000)):
|
|
338
|
+
a += c
|
|
339
|
+
|
|
340
|
+
for i in range(4 * idx, min(4 * idx, tid + 1000)):
|
|
341
|
+
a += c
|
|
342
|
+
|
|
343
|
+
wp.expect_eq(a, 8.0)
|
|
344
|
+
|
|
345
|
+
|
|
320
346
|
def test_unresolved_func(test, device):
|
|
321
347
|
# kernel with unresolved function must be in a separate module, otherwise the current module would fail to load
|
|
322
|
-
from warp.tests.
|
|
348
|
+
from warp.tests.aux_test_unresolved_func import unresolved_func_kernel
|
|
323
349
|
|
|
324
350
|
# ensure that an appropriate exception is raised when the bad module gets loaded
|
|
325
351
|
with test.assertRaisesRegex(RuntimeError, "Could not find function wp.missing_func"):
|
|
@@ -327,13 +353,13 @@ def test_unresolved_func(test, device):
|
|
|
327
353
|
|
|
328
354
|
# remove all references to the bad module so that subsequent calls to wp.force_load()
|
|
329
355
|
# won't try to load it unless we explicitly re-import it again
|
|
330
|
-
del wp.context.user_modules["warp.tests.
|
|
331
|
-
del sys.modules["warp.tests.
|
|
356
|
+
del wp.context.user_modules["warp.tests.aux_test_unresolved_func"]
|
|
357
|
+
del sys.modules["warp.tests.aux_test_unresolved_func"]
|
|
332
358
|
|
|
333
359
|
|
|
334
360
|
def test_unresolved_symbol(test, device):
|
|
335
361
|
# kernel with unresolved symbol must be in a separate module, otherwise the current module would fail to load
|
|
336
|
-
from warp.tests.
|
|
362
|
+
from warp.tests.aux_test_unresolved_symbol import unresolved_symbol_kernel
|
|
337
363
|
|
|
338
364
|
# ensure that an appropriate exception is raised when the bad module gets loaded
|
|
339
365
|
with test.assertRaisesRegex(KeyError, "Referencing undefined symbol: missing_symbol"):
|
|
@@ -341,136 +367,140 @@ def test_unresolved_symbol(test, device):
|
|
|
341
367
|
|
|
342
368
|
# remove all references to the bad module so that subsequent calls to wp.force_load()
|
|
343
369
|
# won't try to load it unless we explicitly re-import it again
|
|
344
|
-
del wp.context.user_modules["warp.tests.
|
|
345
|
-
del sys.modules["warp.tests.
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
370
|
+
del wp.context.user_modules["warp.tests.aux_test_unresolved_symbol"]
|
|
371
|
+
del sys.modules["warp.tests.aux_test_unresolved_symbol"]
|
|
372
|
+
|
|
373
|
+
|
|
374
|
+
class TestCodeGen(unittest.TestCase):
|
|
375
|
+
pass
|
|
376
|
+
|
|
377
|
+
|
|
378
|
+
devices = get_test_devices()
|
|
379
|
+
|
|
380
|
+
add_kernel_test(TestCodeGen, name="test_inplace", kernel=test_inplace, dim=1, devices=devices)
|
|
381
|
+
add_kernel_test(TestCodeGen, name="test_rename", kernel=test_rename, dim=1, devices=devices)
|
|
382
|
+
add_kernel_test(TestCodeGen, name="test_constant", kernel=test_constant, inputs=[1.0], dim=1, devices=devices)
|
|
383
|
+
add_kernel_test(
|
|
384
|
+
TestCodeGen, name="test_dynamic_for_rename", kernel=test_dynamic_for_rename, inputs=[10], dim=1, devices=devices
|
|
385
|
+
)
|
|
386
|
+
add_kernel_test(
|
|
387
|
+
TestCodeGen,
|
|
388
|
+
name="test_dynamic_for_inplace",
|
|
389
|
+
kernel=test_dynamic_for_inplace,
|
|
390
|
+
inputs=[10],
|
|
391
|
+
dim=1,
|
|
392
|
+
devices=devices,
|
|
393
|
+
)
|
|
394
|
+
add_kernel_test(TestCodeGen, name="test_reassign", kernel=test_reassign, dim=1, devices=devices)
|
|
395
|
+
add_kernel_test(
|
|
396
|
+
TestCodeGen, name="test_dynamic_reassign", kernel=test_dynamic_reassign, inputs=[2], dim=1, devices=devices
|
|
397
|
+
)
|
|
398
|
+
|
|
399
|
+
add_kernel_test(
|
|
400
|
+
TestCodeGen,
|
|
401
|
+
name="test_range_dynamic_forward",
|
|
402
|
+
kernel=test_range_dynamic,
|
|
403
|
+
dim=1,
|
|
404
|
+
inputs=[0, 4, 1],
|
|
405
|
+
expect=[0, 1, 2, 3],
|
|
406
|
+
devices=devices,
|
|
407
|
+
)
|
|
408
|
+
add_kernel_test(
|
|
409
|
+
TestCodeGen,
|
|
410
|
+
name="test_range_dynamic_reverse",
|
|
411
|
+
kernel=test_range_dynamic,
|
|
412
|
+
dim=1,
|
|
413
|
+
inputs=[4, 0, -1],
|
|
414
|
+
expect=[4, 3, 2, 1],
|
|
415
|
+
devices=devices,
|
|
416
|
+
)
|
|
417
|
+
add_kernel_test(
|
|
418
|
+
TestCodeGen,
|
|
419
|
+
name="test_range_dynamic_forward_step",
|
|
420
|
+
kernel=test_range_dynamic,
|
|
421
|
+
dim=1,
|
|
422
|
+
inputs=[0, 8, 2],
|
|
423
|
+
expect=[0, 2, 4, 6],
|
|
424
|
+
devices=devices,
|
|
425
|
+
)
|
|
426
|
+
add_kernel_test(
|
|
427
|
+
TestCodeGen,
|
|
428
|
+
name="test_range_dynamic_reverse_step",
|
|
429
|
+
kernel=test_range_dynamic,
|
|
430
|
+
dim=1,
|
|
431
|
+
inputs=[8, 0, -2],
|
|
432
|
+
expect=[8, 6, 4, 2],
|
|
433
|
+
devices=devices,
|
|
434
|
+
)
|
|
435
|
+
|
|
436
|
+
add_kernel_test(
|
|
437
|
+
TestCodeGen,
|
|
438
|
+
name="test_range_static_sum",
|
|
439
|
+
kernel=test_range_static_sum,
|
|
440
|
+
dim=1,
|
|
441
|
+
expect=[10, 10, 10],
|
|
442
|
+
devices=devices,
|
|
443
|
+
)
|
|
444
|
+
add_kernel_test(
|
|
445
|
+
TestCodeGen,
|
|
446
|
+
name="test_range_dynamic_sum",
|
|
447
|
+
kernel=test_range_dynamic_sum,
|
|
448
|
+
dim=1,
|
|
449
|
+
inputs=[0, 10, 2],
|
|
450
|
+
expect=[10, 10, 10, 10],
|
|
451
|
+
devices=devices,
|
|
452
|
+
)
|
|
453
|
+
add_kernel_test(
|
|
454
|
+
TestCodeGen,
|
|
455
|
+
name="test_range_dynamic_sum_zero",
|
|
456
|
+
kernel=test_range_dynamic_sum,
|
|
457
|
+
dim=1,
|
|
458
|
+
inputs=[0, 0, 1],
|
|
459
|
+
expect=[0, 0, 0, 0],
|
|
460
|
+
devices=devices,
|
|
461
|
+
)
|
|
462
|
+
add_kernel_test(TestCodeGen, name="test_range_constant", kernel=test_range_constant, dim=1, devices=devices)
|
|
463
|
+
add_kernel_test(
|
|
464
|
+
TestCodeGen,
|
|
465
|
+
name="test_range_constant_dynamic_nested",
|
|
466
|
+
kernel=test_range_constant_dynamic_nested,
|
|
467
|
+
dim=1,
|
|
468
|
+
inputs=[10],
|
|
469
|
+
devices=devices,
|
|
470
|
+
)
|
|
471
|
+
add_kernel_test(
|
|
472
|
+
TestCodeGen,
|
|
473
|
+
name="test_range_dynamic_nested",
|
|
474
|
+
kernel=test_range_dynamic_nested,
|
|
475
|
+
dim=1,
|
|
476
|
+
inputs=[4],
|
|
477
|
+
devices=devices,
|
|
478
|
+
)
|
|
479
|
+
add_kernel_test(
|
|
480
|
+
TestCodeGen,
|
|
481
|
+
name="test_range_expression",
|
|
482
|
+
kernel=test_range_expression,
|
|
483
|
+
dim=1,
|
|
484
|
+
devices=devices,
|
|
485
|
+
)
|
|
486
|
+
|
|
487
|
+
add_kernel_test(TestCodeGen, name="test_while_zero", kernel=test_while, dim=1, inputs=[0], devices=devices)
|
|
488
|
+
add_kernel_test(TestCodeGen, name="test_while_positive", kernel=test_while, dim=1, inputs=[16], devices=devices)
|
|
489
|
+
add_kernel_test(TestCodeGen, name="test_pass", kernel=test_pass, dim=1, inputs=[16], devices=devices)
|
|
490
|
+
|
|
491
|
+
add_kernel_test(TestCodeGen, name="test_break", kernel=test_break, dim=1, inputs=[10], devices=devices)
|
|
492
|
+
add_kernel_test(TestCodeGen, name="test_break_early", kernel=test_break_early, dim=1, inputs=[10], devices=devices)
|
|
493
|
+
add_kernel_test(TestCodeGen, name="test_break_unroll", kernel=test_break_unroll, dim=1, devices=devices)
|
|
494
|
+
add_kernel_test(
|
|
495
|
+
TestCodeGen, name="test_break_multiple", kernel=test_break_multiple, dim=1, inputs=[10], devices=devices
|
|
496
|
+
)
|
|
497
|
+
add_kernel_test(TestCodeGen, name="test_continue", kernel=test_continue, dim=1, inputs=[10], devices=devices)
|
|
498
|
+
add_kernel_test(TestCodeGen, name="test_continue_unroll", kernel=test_continue_unroll, dim=1, devices=devices)
|
|
499
|
+
|
|
500
|
+
add_function_test(TestCodeGen, func=test_unresolved_func, name="test_unresolved_func", devices=devices)
|
|
501
|
+
add_function_test(TestCodeGen, func=test_unresolved_symbol, name="test_unresolved_symbol", devices=devices)
|
|
471
502
|
|
|
472
503
|
|
|
473
504
|
if __name__ == "__main__":
|
|
474
505
|
wp.build.clear_kernel_cache()
|
|
475
|
-
_ = register(unittest.TestCase)
|
|
476
506
|
unittest.main(verbosity=2, failfast=True)
|
|
@@ -5,14 +5,11 @@
|
|
|
5
5
|
# distribution of this software and related documentation without an express
|
|
6
6
|
# license agreement from NVIDIA CORPORATION is strictly prohibited.
|
|
7
7
|
|
|
8
|
-
import os
|
|
9
|
-
import sys
|
|
10
|
-
|
|
11
8
|
import unittest
|
|
12
|
-
from warp.tests.test_base import *
|
|
13
|
-
import warp.tests.test_compile_consts_dummy
|
|
14
9
|
|
|
15
10
|
import warp as wp
|
|
11
|
+
import warp.tests.aux_test_compile_consts_dummy
|
|
12
|
+
from warp.tests.unittest_utils import *
|
|
16
13
|
|
|
17
14
|
wp.init()
|
|
18
15
|
|
|
@@ -40,7 +37,7 @@ def test_constants_bool():
|
|
|
40
37
|
@wp.kernel
|
|
41
38
|
def test_constants_int(a: int):
|
|
42
39
|
if Foobar.ONE > 0:
|
|
43
|
-
a = 123 + Foobar.TWO + warp.tests.
|
|
40
|
+
a = 123 + Foobar.TWO + warp.tests.aux_test_compile_consts_dummy.MINUS_ONE
|
|
44
41
|
else:
|
|
45
42
|
a = 456 + LOCAL_ONE
|
|
46
43
|
expect_eq(a, 124)
|
|
@@ -82,26 +79,23 @@ def test_constant_closure_capture(test, device):
|
|
|
82
79
|
wp.launch(two_closure, dim=(1), inputs=[2], device=device)
|
|
83
80
|
|
|
84
81
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
pass
|
|
82
|
+
class TestConstants(unittest.TestCase):
|
|
83
|
+
pass
|
|
88
84
|
|
|
89
|
-
a = 0
|
|
90
|
-
x = 0.0
|
|
91
85
|
|
|
92
|
-
|
|
86
|
+
a = 0
|
|
87
|
+
x = 0.0
|
|
93
88
|
|
|
94
|
-
|
|
95
|
-
add_kernel_test(TestConstants, test_constants_int, dim=1, inputs=[a], devices=devices)
|
|
96
|
-
add_kernel_test(TestConstants, test_constants_float, dim=1, inputs=[x], devices=devices)
|
|
89
|
+
devices = get_test_devices()
|
|
97
90
|
|
|
98
|
-
|
|
99
|
-
|
|
91
|
+
add_kernel_test(TestConstants, test_constants_bool, dim=1, inputs=[], devices=devices)
|
|
92
|
+
add_kernel_test(TestConstants, test_constants_int, dim=1, inputs=[a], devices=devices)
|
|
93
|
+
add_kernel_test(TestConstants, test_constants_float, dim=1, inputs=[x], devices=devices)
|
|
100
94
|
|
|
101
|
-
|
|
95
|
+
add_function_test(TestConstants, "test_constant_math", test_constant_math, devices=devices)
|
|
96
|
+
add_function_test(TestConstants, "test_constant_closure_capture", test_constant_closure_capture, devices=devices)
|
|
102
97
|
|
|
103
98
|
|
|
104
99
|
if __name__ == "__main__":
|
|
105
100
|
wp.build.clear_kernel_cache()
|
|
106
|
-
_ = register(unittest.TestCase)
|
|
107
101
|
unittest.main(verbosity=2)
|
warp/tests/test_conditional.py
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
import unittest
|
|
9
9
|
|
|
10
10
|
import warp as wp
|
|
11
|
-
from warp.tests.
|
|
11
|
+
from warp.tests.unittest_utils import *
|
|
12
12
|
|
|
13
13
|
wp.init()
|
|
14
14
|
|
|
@@ -203,46 +203,44 @@ def test_conditional_chain_mixed():
|
|
|
203
203
|
|
|
204
204
|
def test_conditional_unequal_types(test: unittest.TestCase, device):
|
|
205
205
|
# The bad kernel must be in a separate module, otherwise the current module would fail to load
|
|
206
|
-
from warp.tests.
|
|
206
|
+
from warp.tests.aux_test_conditional_unequal_types_kernels import (
|
|
207
|
+
unequal_types_kernel,
|
|
208
|
+
)
|
|
207
209
|
|
|
208
210
|
with test.assertRaises(TypeError):
|
|
209
211
|
wp.launch(unequal_types_kernel, dim=(1,), inputs=[], device=device)
|
|
210
212
|
|
|
211
213
|
# remove all references to the bad module so that subsequent calls to wp.force_load()
|
|
212
214
|
# won't try to load it unless we explicitly re-import it again
|
|
213
|
-
del wp.context.user_modules["warp.tests.
|
|
214
|
-
del sys.modules["warp.tests.
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
add_kernel_test(TestConditional, kernel=test_conditional_if_else, dim=1, devices=devices)
|
|
224
|
-
add_kernel_test(TestConditional, kernel=test_conditional_if_else_nested, dim=1, devices=devices)
|
|
225
|
-
add_kernel_test(TestConditional, kernel=test_boolean_and, dim=1, devices=devices)
|
|
226
|
-
add_kernel_test(TestConditional, kernel=test_boolean_or, dim=1, devices=devices)
|
|
227
|
-
add_kernel_test(TestConditional, kernel=test_boolean_compound, dim=1, devices=devices)
|
|
228
|
-
add_kernel_test(TestConditional, kernel=test_boolean_literal, dim=1, devices=devices)
|
|
229
|
-
add_kernel_test(TestConditional, kernel=test_int_logical_not, dim=1, devices=devices)
|
|
230
|
-
add_kernel_test(TestConditional, kernel=test_int_conditional_assign_overload, dim=1, devices=devices)
|
|
231
|
-
add_kernel_test(TestConditional, kernel=test_bool_param_conditional, dim=1, inputs=[True], devices=devices)
|
|
232
|
-
add_kernel_test(TestConditional, kernel=test_conditional_chain_basic, dim=1, devices=devices)
|
|
233
|
-
add_kernel_test(TestConditional, kernel=test_conditional_chain_empty_range, dim=1, devices=devices)
|
|
234
|
-
add_kernel_test(TestConditional, kernel=test_conditional_chain_faker, dim=1, devices=devices)
|
|
235
|
-
add_kernel_test(TestConditional, kernel=test_conditional_chain_and, dim=1, devices=devices)
|
|
236
|
-
add_kernel_test(TestConditional, kernel=test_conditional_chain_eqs, dim=1, devices=devices)
|
|
237
|
-
add_kernel_test(TestConditional, kernel=test_conditional_chain_mixed, dim=1, devices=devices)
|
|
238
|
-
add_function_test(
|
|
239
|
-
TestConditional, "test_conditional_unequal_types", test_conditional_unequal_types, devices=devices
|
|
240
|
-
)
|
|
215
|
+
del wp.context.user_modules["warp.tests.aux_test_conditional_unequal_types_kernels"]
|
|
216
|
+
del sys.modules["warp.tests.aux_test_conditional_unequal_types_kernels"]
|
|
217
|
+
|
|
218
|
+
|
|
219
|
+
devices = get_test_devices()
|
|
220
|
+
|
|
221
|
+
|
|
222
|
+
class TestConditional(unittest.TestCase):
|
|
223
|
+
pass
|
|
224
|
+
|
|
241
225
|
|
|
242
|
-
|
|
226
|
+
add_kernel_test(TestConditional, kernel=test_conditional_if_else, dim=1, devices=devices)
|
|
227
|
+
add_kernel_test(TestConditional, kernel=test_conditional_if_else_nested, dim=1, devices=devices)
|
|
228
|
+
add_kernel_test(TestConditional, kernel=test_boolean_and, dim=1, devices=devices)
|
|
229
|
+
add_kernel_test(TestConditional, kernel=test_boolean_or, dim=1, devices=devices)
|
|
230
|
+
add_kernel_test(TestConditional, kernel=test_boolean_compound, dim=1, devices=devices)
|
|
231
|
+
add_kernel_test(TestConditional, kernel=test_boolean_literal, dim=1, devices=devices)
|
|
232
|
+
add_kernel_test(TestConditional, kernel=test_int_logical_not, dim=1, devices=devices)
|
|
233
|
+
add_kernel_test(TestConditional, kernel=test_int_conditional_assign_overload, dim=1, devices=devices)
|
|
234
|
+
add_kernel_test(TestConditional, kernel=test_bool_param_conditional, dim=1, inputs=[True], devices=devices)
|
|
235
|
+
add_kernel_test(TestConditional, kernel=test_conditional_chain_basic, dim=1, devices=devices)
|
|
236
|
+
add_kernel_test(TestConditional, kernel=test_conditional_chain_empty_range, dim=1, devices=devices)
|
|
237
|
+
add_kernel_test(TestConditional, kernel=test_conditional_chain_faker, dim=1, devices=devices)
|
|
238
|
+
add_kernel_test(TestConditional, kernel=test_conditional_chain_and, dim=1, devices=devices)
|
|
239
|
+
add_kernel_test(TestConditional, kernel=test_conditional_chain_eqs, dim=1, devices=devices)
|
|
240
|
+
add_kernel_test(TestConditional, kernel=test_conditional_chain_mixed, dim=1, devices=devices)
|
|
241
|
+
add_function_test(TestConditional, "test_conditional_unequal_types", test_conditional_unequal_types, devices=devices)
|
|
243
242
|
|
|
244
243
|
|
|
245
244
|
if __name__ == "__main__":
|
|
246
245
|
wp.build.clear_kernel_cache()
|
|
247
|
-
_ = register(unittest.TestCase)
|
|
248
246
|
unittest.main(verbosity=2)
|