warp-lang 1.10.0__py3-none-macosx_11_0_arm64.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 +334 -0
- warp/__init__.pyi +5856 -0
- warp/_src/__init__.py +14 -0
- warp/_src/autograd.py +1077 -0
- warp/_src/build.py +620 -0
- warp/_src/build_dll.py +642 -0
- warp/_src/builtins.py +10555 -0
- warp/_src/codegen.py +4361 -0
- warp/_src/config.py +178 -0
- warp/_src/constants.py +59 -0
- warp/_src/context.py +8352 -0
- warp/_src/dlpack.py +464 -0
- warp/_src/fabric.py +362 -0
- warp/_src/fem/__init__.py +14 -0
- warp/_src/fem/adaptivity.py +510 -0
- warp/_src/fem/cache.py +689 -0
- warp/_src/fem/dirichlet.py +190 -0
- warp/_src/fem/domain.py +553 -0
- warp/_src/fem/field/__init__.py +131 -0
- warp/_src/fem/field/field.py +703 -0
- warp/_src/fem/field/nodal_field.py +403 -0
- warp/_src/fem/field/restriction.py +39 -0
- warp/_src/fem/field/virtual.py +1021 -0
- warp/_src/fem/geometry/__init__.py +32 -0
- warp/_src/fem/geometry/adaptive_nanogrid.py +782 -0
- warp/_src/fem/geometry/closest_point.py +99 -0
- warp/_src/fem/geometry/deformed_geometry.py +277 -0
- warp/_src/fem/geometry/element.py +854 -0
- warp/_src/fem/geometry/geometry.py +693 -0
- warp/_src/fem/geometry/grid_2d.py +478 -0
- warp/_src/fem/geometry/grid_3d.py +539 -0
- warp/_src/fem/geometry/hexmesh.py +956 -0
- warp/_src/fem/geometry/nanogrid.py +660 -0
- warp/_src/fem/geometry/partition.py +483 -0
- warp/_src/fem/geometry/quadmesh.py +597 -0
- warp/_src/fem/geometry/tetmesh.py +762 -0
- warp/_src/fem/geometry/trimesh.py +588 -0
- warp/_src/fem/integrate.py +2507 -0
- warp/_src/fem/linalg.py +385 -0
- warp/_src/fem/operator.py +398 -0
- warp/_src/fem/polynomial.py +231 -0
- warp/_src/fem/quadrature/__init__.py +17 -0
- warp/_src/fem/quadrature/pic_quadrature.py +318 -0
- warp/_src/fem/quadrature/quadrature.py +665 -0
- warp/_src/fem/space/__init__.py +248 -0
- warp/_src/fem/space/basis_function_space.py +499 -0
- warp/_src/fem/space/basis_space.py +681 -0
- warp/_src/fem/space/dof_mapper.py +253 -0
- warp/_src/fem/space/function_space.py +312 -0
- warp/_src/fem/space/grid_2d_function_space.py +179 -0
- warp/_src/fem/space/grid_3d_function_space.py +229 -0
- warp/_src/fem/space/hexmesh_function_space.py +255 -0
- warp/_src/fem/space/nanogrid_function_space.py +199 -0
- warp/_src/fem/space/partition.py +435 -0
- warp/_src/fem/space/quadmesh_function_space.py +222 -0
- warp/_src/fem/space/restriction.py +221 -0
- warp/_src/fem/space/shape/__init__.py +152 -0
- warp/_src/fem/space/shape/cube_shape_function.py +1107 -0
- warp/_src/fem/space/shape/shape_function.py +134 -0
- warp/_src/fem/space/shape/square_shape_function.py +928 -0
- warp/_src/fem/space/shape/tet_shape_function.py +829 -0
- warp/_src/fem/space/shape/triangle_shape_function.py +674 -0
- warp/_src/fem/space/tetmesh_function_space.py +270 -0
- warp/_src/fem/space/topology.py +461 -0
- warp/_src/fem/space/trimesh_function_space.py +193 -0
- warp/_src/fem/types.py +114 -0
- warp/_src/fem/utils.py +488 -0
- warp/_src/jax.py +188 -0
- warp/_src/jax_experimental/__init__.py +14 -0
- warp/_src/jax_experimental/custom_call.py +389 -0
- warp/_src/jax_experimental/ffi.py +1286 -0
- warp/_src/jax_experimental/xla_ffi.py +658 -0
- warp/_src/marching_cubes.py +710 -0
- warp/_src/math.py +416 -0
- warp/_src/optim/__init__.py +14 -0
- warp/_src/optim/adam.py +165 -0
- warp/_src/optim/linear.py +1608 -0
- warp/_src/optim/sgd.py +114 -0
- warp/_src/paddle.py +408 -0
- warp/_src/render/__init__.py +14 -0
- warp/_src/render/imgui_manager.py +291 -0
- warp/_src/render/render_opengl.py +3638 -0
- warp/_src/render/render_usd.py +939 -0
- warp/_src/render/utils.py +162 -0
- warp/_src/sparse.py +2718 -0
- warp/_src/tape.py +1208 -0
- warp/_src/thirdparty/__init__.py +0 -0
- warp/_src/thirdparty/appdirs.py +598 -0
- warp/_src/thirdparty/dlpack.py +145 -0
- warp/_src/thirdparty/unittest_parallel.py +676 -0
- warp/_src/torch.py +393 -0
- warp/_src/types.py +5888 -0
- warp/_src/utils.py +1695 -0
- warp/autograd.py +33 -0
- warp/bin/libwarp-clang.dylib +0 -0
- warp/bin/libwarp.dylib +0 -0
- warp/build.py +29 -0
- warp/build_dll.py +24 -0
- warp/codegen.py +24 -0
- warp/constants.py +24 -0
- warp/context.py +33 -0
- warp/dlpack.py +24 -0
- warp/examples/__init__.py +24 -0
- warp/examples/assets/bear.usd +0 -0
- warp/examples/assets/bunny.usd +0 -0
- warp/examples/assets/cube.usd +0 -0
- warp/examples/assets/nonuniform.usd +0 -0
- warp/examples/assets/nvidia_logo.png +0 -0
- warp/examples/assets/pixel.jpg +0 -0
- warp/examples/assets/rocks.nvdb +0 -0
- warp/examples/assets/rocks.usd +0 -0
- warp/examples/assets/sphere.usd +0 -0
- warp/examples/assets/square_cloth.usd +0 -0
- warp/examples/benchmarks/benchmark_api.py +389 -0
- warp/examples/benchmarks/benchmark_cloth.py +296 -0
- warp/examples/benchmarks/benchmark_cloth_cupy.py +96 -0
- warp/examples/benchmarks/benchmark_cloth_jax.py +105 -0
- warp/examples/benchmarks/benchmark_cloth_numba.py +161 -0
- warp/examples/benchmarks/benchmark_cloth_numpy.py +85 -0
- warp/examples/benchmarks/benchmark_cloth_paddle.py +94 -0
- warp/examples/benchmarks/benchmark_cloth_pytorch.py +94 -0
- warp/examples/benchmarks/benchmark_cloth_taichi.py +120 -0
- warp/examples/benchmarks/benchmark_cloth_warp.py +153 -0
- warp/examples/benchmarks/benchmark_gemm.py +164 -0
- warp/examples/benchmarks/benchmark_interop_paddle.py +166 -0
- warp/examples/benchmarks/benchmark_interop_torch.py +166 -0
- warp/examples/benchmarks/benchmark_launches.py +301 -0
- warp/examples/benchmarks/benchmark_tile_load_store.py +103 -0
- warp/examples/benchmarks/benchmark_tile_sort.py +155 -0
- warp/examples/browse.py +37 -0
- warp/examples/core/example_cupy.py +86 -0
- warp/examples/core/example_dem.py +241 -0
- warp/examples/core/example_fluid.py +299 -0
- warp/examples/core/example_graph_capture.py +150 -0
- warp/examples/core/example_marching_cubes.py +195 -0
- warp/examples/core/example_mesh.py +180 -0
- warp/examples/core/example_mesh_intersect.py +211 -0
- warp/examples/core/example_nvdb.py +182 -0
- warp/examples/core/example_raycast.py +111 -0
- warp/examples/core/example_raymarch.py +205 -0
- warp/examples/core/example_render_opengl.py +290 -0
- warp/examples/core/example_sample_mesh.py +300 -0
- warp/examples/core/example_sph.py +411 -0
- warp/examples/core/example_spin_lock.py +93 -0
- warp/examples/core/example_torch.py +211 -0
- warp/examples/core/example_wave.py +269 -0
- warp/examples/core/example_work_queue.py +118 -0
- warp/examples/distributed/example_jacobi_mpi.py +506 -0
- warp/examples/fem/example_adaptive_grid.py +286 -0
- warp/examples/fem/example_apic_fluid.py +469 -0
- warp/examples/fem/example_burgers.py +261 -0
- warp/examples/fem/example_convection_diffusion.py +181 -0
- warp/examples/fem/example_convection_diffusion_dg.py +225 -0
- warp/examples/fem/example_darcy_ls_optimization.py +489 -0
- warp/examples/fem/example_deformed_geometry.py +172 -0
- warp/examples/fem/example_diffusion.py +196 -0
- warp/examples/fem/example_diffusion_3d.py +225 -0
- warp/examples/fem/example_diffusion_mgpu.py +225 -0
- warp/examples/fem/example_distortion_energy.py +228 -0
- warp/examples/fem/example_elastic_shape_optimization.py +387 -0
- warp/examples/fem/example_magnetostatics.py +242 -0
- warp/examples/fem/example_mixed_elasticity.py +293 -0
- warp/examples/fem/example_navier_stokes.py +263 -0
- warp/examples/fem/example_nonconforming_contact.py +300 -0
- warp/examples/fem/example_stokes.py +213 -0
- warp/examples/fem/example_stokes_transfer.py +262 -0
- warp/examples/fem/example_streamlines.py +357 -0
- warp/examples/fem/utils.py +1047 -0
- warp/examples/interop/example_jax_callable.py +146 -0
- warp/examples/interop/example_jax_ffi_callback.py +132 -0
- warp/examples/interop/example_jax_kernel.py +232 -0
- warp/examples/optim/example_diffray.py +561 -0
- warp/examples/optim/example_fluid_checkpoint.py +497 -0
- warp/examples/tile/example_tile_block_cholesky.py +502 -0
- warp/examples/tile/example_tile_cholesky.py +88 -0
- warp/examples/tile/example_tile_convolution.py +66 -0
- warp/examples/tile/example_tile_fft.py +55 -0
- warp/examples/tile/example_tile_filtering.py +113 -0
- warp/examples/tile/example_tile_matmul.py +85 -0
- warp/examples/tile/example_tile_mcgp.py +191 -0
- warp/examples/tile/example_tile_mlp.py +385 -0
- warp/examples/tile/example_tile_nbody.py +199 -0
- warp/fabric.py +24 -0
- warp/fem/__init__.py +173 -0
- warp/fem/adaptivity.py +26 -0
- warp/fem/cache.py +30 -0
- warp/fem/dirichlet.py +24 -0
- warp/fem/field/__init__.py +24 -0
- warp/fem/field/field.py +26 -0
- warp/fem/geometry/__init__.py +21 -0
- warp/fem/geometry/closest_point.py +31 -0
- warp/fem/linalg.py +38 -0
- warp/fem/operator.py +32 -0
- warp/fem/polynomial.py +29 -0
- warp/fem/space/__init__.py +22 -0
- warp/fem/space/basis_space.py +24 -0
- warp/fem/space/shape/__init__.py +68 -0
- warp/fem/space/topology.py +24 -0
- warp/fem/types.py +24 -0
- warp/fem/utils.py +32 -0
- warp/jax.py +29 -0
- warp/jax_experimental/__init__.py +29 -0
- warp/jax_experimental/custom_call.py +29 -0
- warp/jax_experimental/ffi.py +39 -0
- warp/jax_experimental/xla_ffi.py +24 -0
- warp/marching_cubes.py +24 -0
- warp/math.py +37 -0
- warp/native/array.h +1687 -0
- warp/native/builtin.h +2327 -0
- warp/native/bvh.cpp +562 -0
- warp/native/bvh.cu +826 -0
- warp/native/bvh.h +555 -0
- warp/native/clang/clang.cpp +541 -0
- warp/native/coloring.cpp +622 -0
- warp/native/crt.cpp +51 -0
- warp/native/crt.h +568 -0
- warp/native/cuda_crt.h +1058 -0
- warp/native/cuda_util.cpp +677 -0
- warp/native/cuda_util.h +313 -0
- warp/native/error.cpp +77 -0
- warp/native/error.h +36 -0
- warp/native/exports.h +2023 -0
- warp/native/fabric.h +246 -0
- warp/native/hashgrid.cpp +311 -0
- warp/native/hashgrid.cu +89 -0
- warp/native/hashgrid.h +240 -0
- warp/native/initializer_array.h +41 -0
- warp/native/intersect.h +1253 -0
- warp/native/intersect_adj.h +375 -0
- warp/native/intersect_tri.h +348 -0
- warp/native/mat.h +5189 -0
- warp/native/mathdx.cpp +93 -0
- warp/native/matnn.h +221 -0
- warp/native/mesh.cpp +266 -0
- warp/native/mesh.cu +406 -0
- warp/native/mesh.h +2097 -0
- warp/native/nanovdb/GridHandle.h +533 -0
- warp/native/nanovdb/HostBuffer.h +591 -0
- warp/native/nanovdb/NanoVDB.h +6246 -0
- warp/native/nanovdb/NodeManager.h +323 -0
- warp/native/nanovdb/PNanoVDB.h +3390 -0
- warp/native/noise.h +859 -0
- warp/native/quat.h +1664 -0
- warp/native/rand.h +342 -0
- warp/native/range.h +145 -0
- warp/native/reduce.cpp +174 -0
- warp/native/reduce.cu +363 -0
- warp/native/runlength_encode.cpp +79 -0
- warp/native/runlength_encode.cu +61 -0
- warp/native/scan.cpp +47 -0
- warp/native/scan.cu +55 -0
- warp/native/scan.h +23 -0
- warp/native/solid_angle.h +466 -0
- warp/native/sort.cpp +251 -0
- warp/native/sort.cu +286 -0
- warp/native/sort.h +35 -0
- warp/native/sparse.cpp +241 -0
- warp/native/sparse.cu +435 -0
- warp/native/spatial.h +1306 -0
- warp/native/svd.h +727 -0
- warp/native/temp_buffer.h +46 -0
- warp/native/tile.h +4124 -0
- warp/native/tile_radix_sort.h +1112 -0
- warp/native/tile_reduce.h +838 -0
- warp/native/tile_scan.h +240 -0
- warp/native/tuple.h +189 -0
- warp/native/vec.h +2199 -0
- warp/native/version.h +23 -0
- warp/native/volume.cpp +501 -0
- warp/native/volume.cu +68 -0
- warp/native/volume.h +970 -0
- warp/native/volume_builder.cu +483 -0
- warp/native/volume_builder.h +52 -0
- warp/native/volume_impl.h +70 -0
- warp/native/warp.cpp +1143 -0
- warp/native/warp.cu +4604 -0
- warp/native/warp.h +358 -0
- warp/optim/__init__.py +20 -0
- warp/optim/adam.py +24 -0
- warp/optim/linear.py +35 -0
- warp/optim/sgd.py +24 -0
- warp/paddle.py +24 -0
- warp/py.typed +0 -0
- warp/render/__init__.py +22 -0
- warp/render/imgui_manager.py +29 -0
- warp/render/render_opengl.py +24 -0
- warp/render/render_usd.py +24 -0
- warp/render/utils.py +24 -0
- warp/sparse.py +51 -0
- warp/tape.py +24 -0
- warp/tests/__init__.py +1 -0
- warp/tests/__main__.py +4 -0
- warp/tests/assets/curlnoise_golden.npy +0 -0
- warp/tests/assets/mlp_golden.npy +0 -0
- warp/tests/assets/pixel.npy +0 -0
- warp/tests/assets/pnoise_golden.npy +0 -0
- warp/tests/assets/spiky.usd +0 -0
- warp/tests/assets/test_grid.nvdb +0 -0
- warp/tests/assets/test_index_grid.nvdb +0 -0
- warp/tests/assets/test_int32_grid.nvdb +0 -0
- warp/tests/assets/test_vec_grid.nvdb +0 -0
- warp/tests/assets/torus.nvdb +0 -0
- warp/tests/assets/torus.usda +105 -0
- warp/tests/aux_test_class_kernel.py +34 -0
- warp/tests/aux_test_compile_consts_dummy.py +18 -0
- warp/tests/aux_test_conditional_unequal_types_kernels.py +29 -0
- warp/tests/aux_test_dependent.py +29 -0
- warp/tests/aux_test_grad_customs.py +29 -0
- warp/tests/aux_test_instancing_gc.py +26 -0
- warp/tests/aux_test_module_aot.py +7 -0
- warp/tests/aux_test_module_unload.py +23 -0
- warp/tests/aux_test_name_clash1.py +40 -0
- warp/tests/aux_test_name_clash2.py +40 -0
- warp/tests/aux_test_reference.py +9 -0
- warp/tests/aux_test_reference_reference.py +8 -0
- warp/tests/aux_test_square.py +16 -0
- warp/tests/aux_test_unresolved_func.py +22 -0
- warp/tests/aux_test_unresolved_symbol.py +22 -0
- warp/tests/cuda/__init__.py +0 -0
- warp/tests/cuda/test_async.py +676 -0
- warp/tests/cuda/test_conditional_captures.py +1147 -0
- warp/tests/cuda/test_ipc.py +124 -0
- warp/tests/cuda/test_mempool.py +233 -0
- warp/tests/cuda/test_multigpu.py +169 -0
- warp/tests/cuda/test_peer.py +139 -0
- warp/tests/cuda/test_pinned.py +84 -0
- warp/tests/cuda/test_streams.py +691 -0
- warp/tests/geometry/__init__.py +0 -0
- warp/tests/geometry/test_bvh.py +335 -0
- warp/tests/geometry/test_hash_grid.py +259 -0
- warp/tests/geometry/test_marching_cubes.py +294 -0
- warp/tests/geometry/test_mesh.py +318 -0
- warp/tests/geometry/test_mesh_query_aabb.py +392 -0
- warp/tests/geometry/test_mesh_query_point.py +935 -0
- warp/tests/geometry/test_mesh_query_ray.py +323 -0
- warp/tests/geometry/test_volume.py +1103 -0
- warp/tests/geometry/test_volume_write.py +346 -0
- warp/tests/interop/__init__.py +0 -0
- warp/tests/interop/test_dlpack.py +730 -0
- warp/tests/interop/test_jax.py +1673 -0
- warp/tests/interop/test_paddle.py +800 -0
- warp/tests/interop/test_torch.py +1001 -0
- warp/tests/run_coverage_serial.py +39 -0
- warp/tests/test_adam.py +162 -0
- warp/tests/test_arithmetic.py +1096 -0
- warp/tests/test_array.py +3756 -0
- warp/tests/test_array_reduce.py +156 -0
- warp/tests/test_assert.py +303 -0
- warp/tests/test_atomic.py +336 -0
- warp/tests/test_atomic_bitwise.py +209 -0
- warp/tests/test_atomic_cas.py +312 -0
- warp/tests/test_bool.py +220 -0
- warp/tests/test_builtins_resolution.py +732 -0
- warp/tests/test_closest_point_edge_edge.py +327 -0
- warp/tests/test_codegen.py +974 -0
- warp/tests/test_codegen_instancing.py +1495 -0
- warp/tests/test_compile_consts.py +215 -0
- warp/tests/test_conditional.py +298 -0
- warp/tests/test_context.py +35 -0
- warp/tests/test_copy.py +319 -0
- warp/tests/test_ctypes.py +618 -0
- warp/tests/test_dense.py +73 -0
- warp/tests/test_devices.py +127 -0
- warp/tests/test_enum.py +136 -0
- warp/tests/test_examples.py +424 -0
- warp/tests/test_fabricarray.py +998 -0
- warp/tests/test_fast_math.py +72 -0
- warp/tests/test_fem.py +2204 -0
- warp/tests/test_fixedarray.py +229 -0
- warp/tests/test_fp16.py +136 -0
- warp/tests/test_func.py +501 -0
- warp/tests/test_future_annotations.py +100 -0
- warp/tests/test_generics.py +656 -0
- warp/tests/test_grad.py +893 -0
- warp/tests/test_grad_customs.py +339 -0
- warp/tests/test_grad_debug.py +341 -0
- warp/tests/test_implicit_init.py +411 -0
- warp/tests/test_import.py +45 -0
- warp/tests/test_indexedarray.py +1140 -0
- warp/tests/test_intersect.py +103 -0
- warp/tests/test_iter.py +76 -0
- warp/tests/test_large.py +177 -0
- warp/tests/test_launch.py +411 -0
- warp/tests/test_lerp.py +151 -0
- warp/tests/test_linear_solvers.py +223 -0
- warp/tests/test_lvalue.py +427 -0
- warp/tests/test_map.py +526 -0
- warp/tests/test_mat.py +3515 -0
- warp/tests/test_mat_assign_copy.py +178 -0
- warp/tests/test_mat_constructors.py +573 -0
- warp/tests/test_mat_lite.py +122 -0
- warp/tests/test_mat_scalar_ops.py +2913 -0
- warp/tests/test_math.py +212 -0
- warp/tests/test_module_aot.py +287 -0
- warp/tests/test_module_hashing.py +258 -0
- warp/tests/test_modules_lite.py +70 -0
- warp/tests/test_noise.py +252 -0
- warp/tests/test_operators.py +299 -0
- warp/tests/test_options.py +129 -0
- warp/tests/test_overwrite.py +551 -0
- warp/tests/test_print.py +408 -0
- warp/tests/test_quat.py +2653 -0
- warp/tests/test_quat_assign_copy.py +145 -0
- warp/tests/test_rand.py +339 -0
- warp/tests/test_reload.py +303 -0
- warp/tests/test_rounding.py +157 -0
- warp/tests/test_runlength_encode.py +196 -0
- warp/tests/test_scalar_ops.py +133 -0
- warp/tests/test_smoothstep.py +108 -0
- warp/tests/test_snippet.py +318 -0
- warp/tests/test_sparse.py +845 -0
- warp/tests/test_spatial.py +2859 -0
- warp/tests/test_spatial_assign_copy.py +160 -0
- warp/tests/test_special_values.py +361 -0
- warp/tests/test_static.py +640 -0
- warp/tests/test_struct.py +901 -0
- warp/tests/test_tape.py +242 -0
- warp/tests/test_transient_module.py +93 -0
- warp/tests/test_triangle_closest_point.py +192 -0
- warp/tests/test_tuple.py +361 -0
- warp/tests/test_types.py +615 -0
- warp/tests/test_utils.py +594 -0
- warp/tests/test_vec.py +1408 -0
- warp/tests/test_vec_assign_copy.py +143 -0
- warp/tests/test_vec_constructors.py +325 -0
- warp/tests/test_vec_lite.py +80 -0
- warp/tests/test_vec_scalar_ops.py +2327 -0
- warp/tests/test_verify_fp.py +100 -0
- warp/tests/test_version.py +75 -0
- warp/tests/tile/__init__.py +0 -0
- warp/tests/tile/test_tile.py +1519 -0
- warp/tests/tile/test_tile_atomic_bitwise.py +403 -0
- warp/tests/tile/test_tile_cholesky.py +608 -0
- warp/tests/tile/test_tile_load.py +724 -0
- warp/tests/tile/test_tile_mathdx.py +156 -0
- warp/tests/tile/test_tile_matmul.py +179 -0
- warp/tests/tile/test_tile_mlp.py +400 -0
- warp/tests/tile/test_tile_reduce.py +950 -0
- warp/tests/tile/test_tile_shared_memory.py +376 -0
- warp/tests/tile/test_tile_sort.py +121 -0
- warp/tests/tile/test_tile_view.py +173 -0
- warp/tests/unittest_serial.py +47 -0
- warp/tests/unittest_suites.py +430 -0
- warp/tests/unittest_utils.py +469 -0
- warp/tests/walkthrough_debug.py +95 -0
- warp/torch.py +24 -0
- warp/types.py +51 -0
- warp/utils.py +31 -0
- warp_lang-1.10.0.dist-info/METADATA +459 -0
- warp_lang-1.10.0.dist-info/RECORD +468 -0
- warp_lang-1.10.0.dist-info/WHEEL +5 -0
- warp_lang-1.10.0.dist-info/licenses/LICENSE.md +176 -0
- warp_lang-1.10.0.dist-info/licenses/licenses/Gaia-LICENSE.txt +6 -0
- warp_lang-1.10.0.dist-info/licenses/licenses/appdirs-LICENSE.txt +22 -0
- warp_lang-1.10.0.dist-info/licenses/licenses/asset_pixel_jpg-LICENSE.txt +3 -0
- warp_lang-1.10.0.dist-info/licenses/licenses/cuda-LICENSE.txt +1582 -0
- warp_lang-1.10.0.dist-info/licenses/licenses/dlpack-LICENSE.txt +201 -0
- warp_lang-1.10.0.dist-info/licenses/licenses/fp16-LICENSE.txt +28 -0
- warp_lang-1.10.0.dist-info/licenses/licenses/libmathdx-LICENSE.txt +220 -0
- warp_lang-1.10.0.dist-info/licenses/licenses/llvm-LICENSE.txt +279 -0
- warp_lang-1.10.0.dist-info/licenses/licenses/moller-LICENSE.txt +16 -0
- warp_lang-1.10.0.dist-info/licenses/licenses/nanovdb-LICENSE.txt +2 -0
- warp_lang-1.10.0.dist-info/licenses/licenses/nvrtc-LICENSE.txt +1592 -0
- warp_lang-1.10.0.dist-info/licenses/licenses/svd-LICENSE.txt +23 -0
- warp_lang-1.10.0.dist-info/licenses/licenses/unittest_parallel-LICENSE.txt +21 -0
- warp_lang-1.10.0.dist-info/licenses/licenses/usd-LICENSE.txt +213 -0
- warp_lang-1.10.0.dist-info/licenses/licenses/windingnumber-LICENSE.txt +21 -0
- warp_lang-1.10.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,103 @@
|
|
|
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.
|
|
15
|
+
|
|
16
|
+
import unittest
|
|
17
|
+
|
|
18
|
+
import numpy as np
|
|
19
|
+
|
|
20
|
+
import warp as wp
|
|
21
|
+
from warp.tests.unittest_utils import *
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
@wp.kernel
|
|
25
|
+
def intersect_tri(
|
|
26
|
+
v0: wp.vec3,
|
|
27
|
+
v1: wp.vec3,
|
|
28
|
+
v2: wp.vec3,
|
|
29
|
+
u0: wp.vec3,
|
|
30
|
+
u1: wp.vec3,
|
|
31
|
+
u2: wp.vec3,
|
|
32
|
+
result_single_precision: wp.array(dtype=int),
|
|
33
|
+
result_double_precision: wp.array(dtype=int),
|
|
34
|
+
):
|
|
35
|
+
tid = wp.tid()
|
|
36
|
+
|
|
37
|
+
result_single_precision[0] = wp.intersect_tri_tri(v0, v1, v2, u0, u1, u2)
|
|
38
|
+
|
|
39
|
+
u0_d = wp.vec3d(u0)
|
|
40
|
+
u1_d = wp.vec3d(u1)
|
|
41
|
+
u2_d = wp.vec3d(u2)
|
|
42
|
+
|
|
43
|
+
v0_d = wp.vec3d(v0)
|
|
44
|
+
v1_d = wp.vec3d(v1)
|
|
45
|
+
v2_d = wp.vec3d(v2)
|
|
46
|
+
|
|
47
|
+
result_double_precision[0] = wp.intersect_tri_tri(v0_d, v1_d, v2_d, u0_d, u1_d, u2_d)
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
def test_intersect_tri(test, device):
|
|
51
|
+
points_intersect = [
|
|
52
|
+
wp.vec3(0.0, 0.0, 0.0),
|
|
53
|
+
wp.vec3(1.0, 0.0, 0.0),
|
|
54
|
+
wp.vec3(0.0, 0.0, 1.0),
|
|
55
|
+
wp.vec3(0.5, -0.5, 0.0),
|
|
56
|
+
wp.vec3(0.5, -0.5, 1.0),
|
|
57
|
+
wp.vec3(0.5, 0.5, 0.0),
|
|
58
|
+
]
|
|
59
|
+
|
|
60
|
+
points_separated = [
|
|
61
|
+
wp.vec3(0.0, 0.0, 0.0),
|
|
62
|
+
wp.vec3(1.0, 0.0, 0.0),
|
|
63
|
+
wp.vec3(0.0, 0.0, 1.0),
|
|
64
|
+
wp.vec3(-0.5, -0.5, 0.0),
|
|
65
|
+
wp.vec3(-0.5, -0.5, 1.0),
|
|
66
|
+
wp.vec3(-0.5, 0.5, 0.0),
|
|
67
|
+
]
|
|
68
|
+
|
|
69
|
+
result_single_precision = wp.zeros(1, dtype=int, device=device)
|
|
70
|
+
result_double_precision = wp.zeros(1, dtype=int, device=device)
|
|
71
|
+
|
|
72
|
+
wp.launch(
|
|
73
|
+
intersect_tri,
|
|
74
|
+
dim=1,
|
|
75
|
+
inputs=[*points_intersect, result_single_precision, result_double_precision],
|
|
76
|
+
device=device,
|
|
77
|
+
)
|
|
78
|
+
assert_np_equal(result_single_precision.numpy(), np.array([1]))
|
|
79
|
+
assert_np_equal(result_double_precision.numpy(), np.array([1]))
|
|
80
|
+
|
|
81
|
+
wp.launch(
|
|
82
|
+
intersect_tri,
|
|
83
|
+
dim=1,
|
|
84
|
+
inputs=[*points_separated, result_single_precision, result_double_precision],
|
|
85
|
+
device=device,
|
|
86
|
+
)
|
|
87
|
+
assert_np_equal(result_single_precision.numpy(), np.array([0]))
|
|
88
|
+
assert_np_equal(result_double_precision.numpy(), np.array([0]))
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
devices = get_test_devices()
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
class TestIntersect(unittest.TestCase):
|
|
95
|
+
pass
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
add_function_test(TestIntersect, "test_intersect_tri", test_intersect_tri, devices=devices)
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
if __name__ == "__main__":
|
|
102
|
+
wp.clear_kernel_cache()
|
|
103
|
+
unittest.main(verbosity=2, failfast=False)
|
warp/tests/test_iter.py
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# SPDX-FileCopyrightText: Copyright (c) 2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
|
2
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
#
|
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
# you may not use this file except in compliance with the License.
|
|
6
|
+
# You may obtain a copy of the License at
|
|
7
|
+
#
|
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
#
|
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
# See the License for the specific language governing permissions and
|
|
14
|
+
# limitations under the License.
|
|
15
|
+
|
|
16
|
+
import unittest
|
|
17
|
+
|
|
18
|
+
import warp as wp
|
|
19
|
+
from warp.tests.unittest_utils import *
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
@wp.kernel
|
|
23
|
+
def reversed_kernel(
|
|
24
|
+
start: wp.int32,
|
|
25
|
+
end: wp.int32,
|
|
26
|
+
step: wp.int32,
|
|
27
|
+
out_count: wp.array(dtype=wp.int32),
|
|
28
|
+
out_values: wp.array(dtype=wp.int32),
|
|
29
|
+
):
|
|
30
|
+
count = wp.int32(0)
|
|
31
|
+
for i in reversed(range(start, end, step)):
|
|
32
|
+
out_values[count] = i
|
|
33
|
+
count += 1
|
|
34
|
+
|
|
35
|
+
out_count[0] = count
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def test_reversed(test, device):
|
|
39
|
+
count = wp.empty(1, dtype=wp.int32)
|
|
40
|
+
values = wp.empty(32, dtype=wp.int32)
|
|
41
|
+
|
|
42
|
+
start, end, step = (-2, 8, 3)
|
|
43
|
+
wp.launch(
|
|
44
|
+
reversed_kernel,
|
|
45
|
+
dim=1,
|
|
46
|
+
inputs=(start, end, step),
|
|
47
|
+
outputs=(count, values),
|
|
48
|
+
)
|
|
49
|
+
expected = tuple(reversed(range(start, end, step)))
|
|
50
|
+
assert count.numpy()[0] == len(expected)
|
|
51
|
+
assert_np_equal(values.numpy()[: len(expected)], expected)
|
|
52
|
+
|
|
53
|
+
start, end, step = (9, -3, -2)
|
|
54
|
+
wp.launch(
|
|
55
|
+
reversed_kernel,
|
|
56
|
+
dim=1,
|
|
57
|
+
inputs=(start, end, step),
|
|
58
|
+
outputs=(count, values),
|
|
59
|
+
)
|
|
60
|
+
expected = tuple(reversed(range(start, end, step)))
|
|
61
|
+
assert count.numpy()[0] == len(expected)
|
|
62
|
+
assert_np_equal(values.numpy()[: len(expected)], expected)
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
devices = get_test_devices()
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
class TestIter(unittest.TestCase):
|
|
69
|
+
pass
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
add_function_test(TestIter, "test_reversed", test_reversed, devices=devices)
|
|
73
|
+
|
|
74
|
+
if __name__ == "__main__":
|
|
75
|
+
wp.clear_kernel_cache()
|
|
76
|
+
unittest.main(verbosity=2)
|
warp/tests/test_large.py
ADDED
|
@@ -0,0 +1,177 @@
|
|
|
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.
|
|
15
|
+
|
|
16
|
+
import math
|
|
17
|
+
import unittest
|
|
18
|
+
from typing import Any
|
|
19
|
+
|
|
20
|
+
import warp as wp
|
|
21
|
+
from warp.tests.unittest_utils import *
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
@wp.kernel
|
|
25
|
+
def conditional_sum(result: wp.array(dtype=wp.uint64)):
|
|
26
|
+
i, j, k = wp.tid()
|
|
27
|
+
|
|
28
|
+
if i == 0:
|
|
29
|
+
wp.atomic_add(result, 0, wp.uint64(1))
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def test_large_launch_large_kernel(test, device):
|
|
33
|
+
"""Test tid() on kernel launch of 2**33 threads.
|
|
34
|
+
|
|
35
|
+
The function conditional sum will add 1 to result for every thread that has an i index of 0.
|
|
36
|
+
Due to the size of the grid, this test is not run on CPUs
|
|
37
|
+
"""
|
|
38
|
+
test_result = wp.zeros(shape=(1,), dtype=wp.uint64, device=device)
|
|
39
|
+
|
|
40
|
+
large_dim_length = 2**16
|
|
41
|
+
half_result = large_dim_length * large_dim_length
|
|
42
|
+
|
|
43
|
+
wp.launch(kernel=conditional_sum, dim=[2, large_dim_length, large_dim_length], inputs=[test_result], device=device)
|
|
44
|
+
test.assertEqual(test_result.numpy()[0], half_result)
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
@wp.kernel
|
|
48
|
+
def count_elements(result: wp.array(dtype=wp.uint64)):
|
|
49
|
+
wp.atomic_add(result, 0, wp.uint64(1))
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
def test_large_launch_max_blocks(test, device):
|
|
53
|
+
# Loop over 1000x1x1 elements using a grid of 256 threads
|
|
54
|
+
test_result = wp.zeros(shape=(1,), dtype=wp.uint64, device=device)
|
|
55
|
+
wp.launch(count_elements, (1000,), inputs=[test_result], max_blocks=1, device=device)
|
|
56
|
+
test.assertEqual(test_result.numpy()[0], 1000)
|
|
57
|
+
|
|
58
|
+
# Loop over 2x10x10 elements using a grid of 256 threads, using the tid() index to count half the elements
|
|
59
|
+
test_result.zero_()
|
|
60
|
+
wp.launch(
|
|
61
|
+
conditional_sum,
|
|
62
|
+
(
|
|
63
|
+
2,
|
|
64
|
+
50,
|
|
65
|
+
10,
|
|
66
|
+
),
|
|
67
|
+
inputs=[test_result],
|
|
68
|
+
max_blocks=1,
|
|
69
|
+
device=device,
|
|
70
|
+
)
|
|
71
|
+
test.assertEqual(test_result.numpy()[0], 500)
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
def test_large_launch_very_large_kernel(test, device):
|
|
75
|
+
"""Due to the size of the grid, this test is not run on CPUs"""
|
|
76
|
+
|
|
77
|
+
# Dim is chosen to be larger than the maximum CUDA one-dimensional grid size (total threads)
|
|
78
|
+
dim = (2**31 - 1) * 256 + 1
|
|
79
|
+
test_result = wp.zeros(shape=(1,), dtype=wp.uint64, device=device)
|
|
80
|
+
wp.launch(count_elements, (dim,), inputs=[test_result], device=device)
|
|
81
|
+
test.assertEqual(test_result.numpy()[0], dim)
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
def test_large_arrays_slow(test, device):
|
|
85
|
+
# The goal of this test is to use arrays just large enough to know
|
|
86
|
+
# if there's a flaw in handling arrays with more than 2**31-1 elements
|
|
87
|
+
# Unfortunately, it takes a long time to run so it won't be run automatically
|
|
88
|
+
# without changes to support how frequently a test may be run
|
|
89
|
+
total_elements = 2**31 + 8
|
|
90
|
+
|
|
91
|
+
# 2-D to 4-D arrays: test zero_, fill_, then zero_ for scalar data types:
|
|
92
|
+
for total_dims in range(2, 5):
|
|
93
|
+
dim_x = math.ceil(total_elements ** (1 / total_dims))
|
|
94
|
+
shape_tuple = tuple([dim_x] * total_dims)
|
|
95
|
+
|
|
96
|
+
for wptype in wp._src.types.scalar_types:
|
|
97
|
+
a1 = wp.zeros(shape_tuple, dtype=wptype, device=device)
|
|
98
|
+
assert_np_equal(a1.numpy(), np.zeros_like(a1.numpy()))
|
|
99
|
+
|
|
100
|
+
a1.fill_(127)
|
|
101
|
+
assert_np_equal(a1.numpy(), 127 * np.ones_like(a1.numpy()))
|
|
102
|
+
|
|
103
|
+
a1.zero_()
|
|
104
|
+
assert_np_equal(a1.numpy(), np.zeros_like(a1.numpy()))
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
@wp.kernel
|
|
108
|
+
def check_array_equal_value(data: wp.array2d(dtype=Any), expect: Any):
|
|
109
|
+
i, j = wp.tid()
|
|
110
|
+
wp.expect_eq(data[i, j], expect)
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
def test_large_arrays_fast(test, device):
|
|
114
|
+
# A truncated version of test_large_arrays_slow meant to catch basic errors
|
|
115
|
+
|
|
116
|
+
# Make is so that a (dim_x, dim_x) array has more than 2**31 elements
|
|
117
|
+
dim_x = math.ceil(math.sqrt(2**31))
|
|
118
|
+
|
|
119
|
+
a1 = wp.zeros((dim_x, dim_x), dtype=wp.int8, device=device)
|
|
120
|
+
a1.fill_(127)
|
|
121
|
+
|
|
122
|
+
wp.launch(check_array_equal_value, a1.shape, inputs=[a1, wp.int8(127)], device=device)
|
|
123
|
+
|
|
124
|
+
a1.zero_()
|
|
125
|
+
wp.launch(check_array_equal_value, a1.shape, inputs=[a1, wp.int8(0)], device=device)
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
def test_large_array_excessive_zeros(test, device):
|
|
129
|
+
# Tests the allocation of an array with length exceeding 2**31-1 in a dimension
|
|
130
|
+
|
|
131
|
+
with test.assertRaisesRegex(
|
|
132
|
+
ValueError, "Array shapes must not exceed the maximum representable value of a signed 32-bit integer"
|
|
133
|
+
):
|
|
134
|
+
_ = wp.zeros((2**31), dtype=int, device=device)
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
def test_large_array_excessive_numpy(test, device):
|
|
138
|
+
# Tests the allocation of an array from a numpy array with length exceeding 2**31-1 in a dimension
|
|
139
|
+
|
|
140
|
+
large_np_array = np.empty((2**31), dtype=int)
|
|
141
|
+
|
|
142
|
+
with test.assertRaisesRegex(
|
|
143
|
+
ValueError, "Array shapes must not exceed the maximum representable value of a signed 32-bit integer"
|
|
144
|
+
):
|
|
145
|
+
_ = wp.array(large_np_array, device=device)
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
devices = get_test_devices()
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
class TestLarge(unittest.TestCase):
|
|
152
|
+
pass
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
add_function_test(
|
|
156
|
+
TestLarge,
|
|
157
|
+
"test_large_launch_large_kernel",
|
|
158
|
+
test_large_launch_large_kernel,
|
|
159
|
+
devices=get_selected_cuda_test_devices(),
|
|
160
|
+
)
|
|
161
|
+
|
|
162
|
+
add_function_test(TestLarge, "test_large_launch_max_blocks", test_large_launch_max_blocks, devices=devices)
|
|
163
|
+
add_function_test(
|
|
164
|
+
TestLarge,
|
|
165
|
+
"test_large_launch_very_large_kernel",
|
|
166
|
+
test_large_launch_very_large_kernel,
|
|
167
|
+
devices=get_selected_cuda_test_devices(),
|
|
168
|
+
)
|
|
169
|
+
|
|
170
|
+
add_function_test(TestLarge, "test_large_arrays_fast", test_large_arrays_fast, devices=devices)
|
|
171
|
+
add_function_test(TestLarge, "test_large_array_excessive_zeros", test_large_array_excessive_zeros, devices=devices)
|
|
172
|
+
add_function_test(TestLarge, "test_large_array_excessive_numpy", test_large_array_excessive_numpy, devices=devices)
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
if __name__ == "__main__":
|
|
176
|
+
wp.clear_kernel_cache()
|
|
177
|
+
unittest.main(verbosity=2)
|