warp-lang 1.9.1__py3-none-manylinux_2_34_aarch64.whl → 1.10.0rc2__py3-none-manylinux_2_34_aarch64.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__.py +301 -287
- warp/__init__.pyi +794 -305
- warp/_src/__init__.py +14 -0
- warp/_src/autograd.py +1075 -0
- warp/_src/build.py +618 -0
- warp/_src/build_dll.py +640 -0
- warp/{builtins.py → _src/builtins.py} +1382 -377
- warp/_src/codegen.py +4359 -0
- warp/{config.py → _src/config.py} +178 -169
- warp/_src/constants.py +57 -0
- warp/_src/context.py +8294 -0
- warp/_src/dlpack.py +462 -0
- warp/_src/fabric.py +355 -0
- warp/_src/fem/__init__.py +14 -0
- warp/_src/fem/adaptivity.py +508 -0
- warp/_src/fem/cache.py +687 -0
- warp/_src/fem/dirichlet.py +188 -0
- warp/{fem → _src/fem}/domain.py +40 -30
- warp/_src/fem/field/__init__.py +131 -0
- warp/_src/fem/field/field.py +701 -0
- warp/{fem → _src/fem}/field/nodal_field.py +30 -15
- warp/{fem → _src/fem}/field/restriction.py +1 -1
- warp/{fem → _src/fem}/field/virtual.py +53 -27
- warp/_src/fem/geometry/__init__.py +32 -0
- warp/{fem → _src/fem}/geometry/adaptive_nanogrid.py +77 -163
- warp/_src/fem/geometry/closest_point.py +97 -0
- warp/{fem → _src/fem}/geometry/deformed_geometry.py +14 -22
- warp/{fem → _src/fem}/geometry/element.py +32 -10
- warp/{fem → _src/fem}/geometry/geometry.py +48 -20
- warp/{fem → _src/fem}/geometry/grid_2d.py +12 -23
- warp/{fem → _src/fem}/geometry/grid_3d.py +12 -23
- warp/{fem → _src/fem}/geometry/hexmesh.py +40 -63
- warp/{fem → _src/fem}/geometry/nanogrid.py +255 -248
- warp/{fem → _src/fem}/geometry/partition.py +121 -63
- warp/{fem → _src/fem}/geometry/quadmesh.py +26 -45
- warp/{fem → _src/fem}/geometry/tetmesh.py +40 -63
- warp/{fem → _src/fem}/geometry/trimesh.py +26 -45
- warp/{fem → _src/fem}/integrate.py +164 -158
- warp/_src/fem/linalg.py +383 -0
- warp/_src/fem/operator.py +396 -0
- warp/_src/fem/polynomial.py +229 -0
- warp/{fem → _src/fem}/quadrature/pic_quadrature.py +15 -20
- warp/{fem → _src/fem}/quadrature/quadrature.py +95 -47
- warp/_src/fem/space/__init__.py +248 -0
- warp/{fem → _src/fem}/space/basis_function_space.py +20 -11
- warp/_src/fem/space/basis_space.py +679 -0
- warp/{fem → _src/fem}/space/dof_mapper.py +3 -3
- warp/{fem → _src/fem}/space/function_space.py +14 -13
- warp/{fem → _src/fem}/space/grid_2d_function_space.py +4 -7
- warp/{fem → _src/fem}/space/grid_3d_function_space.py +4 -4
- warp/{fem → _src/fem}/space/hexmesh_function_space.py +4 -10
- warp/{fem → _src/fem}/space/nanogrid_function_space.py +3 -9
- warp/{fem → _src/fem}/space/partition.py +117 -60
- warp/{fem → _src/fem}/space/quadmesh_function_space.py +4 -10
- warp/{fem → _src/fem}/space/restriction.py +66 -33
- warp/_src/fem/space/shape/__init__.py +152 -0
- warp/{fem → _src/fem}/space/shape/cube_shape_function.py +9 -9
- warp/{fem → _src/fem}/space/shape/shape_function.py +8 -9
- warp/{fem → _src/fem}/space/shape/square_shape_function.py +6 -6
- warp/{fem → _src/fem}/space/shape/tet_shape_function.py +3 -3
- warp/{fem → _src/fem}/space/shape/triangle_shape_function.py +3 -3
- warp/{fem → _src/fem}/space/tetmesh_function_space.py +3 -9
- warp/_src/fem/space/topology.py +459 -0
- warp/{fem → _src/fem}/space/trimesh_function_space.py +3 -9
- warp/_src/fem/types.py +112 -0
- warp/_src/fem/utils.py +486 -0
- warp/_src/jax.py +186 -0
- warp/_src/jax_experimental/__init__.py +14 -0
- warp/_src/jax_experimental/custom_call.py +387 -0
- warp/_src/jax_experimental/ffi.py +1284 -0
- warp/_src/jax_experimental/xla_ffi.py +656 -0
- warp/_src/marching_cubes.py +708 -0
- warp/_src/math.py +414 -0
- warp/_src/optim/__init__.py +14 -0
- warp/_src/optim/adam.py +163 -0
- warp/_src/optim/linear.py +1606 -0
- warp/_src/optim/sgd.py +112 -0
- warp/_src/paddle.py +406 -0
- warp/_src/render/__init__.py +14 -0
- warp/_src/render/imgui_manager.py +289 -0
- warp/_src/render/render_opengl.py +3636 -0
- warp/_src/render/render_usd.py +937 -0
- warp/_src/render/utils.py +160 -0
- warp/_src/sparse.py +2716 -0
- warp/_src/tape.py +1206 -0
- warp/{thirdparty → _src/thirdparty}/unittest_parallel.py +9 -2
- warp/_src/torch.py +391 -0
- warp/_src/types.py +5870 -0
- warp/_src/utils.py +1693 -0
- warp/autograd.py +12 -1054
- warp/bin/warp-clang.so +0 -0
- warp/bin/warp.so +0 -0
- warp/build.py +8 -588
- warp/build_dll.py +6 -721
- warp/codegen.py +6 -4251
- warp/constants.py +6 -39
- warp/context.py +12 -8062
- warp/dlpack.py +6 -444
- warp/examples/distributed/example_jacobi_mpi.py +4 -5
- warp/examples/fem/example_adaptive_grid.py +1 -1
- warp/examples/fem/example_apic_fluid.py +1 -1
- warp/examples/fem/example_burgers.py +8 -8
- warp/examples/fem/example_diffusion.py +1 -1
- warp/examples/fem/example_distortion_energy.py +1 -1
- warp/examples/fem/example_mixed_elasticity.py +2 -2
- warp/examples/fem/example_navier_stokes.py +1 -1
- warp/examples/fem/example_nonconforming_contact.py +7 -7
- warp/examples/fem/example_stokes.py +1 -1
- warp/examples/fem/example_stokes_transfer.py +1 -1
- warp/examples/fem/utils.py +2 -2
- warp/examples/interop/example_jax_callable.py +1 -1
- warp/examples/interop/example_jax_ffi_callback.py +1 -1
- warp/examples/interop/example_jax_kernel.py +1 -1
- warp/examples/tile/example_tile_mcgp.py +191 -0
- warp/fabric.py +6 -337
- warp/fem/__init__.py +159 -97
- warp/fem/adaptivity.py +7 -489
- warp/fem/cache.py +9 -648
- warp/fem/dirichlet.py +6 -184
- warp/fem/field/__init__.py +8 -109
- warp/fem/field/field.py +7 -652
- warp/fem/geometry/__init__.py +7 -18
- warp/fem/geometry/closest_point.py +11 -77
- warp/fem/linalg.py +18 -366
- warp/fem/operator.py +11 -369
- warp/fem/polynomial.py +9 -209
- warp/fem/space/__init__.py +5 -211
- warp/fem/space/basis_space.py +6 -662
- warp/fem/space/shape/__init__.py +41 -118
- warp/fem/space/topology.py +6 -437
- warp/fem/types.py +6 -81
- warp/fem/utils.py +11 -444
- warp/jax.py +8 -165
- warp/jax_experimental/__init__.py +14 -1
- warp/jax_experimental/custom_call.py +8 -365
- warp/jax_experimental/ffi.py +17 -873
- warp/jax_experimental/xla_ffi.py +5 -605
- warp/marching_cubes.py +5 -689
- warp/math.py +16 -393
- warp/native/array.h +385 -37
- warp/native/builtin.h +314 -37
- warp/native/bvh.cpp +43 -9
- warp/native/bvh.cu +62 -27
- warp/native/bvh.h +310 -309
- warp/native/clang/clang.cpp +102 -97
- warp/native/coloring.cpp +0 -1
- warp/native/crt.h +208 -0
- warp/native/exports.h +156 -0
- warp/native/hashgrid.cu +2 -0
- warp/native/intersect.h +24 -1
- warp/native/intersect_tri.h +44 -35
- warp/native/mat.h +1456 -276
- warp/native/mesh.cpp +4 -4
- warp/native/mesh.cu +4 -2
- warp/native/mesh.h +176 -61
- warp/native/quat.h +0 -52
- warp/native/scan.cu +2 -0
- warp/native/sparse.cu +7 -3
- warp/native/spatial.h +12 -0
- warp/native/tile.h +681 -89
- warp/native/tile_radix_sort.h +1 -1
- warp/native/tile_reduce.h +394 -46
- warp/native/tile_scan.h +4 -4
- warp/native/vec.h +469 -0
- warp/native/version.h +23 -0
- warp/native/volume.cpp +1 -1
- warp/native/volume.cu +1 -0
- warp/native/volume.h +1 -1
- warp/native/volume_builder.cu +2 -0
- warp/native/warp.cpp +57 -29
- warp/native/warp.cu +253 -171
- warp/native/warp.h +11 -8
- warp/optim/__init__.py +6 -3
- warp/optim/adam.py +6 -145
- warp/optim/linear.py +14 -1585
- warp/optim/sgd.py +6 -94
- warp/paddle.py +6 -388
- warp/render/__init__.py +8 -4
- warp/render/imgui_manager.py +7 -267
- warp/render/render_opengl.py +6 -3618
- warp/render/render_usd.py +6 -919
- warp/render/utils.py +6 -142
- warp/sparse.py +37 -2563
- warp/tape.py +6 -1188
- warp/tests/__main__.py +1 -1
- warp/tests/cuda/test_async.py +4 -4
- warp/tests/cuda/test_conditional_captures.py +1 -1
- warp/tests/cuda/test_multigpu.py +1 -1
- warp/tests/cuda/test_streams.py +58 -1
- warp/tests/geometry/test_bvh.py +157 -22
- warp/tests/geometry/test_marching_cubes.py +0 -1
- warp/tests/geometry/test_mesh.py +5 -3
- warp/tests/geometry/test_mesh_query_aabb.py +5 -12
- warp/tests/geometry/test_mesh_query_point.py +5 -2
- warp/tests/geometry/test_mesh_query_ray.py +15 -3
- warp/tests/geometry/test_volume_write.py +5 -5
- warp/tests/interop/test_dlpack.py +14 -14
- warp/tests/interop/test_jax.py +772 -49
- warp/tests/interop/test_paddle.py +1 -1
- warp/tests/test_adam.py +0 -1
- warp/tests/test_arithmetic.py +9 -9
- warp/tests/test_array.py +527 -100
- warp/tests/test_array_reduce.py +3 -3
- warp/tests/test_atomic.py +12 -8
- warp/tests/test_atomic_bitwise.py +209 -0
- warp/tests/test_atomic_cas.py +4 -4
- warp/tests/test_bool.py +2 -2
- warp/tests/test_builtins_resolution.py +5 -571
- warp/tests/test_codegen.py +33 -14
- warp/tests/test_conditional.py +1 -1
- warp/tests/test_context.py +6 -6
- warp/tests/test_copy.py +242 -161
- warp/tests/test_ctypes.py +3 -3
- warp/tests/test_devices.py +24 -2
- warp/tests/test_examples.py +16 -84
- warp/tests/test_fabricarray.py +35 -35
- warp/tests/test_fast_math.py +0 -2
- warp/tests/test_fem.py +56 -10
- warp/tests/test_fixedarray.py +3 -3
- warp/tests/test_func.py +8 -5
- warp/tests/test_generics.py +1 -1
- warp/tests/test_indexedarray.py +24 -24
- warp/tests/test_intersect.py +39 -9
- warp/tests/test_large.py +1 -1
- warp/tests/test_lerp.py +3 -1
- warp/tests/test_linear_solvers.py +1 -1
- warp/tests/test_map.py +35 -4
- warp/tests/test_mat.py +52 -62
- warp/tests/test_mat_constructors.py +4 -5
- warp/tests/test_mat_lite.py +1 -1
- warp/tests/test_mat_scalar_ops.py +121 -121
- warp/tests/test_math.py +34 -0
- warp/tests/test_module_aot.py +4 -4
- warp/tests/test_modules_lite.py +28 -2
- warp/tests/test_print.py +11 -11
- warp/tests/test_quat.py +93 -58
- warp/tests/test_runlength_encode.py +1 -1
- warp/tests/test_scalar_ops.py +38 -10
- warp/tests/test_smoothstep.py +1 -1
- warp/tests/test_sparse.py +126 -15
- warp/tests/test_spatial.py +105 -87
- warp/tests/test_special_values.py +6 -6
- warp/tests/test_static.py +7 -7
- warp/tests/test_struct.py +13 -2
- warp/tests/test_triangle_closest_point.py +48 -1
- warp/tests/test_types.py +27 -15
- warp/tests/test_utils.py +52 -52
- warp/tests/test_vec.py +29 -29
- warp/tests/test_vec_constructors.py +5 -5
- warp/tests/test_vec_scalar_ops.py +97 -97
- warp/tests/test_version.py +75 -0
- warp/tests/tile/test_tile.py +178 -0
- warp/tests/tile/test_tile_atomic_bitwise.py +403 -0
- warp/tests/tile/test_tile_cholesky.py +7 -4
- warp/tests/tile/test_tile_load.py +26 -2
- warp/tests/tile/test_tile_mathdx.py +3 -3
- warp/tests/tile/test_tile_matmul.py +1 -1
- warp/tests/tile/test_tile_mlp.py +2 -4
- warp/tests/tile/test_tile_reduce.py +214 -13
- warp/tests/unittest_suites.py +6 -14
- warp/tests/unittest_utils.py +10 -9
- warp/tests/walkthrough_debug.py +3 -1
- warp/torch.py +6 -373
- warp/types.py +29 -5764
- warp/utils.py +10 -1659
- {warp_lang-1.9.1.dist-info → warp_lang-1.10.0rc2.dist-info}/METADATA +46 -99
- warp_lang-1.10.0rc2.dist-info/RECORD +468 -0
- warp_lang-1.10.0rc2.dist-info/licenses/licenses/Gaia-LICENSE.txt +6 -0
- warp_lang-1.10.0rc2.dist-info/licenses/licenses/appdirs-LICENSE.txt +22 -0
- warp_lang-1.10.0rc2.dist-info/licenses/licenses/asset_pixel_jpg-LICENSE.txt +3 -0
- warp_lang-1.10.0rc2.dist-info/licenses/licenses/cuda-LICENSE.txt +1582 -0
- warp_lang-1.10.0rc2.dist-info/licenses/licenses/dlpack-LICENSE.txt +201 -0
- warp_lang-1.10.0rc2.dist-info/licenses/licenses/fp16-LICENSE.txt +28 -0
- warp_lang-1.10.0rc2.dist-info/licenses/licenses/libmathdx-LICENSE.txt +220 -0
- warp_lang-1.10.0rc2.dist-info/licenses/licenses/llvm-LICENSE.txt +279 -0
- warp_lang-1.10.0rc2.dist-info/licenses/licenses/moller-LICENSE.txt +16 -0
- warp_lang-1.10.0rc2.dist-info/licenses/licenses/nanovdb-LICENSE.txt +2 -0
- warp_lang-1.10.0rc2.dist-info/licenses/licenses/nvrtc-LICENSE.txt +1592 -0
- warp_lang-1.10.0rc2.dist-info/licenses/licenses/svd-LICENSE.txt +23 -0
- warp_lang-1.10.0rc2.dist-info/licenses/licenses/unittest_parallel-LICENSE.txt +21 -0
- warp_lang-1.10.0rc2.dist-info/licenses/licenses/usd-LICENSE.txt +213 -0
- warp_lang-1.10.0rc2.dist-info/licenses/licenses/windingnumber-LICENSE.txt +21 -0
- warp/examples/assets/cartpole.urdf +0 -110
- warp/examples/assets/crazyflie.usd +0 -0
- warp/examples/assets/nv_ant.xml +0 -92
- warp/examples/assets/nv_humanoid.xml +0 -183
- warp/examples/assets/quadruped.urdf +0 -268
- warp/examples/optim/example_bounce.py +0 -266
- warp/examples/optim/example_cloth_throw.py +0 -228
- warp/examples/optim/example_drone.py +0 -870
- warp/examples/optim/example_inverse_kinematics.py +0 -182
- warp/examples/optim/example_inverse_kinematics_torch.py +0 -191
- warp/examples/optim/example_softbody_properties.py +0 -400
- warp/examples/optim/example_spring_cage.py +0 -245
- warp/examples/optim/example_trajectory.py +0 -227
- warp/examples/sim/example_cartpole.py +0 -143
- warp/examples/sim/example_cloth.py +0 -225
- warp/examples/sim/example_cloth_self_contact.py +0 -316
- warp/examples/sim/example_granular.py +0 -130
- warp/examples/sim/example_granular_collision_sdf.py +0 -202
- warp/examples/sim/example_jacobian_ik.py +0 -244
- warp/examples/sim/example_particle_chain.py +0 -124
- warp/examples/sim/example_quadruped.py +0 -203
- warp/examples/sim/example_rigid_chain.py +0 -203
- warp/examples/sim/example_rigid_contact.py +0 -195
- warp/examples/sim/example_rigid_force.py +0 -133
- warp/examples/sim/example_rigid_gyroscopic.py +0 -115
- warp/examples/sim/example_rigid_soft_contact.py +0 -140
- warp/examples/sim/example_soft_body.py +0 -196
- warp/examples/tile/example_tile_walker.py +0 -327
- warp/sim/__init__.py +0 -74
- warp/sim/articulation.py +0 -793
- warp/sim/collide.py +0 -2570
- warp/sim/graph_coloring.py +0 -307
- warp/sim/import_mjcf.py +0 -791
- warp/sim/import_snu.py +0 -227
- warp/sim/import_urdf.py +0 -579
- warp/sim/import_usd.py +0 -898
- warp/sim/inertia.py +0 -357
- warp/sim/integrator.py +0 -245
- warp/sim/integrator_euler.py +0 -2000
- warp/sim/integrator_featherstone.py +0 -2101
- warp/sim/integrator_vbd.py +0 -2487
- warp/sim/integrator_xpbd.py +0 -3295
- warp/sim/model.py +0 -4821
- warp/sim/particles.py +0 -121
- warp/sim/render.py +0 -431
- warp/sim/utils.py +0 -431
- warp/tests/sim/disabled_kinematics.py +0 -244
- warp/tests/sim/test_cloth.py +0 -863
- warp/tests/sim/test_collision.py +0 -743
- warp/tests/sim/test_coloring.py +0 -347
- warp/tests/sim/test_inertia.py +0 -161
- warp/tests/sim/test_model.py +0 -226
- warp/tests/sim/test_sim_grad.py +0 -287
- warp/tests/sim/test_sim_grad_bounce_linear.py +0 -212
- warp/tests/sim/test_sim_kinematics.py +0 -98
- warp/thirdparty/__init__.py +0 -0
- warp_lang-1.9.1.dist-info/RECORD +0 -456
- /warp/{fem → _src/fem}/quadrature/__init__.py +0 -0
- /warp/{tests/sim → _src/thirdparty}/__init__.py +0 -0
- /warp/{thirdparty → _src/thirdparty}/appdirs.py +0 -0
- /warp/{thirdparty → _src/thirdparty}/dlpack.py +0 -0
- {warp_lang-1.9.1.dist-info → warp_lang-1.10.0rc2.dist-info}/WHEEL +0 -0
- {warp_lang-1.9.1.dist-info → warp_lang-1.10.0rc2.dist-info}/licenses/LICENSE.md +0 -0
- {warp_lang-1.9.1.dist-info → warp_lang-1.10.0rc2.dist-info}/top_level.txt +0 -0
warp/tests/test_quat.py
CHANGED
|
@@ -18,7 +18,6 @@ import unittest
|
|
|
18
18
|
import numpy as np
|
|
19
19
|
|
|
20
20
|
import warp as wp
|
|
21
|
-
import warp.sim
|
|
22
21
|
from warp.tests.unittest_utils import *
|
|
23
22
|
|
|
24
23
|
np_float_types = [np.float32, np.float64, np.float16]
|
|
@@ -26,6 +25,43 @@ np_float_types = [np.float32, np.float64, np.float16]
|
|
|
26
25
|
kernel_cache = {}
|
|
27
26
|
|
|
28
27
|
|
|
28
|
+
@wp.func
|
|
29
|
+
def quat_from_euler(e: wp.vec3, i: int, j: int, k: int) -> wp.quat:
|
|
30
|
+
"""
|
|
31
|
+
Convert Euler angles to a quaternion.
|
|
32
|
+
|
|
33
|
+
:math:`i, j, k` are the indices in :math:`[0, 1, 2]` of the axes in which the Euler angles are provided
|
|
34
|
+
(:math:`i \\neq j, j \\neq k`), e.g. (0, 1, 2) for Euler sequence XYZ.
|
|
35
|
+
|
|
36
|
+
Args:
|
|
37
|
+
e (vec3): The Euler angles (in radians)
|
|
38
|
+
i (int): The index of the first axis
|
|
39
|
+
j (int): The index of the second axis
|
|
40
|
+
k (int): The index of the third axis
|
|
41
|
+
|
|
42
|
+
Returns:
|
|
43
|
+
quat: The quaternion
|
|
44
|
+
"""
|
|
45
|
+
# Half angles
|
|
46
|
+
half_e = e / 2.0
|
|
47
|
+
|
|
48
|
+
# Precompute sines and cosines of half angles
|
|
49
|
+
cr = wp.cos(half_e[i])
|
|
50
|
+
sr = wp.sin(half_e[i])
|
|
51
|
+
cp = wp.cos(half_e[j])
|
|
52
|
+
sp = wp.sin(half_e[j])
|
|
53
|
+
cy = wp.cos(half_e[k])
|
|
54
|
+
sy = wp.sin(half_e[k])
|
|
55
|
+
|
|
56
|
+
# Components of the quaternion based on the rotation sequence
|
|
57
|
+
return wp.quat(
|
|
58
|
+
(cy * sr * cp - sy * cr * sp),
|
|
59
|
+
(cy * cr * sp + sy * sr * cp),
|
|
60
|
+
(sy * cr * cp - cy * sr * sp),
|
|
61
|
+
(cy * cr * cp + sy * sr * sp),
|
|
62
|
+
)
|
|
63
|
+
|
|
64
|
+
|
|
29
65
|
def getkernel(func, suffix=""):
|
|
30
66
|
key = func.__name__ + "_" + suffix
|
|
31
67
|
if key not in kernel_cache:
|
|
@@ -56,9 +92,9 @@ def test_constructors(test, device, dtype, register_kernels=False):
|
|
|
56
92
|
np.float64: 1.0e-8,
|
|
57
93
|
}.get(dtype, 0)
|
|
58
94
|
|
|
59
|
-
wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
60
|
-
vec3 = wp.types.vector(length=3, dtype=wptype)
|
|
61
|
-
quat = wp.types.quaternion(dtype=wptype)
|
|
95
|
+
wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
96
|
+
vec3 = wp._src.types.vector(length=3, dtype=wptype)
|
|
97
|
+
quat = wp._src.types.quaternion(dtype=wptype)
|
|
62
98
|
|
|
63
99
|
def check_component_constructor(
|
|
64
100
|
input: wp.array(dtype=wptype),
|
|
@@ -130,17 +166,17 @@ def test_constructors(test, device, dtype, register_kernels=False):
|
|
|
130
166
|
|
|
131
167
|
def test_casting_constructors(test, device, dtype, register_kernels=False):
|
|
132
168
|
np_type = np.dtype(dtype)
|
|
133
|
-
wp_type = wp.types.np_dtype_to_warp_type[np_type]
|
|
134
|
-
quat = wp.types.quaternion(dtype=wp_type)
|
|
169
|
+
wp_type = wp._src.types.np_dtype_to_warp_type[np_type]
|
|
170
|
+
quat = wp._src.types.quaternion(dtype=wp_type)
|
|
135
171
|
|
|
136
172
|
np16 = np.dtype(np.float16)
|
|
137
|
-
wp16 = wp.types.np_dtype_to_warp_type[np16]
|
|
173
|
+
wp16 = wp._src.types.np_dtype_to_warp_type[np16]
|
|
138
174
|
|
|
139
175
|
np32 = np.dtype(np.float32)
|
|
140
|
-
wp32 = wp.types.np_dtype_to_warp_type[np32]
|
|
176
|
+
wp32 = wp._src.types.np_dtype_to_warp_type[np32]
|
|
141
177
|
|
|
142
178
|
np64 = np.dtype(np.float64)
|
|
143
|
-
wp64 = wp.types.np_dtype_to_warp_type[np64]
|
|
179
|
+
wp64 = wp._src.types.np_dtype_to_warp_type[np64]
|
|
144
180
|
|
|
145
181
|
def cast_float16(a: wp.array(dtype=wp_type, ndim=2), b: wp.array(dtype=wp16, ndim=2)):
|
|
146
182
|
tid = wp.tid()
|
|
@@ -243,8 +279,8 @@ def test_inverse(test, device, dtype, register_kernels=False):
|
|
|
243
279
|
np.float64: 1.0e-8,
|
|
244
280
|
}.get(dtype, 0)
|
|
245
281
|
|
|
246
|
-
wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
247
|
-
quat = wp.types.quaternion(dtype=wptype)
|
|
282
|
+
wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
283
|
+
quat = wp._src.types.quaternion(dtype=wptype)
|
|
248
284
|
|
|
249
285
|
output_select_kernel = get_select_kernel(wptype)
|
|
250
286
|
|
|
@@ -299,8 +335,8 @@ def test_dotproduct(test, device, dtype, register_kernels=False):
|
|
|
299
335
|
np.float64: 1.0e-8,
|
|
300
336
|
}.get(dtype, 0)
|
|
301
337
|
|
|
302
|
-
wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
303
|
-
quat = wp.types.quaternion(dtype=wptype)
|
|
338
|
+
wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
339
|
+
quat = wp._src.types.quaternion(dtype=wptype)
|
|
304
340
|
|
|
305
341
|
def check_quat_dot(
|
|
306
342
|
s: wp.array(dtype=quat),
|
|
@@ -351,8 +387,8 @@ def test_length(test, device, dtype, register_kernels=False):
|
|
|
351
387
|
np.float64: 1.0e-7,
|
|
352
388
|
}.get(dtype, 0)
|
|
353
389
|
|
|
354
|
-
wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
355
|
-
quat = wp.types.quaternion(dtype=wptype)
|
|
390
|
+
wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
391
|
+
quat = wp._src.types.quaternion(dtype=wptype)
|
|
356
392
|
|
|
357
393
|
def check_quat_length(
|
|
358
394
|
q: wp.array(dtype=quat),
|
|
@@ -408,8 +444,8 @@ def test_normalize(test, device, dtype, register_kernels=False):
|
|
|
408
444
|
np.float64: 1.0e-8,
|
|
409
445
|
}.get(dtype, 0)
|
|
410
446
|
|
|
411
|
-
wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
412
|
-
quat = wp.types.quaternion(dtype=wptype)
|
|
447
|
+
wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
448
|
+
quat = wp._src.types.quaternion(dtype=wptype)
|
|
413
449
|
|
|
414
450
|
def check_normalize(
|
|
415
451
|
q: wp.array(dtype=quat),
|
|
@@ -509,8 +545,8 @@ def test_addition(test, device, dtype, register_kernels=False):
|
|
|
509
545
|
np.float64: 1.0e-8,
|
|
510
546
|
}.get(dtype, 0)
|
|
511
547
|
|
|
512
|
-
wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
513
|
-
quat = wp.types.quaternion(dtype=wptype)
|
|
548
|
+
wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
549
|
+
quat = wp._src.types.quaternion(dtype=wptype)
|
|
514
550
|
|
|
515
551
|
def check_quat_add(
|
|
516
552
|
q: wp.array(dtype=quat),
|
|
@@ -581,8 +617,8 @@ def test_subtraction(test, device, dtype, register_kernels=False):
|
|
|
581
617
|
np.float64: 1.0e-8,
|
|
582
618
|
}.get(dtype, 0)
|
|
583
619
|
|
|
584
|
-
wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
585
|
-
quat = wp.types.quaternion(dtype=wptype)
|
|
620
|
+
wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
621
|
+
quat = wp._src.types.quaternion(dtype=wptype)
|
|
586
622
|
|
|
587
623
|
def check_quat_sub(
|
|
588
624
|
q: wp.array(dtype=quat),
|
|
@@ -654,8 +690,8 @@ def test_scalar_multiplication(test, device, dtype, register_kernels=False):
|
|
|
654
690
|
np.float64: 1.0e-8,
|
|
655
691
|
}.get(dtype, 0)
|
|
656
692
|
|
|
657
|
-
wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
658
|
-
quat = wp.types.quaternion(dtype=wptype)
|
|
693
|
+
wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
694
|
+
quat = wp._src.types.quaternion(dtype=wptype)
|
|
659
695
|
|
|
660
696
|
def check_quat_scalar_mul(
|
|
661
697
|
s: wp.array(dtype=wptype),
|
|
@@ -752,8 +788,8 @@ def test_scalar_division(test, device, dtype, register_kernels=False):
|
|
|
752
788
|
np.float64: 1.0e-8,
|
|
753
789
|
}.get(dtype, 0)
|
|
754
790
|
|
|
755
|
-
wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
756
|
-
quat = wp.types.quaternion(dtype=wptype)
|
|
791
|
+
wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
792
|
+
quat = wp._src.types.quaternion(dtype=wptype)
|
|
757
793
|
|
|
758
794
|
def check_quat_scalar_div(
|
|
759
795
|
s: wp.array(dtype=wptype),
|
|
@@ -825,8 +861,8 @@ def test_quat_multiplication(test, device, dtype, register_kernels=False):
|
|
|
825
861
|
np.float64: 1.0e-8,
|
|
826
862
|
}.get(dtype, 0)
|
|
827
863
|
|
|
828
|
-
wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
829
|
-
quat = wp.types.quaternion(dtype=wptype)
|
|
864
|
+
wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
865
|
+
quat = wp._src.types.quaternion(dtype=wptype)
|
|
830
866
|
|
|
831
867
|
def check_quat_mul(
|
|
832
868
|
s: wp.array(dtype=quat),
|
|
@@ -929,8 +965,8 @@ def test_indexing(test, device, dtype, register_kernels=False):
|
|
|
929
965
|
np.float64: 1.0e-8,
|
|
930
966
|
}.get(dtype, 0)
|
|
931
967
|
|
|
932
|
-
wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
933
|
-
quat = wp.types.quaternion(dtype=wptype)
|
|
968
|
+
wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
969
|
+
quat = wp._src.types.quaternion(dtype=wptype)
|
|
934
970
|
|
|
935
971
|
def check_quat_indexing(
|
|
936
972
|
q: wp.array(dtype=quat),
|
|
@@ -996,8 +1032,8 @@ def test_quat_lerp(test, device, dtype, register_kernels=False):
|
|
|
996
1032
|
np.float64: 1.0e-8,
|
|
997
1033
|
}.get(dtype, 0)
|
|
998
1034
|
|
|
999
|
-
wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
1000
|
-
quat = wp.types.quaternion(dtype=wptype)
|
|
1035
|
+
wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
1036
|
+
quat = wp._src.types.quaternion(dtype=wptype)
|
|
1001
1037
|
|
|
1002
1038
|
def check_quat_lerp(
|
|
1003
1039
|
s: wp.array(dtype=quat),
|
|
@@ -1077,9 +1113,9 @@ def test_quat_rotate(test, device, dtype, register_kernels=False):
|
|
|
1077
1113
|
np.float64: 1.0e-8,
|
|
1078
1114
|
}.get(dtype, 0)
|
|
1079
1115
|
|
|
1080
|
-
wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
1081
|
-
quat = wp.types.quaternion(dtype=wptype)
|
|
1082
|
-
vec3 = wp.types.vector(length=3, dtype=wptype)
|
|
1116
|
+
wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
1117
|
+
quat = wp._src.types.quaternion(dtype=wptype)
|
|
1118
|
+
vec3 = wp._src.types.vector(length=3, dtype=wptype)
|
|
1083
1119
|
|
|
1084
1120
|
def check_quat_rotate(
|
|
1085
1121
|
q: wp.array(dtype=quat),
|
|
@@ -1203,9 +1239,9 @@ def test_quat_to_matrix(test, device, dtype, register_kernels=False):
|
|
|
1203
1239
|
np.float64: 1.0e-8,
|
|
1204
1240
|
}.get(dtype, 0)
|
|
1205
1241
|
|
|
1206
|
-
wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
1207
|
-
quat = wp.types.quaternion(dtype=wptype)
|
|
1208
|
-
vec3 = wp.types.vector(length=3, dtype=wptype)
|
|
1242
|
+
wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
1243
|
+
quat = wp._src.types.quaternion(dtype=wptype)
|
|
1244
|
+
vec3 = wp._src.types.vector(length=3, dtype=wptype)
|
|
1209
1245
|
|
|
1210
1246
|
def check_quat_to_matrix(
|
|
1211
1247
|
q: wp.array(dtype=quat),
|
|
@@ -1321,9 +1357,9 @@ def test_slerp_grad(test, device, dtype, register_kernels=False):
|
|
|
1321
1357
|
rng = np.random.default_rng(123)
|
|
1322
1358
|
seed = 42
|
|
1323
1359
|
|
|
1324
|
-
wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
1325
|
-
vec3 = wp.types.vector(3, wptype)
|
|
1326
|
-
quat = wp.types.quaternion(wptype)
|
|
1360
|
+
wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
1361
|
+
vec3 = wp._src.types.vector(3, wptype)
|
|
1362
|
+
quat = wp._src.types.quaternion(wptype)
|
|
1327
1363
|
|
|
1328
1364
|
def slerp_kernel(
|
|
1329
1365
|
q0: wp.array(dtype=quat),
|
|
@@ -1480,14 +1516,13 @@ def test_slerp_grad(test, device, dtype, register_kernels=False):
|
|
|
1480
1516
|
|
|
1481
1517
|
|
|
1482
1518
|
def test_quat_to_axis_angle_grad(test, device, dtype, register_kernels=False):
|
|
1483
|
-
rng = np.random.default_rng(123)
|
|
1484
1519
|
seed = 42
|
|
1485
1520
|
num_rand = 50
|
|
1486
1521
|
|
|
1487
|
-
wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
1488
|
-
vec3 = wp.types.vector(3, wptype)
|
|
1489
|
-
vec4 = wp.types.vector(4, wptype)
|
|
1490
|
-
quat = wp.types.quaternion(wptype)
|
|
1522
|
+
wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
1523
|
+
vec3 = wp._src.types.vector(3, wptype)
|
|
1524
|
+
vec4 = wp._src.types.vector(4, wptype)
|
|
1525
|
+
quat = wp._src.types.quaternion(wptype)
|
|
1491
1526
|
|
|
1492
1527
|
def quat_to_axis_angle_kernel(quats: wp.array(dtype=quat), loss: wp.array(dtype=wptype), coord_idx: int):
|
|
1493
1528
|
tid = wp.tid()
|
|
@@ -1616,10 +1651,10 @@ def test_quat_rpy_grad(test, device, dtype, register_kernels=False):
|
|
|
1616
1651
|
rng = np.random.default_rng(123)
|
|
1617
1652
|
N = 3
|
|
1618
1653
|
|
|
1619
|
-
wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
1654
|
+
wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
1620
1655
|
|
|
1621
|
-
vec3 = wp.types.vector(3, wptype)
|
|
1622
|
-
quat = wp.types.quaternion(wptype)
|
|
1656
|
+
vec3 = wp._src.types.vector(3, wptype)
|
|
1657
|
+
quat = wp._src.types.quaternion(wptype)
|
|
1623
1658
|
|
|
1624
1659
|
def rpy_to_quat_kernel(rpy_arr: wp.array(dtype=vec3), loss: wp.array(dtype=wptype), coord_idx: int):
|
|
1625
1660
|
tid = wp.tid()
|
|
@@ -1708,10 +1743,10 @@ def test_quat_rpy_grad(test, device, dtype, register_kernels=False):
|
|
|
1708
1743
|
|
|
1709
1744
|
|
|
1710
1745
|
def test_quat_from_matrix(test, device, dtype, register_kernels=False):
|
|
1711
|
-
wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
1712
|
-
mat33 = wp.types.matrix((3, 3), wptype)
|
|
1713
|
-
mat44 = wp.types.matrix((4, 4), wptype)
|
|
1714
|
-
quat = wp.types.quaternion(wptype)
|
|
1746
|
+
wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
1747
|
+
mat33 = wp._src.types.matrix((3, 3), wptype)
|
|
1748
|
+
mat44 = wp._src.types.matrix((4, 4), wptype)
|
|
1749
|
+
quat = wp._src.types.quaternion(wptype)
|
|
1715
1750
|
|
|
1716
1751
|
def quat_from_matrix(m: wp.array2d(dtype=wptype), loss: wp.array(dtype=wptype), idx: int):
|
|
1717
1752
|
tid = wp.tid()
|
|
@@ -1867,7 +1902,7 @@ def test_quat_from_matrix(test, device, dtype, register_kernels=False):
|
|
|
1867
1902
|
|
|
1868
1903
|
|
|
1869
1904
|
def test_quat_identity(test, device, dtype, register_kernels=False):
|
|
1870
|
-
wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
1905
|
+
wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
1871
1906
|
|
|
1872
1907
|
def quat_identity_test(output: wp.array(dtype=wptype)):
|
|
1873
1908
|
q = wp.quat_identity(dtype=wptype)
|
|
@@ -1909,7 +1944,7 @@ def test_quat_euler_conversion(test, device, dtype, register_kernels=False):
|
|
|
1909
1944
|
|
|
1910
1945
|
rpy_arr = rng.uniform(low=-np.pi, high=np.pi, size=(N, 3))
|
|
1911
1946
|
|
|
1912
|
-
quats_from_euler = [list(
|
|
1947
|
+
quats_from_euler = [list(quat_from_euler(wp.vec3(*rpy), 0, 1, 2)) for rpy in rpy_arr]
|
|
1913
1948
|
quats_from_rpy = [list(wp.quat_rpy(rpy[0], rpy[1], rpy[2])) for rpy in rpy_arr]
|
|
1914
1949
|
|
|
1915
1950
|
assert_np_equal(np.array(quats_from_euler), np.array(quats_from_rpy), tol=1e-4)
|
|
@@ -1917,7 +1952,7 @@ def test_quat_euler_conversion(test, device, dtype, register_kernels=False):
|
|
|
1917
1952
|
|
|
1918
1953
|
def test_anon_type_instance(test, device, dtype, register_kernels=False):
|
|
1919
1954
|
rng = np.random.default_rng(123)
|
|
1920
|
-
wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
1955
|
+
wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
1921
1956
|
|
|
1922
1957
|
def quat_create_test(input: wp.array(dtype=wptype), output: wp.array(dtype=wptype)):
|
|
1923
1958
|
# component constructor:
|
|
@@ -1990,16 +2025,16 @@ def test_constructor_default():
|
|
|
1990
2025
|
|
|
1991
2026
|
|
|
1992
2027
|
def test_py_arithmetic_ops(test, device, dtype):
|
|
1993
|
-
wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
2028
|
+
wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
1994
2029
|
|
|
1995
2030
|
def make_quat(*args):
|
|
1996
|
-
if wptype in wp.types.int_types:
|
|
2031
|
+
if wptype in wp._src.types.int_types:
|
|
1997
2032
|
# Cast to the correct integer type to simulate wrapping.
|
|
1998
2033
|
return tuple(wptype._type_(x).value for x in args)
|
|
1999
2034
|
|
|
2000
2035
|
return args
|
|
2001
2036
|
|
|
2002
|
-
quat_cls = wp.types.quaternion(wptype)
|
|
2037
|
+
quat_cls = wp._src.types.quaternion(wptype)
|
|
2003
2038
|
|
|
2004
2039
|
v = quat_cls(1, -2, 3, -4)
|
|
2005
2040
|
test.assertSequenceEqual(+v, make_quat(1, -2, 3, -4))
|
|
@@ -19,8 +19,8 @@ from functools import partial
|
|
|
19
19
|
import numpy as np
|
|
20
20
|
|
|
21
21
|
import warp as wp
|
|
22
|
+
from warp._src.utils import runlength_encode
|
|
22
23
|
from warp.tests.unittest_utils import *
|
|
23
|
-
from warp.utils import runlength_encode
|
|
24
24
|
|
|
25
25
|
|
|
26
26
|
def test_runlength_encode_int(test, device, n):
|
warp/tests/test_scalar_ops.py
CHANGED
|
@@ -44,10 +44,10 @@ np_scalar_types = np_int_types + np_float_types
|
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
def test_py_arithmetic_ops(test, device, dtype):
|
|
47
|
-
wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
47
|
+
wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
48
48
|
|
|
49
49
|
def make_scalar(value):
|
|
50
|
-
if wptype in wp.types.int_types:
|
|
50
|
+
if wptype in wp._src.types.int_types:
|
|
51
51
|
# Cast to the correct integer type to simulate wrapping.
|
|
52
52
|
return wptype._type_(value).value
|
|
53
53
|
|
|
@@ -69,14 +69,7 @@ def test_py_arithmetic_ops(test, device, dtype):
|
|
|
69
69
|
|
|
70
70
|
|
|
71
71
|
def test_py_math_ops(test, device, dtype):
|
|
72
|
-
wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
73
|
-
|
|
74
|
-
def make_scalar(value):
|
|
75
|
-
if wptype in wp.types.int_types:
|
|
76
|
-
# Cast to the correct integer type to simulate wrapping.
|
|
77
|
-
return wptype._type_(value).value
|
|
78
|
-
|
|
79
|
-
return value
|
|
72
|
+
wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
80
73
|
|
|
81
74
|
a = wptype(1)
|
|
82
75
|
test.assertAlmostEqual(wp.abs(a), 1)
|
|
@@ -86,6 +79,38 @@ def test_py_math_ops(test, device, dtype):
|
|
|
86
79
|
test.assertAlmostEqual(wp.radians(a), 0.01745329251994329577, places=5)
|
|
87
80
|
|
|
88
81
|
|
|
82
|
+
def test_py_array_ops(test, device, dtype):
|
|
83
|
+
wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
84
|
+
|
|
85
|
+
tol = {
|
|
86
|
+
np.float16: 5.0e-3,
|
|
87
|
+
np.float32: 1.0e-6,
|
|
88
|
+
np.float64: 1.0e-8,
|
|
89
|
+
}.get(dtype, 0)
|
|
90
|
+
|
|
91
|
+
def make_array(*args):
|
|
92
|
+
if wptype in wp._src.types.int_types:
|
|
93
|
+
# Cast to the correct integer type to simulate wrapping.
|
|
94
|
+
return np.array(tuple(wptype._type_(x).value for x in args), dtype=dtype)
|
|
95
|
+
|
|
96
|
+
return np.array(args, dtype=dtype)
|
|
97
|
+
|
|
98
|
+
arr = wp.array((1, 2, 3), dtype=wptype)
|
|
99
|
+
s = wptype(5)
|
|
100
|
+
assert_np_equal((arr + s).numpy(), make_array(6, 7, 8), tol=tol)
|
|
101
|
+
assert_np_equal((s + arr).numpy(), make_array(6, 7, 8), tol=tol)
|
|
102
|
+
assert_np_equal((arr - s).numpy(), make_array(-4, -3, -2), tol=tol)
|
|
103
|
+
assert_np_equal((s - arr).numpy(), make_array(4, 3, 2), tol=tol)
|
|
104
|
+
assert_np_equal((arr * s).numpy(), make_array(5, 10, 15), tol=tol)
|
|
105
|
+
assert_np_equal((s * arr).numpy(), make_array(5, 10, 15), tol=tol)
|
|
106
|
+
assert_np_equal((arr % s).numpy(), make_array(1, 2, 3), tol=tol)
|
|
107
|
+
assert_np_equal((s % arr).numpy(), make_array(0, 1, 2), tol=tol)
|
|
108
|
+
|
|
109
|
+
if dtype in np_float_types:
|
|
110
|
+
assert_np_equal((arr / s).numpy(), make_array(0.2, 0.4, 0.6), tol=tol)
|
|
111
|
+
assert_np_equal((s / arr).numpy(), make_array(5.0, 2.5, 1.666666667), tol=tol)
|
|
112
|
+
|
|
113
|
+
|
|
89
114
|
devices = get_test_devices()
|
|
90
115
|
|
|
91
116
|
|
|
@@ -98,6 +123,9 @@ for dtype in np_scalar_types:
|
|
|
98
123
|
TestScalarOps, f"test_py_arithmetic_ops_{dtype.__name__}", test_py_arithmetic_ops, devices=None, dtype=dtype
|
|
99
124
|
)
|
|
100
125
|
add_function_test(TestScalarOps, f"test_py_math_ops_{dtype.__name__}", test_py_math_ops, devices=None, dtype=dtype)
|
|
126
|
+
add_function_test(
|
|
127
|
+
TestScalarOps, f"test_py_array_ops_{dtype.__name__}", test_py_array_ops, devices=None, dtype=dtype
|
|
128
|
+
)
|
|
101
129
|
|
|
102
130
|
|
|
103
131
|
if __name__ == "__main__":
|
warp/tests/test_smoothstep.py
CHANGED
|
@@ -78,7 +78,7 @@ def test_smoothstep(test, device):
|
|
|
78
78
|
a = wp.array([test_data.a], dtype=data_type, device=device, requires_grad=True)
|
|
79
79
|
b = wp.array([test_data.b], dtype=data_type, device=device, requires_grad=True)
|
|
80
80
|
t = wp.array([test_data.t], dtype=float, device=device, requires_grad=True)
|
|
81
|
-
out = wp.array([0] * wp.types.type_size(data_type), dtype=data_type, device=device, requires_grad=True)
|
|
81
|
+
out = wp.array([0] * wp._src.types.type_size(data_type), dtype=data_type, device=device, requires_grad=True)
|
|
82
82
|
|
|
83
83
|
with wp.Tape() as tape:
|
|
84
84
|
wp.launch(kernel, dim=1, inputs=[a, b, t, out], device=device)
|