warp-lang 1.9.0__py3-none-win_amd64.whl → 1.9.1__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.
- warp/__init__.pyi +1420 -2
- warp/bin/warp-clang.dll +0 -0
- warp/bin/warp.dll +0 -0
- warp/build_dll.py +322 -72
- warp/builtins.py +289 -23
- warp/codegen.py +5 -0
- warp/config.py +1 -1
- warp/context.py +243 -32
- warp/examples/interop/example_jax_kernel.py +2 -1
- warp/jax_experimental/custom_call.py +24 -1
- warp/jax_experimental/ffi.py +20 -0
- warp/jax_experimental/xla_ffi.py +16 -7
- warp/native/builtin.h +4 -4
- warp/native/sort.cu +22 -13
- warp/native/sort.h +2 -0
- warp/native/tile.h +188 -13
- warp/native/vec.h +0 -53
- warp/native/warp.cpp +3 -3
- warp/native/warp.cu +60 -30
- warp/native/warp.h +3 -3
- warp/render/render_opengl.py +14 -12
- warp/render/render_usd.py +1 -0
- warp/tests/geometry/test_hash_grid.py +38 -0
- warp/tests/interop/test_jax.py +608 -28
- warp/tests/test_array.py +2 -0
- warp/tests/test_codegen.py +1 -1
- warp/tests/test_fem.py +4 -4
- warp/tests/test_map.py +14 -0
- warp/tests/test_tuple.py +96 -0
- warp/tests/test_types.py +61 -0
- warp/tests/tile/test_tile.py +61 -0
- warp/types.py +17 -3
- {warp_lang-1.9.0.dist-info → warp_lang-1.9.1.dist-info}/METADATA +5 -8
- {warp_lang-1.9.0.dist-info → warp_lang-1.9.1.dist-info}/RECORD +37 -37
- {warp_lang-1.9.0.dist-info → warp_lang-1.9.1.dist-info}/WHEEL +0 -0
- {warp_lang-1.9.0.dist-info → warp_lang-1.9.1.dist-info}/licenses/LICENSE.md +0 -0
- {warp_lang-1.9.0.dist-info → warp_lang-1.9.1.dist-info}/top_level.txt +0 -0
warp/tests/test_array.py
CHANGED
|
@@ -364,6 +364,7 @@ def test_slicing(test, device):
|
|
|
364
364
|
slice_e = arr[-1:3, :, :] # test mixed slicing
|
|
365
365
|
slice_e2 = slice_e[0, 0, :] # test 2x slicing
|
|
366
366
|
slice_f = arr[0:3:2, 0, :] # test step
|
|
367
|
+
slice_g = arr[1:1, :0, -1:-1] # test empty slice
|
|
367
368
|
|
|
368
369
|
assert_array_equal(slice_a, wp.array(np_arr[1, :, :], dtype=float, device=device))
|
|
369
370
|
assert_array_equal(slice_b, wp.array(np_arr[1:2, :, :], dtype=float, device=device))
|
|
@@ -371,6 +372,7 @@ def test_slicing(test, device):
|
|
|
371
372
|
assert_array_equal(slice_d, wp.array(np_arr[-2:-1, :, :], dtype=float, device=device))
|
|
372
373
|
assert_array_equal(slice_e, wp.array(np_arr[-1:3, :, :], dtype=float, device=device))
|
|
373
374
|
assert_array_equal(slice_e2, wp.array(np_arr[2, 0, :], dtype=float, device=device))
|
|
375
|
+
assert slice_g.shape == np_arr[1:1, :0, -1:-1].shape == (0, 0, 0)
|
|
374
376
|
|
|
375
377
|
# wp does not support copying from/to non-contiguous arrays
|
|
376
378
|
# stepped windows must read on the device the original array was created on
|
warp/tests/test_codegen.py
CHANGED
|
@@ -463,7 +463,7 @@ def test_error_unmatched_arguments(test, device):
|
|
|
463
463
|
kernel = wp.Kernel(func=kernel_2_fn)
|
|
464
464
|
with test.assertRaisesRegex(
|
|
465
465
|
RuntimeError,
|
|
466
|
-
r"Input types must be exactly the same, got \['vec2f', '
|
|
466
|
+
r"Input types must be exactly the same, got \['vec2f', 'vec2h'\]",
|
|
467
467
|
):
|
|
468
468
|
wp.launch(kernel, dim=1, device=device)
|
|
469
469
|
|
warp/tests/test_fem.py
CHANGED
|
@@ -874,7 +874,7 @@ def test_deformed_geometry(test, device):
|
|
|
874
874
|
np.sum(side_measures.numpy()), scale**2 * (0.5 * 6 * (N + 1) + N * 2 * math.sqrt(3.0)), places=4
|
|
875
875
|
)
|
|
876
876
|
|
|
877
|
-
@
|
|
877
|
+
@fem.cache.dynamic_kernel(suffix=deformed_geo.name, kernel_options={"enable_backward": False})
|
|
878
878
|
def _test_deformed_geometry_normal(
|
|
879
879
|
geo_index_arg: geo.SideIndexArg, geo_arg: geo.SideArg, def_arg: deformed_geo.SideArg, rotation: wp.vec3
|
|
880
880
|
):
|
|
@@ -926,7 +926,7 @@ def test_deformed_geometry_codimensional(test, device):
|
|
|
926
926
|
|
|
927
927
|
deformed_geo = pos_field.make_deformed_geometry()
|
|
928
928
|
|
|
929
|
-
@
|
|
929
|
+
@fem.cache.dynamic_kernel(suffix=deformed_geo.name, kernel_options={"enable_backward": False})
|
|
930
930
|
def _test_deformed_geometry_normal_codimensional(
|
|
931
931
|
geo_arg: geo.CellArg, def_arg: deformed_geo.CellArg, rotation: wp.vec3
|
|
932
932
|
):
|
|
@@ -1956,7 +1956,7 @@ def test_vector_spaces(test, device):
|
|
|
1956
1956
|
)
|
|
1957
1957
|
|
|
1958
1958
|
|
|
1959
|
-
@wp.kernel
|
|
1959
|
+
@wp.kernel(enable_backward=False)
|
|
1960
1960
|
def test_qr_eigenvalues():
|
|
1961
1961
|
tol = 5.0e-7
|
|
1962
1962
|
|
|
@@ -2011,7 +2011,7 @@ def test_qr_eigenvalues():
|
|
|
2011
2011
|
wp.expect_near(wp.ddot(Err6, Err6), 0.0, 1.0e-13)
|
|
2012
2012
|
|
|
2013
2013
|
|
|
2014
|
-
@wp.kernel
|
|
2014
|
+
@wp.kernel(enable_backward=False)
|
|
2015
2015
|
def test_qr_inverse():
|
|
2016
2016
|
rng = wp.rand_init(4356, wp.tid())
|
|
2017
2017
|
M = wp.mat33(
|
warp/tests/test_map.py
CHANGED
|
@@ -476,6 +476,20 @@ add_function_test(TestMap, "test_graph_capture", test_graph_capture, devices=cud
|
|
|
476
476
|
add_function_test(TestMap, "test_renamed_warp_module", test_renamed_warp_module, devices=devices)
|
|
477
477
|
|
|
478
478
|
|
|
479
|
+
class TestMapDebug(unittest.TestCase):
|
|
480
|
+
@classmethod
|
|
481
|
+
def setUpClass(cls):
|
|
482
|
+
cls._saved_mode = wp.config.mode
|
|
483
|
+
wp.config.mode = "debug"
|
|
484
|
+
|
|
485
|
+
@classmethod
|
|
486
|
+
def tearDownClass(cls):
|
|
487
|
+
wp.config.mode = cls._saved_mode
|
|
488
|
+
|
|
489
|
+
|
|
490
|
+
add_function_test(TestMapDebug, "test_mixed_inputs", test_mixed_inputs, devices=devices)
|
|
491
|
+
add_function_test(TestMapDebug, "test_kernel_creation", test_kernel_creation, devices=devices)
|
|
492
|
+
|
|
479
493
|
if __name__ == "__main__":
|
|
480
494
|
wp.clear_kernel_cache()
|
|
481
495
|
unittest.main(verbosity=2)
|
warp/tests/test_tuple.py
CHANGED
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
# See the License for the specific language governing permissions and
|
|
14
14
|
# limitations under the License.
|
|
15
15
|
|
|
16
|
+
import sys
|
|
16
17
|
import unittest
|
|
17
18
|
from typing import Any, Tuple
|
|
18
19
|
|
|
@@ -208,6 +209,92 @@ def test_loop_variadic_ellipsis():
|
|
|
208
209
|
wp.expect_eq(res, 22)
|
|
209
210
|
|
|
210
211
|
|
|
212
|
+
# Test for Python 3.10 tuple type compatibility issue
|
|
213
|
+
# Only define these functions on Python 3.9+ where lowercase tuple is supported
|
|
214
|
+
if sys.version_info >= (3, 9):
|
|
215
|
+
|
|
216
|
+
@wp.func
|
|
217
|
+
def complex_tuple_function(scale: float, offset: wp.vec3) -> tuple[float, wp.vec3f, wp.vec3f]:
|
|
218
|
+
"""
|
|
219
|
+
Function that returns a complex tuple with mixed types.
|
|
220
|
+
This specifically tests the tuple[float, wp.vec3f, wp.vec3f] case
|
|
221
|
+
that was problematic on Python 3.10.
|
|
222
|
+
"""
|
|
223
|
+
# Create some computed values
|
|
224
|
+
scaled_value = scale * 2.5
|
|
225
|
+
position = wp.vec3f(offset.x + 1.0, offset.y + 2.0, offset.z + 3.0)
|
|
226
|
+
velocity = wp.vec3f(scale * 0.1, scale * 0.2, scale * 0.3)
|
|
227
|
+
|
|
228
|
+
return (scaled_value, position, velocity)
|
|
229
|
+
|
|
230
|
+
@wp.func
|
|
231
|
+
def mixed_types_tuple_function() -> tuple[wp.vec3f, wp.vec3f, float, wp.mat33f]:
|
|
232
|
+
"""
|
|
233
|
+
Function returning mixed types in a tuple.
|
|
234
|
+
Tests tuple[vec3f, vec3f, float, mat33f] type annotation.
|
|
235
|
+
"""
|
|
236
|
+
return (
|
|
237
|
+
wp.vec3f(1.0, 2.0, 3.0),
|
|
238
|
+
wp.vec3f(4.0, 5.0, 6.0),
|
|
239
|
+
42.0,
|
|
240
|
+
wp.mat33f(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0),
|
|
241
|
+
)
|
|
242
|
+
|
|
243
|
+
@wp.func
|
|
244
|
+
def homogeneous_tuple_function() -> tuple[wp.vec3f, wp.vec3f, wp.vec3f]:
|
|
245
|
+
"""
|
|
246
|
+
Function returning fixed-size homogeneous tuple.
|
|
247
|
+
Tests tuple[wp.vec3f, wp.vec3f, wp.vec3f] type annotation.
|
|
248
|
+
"""
|
|
249
|
+
return (wp.vec3f(1.0, 2.0, 3.0), wp.vec3f(4.0, 5.0, 6.0), wp.vec3f(7.0, 8.0, 9.0))
|
|
250
|
+
|
|
251
|
+
@wp.kernel
|
|
252
|
+
def test_complex_tuple_functions():
|
|
253
|
+
"""
|
|
254
|
+
Kernel that tests complex tuple return types that were problematic on Python 3.10.
|
|
255
|
+
"""
|
|
256
|
+
# Test the main problematic case: tuple[float, wp.vec3f, wp.vec3f]
|
|
257
|
+
result1 = complex_tuple_function(4.0, wp.vec3(10.0, 20.0, 30.0))
|
|
258
|
+
|
|
259
|
+
# Unpack and verify
|
|
260
|
+
scale_result, pos_result, vel_result = result1
|
|
261
|
+
wp.expect_near(scale_result, 10.0) # 4.0 * 2.5
|
|
262
|
+
wp.expect_eq(pos_result, wp.vec3f(11.0, 22.0, 33.0))
|
|
263
|
+
wp.expect_eq(vel_result, wp.vec3f(0.4, 0.8, 1.2))
|
|
264
|
+
|
|
265
|
+
# Test access by index
|
|
266
|
+
wp.expect_near(result1[0], 10.0)
|
|
267
|
+
wp.expect_eq(result1[1], wp.vec3f(11.0, 22.0, 33.0))
|
|
268
|
+
wp.expect_eq(result1[2], wp.vec3f(0.4, 0.8, 1.2))
|
|
269
|
+
|
|
270
|
+
# Test more complex tuple: tuple[vec3f, vec3f, float, mat33f]
|
|
271
|
+
mixed_result = mixed_types_tuple_function()
|
|
272
|
+
result_pos, result_vel, result_energy, result_transform = mixed_result
|
|
273
|
+
|
|
274
|
+
# Verify known values
|
|
275
|
+
wp.expect_eq(result_pos, wp.vec3f(1.0, 2.0, 3.0))
|
|
276
|
+
wp.expect_eq(result_vel, wp.vec3f(4.0, 5.0, 6.0))
|
|
277
|
+
wp.expect_eq(result_energy, 42.0)
|
|
278
|
+
|
|
279
|
+
# Verify transform matrix is identity
|
|
280
|
+
wp.expect_eq(result_transform[0, 0], 1.0)
|
|
281
|
+
wp.expect_eq(result_transform[1, 1], 1.0)
|
|
282
|
+
wp.expect_eq(result_transform[2, 2], 1.0)
|
|
283
|
+
|
|
284
|
+
# Test fixed-size homogeneous tuple: tuple[wp.vec3f, wp.vec3f, wp.vec3f]
|
|
285
|
+
homo_result = homogeneous_tuple_function()
|
|
286
|
+
wp.expect_eq(len(homo_result), 3)
|
|
287
|
+
wp.expect_eq(homo_result[0], wp.vec3f(1.0, 2.0, 3.0))
|
|
288
|
+
wp.expect_eq(homo_result[1], wp.vec3f(4.0, 5.0, 6.0))
|
|
289
|
+
wp.expect_eq(homo_result[2], wp.vec3f(7.0, 8.0, 9.0))
|
|
290
|
+
|
|
291
|
+
# Test unpacking
|
|
292
|
+
vec1, vec2, vec3 = homo_result
|
|
293
|
+
wp.expect_eq(vec1, wp.vec3f(1.0, 2.0, 3.0))
|
|
294
|
+
wp.expect_eq(vec2, wp.vec3f(4.0, 5.0, 6.0))
|
|
295
|
+
wp.expect_eq(vec3, wp.vec3f(7.0, 8.0, 9.0))
|
|
296
|
+
|
|
297
|
+
|
|
211
298
|
devices = get_test_devices()
|
|
212
299
|
|
|
213
300
|
|
|
@@ -258,6 +345,15 @@ add_kernel_test(
|
|
|
258
345
|
dim=1,
|
|
259
346
|
devices=devices,
|
|
260
347
|
)
|
|
348
|
+
# Only register the test for lowercase tuple syntax on Python 3.9+
|
|
349
|
+
if sys.version_info >= (3, 9):
|
|
350
|
+
add_kernel_test(
|
|
351
|
+
TestTuple,
|
|
352
|
+
name="test_complex_tuple_functions",
|
|
353
|
+
kernel=test_complex_tuple_functions,
|
|
354
|
+
dim=1,
|
|
355
|
+
devices=devices,
|
|
356
|
+
)
|
|
261
357
|
|
|
262
358
|
|
|
263
359
|
if __name__ == "__main__":
|
warp/tests/test_types.py
CHANGED
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
# See the License for the specific language governing permissions and
|
|
14
14
|
# limitations under the License.
|
|
15
15
|
|
|
16
|
+
import sys
|
|
16
17
|
import unittest
|
|
17
18
|
|
|
18
19
|
from warp.tests.unittest_utils import *
|
|
@@ -527,6 +528,66 @@ class TestTypes(unittest.TestCase):
|
|
|
527
528
|
test_conversions(wp.uint64, np.uint64)
|
|
528
529
|
test_conversions(wp.bool, np.bool_)
|
|
529
530
|
|
|
531
|
+
# Only define this test method on Python 3.9+ where lowercase tuple is supported
|
|
532
|
+
if sys.version_info >= (3, 9):
|
|
533
|
+
|
|
534
|
+
def test_tuple_type_code_generation(self):
|
|
535
|
+
"""Test that tuple type annotations generate correct type codes, especially on Python 3.10."""
|
|
536
|
+
import sys
|
|
537
|
+
import types
|
|
538
|
+
from typing import get_origin
|
|
539
|
+
|
|
540
|
+
# Test basic tuple types
|
|
541
|
+
tuple_float_float = tuple[float, float]
|
|
542
|
+
result = wp.types.get_type_code(tuple_float_float)
|
|
543
|
+
self.assertEqual(result, "tpl2f4f4", "tuple[float, float] should generate 'tpl2f4f4'")
|
|
544
|
+
|
|
545
|
+
# Test tuple with Warp vector types - the problematic case from Python 3.10
|
|
546
|
+
tuple_mixed = tuple[float, wp.vec3f, wp.vec3f]
|
|
547
|
+
result = wp.types.get_type_code(tuple_mixed)
|
|
548
|
+
self.assertEqual(result, "tpl3f4v3f4v3f4", "tuple[float, vec3f, vec3f] should generate 'tpl3f4v3f4v3f4'")
|
|
549
|
+
|
|
550
|
+
# Test homogeneous tuple with ellipsis
|
|
551
|
+
tuple_homogeneous = tuple[wp.vec3f, ...]
|
|
552
|
+
result = wp.types.get_type_code(tuple_homogeneous)
|
|
553
|
+
self.assertEqual(result, "tpl2v3f4?", "tuple[vec3f, ...] should generate 'tpl2v3f4?'")
|
|
554
|
+
|
|
555
|
+
# Test single element tuple
|
|
556
|
+
tuple_single = tuple[wp.int32]
|
|
557
|
+
result = wp.types.get_type_code(tuple_single)
|
|
558
|
+
self.assertEqual(result, "tpl1i4", "tuple[int32] should generate 'tpl1i4'")
|
|
559
|
+
|
|
560
|
+
# Test tuple with multiple Warp types
|
|
561
|
+
tuple_multi_warp = tuple[wp.vec3f, wp.mat33f, wp.quatf]
|
|
562
|
+
result = wp.types.get_type_code(tuple_multi_warp)
|
|
563
|
+
self.assertEqual(
|
|
564
|
+
result, "tpl3v3f4m33f4qf4", "tuple[vec3f, mat33f, quatf] should generate 'tpl3v3f4m33f4qf4'"
|
|
565
|
+
)
|
|
566
|
+
|
|
567
|
+
# Verify the fix works on Python 3.9-3.10 specifically
|
|
568
|
+
if sys.version_info < (3, 11) and hasattr(types, "GenericAlias"):
|
|
569
|
+
# On Python 3.9-3.10, tuple[...] creates types.GenericAlias
|
|
570
|
+
self.assertIsInstance(
|
|
571
|
+
tuple_mixed, types.GenericAlias, "On Python 3.9-3.10, tuple[...] should create types.GenericAlias"
|
|
572
|
+
)
|
|
573
|
+
self.assertIs(tuple_mixed.__origin__, tuple, "GenericAlias origin should be tuple")
|
|
574
|
+
|
|
575
|
+
# Verify our fix catches this case
|
|
576
|
+
self.assertEqual(get_origin(tuple_mixed), tuple, "get_origin should return tuple")
|
|
577
|
+
elif sys.version_info >= (3, 11):
|
|
578
|
+
# On Python 3.11+, the existing code path should handle it
|
|
579
|
+
self.assertEqual(get_origin(tuple_mixed), tuple, "get_origin should return tuple on Python 3.11+")
|
|
580
|
+
|
|
581
|
+
# Test that the fix doesn't break existing functionality
|
|
582
|
+
# Test with built-in Python types
|
|
583
|
+
tuple_builtin = tuple[int, str, bool]
|
|
584
|
+
try:
|
|
585
|
+
# This might fail because str and bool aren't Warp types, but it shouldn't crash
|
|
586
|
+
wp.types.get_type_code(tuple_builtin)
|
|
587
|
+
except TypeError as e:
|
|
588
|
+
# Expected to fail for non-Warp types, but should be a clean TypeError
|
|
589
|
+
self.assertIn("Unrecognized type", str(e))
|
|
590
|
+
|
|
530
591
|
|
|
531
592
|
for dtype in wp.types.int_types:
|
|
532
593
|
add_function_test(TestTypes, f"test_integers_{dtype.__name__}", test_integers, devices=devices, dtype=dtype)
|
warp/tests/tile/test_tile.py
CHANGED
|
@@ -837,6 +837,66 @@ def test_tile_assign(test, device):
|
|
|
837
837
|
assert_np_equal(x.grad.numpy(), np.full(TILE_M, 1.0, dtype=np.float32))
|
|
838
838
|
|
|
839
839
|
|
|
840
|
+
@wp.kernel
|
|
841
|
+
def test_tile_where_kernel(select: int, x: wp.array(dtype=float), y: wp.array(dtype=float), z: wp.array(dtype=float)):
|
|
842
|
+
x_reg = wp.tile_load(x, shape=(TILE_M,), storage="register")
|
|
843
|
+
y_reg = wp.tile_load(y, shape=(TILE_M,), storage="register")
|
|
844
|
+
|
|
845
|
+
x_shared = wp.tile_load(x, shape=(TILE_M,), storage="shared")
|
|
846
|
+
y_shared = wp.tile_load(y, shape=(TILE_M,), storage="shared")
|
|
847
|
+
|
|
848
|
+
if select == 0:
|
|
849
|
+
s = x_reg
|
|
850
|
+
elif select == 1:
|
|
851
|
+
s = y_reg
|
|
852
|
+
elif select == 2:
|
|
853
|
+
s = x_shared
|
|
854
|
+
else:
|
|
855
|
+
s = y_shared
|
|
856
|
+
|
|
857
|
+
wp.tile_store(z, s)
|
|
858
|
+
|
|
859
|
+
|
|
860
|
+
def test_tile_where(test, device):
|
|
861
|
+
x = wp.full((TILE_M,), 1.0, dtype=float, device=device, requires_grad=True)
|
|
862
|
+
y = wp.full((TILE_M,), 2.0, dtype=float, device=device, requires_grad=True)
|
|
863
|
+
z = wp.zeros((TILE_M), dtype=float, device=device, requires_grad=True)
|
|
864
|
+
|
|
865
|
+
z_expected = [
|
|
866
|
+
np.full(TILE_M, 1.0, dtype=np.float32),
|
|
867
|
+
np.full(TILE_M, 2.0, dtype=np.float32),
|
|
868
|
+
np.full(TILE_M, 1.0, dtype=np.float32),
|
|
869
|
+
np.full(TILE_M, 2.0, dtype=np.float32),
|
|
870
|
+
]
|
|
871
|
+
x_grad_expected = [
|
|
872
|
+
np.full(TILE_M, 1.0, dtype=np.float32),
|
|
873
|
+
np.full(TILE_M, 0.0, dtype=np.float32),
|
|
874
|
+
np.full(TILE_M, 1.0, dtype=np.float32),
|
|
875
|
+
np.full(TILE_M, 0.0, dtype=np.float32),
|
|
876
|
+
]
|
|
877
|
+
y_grad_expected = [
|
|
878
|
+
np.full(TILE_M, 0.0, dtype=np.float32),
|
|
879
|
+
np.full(TILE_M, 1.0, dtype=np.float32),
|
|
880
|
+
np.full(TILE_M, 0.0, dtype=np.float32),
|
|
881
|
+
np.full(TILE_M, 1.0, dtype=np.float32),
|
|
882
|
+
]
|
|
883
|
+
|
|
884
|
+
for i in range(4):
|
|
885
|
+
tape = wp.Tape()
|
|
886
|
+
with tape:
|
|
887
|
+
wp.launch_tiled(test_tile_where_kernel, dim=[1], inputs=[i, x, y], outputs=[z], block_dim=32, device=device)
|
|
888
|
+
|
|
889
|
+
z.grad = wp.ones_like(z)
|
|
890
|
+
|
|
891
|
+
tape.backward()
|
|
892
|
+
|
|
893
|
+
assert_np_equal(z.numpy(), z_expected[i])
|
|
894
|
+
assert_np_equal(x.grad.numpy(), x_grad_expected[i])
|
|
895
|
+
assert_np_equal(y.grad.numpy(), y_grad_expected[i])
|
|
896
|
+
|
|
897
|
+
tape.zero()
|
|
898
|
+
|
|
899
|
+
|
|
840
900
|
@wp.kernel
|
|
841
901
|
def test_tile_transpose_kernel(input: wp.array2d(dtype=float), output: wp.array2d(dtype=float)):
|
|
842
902
|
x = wp.tile_load(input, shape=(TILE_M, TILE_N))
|
|
@@ -1261,6 +1321,7 @@ add_function_test(TestTile, "test_tile_sum_launch", test_tile_sum_launch, device
|
|
|
1261
1321
|
add_function_test(TestTile, "test_tile_extract", test_tile_extract, devices=devices)
|
|
1262
1322
|
add_function_test(TestTile, "test_tile_extract_repeated", test_tile_extract_repeated, devices=devices)
|
|
1263
1323
|
add_function_test(TestTile, "test_tile_assign", test_tile_assign, devices=devices)
|
|
1324
|
+
add_function_test(TestTile, "test_tile_where", test_tile_where, devices=devices)
|
|
1264
1325
|
add_function_test(TestTile, "test_tile_broadcast_add_1d", test_tile_broadcast_add_1d, devices=devices)
|
|
1265
1326
|
add_function_test(TestTile, "test_tile_broadcast_add_2d", test_tile_broadcast_add_2d, devices=devices)
|
|
1266
1327
|
add_function_test(TestTile, "test_tile_broadcast_add_3d", test_tile_broadcast_add_3d, devices=devices)
|
warp/types.py
CHANGED
|
@@ -20,6 +20,8 @@ import ctypes
|
|
|
20
20
|
import inspect
|
|
21
21
|
import math
|
|
22
22
|
import struct
|
|
23
|
+
import sys
|
|
24
|
+
import types
|
|
23
25
|
import zlib
|
|
24
26
|
from typing import (
|
|
25
27
|
Any,
|
|
@@ -1883,7 +1885,9 @@ def type_typestr(dtype: type) -> str:
|
|
|
1883
1885
|
|
|
1884
1886
|
|
|
1885
1887
|
def scalar_short_name(t):
|
|
1886
|
-
if t ==
|
|
1888
|
+
if t == float16:
|
|
1889
|
+
return "h"
|
|
1890
|
+
elif t == float32:
|
|
1887
1891
|
return "f"
|
|
1888
1892
|
elif t == float64:
|
|
1889
1893
|
return "d"
|
|
@@ -2963,9 +2967,9 @@ class array(Array[DType]):
|
|
|
2963
2967
|
|
|
2964
2968
|
if start < 0 or start >= self.shape[idx]:
|
|
2965
2969
|
raise RuntimeError(f"Invalid indexing in slice: {start}:{stop}:{step}")
|
|
2966
|
-
if stop <
|
|
2970
|
+
if stop < 0 or stop > self.shape[idx]:
|
|
2967
2971
|
raise RuntimeError(f"Invalid indexing in slice: {start}:{stop}:{step}")
|
|
2968
|
-
if stop
|
|
2972
|
+
if stop < start:
|
|
2969
2973
|
raise RuntimeError(f"Invalid indexing in slice: {start}:{stop}:{step}")
|
|
2970
2974
|
|
|
2971
2975
|
new_shape.append(-((stop - start) // -step)) # ceil division
|
|
@@ -5679,6 +5683,16 @@ def get_type_code(arg_type: type) -> str:
|
|
|
5679
5683
|
# special case for generics
|
|
5680
5684
|
# note: since Python 3.11 Any is a type, so we check for it first
|
|
5681
5685
|
return "?"
|
|
5686
|
+
elif (
|
|
5687
|
+
sys.version_info < (3, 11)
|
|
5688
|
+
and hasattr(types, "GenericAlias")
|
|
5689
|
+
and isinstance(arg_type, types.GenericAlias)
|
|
5690
|
+
and arg_type.__origin__ is tuple
|
|
5691
|
+
):
|
|
5692
|
+
# Handle tuple[...] on Python <= 3.10 where it creates types.GenericAlias
|
|
5693
|
+
# This must come before isinstance(arg_type, type) check
|
|
5694
|
+
arg_types = arg_type.__args__
|
|
5695
|
+
return f"tpl{len(arg_types)}{''.join(get_type_code(x) for x in arg_types)}"
|
|
5682
5696
|
elif isinstance(arg_type, type):
|
|
5683
5697
|
if hasattr(arg_type, "_wp_scalar_type_"):
|
|
5684
5698
|
# vector/matrix type
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: warp-lang
|
|
3
|
-
Version: 1.9.
|
|
3
|
+
Version: 1.9.1
|
|
4
4
|
Summary: A Python framework for high-performance simulation and graphics programming
|
|
5
5
|
Author-email: NVIDIA Corporation <warp-python@nvidia.com>
|
|
6
6
|
License: Apache-2.0
|
|
@@ -55,7 +55,6 @@ Dynamic: license-file
|
|
|
55
55
|
[](https://pepy.tech/project/warp-lang)
|
|
56
56
|
[](https://codecov.io/github/NVIDIA/warp)
|
|
57
57
|

|
|
58
|
-
[](https://discord.com/invite/nvidiaomniverse)
|
|
59
58
|
|
|
60
59
|
# NVIDIA Warp
|
|
61
60
|
|
|
@@ -95,9 +94,9 @@ the `pip install` command, e.g.
|
|
|
95
94
|
|
|
96
95
|
| Platform | Install Command |
|
|
97
96
|
| --------------- | ----------------------------------------------------------------------------------------------------------------------------- |
|
|
98
|
-
| Linux aarch64 | `pip install https://github.com/NVIDIA/warp/releases/download/v1.9.
|
|
99
|
-
| Linux x86-64 | `pip install https://github.com/NVIDIA/warp/releases/download/v1.9.
|
|
100
|
-
| Windows x86-64 | `pip install https://github.com/NVIDIA/warp/releases/download/v1.9.
|
|
97
|
+
| Linux aarch64 | `pip install https://github.com/NVIDIA/warp/releases/download/v1.9.1/warp_lang-1.9.1+cu13-py3-none-manylinux_2_34_aarch64.whl` |
|
|
98
|
+
| Linux x86-64 | `pip install https://github.com/NVIDIA/warp/releases/download/v1.9.1/warp_lang-1.9.1+cu13-py3-none-manylinux_2_34_x86_64.whl` |
|
|
99
|
+
| Windows x86-64 | `pip install https://github.com/NVIDIA/warp/releases/download/v1.9.1/warp_lang-1.9.1+cu13-py3-none-win_amd64.whl` |
|
|
101
100
|
|
|
102
101
|
The `--force-reinstall` option may need to be used to overwrite a previous installation.
|
|
103
102
|
|
|
@@ -463,9 +462,7 @@ See the [FAQ](https://nvidia.github.io/warp/faq.html) in the Warp documentation.
|
|
|
463
462
|
|
|
464
463
|
Problems, questions, and feature requests can be opened on [GitHub Issues](https://github.com/NVIDIA/warp/issues).
|
|
465
464
|
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
For inquiries not suited for GitHub Issues or Discord, please email warp-python@nvidia.com.
|
|
465
|
+
For inquiries not suited for GitHub Issues, please email warp-python@nvidia.com.
|
|
469
466
|
|
|
470
467
|
## Versioning
|
|
471
468
|
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
warp/__init__.py,sha256=6Q39Ws8frwVWlNseSikMYFN2gNQOyi19jTimPUHU4LM,13186
|
|
2
|
-
warp/__init__.pyi,sha256=
|
|
2
|
+
warp/__init__.pyi,sha256=TeSsDozzuo5GN3d_GbrzxZzoJxKlabyTmkVVCyArjgY,162574
|
|
3
3
|
warp/autograd.py,sha256=vNW2gsnZai_DE2sW4CK9nRkyitXRIvsVeLEQXOYNNUA,43876
|
|
4
4
|
warp/build.py,sha256=lRUVXoy5zf13IS2qD6KZkw2MrZpeOlsne4HIMkYDWvg,21978
|
|
5
|
-
warp/build_dll.py,sha256=
|
|
6
|
-
warp/builtins.py,sha256
|
|
7
|
-
warp/codegen.py,sha256=
|
|
8
|
-
warp/config.py,sha256=
|
|
5
|
+
warp/build_dll.py,sha256=xUn6O1Zqi21bDiMrucrH-0NxNKNdJZaFMDJzdrxGrvY,30246
|
|
6
|
+
warp/builtins.py,sha256=-Rb64Tn43t2btyHgJWUpdEg464oFutZnkvEk3FmPAvE,309707
|
|
7
|
+
warp/codegen.py,sha256=_U0zRJgrF15SX9kYzpScYZGyWfrLdYlxI4pF72kWkBs,163294
|
|
8
|
+
warp/config.py,sha256=Sugj34QY7NnQYIVzvr8ZmYOUaaqANex_Ky4Dt6r1JDY,5370
|
|
9
9
|
warp/constants.py,sha256=gkRo9_7Um4GmHpbMYswqaQRXATwGlD-jyROGZJs0DBg,1593
|
|
10
|
-
warp/context.py,sha256=
|
|
10
|
+
warp/context.py,sha256=Zk4kkB3NAgkyq63eMJiH6fMNFol5xcGUvSBXLdYL9H4,325072
|
|
11
11
|
warp/dlpack.py,sha256=Jzz3mnuml93gBgMy5qdeR6ei8EFIwonXTuRLXmai9jI,17253
|
|
12
12
|
warp/fabric.py,sha256=vFjy518-IkbYIP1sDdqRHI3489QnCN9Gf8e6VGaSm0w,12106
|
|
13
13
|
warp/jax.py,sha256=wSQDHbsm5S0gHYNSkHmtmOnDMi3LRoiM17VwhNjKBh8,5865
|
|
@@ -18,10 +18,10 @@ warp/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
|
18
18
|
warp/sparse.py,sha256=qb6g5oofbMvJoJcigJt7LJFoue5wUldXDYh5TQxuYmQ,89546
|
|
19
19
|
warp/tape.py,sha256=-5R4OOemKuX_DMooe6cO7TZZsKj1Xo84SGHtqXnjelg,49581
|
|
20
20
|
warp/torch.py,sha256=E8Yib8qvJtIw5fE1dfqun-UDqOixadaYQjf3JE84eak,14761
|
|
21
|
-
warp/types.py,sha256=
|
|
21
|
+
warp/types.py,sha256=RuNDRmGs1sDTibh3Ara0W7m9iexjCSNK9Vd-aWf03ro,210642
|
|
22
22
|
warp/utils.py,sha256=_plWUGHTLRf7jQzioc9amO0k8TxMMe_WTlVUm2mW8tI,63029
|
|
23
|
-
warp/bin/warp-clang.dll,sha256=
|
|
24
|
-
warp/bin/warp.dll,sha256=
|
|
23
|
+
warp/bin/warp-clang.dll,sha256=SxDeoOHSAWuoYYlWhBUyTMtP89eQ68ocbfecq_-4SFA,47586816
|
|
24
|
+
warp/bin/warp.dll,sha256=47QJ7VLWRoXCMFZgec9n_e5wZTfcYoPiO1ogKerF1IM,238960128
|
|
25
25
|
warp/examples/__init__.py,sha256=9XbxzPxvdPnjCMHB30fptKx0lxY_8jD6vkNl6wm8YMA,862
|
|
26
26
|
warp/examples/browse.py,sha256=RjPx0fxpxmpPbEp_e7tzrUpo4XgLsDn_OnWxD0ggXeo,1104
|
|
27
27
|
warp/examples/assets/bear.usd,sha256=1SK7s-zpF3Ypzcc8Wt861o174Pe-xMuJpvosACXVNUk,226238
|
|
@@ -95,7 +95,7 @@ warp/examples/fem/example_streamlines.py,sha256=CgJJyncXv1F9gSjkuzRmWWw9JyMoMQ_N
|
|
|
95
95
|
warp/examples/fem/utils.py,sha256=TIo6O4p18dcfnCbGkg1PtdK3zbbZ1M4F6_NewlY5v_w,35534
|
|
96
96
|
warp/examples/interop/example_jax_callable.py,sha256=B5EyxIMomorD5RPm9VKfDZ2hgkPikQQrblGQy9C48WU,3829
|
|
97
97
|
warp/examples/interop/example_jax_ffi_callback.py,sha256=NEUyRbOUz56vg9_OQ3MYYAI2GByEsTGWbZafJyl6eO0,3955
|
|
98
|
-
warp/examples/interop/example_jax_kernel.py,sha256=
|
|
98
|
+
warp/examples/interop/example_jax_kernel.py,sha256=tZRvTV7Hq5y4xExw-yrk0yOsk9DiWjZL2yshrYb8VCY,5562
|
|
99
99
|
warp/examples/optim/example_bounce.py,sha256=Df5PWueLI0MMWb9z-L1OZBuxiKGb3lyN0UeLSeYiy28,8728
|
|
100
100
|
warp/examples/optim/example_cloth_throw.py,sha256=x2cneVhtrS4q2z7IhiJowCtlHFfDk8Semzr_EemHmVQ,7471
|
|
101
101
|
warp/examples/optim/example_diffray.py,sha256=-vro_MCO0RWistSPoYciuNOOJNHc3dpWZeLZvjKNSwE,18498
|
|
@@ -184,11 +184,11 @@ warp/fem/space/shape/square_shape_function.py,sha256=7YGJpwhekb1Mt0POMfT7zdWx66_
|
|
|
184
184
|
warp/fem/space/shape/tet_shape_function.py,sha256=x5OF1GCeXMDSX2YQfqZGUw78afgvO1aYIHodA7KxjOo,28450
|
|
185
185
|
warp/fem/space/shape/triangle_shape_function.py,sha256=rYYseJ4yrnDAb4Z9Hhj2CCPWR7GhfvrdueUA4lJxPcY,22334
|
|
186
186
|
warp/jax_experimental/__init__.py,sha256=ICnjIx1-nVyRIT50kDGEUJqFvIOx_HxjHDNRz6NIIjk,716
|
|
187
|
-
warp/jax_experimental/custom_call.py,sha256=
|
|
188
|
-
warp/jax_experimental/ffi.py,sha256=
|
|
189
|
-
warp/jax_experimental/xla_ffi.py,sha256=
|
|
187
|
+
warp/jax_experimental/custom_call.py,sha256=Ok-MoADXuswnp2m1cwXLryN8VMWFwTdQerJC18OQmJ8,15213
|
|
188
|
+
warp/jax_experimental/ffi.py,sha256=oIu2T70FBHmaSDoMunrku6Y06d2nlZq_c0Q4njTvcNo,39579
|
|
189
|
+
warp/jax_experimental/xla_ffi.py,sha256=vkeVNXwPZoEi6FpcMY6gGtLb4tbFGrYocZhAweMbpKA,20329
|
|
190
190
|
warp/native/array.h,sha256=C9NPjk-XNF42Ma9GLWD0g2refkygGHAOHcCy-C7j0W4,48911
|
|
191
|
-
warp/native/builtin.h,sha256=
|
|
191
|
+
warp/native/builtin.h,sha256=67ZyFOH63IEW3hfOtO5LfRKCJ9DMf4qm6ihBez8JyGI,60045
|
|
192
192
|
warp/native/bvh.cpp,sha256=ILQeX3n8UZDXuPd0IARWk2wqf07ksnKS7uBC-4QCo90,15314
|
|
193
193
|
warp/native/bvh.cu,sha256=23raMQvPFmI1WcFBiYwGsO8MyzQidU8cWpuUpePThG8,31501
|
|
194
194
|
warp/native/bvh.h,sha256=SIrtvuHgam6gEOipMPn6ayQ0GN9PIjDTM84bakhVoD4,14224
|
|
@@ -228,28 +228,28 @@ warp/native/scan.cu,sha256=j_gYWjjyGyMKGWJZg2_NG9FaM-2O_irAIT_RoZduzgY,1891
|
|
|
228
228
|
warp/native/scan.h,sha256=rpJAtuy9cYL-zpUCf3qfknmaDcqhNKb7nzEk5GRKN5s,921
|
|
229
229
|
warp/native/solid_angle.h,sha256=uzsT9wfobSCFM_DWWA2VGBVc9GQV-XVISwYk29gTecU,16674
|
|
230
230
|
warp/native/sort.cpp,sha256=wMwUplzQMUBhvWae56z0rzZRbXxrAuMTDIOBMrei-JA,7234
|
|
231
|
-
warp/native/sort.cu,sha256=
|
|
232
|
-
warp/native/sort.h,sha256=
|
|
231
|
+
warp/native/sort.cu,sha256=NsbKazBpwJlC4SK28c9Xs_kWZ-iWgXyvBMJ14ad9aWc,8844
|
|
232
|
+
warp/native/sort.h,sha256=BgebSUx_1DbGhp0iOY2n8FkrErSH4XlchujazMfCqYE,1893
|
|
233
233
|
warp/native/sparse.cpp,sha256=cMVLRnLoBK6CfBVpLDIX6ACcnHMQV0YGE9ufHSUrBg4,7805
|
|
234
234
|
warp/native/sparse.cu,sha256=_nnunlIHLx0umhcvCn5mbBAxGlQk8l6AyW1FdVSKwhc,14590
|
|
235
235
|
warp/native/spatial.h,sha256=CeL5p6WJJ1lHgS9tm33CJM7wE_pVAA4Nque6q4WGUYg,36376
|
|
236
236
|
warp/native/svd.h,sha256=5TjIhniZV-iSdB4nCLmXHfkM36Fgoo8SkOCU4zGKOoc,26381
|
|
237
237
|
warp/native/temp_buffer.h,sha256=yrezsRrNRiGdjVsMqplbjgGdFRhC7Umc47i2cZves5A,1194
|
|
238
|
-
warp/native/tile.h,sha256
|
|
238
|
+
warp/native/tile.h,sha256=RaHWHtvpBVfI_0u-K_YSOTOFAGiIgRCLeH596ZawZzc,124726
|
|
239
239
|
warp/native/tile_radix_sort.h,sha256=-0BidPW8J1qOwWEUrc0qDcsqsG4nzZP95qyKVsnTyCk,35233
|
|
240
240
|
warp/native/tile_reduce.h,sha256=wWhHKIKKfWr3M23MHUbzqdxdI9C1X0dmgWjj0ftXM1A,13146
|
|
241
241
|
warp/native/tile_scan.h,sha256=ux-xdNP0SY2MUaYJ_mc1OdGD5gC-U499jqnIsCyKgOM,6130
|
|
242
242
|
warp/native/tuple.h,sha256=MMPhSlAEk4ek3DsKPNCZoEdSL0-0phZhQspeEvay8GI,4140
|
|
243
|
-
warp/native/vec.h,sha256=
|
|
243
|
+
warp/native/vec.h,sha256=D6iCugqoVyU2pvs-g3HK-z6M_oRSmiNdmVLAMyPfiQg,47532
|
|
244
244
|
warp/native/volume.cpp,sha256=5WyHil_HDm0UfF2lv2WuiOOQpz4UBgCFyiQOc9lrDVw,17258
|
|
245
245
|
warp/native/volume.cu,sha256=afNg7jZ99dT1Tr7VGL_n82mtps0IaTMKt5fAceM3Nx0,2516
|
|
246
246
|
warp/native/volume.h,sha256=rObdYhnXekPWPi-NinZAFxN9r81mh3gUVQKK-g6KQNo,36681
|
|
247
247
|
warp/native/volume_builder.cu,sha256=cN4HKGzL4raKrKxUiNAehhy7RBFpHIjfFfaB3Pyrzl0,15790
|
|
248
248
|
warp/native/volume_builder.h,sha256=gTTADApTLuoPNPgHkoYcOW7GO9WX3WhqDnbQjUBggNw,2071
|
|
249
249
|
warp/native/volume_impl.h,sha256=jg03Jg2_ji5lYjZKxl2v0o9kVdUdVUW9yFQXLmqy_ow,2442
|
|
250
|
-
warp/native/warp.cpp,sha256=
|
|
251
|
-
warp/native/warp.cu,sha256=
|
|
252
|
-
warp/native/warp.h,sha256=
|
|
250
|
+
warp/native/warp.cpp,sha256=CwQhAhs39O2uijWfzkiWvzmCL1Tx25TEftGLUSvIpO4,38525
|
|
251
|
+
warp/native/warp.cu,sha256=pAYLwtqaE389bBEyGdRbOiXwQ8ZXJ0w0NTJww_VNR5s,147608
|
|
252
|
+
warp/native/warp.h,sha256=rF57L9t-1LwP01CDqG4-LfiEZ4phCDwdFkaxq53pRos,21693
|
|
253
253
|
warp/native/clang/clang.cpp,sha256=G8bztC_REuWkfxaoixC_Qliue44q0SywH7iXle3Xowk,20019
|
|
254
254
|
warp/native/nanovdb/GridHandle.h,sha256=6b0HxDLTpyRDXy8wm4PrgCfYK4DrGJ77Gig0lQ1wsN4,26317
|
|
255
255
|
warp/native/nanovdb/HostBuffer.h,sha256=hiNxHhOuL86Fm4mFatTrZGFUiirEXW2_zhBE6AFqBPo,21583
|
|
@@ -262,8 +262,8 @@ warp/optim/linear.py,sha256=pm3uep8yfedLHXpzxfxZJHd5P44I9W2cVI3BHkt8tag,52541
|
|
|
262
262
|
warp/optim/sgd.py,sha256=USCMuqEMtx12hV9WkqUWaEyE5Kff99gkfmRErXHXWkg,3640
|
|
263
263
|
warp/render/__init__.py,sha256=EfmovuVgXCIp-Wp3shTKY4e8ewcrNogtYWicSj_ZKzE,794
|
|
264
264
|
warp/render/imgui_manager.py,sha256=BAAOaT2lUy-q-MDMRI4mQehaVfP4_Uv8oDdpFFHoO3o,10975
|
|
265
|
-
warp/render/render_opengl.py,sha256=
|
|
266
|
-
warp/render/render_usd.py,sha256=
|
|
265
|
+
warp/render/render_opengl.py,sha256=_77BOSEHYDb5P_guq94LOg7vLjRoV7rQj023FydbQA4,136534
|
|
266
|
+
warp/render/render_usd.py,sha256=GewI3QXk7wlHQ8gSPHXxztu6lmL1RddnIcR3G7OV8_4,33753
|
|
267
267
|
warp/render/utils.py,sha256=YjSJfVqakdz1PmMvLmRV9BGENEan4rg3Bl6oF82SX80,4554
|
|
268
268
|
warp/sim/__init__.py,sha256=zONIl2p-06Ndglx1aK8hVmNr3WT3Z0ULKKRb3MSYsWY,2098
|
|
269
269
|
warp/sim/articulation.py,sha256=RN4LhoZpBcfaK3SXtG3hAd5l04IBoc2Xmrm_OFnAktQ,26377
|
|
@@ -303,7 +303,7 @@ warp/tests/aux_test_unresolved_symbol.py,sha256=qImu1IIw3DSKeZTwDC25bpljdeKCzwPT
|
|
|
303
303
|
warp/tests/run_coverage_serial.py,sha256=2k5IeKuznRi_xE29h3I_Jm2SuUWTyGe1i0_wSbM_A8k,1287
|
|
304
304
|
warp/tests/test_adam.py,sha256=WXHPhJ_71e_p3cyEETs0hzHkJ3Jdixht8K9uRrWQRNw,5617
|
|
305
305
|
warp/tests/test_arithmetic.py,sha256=jhpJfhWebWX5o4cnhj7d_oGSvHgMHLIAEOaFdCNb0XM,44096
|
|
306
|
-
warp/tests/test_array.py,sha256=
|
|
306
|
+
warp/tests/test_array.py,sha256=xhSF0iDTygpp8ITRXAgIr2O4ZHrGY9osqcFwdw5ySRw,116228
|
|
307
307
|
warp/tests/test_array_reduce.py,sha256=A2qXy3uxJgyzqTUtdCARLqX7FvA4UNWsLJTjTLRm68M,4930
|
|
308
308
|
warp/tests/test_assert.py,sha256=mBtaiJOQDbq6Yn-ASyTDQt_noX8Wy-gvvIkJdYN0f0w,10214
|
|
309
309
|
warp/tests/test_atomic.py,sha256=nIbv23djUPLUSJGpM2yClQDP_iy_36sNVKleG0avNI0,11121
|
|
@@ -311,7 +311,7 @@ warp/tests/test_atomic_cas.py,sha256=uB6tz7SKVheRdUsYYDoK1gcY2oUq6OrYKAnLe8mFnlc
|
|
|
311
311
|
warp/tests/test_bool.py,sha256=YPMdnjfRZryRDPNj86GwtFXbAYOp82iKrgz6I6Mo_FQ,6727
|
|
312
312
|
warp/tests/test_builtins_resolution.py,sha256=wwpH3wu84llJ--mNtk4OsP7n7ij7H1ER9_apRGjY0pY,64085
|
|
313
313
|
warp/tests/test_closest_point_edge_edge.py,sha256=kZmU7XkRDnkH3LoIOMPmOCg7KNq8sWPcgVZ6JnyFla0,9904
|
|
314
|
-
warp/tests/test_codegen.py,sha256=
|
|
314
|
+
warp/tests/test_codegen.py,sha256=JTfbfpQmTkF-8D9MGbQ0yHdcuEXxFpttlPJ4LICJPXA,27537
|
|
315
315
|
warp/tests/test_codegen_instancing.py,sha256=2wHjnPLB0-Gfv5qT8GOAvT23-ubernvIQsgqBMhx1Dw,42014
|
|
316
316
|
warp/tests/test_compile_consts.py,sha256=qLSqPi1xzBMbVazP2Aq0MarE2RcuxMNI6B2GBmEPRZo,7164
|
|
317
317
|
warp/tests/test_conditional.py,sha256=Ol8oZuL_SWcRUrmIkvOTXBmjip-g986jA1sLMDSwWQk,6990
|
|
@@ -324,7 +324,7 @@ warp/tests/test_enum.py,sha256=FLkPmJxc_CvXs7iIZTdqb7adOKsRwmW3KoSqIFE_i70,4430
|
|
|
324
324
|
warp/tests/test_examples.py,sha256=oKzCg9nvE5MTbxI8FYDc2s_vlYLwDQ3KFN_XKOloHB8,16591
|
|
325
325
|
warp/tests/test_fabricarray.py,sha256=1BvryHaMvrMpPmEQxVtZDNMyQqgwmqb0PftD9gQKcBE,33573
|
|
326
326
|
warp/tests/test_fast_math.py,sha256=KwYuZ3sHfYacyP6w6twYAE3H2uEdFix55Vi-0f26UVk,2484
|
|
327
|
-
warp/tests/test_fem.py,sha256=
|
|
327
|
+
warp/tests/test_fem.py,sha256=TddKy88Lu8xjS1-TlDTn2tQjlGhPwCJO9l7hzOrJw1Q,83945
|
|
328
328
|
warp/tests/test_fixedarray.py,sha256=bBEPN_s00v4fR1c3Df9YdTuaWqUgIAc5PijrF8WODPg,6549
|
|
329
329
|
warp/tests/test_fp16.py,sha256=rYGKTSnFJlcD_ECd1O4ELhgwAlntlBa1-UjL1C-UERs,4074
|
|
330
330
|
warp/tests/test_func.py,sha256=y96_7mL_UkTmQDD7WVId1MosE5cuoOorO1Q901TUZls,14765
|
|
@@ -343,7 +343,7 @@ warp/tests/test_launch.py,sha256=Gk6EtbH8M5W3moN6_hntL-W63F3NVdc9CovBB8yWB94,116
|
|
|
343
343
|
warp/tests/test_lerp.py,sha256=RkdbZsEvBQd6HQ3W4y2kHkFUDz54dwxWKb4mCzT_NlE,5448
|
|
344
344
|
warp/tests/test_linear_solvers.py,sha256=-mumigO2Lf05UgK53kI2Ud9-piCaruR-0V2l9iO2ixs,7837
|
|
345
345
|
warp/tests/test_lvalue.py,sha256=nAkqwMLyn5f8yA7yJ13bWjCQzfvXAdLPiqnUalxu2xI,10830
|
|
346
|
-
warp/tests/test_map.py,sha256=
|
|
346
|
+
warp/tests/test_map.py,sha256=egTs6mpq2ISg_GcaumBiP_BW3CfBPGzlnIjxXpgel60,17723
|
|
347
347
|
warp/tests/test_mat.py,sha256=jDeG1ju5RsruLkuhKStalmTfo7u2IRVWffLENAr-Uos,115602
|
|
348
348
|
warp/tests/test_mat_assign_copy.py,sha256=0NyESqS2fcCJe9EGzj5Ts8Rmd6H9ZviPk0-D6ACFWNQ,5060
|
|
349
349
|
warp/tests/test_mat_constructors.py,sha256=2nUEe2JYrsOXMWZHYwRPvHbUiJfrrGGh1GVOG41VERg,18102
|
|
@@ -376,8 +376,8 @@ warp/tests/test_struct.py,sha256=iGXum-gMB1XHvGltVKPwK-1BnHEqoD0DV3LMllTC8J0,223
|
|
|
376
376
|
warp/tests/test_tape.py,sha256=iOsGbnKFzCgv-hj71LCKRGdldp8cWwJ5ODNV7g3o_bw,7512
|
|
377
377
|
warp/tests/test_transient_module.py,sha256=WfQairbLR6MYKW0m84kkMvS8_k8K1knw2413E1Q6STM,2462
|
|
378
378
|
warp/tests/test_triangle_closest_point.py,sha256=8ik_eu-V1MwHK7OfXoeF2L1U6EFWkddJo5Vd1RWeiJU,4283
|
|
379
|
-
warp/tests/test_tuple.py,sha256=
|
|
380
|
-
warp/tests/test_types.py,sha256=
|
|
379
|
+
warp/tests/test_tuple.py,sha256=z4vJwweq5ivNULj7Ms5mrDmLbGbaNaF8dMRhW0KNqkg,10263
|
|
380
|
+
warp/tests/test_types.py,sha256=mRKcYjXuY1CoShu2IcVNeIk8bYRleZMiDQX5md5nmOw,24823
|
|
381
381
|
warp/tests/test_utils.py,sha256=aao5fFwAZqB-KxzVShtwNjPJQfiUOHh1UlhPqEgzpik,22992
|
|
382
382
|
warp/tests/test_vec.py,sha256=xELcC3awag_TLXdRrFjXTazLSGEUoj_GIrKX_t13eAs,47448
|
|
383
383
|
warp/tests/test_vec_assign_copy.py,sha256=fmsaXVxiasMlso5wgGJ975pntOljPWgzBp9wdo9TMnw,3976
|
|
@@ -411,7 +411,7 @@ warp/tests/cuda/test_pinned.py,sha256=SZUFvUmoW9QpEpQ274O5vqss5A1YVzEZbW7nPufbJH
|
|
|
411
411
|
warp/tests/cuda/test_streams.py,sha256=qPs2E2FJqmNfhbuaEk14fDSU82ufLloO0oQ2gewXAdo,22238
|
|
412
412
|
warp/tests/geometry/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
413
413
|
warp/tests/geometry/test_bvh.py,sha256=pcHAlggUY77G_5cckqtimUEly5QgZljuEdr_BoEI54E,6379
|
|
414
|
-
warp/tests/geometry/test_hash_grid.py,sha256=
|
|
414
|
+
warp/tests/geometry/test_hash_grid.py,sha256=2_oJf7TQNOP-_dNl_MNGXHw4cfltLKdlY0_zrcL1CrQ,8898
|
|
415
415
|
warp/tests/geometry/test_marching_cubes.py,sha256=bgPl7Duvm61sE0JYsyAe-YAJ1qe3mDokDFqXcF3YISM,10563
|
|
416
416
|
warp/tests/geometry/test_mesh.py,sha256=bjimRN1uRgQe5X8drjKc0i_HD6_9MrwZhNtsF-Ck5w4,9808
|
|
417
417
|
warp/tests/geometry/test_mesh_query_aabb.py,sha256=pgBfHJQeyZsosQel7EQ7rCRpYUZpx3SaV3deirPuUhM,11348
|
|
@@ -421,7 +421,7 @@ warp/tests/geometry/test_volume.py,sha256=5HLQp3IRMHUuOzniqmjcL1MPT1RrAC3Q5phvmY
|
|
|
421
421
|
warp/tests/geometry/test_volume_write.py,sha256=TnHdlKiJed_2UKPAc8Tseg2zHCznbv2dvHG151Pf7Oc,11781
|
|
422
422
|
warp/tests/interop/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
423
423
|
warp/tests/interop/test_dlpack.py,sha256=1uHXKGZhK4nVKlb_piMEBpJ9b85POkq0LIYRnoy8WIc,25064
|
|
424
|
-
warp/tests/interop/test_jax.py,sha256=
|
|
424
|
+
warp/tests/interop/test_jax.py,sha256=ZxgQAVpwSFVKOfNUi0ZyJcYPHfZtkVoaJxWEJ1Bl-UE,28736
|
|
425
425
|
warp/tests/interop/test_paddle.py,sha256=iV8V4Q2g4BHHk8q0OpcTcl2nxFBM_7IpI8nqIX1Snnw,29190
|
|
426
426
|
warp/tests/interop/test_torch.py,sha256=MJzvS0ZxAqk4PAfNPHyPwSL9T1ul59m-Kzj3ZY61IuE,34873
|
|
427
427
|
warp/tests/sim/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -435,7 +435,7 @@ warp/tests/sim/test_sim_grad.py,sha256=dou9dJ4i7RiecflcDFwvdB50sq1UO6uzuDK2qHYr-
|
|
|
435
435
|
warp/tests/sim/test_sim_grad_bounce_linear.py,sha256=wcDF8xL0pcFCiLjCYdRqEWGdjWtXGIUeAWggSlI2FB0,8282
|
|
436
436
|
warp/tests/sim/test_sim_kinematics.py,sha256=nzRZCOOYT-Cke1zhKandvSj7x8tZ8_PLxUIedb8m5lo,2840
|
|
437
437
|
warp/tests/tile/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
438
|
-
warp/tests/tile/test_tile.py,sha256=
|
|
438
|
+
warp/tests/tile/test_tile.py,sha256=5QvYUgFsIlX1VP98VeJuz8xGxlzbDPW9BlF4C4S83o8,41360
|
|
439
439
|
warp/tests/tile/test_tile_cholesky.py,sha256=Ce2EYuTO1F7CV3XQVJ05lZA8_PpQBBMoWcC_MSb138Q,20647
|
|
440
440
|
warp/tests/tile/test_tile_load.py,sha256=c87UmsrcYipGWGM8pqspA5mR43PQaff1V9F72GAeZ6o,22631
|
|
441
441
|
warp/tests/tile/test_tile_mathdx.py,sha256=V9lbsQbg_oDbf1HsgcZGVwlmKP3BaFzij_rbi--QvJY,5067
|
|
@@ -449,8 +449,8 @@ warp/thirdparty/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
|
449
449
|
warp/thirdparty/appdirs.py,sha256=2UXPK-AkDGoN5APeqAMMYkkfgf3Q_aUEZxcfkIxlQn0,24254
|
|
450
450
|
warp/thirdparty/dlpack.py,sha256=HYvNWIemrvxLDgQLRseerP8gqM87Ie7SVIX7p5xSM0o,4323
|
|
451
451
|
warp/thirdparty/unittest_parallel.py,sha256=1-3sDX1-v22P0ZKUjnVuSqvPmuXAaQvpx4J6M3JCI4A,26431
|
|
452
|
-
warp_lang-1.9.
|
|
453
|
-
warp_lang-1.9.
|
|
454
|
-
warp_lang-1.9.
|
|
455
|
-
warp_lang-1.9.
|
|
456
|
-
warp_lang-1.9.
|
|
452
|
+
warp_lang-1.9.1.dist-info/licenses/LICENSE.md,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
|
|
453
|
+
warp_lang-1.9.1.dist-info/METADATA,sha256=vIM6Ux41HTzb6fyEzDdUUBR9sKSSWUFKpkjhOZdruFk,32678
|
|
454
|
+
warp_lang-1.9.1.dist-info/WHEEL,sha256=BlXG8Qkq_mCTKpY-toCToAQAmGPE73xawTOhla8_4pE,98
|
|
455
|
+
warp_lang-1.9.1.dist-info/top_level.txt,sha256=8pupHORyKoiN_BYWlTmv5OFBWdhqpppiBYQV5KxgEvg,5
|
|
456
|
+
warp_lang-1.9.1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|