warp-lang 1.6.1__py3-none-win_amd64.whl → 1.7.0__py3-none-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of warp-lang might be problematic. Click here for more details.
- warp/__init__.py +21 -7
- warp/autograd.py +14 -6
- warp/bin/warp-clang.dll +0 -0
- warp/bin/warp.dll +0 -0
- warp/build.py +424 -6
- warp/build_dll.py +20 -20
- warp/builtins.py +467 -368
- warp/codegen.py +193 -125
- warp/config.py +56 -12
- warp/constants.py +14 -6
- warp/context.py +524 -277
- warp/dlpack.py +22 -12
- warp/examples/__init__.py +14 -6
- warp/examples/assets/nonuniform.usd +0 -0
- warp/examples/assets/nvidia_logo.png +0 -0
- warp/examples/benchmarks/benchmark_api.py +14 -6
- warp/examples/benchmarks/benchmark_cloth.py +14 -6
- warp/examples/benchmarks/benchmark_cloth_cupy.py +14 -6
- warp/examples/benchmarks/benchmark_cloth_jax.py +14 -6
- warp/examples/benchmarks/benchmark_cloth_numba.py +15 -0
- warp/examples/benchmarks/benchmark_cloth_numpy.py +14 -6
- warp/examples/benchmarks/benchmark_cloth_paddle.py +14 -6
- warp/examples/benchmarks/benchmark_cloth_pytorch.py +14 -6
- warp/examples/benchmarks/benchmark_cloth_taichi.py +14 -6
- warp/examples/benchmarks/benchmark_cloth_warp.py +14 -6
- warp/examples/benchmarks/benchmark_gemm.py +82 -48
- warp/examples/benchmarks/benchmark_interop_paddle.py +14 -6
- warp/examples/benchmarks/benchmark_interop_torch.py +14 -6
- warp/examples/benchmarks/benchmark_launches.py +14 -6
- warp/examples/benchmarks/benchmark_tile_load_store.py +103 -0
- warp/examples/browse.py +14 -6
- warp/examples/core/example_cupy.py +14 -6
- warp/examples/core/example_dem.py +14 -6
- warp/examples/core/example_fluid.py +14 -6
- warp/examples/core/example_graph_capture.py +14 -6
- warp/examples/core/example_marching_cubes.py +14 -6
- warp/examples/core/example_mesh.py +14 -6
- warp/examples/core/example_mesh_intersect.py +14 -6
- warp/examples/core/example_nvdb.py +14 -6
- warp/examples/core/example_raycast.py +14 -6
- warp/examples/core/example_raymarch.py +14 -6
- warp/examples/core/example_render_opengl.py +14 -6
- warp/examples/core/example_sample_mesh.py +300 -0
- warp/examples/core/example_sph.py +14 -6
- warp/examples/core/example_torch.py +14 -6
- warp/examples/core/example_wave.py +14 -6
- warp/examples/fem/example_adaptive_grid.py +14 -6
- warp/examples/fem/example_apic_fluid.py +15 -7
- warp/examples/fem/example_burgers.py +16 -8
- warp/examples/fem/example_convection_diffusion.py +14 -6
- warp/examples/fem/example_convection_diffusion_dg.py +14 -6
- warp/examples/fem/example_deformed_geometry.py +15 -7
- warp/examples/fem/example_diffusion.py +14 -6
- warp/examples/fem/example_diffusion_3d.py +14 -6
- warp/examples/fem/example_diffusion_mgpu.py +14 -6
- warp/examples/fem/example_distortion_energy.py +15 -7
- warp/examples/fem/example_magnetostatics.py +20 -12
- warp/examples/fem/example_mixed_elasticity.py +14 -6
- warp/examples/fem/example_navier_stokes.py +14 -6
- warp/examples/fem/example_nonconforming_contact.py +14 -6
- warp/examples/fem/example_stokes.py +14 -6
- warp/examples/fem/example_stokes_transfer.py +14 -6
- warp/examples/fem/example_streamlines.py +14 -6
- warp/examples/fem/utils.py +24 -3
- warp/examples/interop/example_jax_callable.py +116 -0
- warp/examples/interop/example_jax_ffi_callback.py +132 -0
- warp/examples/interop/example_jax_kernel.py +205 -0
- warp/examples/optim/example_bounce.py +14 -6
- warp/examples/optim/example_cloth_throw.py +14 -6
- warp/examples/optim/example_diffray.py +14 -6
- warp/examples/optim/example_drone.py +14 -6
- warp/examples/optim/example_fluid_checkpoint.py +497 -0
- warp/examples/optim/example_inverse_kinematics.py +14 -6
- warp/examples/optim/example_inverse_kinematics_torch.py +14 -6
- warp/examples/optim/example_softbody_properties.py +14 -6
- warp/examples/optim/example_spring_cage.py +14 -6
- warp/examples/optim/example_trajectory.py +14 -6
- warp/examples/sim/example_cartpole.py +14 -6
- warp/examples/sim/example_cloth.py +14 -6
- warp/examples/sim/example_cloth_self_contact.py +14 -6
- warp/examples/sim/example_granular.py +14 -6
- warp/examples/sim/example_granular_collision_sdf.py +14 -6
- warp/examples/sim/example_jacobian_ik.py +14 -6
- warp/examples/sim/example_particle_chain.py +14 -6
- warp/examples/sim/example_quadruped.py +14 -6
- warp/examples/sim/example_rigid_chain.py +14 -6
- warp/examples/sim/example_rigid_contact.py +14 -6
- warp/examples/sim/example_rigid_force.py +14 -6
- warp/examples/sim/example_rigid_gyroscopic.py +14 -6
- warp/examples/sim/example_rigid_soft_contact.py +14 -6
- warp/examples/sim/example_soft_body.py +14 -6
- warp/examples/tile/example_tile_cholesky.py +14 -6
- warp/examples/tile/example_tile_convolution.py +14 -6
- warp/examples/tile/example_tile_fft.py +14 -6
- warp/examples/tile/example_tile_filtering.py +14 -6
- warp/examples/tile/example_tile_matmul.py +16 -10
- warp/examples/tile/example_tile_mlp.py +14 -6
- warp/examples/tile/example_tile_nbody.py +14 -6
- warp/examples/tile/example_tile_walker.py +14 -6
- warp/fabric.py +15 -0
- warp/fem/__init__.py +26 -1
- warp/fem/adaptivity.py +19 -4
- warp/fem/cache.py +15 -0
- warp/fem/dirichlet.py +15 -0
- warp/fem/domain.py +15 -0
- warp/fem/field/__init__.py +15 -0
- warp/fem/field/field.py +15 -0
- warp/fem/field/nodal_field.py +37 -68
- warp/fem/field/restriction.py +15 -0
- warp/fem/field/virtual.py +77 -23
- warp/fem/geometry/__init__.py +15 -0
- warp/fem/geometry/adaptive_nanogrid.py +24 -10
- warp/fem/geometry/closest_point.py +16 -1
- warp/fem/geometry/deformed_geometry.py +20 -2
- warp/fem/geometry/element.py +15 -0
- warp/fem/geometry/geometry.py +20 -0
- warp/fem/geometry/grid_2d.py +27 -12
- warp/fem/geometry/grid_3d.py +27 -15
- warp/fem/geometry/hexmesh.py +20 -7
- warp/fem/geometry/nanogrid.py +24 -11
- warp/fem/geometry/partition.py +15 -0
- warp/fem/geometry/quadmesh.py +28 -13
- warp/fem/geometry/tetmesh.py +18 -4
- warp/fem/geometry/trimesh.py +18 -8
- warp/fem/integrate.py +277 -93
- warp/fem/linalg.py +20 -5
- warp/fem/operator.py +15 -0
- warp/fem/polynomial.py +15 -0
- warp/fem/quadrature/__init__.py +15 -0
- warp/fem/quadrature/pic_quadrature.py +52 -22
- warp/fem/quadrature/quadrature.py +209 -25
- warp/fem/space/__init__.py +16 -1
- warp/fem/space/basis_function_space.py +19 -2
- warp/fem/space/basis_space.py +40 -18
- warp/fem/space/dof_mapper.py +15 -0
- warp/fem/space/function_space.py +15 -0
- warp/fem/space/grid_2d_function_space.py +15 -0
- warp/fem/space/grid_3d_function_space.py +15 -0
- warp/fem/space/hexmesh_function_space.py +17 -2
- warp/fem/space/nanogrid_function_space.py +15 -0
- warp/fem/space/partition.py +21 -2
- warp/fem/space/quadmesh_function_space.py +23 -8
- warp/fem/space/restriction.py +15 -0
- warp/fem/space/shape/__init__.py +15 -0
- warp/fem/space/shape/cube_shape_function.py +38 -23
- warp/fem/space/shape/shape_function.py +15 -0
- warp/fem/space/shape/square_shape_function.py +27 -12
- warp/fem/space/shape/tet_shape_function.py +15 -0
- warp/fem/space/shape/triangle_shape_function.py +16 -1
- warp/fem/space/tetmesh_function_space.py +18 -3
- warp/fem/space/topology.py +15 -0
- warp/fem/space/trimesh_function_space.py +17 -2
- warp/fem/types.py +15 -0
- warp/fem/utils.py +27 -6
- warp/jax.py +28 -7
- warp/jax_experimental/__init__.py +16 -0
- warp/{jax_experimental.py → jax_experimental/custom_call.py} +28 -33
- warp/jax_experimental/ffi.py +698 -0
- warp/jax_experimental/xla_ffi.py +602 -0
- warp/math.py +103 -6
- warp/native/array.h +28 -6
- warp/native/builtin.h +44 -9
- warp/native/bvh.cpp +18 -7
- warp/native/bvh.cu +57 -20
- warp/native/bvh.h +17 -7
- warp/native/clang/clang.cpp +45 -9
- warp/native/coloring.cpp +15 -6
- warp/native/crt.cpp +15 -6
- warp/native/crt.h +15 -6
- warp/native/cuda_crt.h +15 -6
- warp/native/cuda_util.cpp +29 -6
- warp/native/cuda_util.h +17 -6
- warp/native/error.cpp +15 -6
- warp/native/error.h +15 -6
- warp/native/exports.h +85 -63
- warp/native/fabric.h +15 -6
- warp/native/hashgrid.cpp +15 -6
- warp/native/hashgrid.cu +15 -6
- warp/native/hashgrid.h +15 -6
- warp/native/initializer_array.h +15 -6
- warp/native/intersect.h +41 -32
- warp/native/intersect_adj.h +48 -39
- warp/native/intersect_tri.h +17 -0
- warp/native/marching.cpp +16 -0
- warp/native/marching.cu +16 -7
- warp/native/marching.h +17 -0
- warp/native/mat.h +528 -15
- warp/native/mathdx.cpp +15 -6
- warp/native/matnn.h +15 -6
- warp/native/mesh.cpp +15 -6
- warp/native/mesh.cu +15 -6
- warp/native/mesh.h +25 -16
- warp/native/noise.h +15 -6
- warp/native/quat.h +114 -17
- warp/native/rand.h +21 -6
- warp/native/range.h +15 -6
- warp/native/reduce.cpp +15 -6
- warp/native/reduce.cu +15 -6
- warp/native/runlength_encode.cpp +15 -6
- warp/native/runlength_encode.cu +15 -6
- warp/native/scan.cpp +15 -6
- warp/native/scan.cu +15 -6
- warp/native/scan.h +15 -6
- warp/native/solid_angle.h +17 -0
- warp/native/sort.cpp +137 -65
- warp/native/sort.cu +167 -21
- warp/native/sort.h +23 -7
- warp/native/sparse.cpp +58 -28
- warp/native/sparse.cu +67 -23
- warp/native/spatial.h +15 -6
- warp/native/svd.h +131 -6
- warp/native/temp_buffer.h +15 -6
- warp/native/tile.h +316 -111
- warp/native/tile_reduce.h +61 -9
- warp/native/vec.h +83 -13
- warp/native/volume.cpp +100 -119
- warp/native/volume.cu +15 -6
- warp/native/volume.h +15 -6
- warp/native/volume_builder.cu +40 -16
- warp/native/volume_builder.h +21 -6
- warp/native/volume_impl.h +15 -6
- warp/native/warp.cpp +20 -12
- warp/native/warp.cu +114 -16
- warp/native/warp.h +34 -16
- warp/optim/__init__.py +14 -6
- warp/optim/adam.py +14 -6
- warp/optim/linear.py +25 -10
- warp/optim/sgd.py +14 -6
- warp/paddle.py +14 -6
- warp/render/__init__.py +14 -6
- warp/render/render_opengl.py +14 -6
- warp/render/render_usd.py +14 -6
- warp/render/utils.py +14 -6
- warp/sim/__init__.py +14 -7
- warp/sim/articulation.py +18 -10
- warp/sim/collide.py +35 -16
- warp/sim/graph_coloring.py +14 -6
- warp/sim/import_mjcf.py +463 -162
- warp/sim/import_snu.py +14 -7
- warp/sim/import_urdf.py +46 -18
- warp/sim/import_usd.py +14 -7
- warp/sim/inertia.py +14 -6
- warp/sim/integrator.py +14 -6
- warp/sim/integrator_euler.py +19 -11
- warp/sim/integrator_featherstone.py +17 -16
- warp/sim/integrator_vbd.py +222 -8
- warp/sim/integrator_xpbd.py +19 -11
- warp/sim/model.py +56 -19
- warp/sim/particles.py +14 -6
- warp/sim/render.py +14 -6
- warp/sim/utils.py +17 -2
- warp/sparse.py +657 -555
- warp/stubs.py +231 -19
- warp/tape.py +14 -6
- warp/tests/aux_test_class_kernel.py +14 -6
- warp/tests/aux_test_compile_consts_dummy.py +14 -6
- warp/tests/aux_test_conditional_unequal_types_kernels.py +14 -6
- warp/tests/aux_test_dependent.py +14 -6
- warp/tests/aux_test_grad_customs.py +14 -6
- warp/tests/aux_test_instancing_gc.py +14 -6
- warp/tests/aux_test_module_unload.py +14 -6
- warp/tests/aux_test_name_clash1.py +14 -6
- warp/tests/aux_test_name_clash2.py +14 -6
- warp/tests/aux_test_unresolved_func.py +14 -6
- warp/tests/aux_test_unresolved_symbol.py +14 -6
- warp/tests/cuda/__init__.py +0 -0
- warp/tests/{test_async.py → cuda/test_async.py} +14 -6
- warp/tests/{test_ipc.py → cuda/test_ipc.py} +14 -6
- warp/tests/{test_mempool.py → cuda/test_mempool.py} +53 -6
- warp/tests/{test_multigpu.py → cuda/test_multigpu.py} +14 -6
- warp/tests/{test_peer.py → cuda/test_peer.py} +14 -6
- warp/tests/{test_pinned.py → cuda/test_pinned.py} +14 -6
- warp/tests/{test_streams.py → cuda/test_streams.py} +85 -6
- warp/tests/geometry/__init__.py +0 -0
- warp/tests/{test_bvh.py → geometry/test_bvh.py} +14 -6
- warp/tests/{test_hash_grid.py → geometry/test_hash_grid.py} +14 -6
- warp/tests/{test_marching_cubes.py → geometry/test_marching_cubes.py} +14 -6
- warp/tests/{test_mesh.py → geometry/test_mesh.py} +14 -6
- warp/tests/{test_mesh_query_aabb.py → geometry/test_mesh_query_aabb.py} +14 -6
- warp/tests/{test_mesh_query_point.py → geometry/test_mesh_query_point.py} +80 -69
- warp/tests/{test_mesh_query_ray.py → geometry/test_mesh_query_ray.py} +15 -7
- warp/tests/{test_volume.py → geometry/test_volume.py} +55 -12
- warp/tests/{test_volume_write.py → geometry/test_volume_write.py} +14 -6
- warp/tests/interop/__init__.py +0 -0
- warp/tests/{test_dlpack.py → interop/test_dlpack.py} +42 -11
- warp/tests/{test_jax.py → interop/test_jax.py} +14 -6
- warp/tests/{test_paddle.py → interop/test_paddle.py} +14 -6
- warp/tests/{test_torch.py → interop/test_torch.py} +14 -6
- warp/tests/run_coverage_serial.py +14 -6
- warp/tests/sim/__init__.py +0 -0
- warp/tests/{disabled_kinematics.py → sim/disabled_kinematics.py} +23 -16
- warp/tests/{flaky_test_sim_grad.py → sim/flaky_test_sim_grad.py} +14 -6
- warp/tests/{test_collision.py → sim/test_collision.py} +16 -8
- warp/tests/{test_coloring.py → sim/test_coloring.py} +14 -7
- warp/tests/{test_model.py → sim/test_model.py} +55 -7
- warp/tests/{test_sim_grad_bounce_linear.py → sim/test_sim_grad_bounce_linear.py} +14 -6
- warp/tests/{test_sim_kinematics.py → sim/test_sim_kinematics.py} +16 -7
- warp/tests/sim/test_vbd.py +597 -0
- warp/tests/test_adam.py +14 -6
- warp/tests/test_arithmetic.py +14 -6
- warp/tests/test_array.py +14 -6
- warp/tests/test_array_reduce.py +14 -6
- warp/tests/test_assert.py +14 -6
- warp/tests/test_atomic.py +14 -6
- warp/tests/test_bool.py +15 -7
- warp/tests/test_builtins_resolution.py +14 -6
- warp/tests/test_closest_point_edge_edge.py +14 -6
- warp/tests/test_codegen.py +14 -6
- warp/tests/test_codegen_instancing.py +14 -6
- warp/tests/test_compile_consts.py +14 -6
- warp/tests/test_conditional.py +14 -6
- warp/tests/test_context.py +14 -6
- warp/tests/test_copy.py +14 -6
- warp/tests/test_ctypes.py +14 -6
- warp/tests/test_dense.py +14 -6
- warp/tests/test_devices.py +14 -6
- warp/tests/test_examples.py +42 -42
- warp/tests/test_fabricarray.py +14 -6
- warp/tests/test_fast_math.py +14 -6
- warp/tests/test_fem.py +37 -10
- warp/tests/test_fp16.py +14 -6
- warp/tests/test_func.py +14 -6
- warp/tests/test_future_annotations.py +14 -6
- warp/tests/test_generics.py +14 -6
- warp/tests/test_grad.py +14 -6
- warp/tests/test_grad_customs.py +14 -6
- warp/tests/test_grad_debug.py +14 -6
- warp/tests/test_implicit_init.py +14 -6
- warp/tests/test_import.py +14 -6
- warp/tests/test_indexedarray.py +14 -6
- warp/tests/test_intersect.py +14 -6
- warp/tests/test_iter.py +14 -6
- warp/tests/test_large.py +14 -6
- warp/tests/test_launch.py +14 -6
- warp/tests/test_lerp.py +14 -6
- warp/tests/test_linear_solvers.py +15 -11
- warp/tests/test_lvalue.py +14 -6
- warp/tests/test_mat.py +247 -85
- warp/tests/test_mat_lite.py +14 -6
- warp/tests/test_mat_scalar_ops.py +18 -10
- warp/tests/test_math.py +14 -6
- warp/tests/test_mlp.py +14 -6
- warp/tests/test_module_hashing.py +14 -6
- warp/tests/test_modules_lite.py +14 -6
- warp/tests/test_noise.py +14 -6
- warp/tests/test_operators.py +14 -6
- warp/tests/test_options.py +14 -6
- warp/tests/test_overwrite.py +15 -60
- warp/tests/test_print.py +14 -6
- warp/tests/test_quat.py +81 -52
- warp/tests/test_rand.py +58 -43
- warp/tests/test_reload.py +14 -6
- warp/tests/test_rounding.py +14 -6
- warp/tests/test_runlength_encode.py +14 -6
- warp/tests/test_scalar_ops.py +14 -6
- warp/tests/test_smoothstep.py +14 -6
- warp/tests/test_snippet.py +15 -0
- warp/tests/test_sparse.py +61 -12
- warp/tests/test_spatial.py +89 -6
- warp/tests/test_special_values.py +14 -6
- warp/tests/test_static.py +15 -7
- warp/tests/test_struct.py +14 -6
- warp/tests/test_tape.py +14 -6
- warp/tests/test_transient_module.py +14 -6
- warp/tests/test_triangle_closest_point.py +14 -6
- warp/tests/test_types.py +14 -6
- warp/tests/test_utils.py +98 -10
- warp/tests/test_vec.py +60 -40
- warp/tests/test_vec_lite.py +14 -6
- warp/tests/test_vec_scalar_ops.py +14 -6
- warp/tests/test_verify_fp.py +14 -6
- warp/tests/tile/__init__.py +0 -0
- warp/tests/{test_tile.py → tile/test_tile.py} +150 -57
- warp/tests/{test_tile_load.py → tile/test_tile_load.py} +15 -7
- warp/tests/{test_tile_mathdx.py → tile/test_tile_mathdx.py} +23 -12
- warp/tests/{test_tile_mlp.py → tile/test_tile_mlp.py} +39 -20
- warp/tests/{test_tile_reduce.py → tile/test_tile_reduce.py} +74 -7
- warp/tests/{test_tile_shared_memory.py → tile/test_tile_shared_memory.py} +14 -6
- warp/tests/{test_tile_view.py → tile/test_tile_view.py} +15 -7
- warp/tests/unittest_serial.py +15 -6
- warp/tests/unittest_suites.py +59 -65
- warp/tests/unittest_utils.py +16 -7
- warp/tests/walkthrough_debug.py +14 -6
- warp/thirdparty/unittest_parallel.py +15 -8
- warp/torch.py +14 -6
- warp/types.py +124 -664
- warp/utils.py +151 -78
- {warp_lang-1.6.1.dist-info → warp_lang-1.7.0.dist-info}/METADATA +39 -12
- warp_lang-1.7.0.dist-info/RECORD +429 -0
- {warp_lang-1.6.1.dist-info → warp_lang-1.7.0.dist-info}/WHEEL +1 -1
- warp_lang-1.7.0.dist-info/licenses/LICENSE.md +202 -0
- warp/examples/optim/example_walker.py +0 -309
- warp/native/cutlass_gemm.cpp +0 -34
- warp/native/cutlass_gemm.cu +0 -373
- warp/tests/test_matmul.py +0 -503
- warp/tests/test_matmul_lite.py +0 -403
- warp/tests/test_vbd.py +0 -378
- warp/tests/unused_test_misc.py +0 -69
- warp_lang-1.6.1.dist-info/LICENSE.md +0 -126
- warp_lang-1.6.1.dist-info/RECORD +0 -419
- {warp_lang-1.6.1.dist-info → warp_lang-1.7.0.dist-info}/top_level.txt +0 -0
warp/tests/test_operators.py
CHANGED
|
@@ -1,9 +1,17 @@
|
|
|
1
|
-
# Copyright (c) 2022 NVIDIA CORPORATION.
|
|
2
|
-
#
|
|
3
|
-
#
|
|
4
|
-
#
|
|
5
|
-
#
|
|
6
|
-
#
|
|
1
|
+
# SPDX-FileCopyrightText: Copyright (c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
|
2
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
#
|
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
# you may not use this file except in compliance with the License.
|
|
6
|
+
# You may obtain a copy of the License at
|
|
7
|
+
#
|
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
#
|
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
# See the License for the specific language governing permissions and
|
|
14
|
+
# limitations under the License.
|
|
7
15
|
|
|
8
16
|
import unittest
|
|
9
17
|
|
warp/tests/test_options.py
CHANGED
|
@@ -1,9 +1,17 @@
|
|
|
1
|
-
# Copyright (c) 2022 NVIDIA CORPORATION.
|
|
2
|
-
#
|
|
3
|
-
#
|
|
4
|
-
#
|
|
5
|
-
#
|
|
6
|
-
#
|
|
1
|
+
# SPDX-FileCopyrightText: Copyright (c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
|
2
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
#
|
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
# you may not use this file except in compliance with the License.
|
|
6
|
+
# You may obtain a copy of the License at
|
|
7
|
+
#
|
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
#
|
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
# See the License for the specific language governing permissions and
|
|
14
|
+
# limitations under the License.
|
|
7
15
|
|
|
8
16
|
import contextlib
|
|
9
17
|
import io
|
warp/tests/test_overwrite.py
CHANGED
|
@@ -1,3 +1,18 @@
|
|
|
1
|
+
# SPDX-FileCopyrightText: Copyright (c) 2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
|
2
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
#
|
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
# you may not use this file except in compliance with the License.
|
|
6
|
+
# You may obtain a copy of the License at
|
|
7
|
+
#
|
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
#
|
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
# See the License for the specific language governing permissions and
|
|
14
|
+
# limitations under the License.
|
|
15
|
+
|
|
1
16
|
import contextlib
|
|
2
17
|
import io
|
|
3
18
|
import unittest
|
|
@@ -8,8 +23,6 @@ import numpy as np
|
|
|
8
23
|
import warp as wp
|
|
9
24
|
from warp.tests.unittest_utils import *
|
|
10
25
|
|
|
11
|
-
wp.init() # For wp.context.runtime.core.is_cutlass_enabled()
|
|
12
|
-
|
|
13
26
|
# kernels are defined in the global scope, to ensure wp.Kernel objects are not GC'ed in the MGPU case
|
|
14
27
|
# kernel args are assigned array modes during codegen, so wp.Kernel objects generated during codegen
|
|
15
28
|
# must be preserved for overwrite tracking to function
|
|
@@ -363,62 +376,6 @@ def test_copy(test, device):
|
|
|
363
376
|
wp.config.verify_autograd_array_access = saved_verify_autograd_array_access_setting
|
|
364
377
|
|
|
365
378
|
|
|
366
|
-
# wp.matmul uses wp.record_func. Ensure array modes are propagated correctly.
|
|
367
|
-
def test_matmul(test, device):
|
|
368
|
-
if device.is_cuda and not wp.context.runtime.core.is_cutlass_enabled():
|
|
369
|
-
test.skipTest("Warp was not built with CUTLASS support")
|
|
370
|
-
|
|
371
|
-
saved_verify_autograd_array_access_setting = wp.config.verify_autograd_array_access
|
|
372
|
-
try:
|
|
373
|
-
wp.config.verify_autograd_array_access = True
|
|
374
|
-
|
|
375
|
-
a = wp.ones((3, 3), dtype=float, requires_grad=True, device=device)
|
|
376
|
-
b = wp.ones_like(a)
|
|
377
|
-
c = wp.ones_like(a)
|
|
378
|
-
d = wp.zeros_like(a)
|
|
379
|
-
|
|
380
|
-
tape = wp.Tape()
|
|
381
|
-
|
|
382
|
-
with tape:
|
|
383
|
-
wp.matmul(a, b, c, d)
|
|
384
|
-
|
|
385
|
-
test.assertEqual(a._is_read, True)
|
|
386
|
-
test.assertEqual(b._is_read, True)
|
|
387
|
-
test.assertEqual(c._is_read, True)
|
|
388
|
-
test.assertEqual(d._is_read, False)
|
|
389
|
-
|
|
390
|
-
finally:
|
|
391
|
-
wp.config.verify_autograd_array_access = saved_verify_autograd_array_access_setting
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
# wp.batched_matmul uses wp.record_func. Ensure array modes are propagated correctly.
|
|
395
|
-
def test_batched_matmul(test, device):
|
|
396
|
-
if device.is_cuda and not wp.context.runtime.core.is_cutlass_enabled():
|
|
397
|
-
test.skipTest("Warp was not built with CUTLASS support")
|
|
398
|
-
|
|
399
|
-
saved_verify_autograd_array_access_setting = wp.config.verify_autograd_array_access
|
|
400
|
-
try:
|
|
401
|
-
wp.config.verify_autograd_array_access = True
|
|
402
|
-
|
|
403
|
-
a = wp.ones((1, 3, 3), dtype=float, requires_grad=True, device=device)
|
|
404
|
-
b = wp.ones_like(a)
|
|
405
|
-
c = wp.ones_like(a)
|
|
406
|
-
d = wp.zeros_like(a)
|
|
407
|
-
|
|
408
|
-
tape = wp.Tape()
|
|
409
|
-
|
|
410
|
-
with tape:
|
|
411
|
-
wp.batched_matmul(a, b, c, d)
|
|
412
|
-
|
|
413
|
-
test.assertEqual(a._is_read, True)
|
|
414
|
-
test.assertEqual(b._is_read, True)
|
|
415
|
-
test.assertEqual(c._is_read, True)
|
|
416
|
-
test.assertEqual(d._is_read, False)
|
|
417
|
-
|
|
418
|
-
finally:
|
|
419
|
-
wp.config.verify_autograd_array_access = saved_verify_autograd_array_access_setting
|
|
420
|
-
|
|
421
|
-
|
|
422
379
|
# write after read warning with in-place operators within a kernel
|
|
423
380
|
def test_in_place_operators_warning(test, device):
|
|
424
381
|
saved_verify_autograd_array_access_setting = wp.config.verify_autograd_array_access
|
|
@@ -578,8 +535,6 @@ add_function_test(TestOverwrite, "test_views", test_views, devices=devices)
|
|
|
578
535
|
add_function_test(TestOverwrite, "test_reset", test_reset, devices=devices)
|
|
579
536
|
|
|
580
537
|
add_function_test(TestOverwrite, "test_copy", test_copy, devices=devices)
|
|
581
|
-
add_function_test(TestOverwrite, "test_matmul", test_matmul, devices=devices, check_output=False)
|
|
582
|
-
add_function_test(TestOverwrite, "test_batched_matmul", test_batched_matmul, devices=devices, check_output=False)
|
|
583
538
|
add_function_test(TestOverwrite, "test_atomic_operations", test_atomic_operations, devices=devices)
|
|
584
539
|
|
|
585
540
|
# Some warning are only issued during codegen, and codegen only runs on cuda_0 in the MGPU case.
|
warp/tests/test_print.py
CHANGED
|
@@ -1,9 +1,17 @@
|
|
|
1
|
-
# Copyright (c) 2022 NVIDIA CORPORATION.
|
|
2
|
-
#
|
|
3
|
-
#
|
|
4
|
-
#
|
|
5
|
-
#
|
|
6
|
-
#
|
|
1
|
+
# SPDX-FileCopyrightText: Copyright (c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
|
2
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
#
|
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
# you may not use this file except in compliance with the License.
|
|
6
|
+
# You may obtain a copy of the License at
|
|
7
|
+
#
|
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
#
|
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
# See the License for the specific language governing permissions and
|
|
14
|
+
# limitations under the License.
|
|
7
15
|
|
|
8
16
|
import sys
|
|
9
17
|
import unittest
|
warp/tests/test_quat.py
CHANGED
|
@@ -1,9 +1,17 @@
|
|
|
1
|
-
# Copyright (c) 2022 NVIDIA CORPORATION.
|
|
2
|
-
#
|
|
3
|
-
#
|
|
4
|
-
#
|
|
5
|
-
#
|
|
6
|
-
#
|
|
1
|
+
# SPDX-FileCopyrightText: Copyright (c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
|
2
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
#
|
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
# you may not use this file except in compliance with the License.
|
|
6
|
+
# You may obtain a copy of the License at
|
|
7
|
+
#
|
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
#
|
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
# See the License for the specific language governing permissions and
|
|
14
|
+
# limitations under the License.
|
|
7
15
|
|
|
8
16
|
import unittest
|
|
9
17
|
|
|
@@ -1197,7 +1205,6 @@ def test_quat_to_matrix(test, device, dtype, register_kernels=False):
|
|
|
1197
1205
|
|
|
1198
1206
|
wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
1199
1207
|
quat = wp.types.quaternion(dtype=wptype)
|
|
1200
|
-
mat3 = wp.types.matrix(shape=(3, 3), dtype=wptype)
|
|
1201
1208
|
vec3 = wp.types.vector(length=3, dtype=wptype)
|
|
1202
1209
|
|
|
1203
1210
|
def check_quat_to_matrix(
|
|
@@ -1231,7 +1238,7 @@ def test_quat_to_matrix(test, device, dtype, register_kernels=False):
|
|
|
1231
1238
|
wptype(1),
|
|
1232
1239
|
),
|
|
1233
1240
|
)
|
|
1234
|
-
result_manual =
|
|
1241
|
+
result_manual = wp.matrix_from_cols(xaxis, yaxis, zaxis)
|
|
1235
1242
|
|
|
1236
1243
|
idx = 0
|
|
1237
1244
|
for i in range(3):
|
|
@@ -1703,18 +1710,31 @@ def test_quat_rpy_grad(test, device, dtype, register_kernels=False):
|
|
|
1703
1710
|
def test_quat_from_matrix(test, device, dtype, register_kernels=False):
|
|
1704
1711
|
wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
|
|
1705
1712
|
mat33 = wp.types.matrix((3, 3), wptype)
|
|
1713
|
+
mat44 = wp.types.matrix((4, 4), wptype)
|
|
1706
1714
|
quat = wp.types.quaternion(wptype)
|
|
1707
1715
|
|
|
1708
1716
|
def quat_from_matrix(m: wp.array2d(dtype=wptype), loss: wp.array(dtype=wptype), idx: int):
|
|
1709
1717
|
tid = wp.tid()
|
|
1710
1718
|
|
|
1711
|
-
|
|
1712
|
-
|
|
1719
|
+
# fmt: off
|
|
1720
|
+
m3 = mat33(
|
|
1721
|
+
m[tid, 0], m[tid, 1], m[tid, 2],
|
|
1722
|
+
m[tid, 3], m[tid, 4], m[tid, 5],
|
|
1723
|
+
m[tid, 6], m[tid, 7], m[tid, 8],
|
|
1713
1724
|
)
|
|
1725
|
+
q1 = wp.quat_from_matrix(m3)
|
|
1714
1726
|
|
|
1715
|
-
|
|
1727
|
+
m4 = mat44(
|
|
1728
|
+
m[tid, 0], m[tid, 1], m[tid, 2], wptype(0.0),
|
|
1729
|
+
m[tid, 3], m[tid, 4], m[tid, 5], wptype(0.0),
|
|
1730
|
+
m[tid, 6], m[tid, 7], m[tid, 8], wptype(0.0),
|
|
1731
|
+
wptype(0.0), wptype(0.0), wptype(0.0), wptype(1.0),
|
|
1732
|
+
)
|
|
1733
|
+
q2 = wp.quat_from_matrix(m4)
|
|
1734
|
+
# fmt: on
|
|
1716
1735
|
|
|
1717
|
-
wp.
|
|
1736
|
+
wp.expect_eq(q1, q2)
|
|
1737
|
+
wp.atomic_add(loss, 0, q1[idx])
|
|
1718
1738
|
|
|
1719
1739
|
def quat_from_matrix_forward(mats: wp.array2d(dtype=wptype), loss: wp.array(dtype=wptype), idx: int):
|
|
1720
1740
|
tid = wp.tid()
|
|
@@ -1886,7 +1906,7 @@ def test_quat_identity(test, device, dtype, register_kernels=False):
|
|
|
1886
1906
|
############################################################
|
|
1887
1907
|
|
|
1888
1908
|
|
|
1889
|
-
def
|
|
1909
|
+
def test_quat_assign_inplace(test, device, dtype, register_kernels=False):
|
|
1890
1910
|
np_type = np.dtype(dtype)
|
|
1891
1911
|
wp_type = wp.types.np_dtype_to_warp_type[np_type]
|
|
1892
1912
|
|
|
@@ -1907,16 +1927,6 @@ def test_quat_assign(test, device, dtype, register_kernels=False):
|
|
|
1907
1927
|
g = q[0] + wp_type(2.0) * q[1] + wp_type(3.0) * q[2] + wp_type(4.0) * q[3]
|
|
1908
1928
|
x[tid] = g
|
|
1909
1929
|
|
|
1910
|
-
def quattest_in_register_overwrite(x: wp.array(dtype=quat), a: wp.array(dtype=quat)):
|
|
1911
|
-
tid = wp.tid()
|
|
1912
|
-
|
|
1913
|
-
f = quat()
|
|
1914
|
-
a_quat = a[tid]
|
|
1915
|
-
f = a_quat
|
|
1916
|
-
f[1] = wp_type(3.0)
|
|
1917
|
-
|
|
1918
|
-
x[tid] = f
|
|
1919
|
-
|
|
1920
1930
|
def quattest_component(x: wp.array(dtype=quat), y: wp.array(dtype=wp_type)):
|
|
1921
1931
|
i = wp.tid()
|
|
1922
1932
|
|
|
@@ -1929,7 +1939,6 @@ def test_quat_assign(test, device, dtype, register_kernels=False):
|
|
|
1929
1939
|
|
|
1930
1940
|
kernel_read_write_store = getkernel(quattest_read_write_store, suffix=dtype.__name__)
|
|
1931
1941
|
kernel_in_register = getkernel(quattest_in_register, suffix=dtype.__name__)
|
|
1932
|
-
kernel_in_register_overwrite = getkernel(quattest_in_register_overwrite, suffix=dtype.__name__)
|
|
1933
1942
|
kernel_component = getkernel(quattest_component, suffix=dtype.__name__)
|
|
1934
1943
|
|
|
1935
1944
|
if register_kernels:
|
|
@@ -1965,7 +1974,6 @@ def test_quat_assign(test, device, dtype, register_kernels=False):
|
|
|
1965
1974
|
x = wp.zeros(1, dtype=quat, requires_grad=True)
|
|
1966
1975
|
y = wp.ones(1, dtype=wp_type, requires_grad=True)
|
|
1967
1976
|
|
|
1968
|
-
tape = wp.Tape()
|
|
1969
1977
|
with tape:
|
|
1970
1978
|
wp.launch(kernel_component, dim=1, inputs=[x, y])
|
|
1971
1979
|
|
|
@@ -1974,18 +1982,6 @@ def test_quat_assign(test, device, dtype, register_kernels=False):
|
|
|
1974
1982
|
assert_np_equal(x.numpy(), np.array([[1.0, 2.0, 3.0, 4.0]], dtype=np_type))
|
|
1975
1983
|
assert_np_equal(y.grad.numpy(), np.array([10.0], dtype=np_type))
|
|
1976
1984
|
|
|
1977
|
-
x = wp.zeros(1, dtype=quat, device=device, requires_grad=True)
|
|
1978
|
-
a = wp.ones(1, dtype=quat, device=device, requires_grad=True)
|
|
1979
|
-
|
|
1980
|
-
tape = wp.Tape()
|
|
1981
|
-
with tape:
|
|
1982
|
-
wp.launch(kernel_in_register_overwrite, dim=1, inputs=[x, a], device=device)
|
|
1983
|
-
|
|
1984
|
-
tape.backward(grads={x: wp.ones_like(x, requires_grad=False)})
|
|
1985
|
-
|
|
1986
|
-
assert_np_equal(x.numpy(), np.array([[1.0, 3.0, 1.0, 1.0]], dtype=np_type))
|
|
1987
|
-
assert_np_equal(a.grad.numpy(), np.array([[1.0, 0.0, 1.0, 1.0]], dtype=np_type))
|
|
1988
|
-
|
|
1989
1985
|
|
|
1990
1986
|
############################################################
|
|
1991
1987
|
|
|
@@ -2120,7 +2116,7 @@ def test_quat_len(test, device):
|
|
|
2120
2116
|
|
|
2121
2117
|
|
|
2122
2118
|
@wp.kernel
|
|
2123
|
-
def
|
|
2119
|
+
def quat_augassign_kernel(
|
|
2124
2120
|
a: wp.array(dtype=wp.quat), b: wp.array(dtype=wp.quat), c: wp.array(dtype=wp.quat), d: wp.array(dtype=wp.quat)
|
|
2125
2121
|
):
|
|
2126
2122
|
i = wp.tid()
|
|
@@ -2138,26 +2134,26 @@ def vector_augassign_kernel(
|
|
|
2138
2134
|
q3 = wp.quat()
|
|
2139
2135
|
q4 = d[i]
|
|
2140
2136
|
|
|
2141
|
-
q3[0]
|
|
2142
|
-
q3[1]
|
|
2143
|
-
q3[2]
|
|
2144
|
-
q3[3]
|
|
2137
|
+
q3[0] -= q4[0]
|
|
2138
|
+
q3[1] -= q4[1]
|
|
2139
|
+
q3[2] -= q4[2]
|
|
2140
|
+
q3[3] -= q4[3]
|
|
2145
2141
|
|
|
2146
|
-
c[i] =
|
|
2142
|
+
c[i] = q3
|
|
2147
2143
|
|
|
2148
2144
|
|
|
2149
|
-
def
|
|
2145
|
+
def test_quat_augassign(test, device):
|
|
2150
2146
|
N = 3
|
|
2151
2147
|
|
|
2152
|
-
a = wp.zeros(N, dtype=wp.quat, requires_grad=True)
|
|
2153
|
-
b = wp.ones(N, dtype=wp.quat, requires_grad=True)
|
|
2148
|
+
a = wp.zeros(N, dtype=wp.quat, requires_grad=True, device=device)
|
|
2149
|
+
b = wp.ones(N, dtype=wp.quat, requires_grad=True, device=device)
|
|
2154
2150
|
|
|
2155
|
-
c = wp.zeros(N, dtype=wp.quat, requires_grad=True)
|
|
2156
|
-
d = wp.ones(N, dtype=wp.quat, requires_grad=True)
|
|
2151
|
+
c = wp.zeros(N, dtype=wp.quat, requires_grad=True, device=device)
|
|
2152
|
+
d = wp.ones(N, dtype=wp.quat, requires_grad=True, device=device)
|
|
2157
2153
|
|
|
2158
2154
|
tape = wp.Tape()
|
|
2159
2155
|
with tape:
|
|
2160
|
-
wp.launch(
|
|
2156
|
+
wp.launch(quat_augassign_kernel, N, inputs=[a, b, c, d], device=device)
|
|
2161
2157
|
|
|
2162
2158
|
tape.backward(grads={a: wp.ones_like(a), c: wp.ones_like(c)})
|
|
2163
2159
|
|
|
@@ -2170,6 +2166,38 @@ def test_vector_augassign(test, device):
|
|
|
2170
2166
|
assert_np_equal(d.grad.numpy(), -wp.ones_like(d).numpy())
|
|
2171
2167
|
|
|
2172
2168
|
|
|
2169
|
+
def test_quat_assign_copy(test, device):
|
|
2170
|
+
saved_enable_vector_component_overwrites_setting = wp.config.enable_vector_component_overwrites
|
|
2171
|
+
try:
|
|
2172
|
+
wp.config.enable_vector_component_overwrites = True
|
|
2173
|
+
|
|
2174
|
+
@wp.kernel
|
|
2175
|
+
def quat_in_register_overwrite(x: wp.array(dtype=wp.quat), a: wp.array(dtype=wp.quat)):
|
|
2176
|
+
tid = wp.tid()
|
|
2177
|
+
|
|
2178
|
+
f = wp.quat()
|
|
2179
|
+
a_quat = a[tid]
|
|
2180
|
+
f = a_quat
|
|
2181
|
+
f[1] = 3.0
|
|
2182
|
+
|
|
2183
|
+
x[tid] = f
|
|
2184
|
+
|
|
2185
|
+
x = wp.zeros(1, dtype=wp.quat, device=device, requires_grad=True)
|
|
2186
|
+
a = wp.ones(1, dtype=wp.quat, device=device, requires_grad=True)
|
|
2187
|
+
|
|
2188
|
+
tape = wp.Tape()
|
|
2189
|
+
with tape:
|
|
2190
|
+
wp.launch(quat_in_register_overwrite, dim=1, inputs=[x, a], device=device)
|
|
2191
|
+
|
|
2192
|
+
tape.backward(grads={x: wp.ones_like(x, requires_grad=False)})
|
|
2193
|
+
|
|
2194
|
+
assert_np_equal(x.numpy(), np.array([[1.0, 3.0, 1.0, 1.0]], dtype=float))
|
|
2195
|
+
assert_np_equal(a.grad.numpy(), np.array([[1.0, 0.0, 1.0, 1.0]], dtype=float))
|
|
2196
|
+
|
|
2197
|
+
finally:
|
|
2198
|
+
wp.config.enable_vector_component_overwrites = saved_enable_vector_component_overwrites_setting
|
|
2199
|
+
|
|
2200
|
+
|
|
2173
2201
|
devices = get_test_devices()
|
|
2174
2202
|
|
|
2175
2203
|
|
|
@@ -2269,8 +2297,8 @@ for dtype in np_float_types:
|
|
|
2269
2297
|
)
|
|
2270
2298
|
add_function_test_register_kernel(
|
|
2271
2299
|
TestQuat,
|
|
2272
|
-
f"
|
|
2273
|
-
|
|
2300
|
+
f"test_quat_assign_inplace_{dtype.__name__}",
|
|
2301
|
+
test_quat_assign_inplace,
|
|
2274
2302
|
devices=devices,
|
|
2275
2303
|
dtype=dtype,
|
|
2276
2304
|
)
|
|
@@ -2279,7 +2307,8 @@ for dtype in np_float_types:
|
|
|
2279
2307
|
)
|
|
2280
2308
|
|
|
2281
2309
|
add_function_test(TestQuat, "test_quat_len", test_quat_len, devices=devices)
|
|
2282
|
-
|
|
2310
|
+
add_function_test(TestQuat, "test_quat_augassign", test_quat_augassign, devices=devices)
|
|
2311
|
+
add_function_test(TestQuat, "test_quat_assign_copy", test_quat_assign_copy, devices=devices)
|
|
2283
2312
|
|
|
2284
2313
|
if __name__ == "__main__":
|
|
2285
2314
|
wp.clear_kernel_cache()
|
warp/tests/test_rand.py
CHANGED
|
@@ -1,9 +1,17 @@
|
|
|
1
|
-
# Copyright (c) 2022 NVIDIA CORPORATION.
|
|
2
|
-
#
|
|
3
|
-
#
|
|
4
|
-
#
|
|
5
|
-
#
|
|
6
|
-
#
|
|
1
|
+
# SPDX-FileCopyrightText: Copyright (c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
|
2
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
#
|
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
# you may not use this file except in compliance with the License.
|
|
6
|
+
# You may obtain a copy of the License at
|
|
7
|
+
#
|
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
#
|
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
# See the License for the specific language governing permissions and
|
|
14
|
+
# limitations under the License.
|
|
7
15
|
|
|
8
16
|
import unittest
|
|
9
17
|
|
|
@@ -18,6 +26,8 @@ def test_kernel(
|
|
|
18
26
|
kernel_seed: int,
|
|
19
27
|
int_a: wp.array(dtype=int),
|
|
20
28
|
int_ab: wp.array(dtype=int),
|
|
29
|
+
uint_a: wp.array(dtype=wp.uint32),
|
|
30
|
+
uint_ab: wp.array(dtype=wp.uint32),
|
|
21
31
|
float_01: wp.array(dtype=float),
|
|
22
32
|
float_ab: wp.array(dtype=float),
|
|
23
33
|
):
|
|
@@ -27,6 +37,8 @@ def test_kernel(
|
|
|
27
37
|
|
|
28
38
|
int_a[tid] = wp.randi(state)
|
|
29
39
|
int_ab[tid] = wp.randi(state, 0, 100)
|
|
40
|
+
uint_a[tid] = wp.randu(state)
|
|
41
|
+
uint_ab[tid] = wp.randu(state, wp.uint32(0), wp.uint32(100))
|
|
30
42
|
float_01[tid] = wp.randf(state)
|
|
31
43
|
float_ab[tid] = wp.randf(state, 0.0, 100.0)
|
|
32
44
|
|
|
@@ -34,37 +46,25 @@ def test_kernel(
|
|
|
34
46
|
def test_rand(test, device):
|
|
35
47
|
N = 10
|
|
36
48
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
int_ab_device = wp.zeros(N, dtype=int, device=device)
|
|
40
|
-
int_ab_host = wp.zeros(N, dtype=int, device="cpu")
|
|
49
|
+
int_a = wp.zeros(N, dtype=int, device=device)
|
|
50
|
+
int_ab = wp.zeros(N, dtype=int, device=device)
|
|
41
51
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
52
|
+
uint_a = wp.zeros(N, dtype=wp.uint32, device=device)
|
|
53
|
+
uint_ab = wp.zeros(N, dtype=wp.uint32, device=device)
|
|
54
|
+
|
|
55
|
+
float_01 = wp.zeros(N, dtype=float, device=device)
|
|
56
|
+
float_ab = wp.zeros(N, dtype=float, device=device)
|
|
46
57
|
|
|
47
58
|
seed = 42
|
|
48
59
|
|
|
49
60
|
wp.launch(
|
|
50
61
|
kernel=test_kernel,
|
|
51
62
|
dim=N,
|
|
52
|
-
inputs=[seed,
|
|
63
|
+
inputs=[seed, int_a, int_ab, uint_a, uint_ab, float_01, float_ab],
|
|
53
64
|
outputs=[],
|
|
54
65
|
device=device,
|
|
55
66
|
)
|
|
56
67
|
|
|
57
|
-
wp.copy(int_a_host, int_a_device)
|
|
58
|
-
wp.copy(int_ab_host, int_ab_device)
|
|
59
|
-
wp.copy(float_01_host, float_01_device)
|
|
60
|
-
wp.copy(float_ab_host, float_ab_device)
|
|
61
|
-
wp.synchronize_device(device)
|
|
62
|
-
|
|
63
|
-
int_a = int_a_host.numpy()
|
|
64
|
-
int_ab = int_ab_host.numpy()
|
|
65
|
-
float_01 = float_01_host.numpy()
|
|
66
|
-
float_ab = float_ab_host.numpy()
|
|
67
|
-
|
|
68
68
|
int_a_true = np.array(
|
|
69
69
|
[
|
|
70
70
|
-575632308,
|
|
@@ -80,32 +80,47 @@ def test_rand(test, device):
|
|
|
80
80
|
]
|
|
81
81
|
)
|
|
82
82
|
int_ab_true = np.array([46, 58, 46, 83, 85, 39, 72, 99, 18, 41])
|
|
83
|
+
uint_a_true = np.array(
|
|
84
|
+
[
|
|
85
|
+
3133687854,
|
|
86
|
+
3702303309,
|
|
87
|
+
1235698096,
|
|
88
|
+
3516599792,
|
|
89
|
+
800302729,
|
|
90
|
+
2620462179,
|
|
91
|
+
2423739693,
|
|
92
|
+
3024873594,
|
|
93
|
+
2783682377,
|
|
94
|
+
1188846332,
|
|
95
|
+
]
|
|
96
|
+
)
|
|
97
|
+
uint_ab_true = np.array([6, 55, 2, 92, 55, 93, 65, 23, 48, 0])
|
|
83
98
|
float_01_true = np.array(
|
|
84
99
|
[
|
|
85
|
-
0.
|
|
86
|
-
0.
|
|
87
|
-
0.
|
|
88
|
-
0.
|
|
89
|
-
0.
|
|
90
|
-
0.
|
|
91
|
-
0.
|
|
92
|
-
0.
|
|
93
|
-
0.
|
|
94
|
-
0.
|
|
100
|
+
0.8265858,
|
|
101
|
+
0.5874614,
|
|
102
|
+
0.1508659,
|
|
103
|
+
0.9498008,
|
|
104
|
+
0.02531803,
|
|
105
|
+
0.8520948,
|
|
106
|
+
0.0001185536,
|
|
107
|
+
0.4855958,
|
|
108
|
+
0.06277305,
|
|
109
|
+
0.2214079,
|
|
95
110
|
]
|
|
96
111
|
)
|
|
97
112
|
float_ab_true = np.array(
|
|
98
|
-
[
|
|
113
|
+
[79.84678, 76.362206, 32.135242, 99.70866, 70.45863, 20.6523, 45.164482, 55.583008, 76.60291, 35.36277]
|
|
99
114
|
)
|
|
100
115
|
|
|
101
|
-
|
|
102
|
-
|
|
116
|
+
assert_np_equal(int_a.numpy(), int_a_true)
|
|
117
|
+
assert_np_equal(int_ab.numpy(), int_ab_true)
|
|
103
118
|
|
|
104
|
-
|
|
105
|
-
|
|
119
|
+
assert_np_equal(uint_a.numpy(), uint_a_true)
|
|
120
|
+
assert_np_equal(uint_ab.numpy(), uint_ab_true)
|
|
106
121
|
|
|
107
|
-
|
|
108
|
-
|
|
122
|
+
assert_np_equal(float_01.numpy(), float_01_true, 1e-04)
|
|
123
|
+
assert_np_equal(float_ab.numpy(), float_ab_true, 1e-04)
|
|
109
124
|
|
|
110
125
|
|
|
111
126
|
@wp.kernel
|
warp/tests/test_reload.py
CHANGED
|
@@ -1,9 +1,17 @@
|
|
|
1
|
-
# Copyright (c) 2022 NVIDIA CORPORATION.
|
|
2
|
-
#
|
|
3
|
-
#
|
|
4
|
-
#
|
|
5
|
-
#
|
|
6
|
-
#
|
|
1
|
+
# SPDX-FileCopyrightText: Copyright (c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
|
2
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
#
|
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
# you may not use this file except in compliance with the License.
|
|
6
|
+
# You may obtain a copy of the License at
|
|
7
|
+
#
|
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
#
|
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
# See the License for the specific language governing permissions and
|
|
14
|
+
# limitations under the License.
|
|
7
15
|
|
|
8
16
|
import importlib
|
|
9
17
|
import os
|
warp/tests/test_rounding.py
CHANGED
|
@@ -1,9 +1,17 @@
|
|
|
1
|
-
# Copyright (c) 2022 NVIDIA CORPORATION.
|
|
2
|
-
#
|
|
3
|
-
#
|
|
4
|
-
#
|
|
5
|
-
#
|
|
6
|
-
#
|
|
1
|
+
# SPDX-FileCopyrightText: Copyright (c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
|
2
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
#
|
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
# you may not use this file except in compliance with the License.
|
|
6
|
+
# You may obtain a copy of the License at
|
|
7
|
+
#
|
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
#
|
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
# See the License for the specific language governing permissions and
|
|
14
|
+
# limitations under the License.
|
|
7
15
|
|
|
8
16
|
import unittest
|
|
9
17
|
|
|
@@ -1,9 +1,17 @@
|
|
|
1
|
-
# Copyright (c) 2023 NVIDIA CORPORATION.
|
|
2
|
-
#
|
|
3
|
-
#
|
|
4
|
-
#
|
|
5
|
-
#
|
|
6
|
-
#
|
|
1
|
+
# SPDX-FileCopyrightText: Copyright (c) 2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
|
2
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
#
|
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
# you may not use this file except in compliance with the License.
|
|
6
|
+
# You may obtain a copy of the License at
|
|
7
|
+
#
|
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
#
|
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
# See the License for the specific language governing permissions and
|
|
14
|
+
# limitations under the License.
|
|
7
15
|
|
|
8
16
|
import unittest
|
|
9
17
|
from functools import partial
|