DEME 2.1.9__tar.gz → 2.2.1__tar.gz
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.
- {deme-2.1.9/deme.egg-info → deme-2.2.1}/PKG-INFO +1 -1
- {deme-2.1.9 → deme-2.2.1}/README.md +1 -0
- {deme-2.1.9 → deme-2.2.1}/cmake/CudaSupportedArchitectures.cmake +11 -2
- {deme-2.1.9 → deme-2.2.1/deme.egg-info}/PKG-INFO +1 -1
- {deme-2.1.9 → deme-2.2.1}/setup.py +1 -1
- {deme-2.1.9 → deme-2.2.1}/src/DEM/APIPrivate.cpp +6 -2
- {deme-2.1.9 → deme-2.2.1}/src/DEM/HostSideHelpers.hpp +4 -4
- {deme-2.1.9 → deme-2.2.1}/src/DEM/PyDEME.cpp +8 -0
- {deme-2.1.9 → deme-2.2.1}/src/DEM/kT.cpp +6 -7
- {deme-2.1.9 → deme-2.2.1}/src/algorithms/DEMCubWrappers.cu +14 -14
- {deme-2.1.9 → deme-2.2.1}/src/core/utils/JitHelper.cpp +27 -0
- {deme-2.1.9 → deme-2.2.1}/src/core/utils/ManagedMemory.hpp +27 -1
- {deme-2.1.9 → deme-2.2.1}/src/kernel/CUDAMathHelpers.cuh +62 -14
- {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMHelperKernels.cuh +11 -57
- {deme-2.1.9 → deme-2.2.1}/CMakeLists.txt +0 -0
- {deme-2.1.9 → deme-2.2.1}/LICENSE.md +0 -0
- {deme-2.1.9 → deme-2.2.1}/MANIFEST.in +0 -0
- {deme-2.1.9 → deme-2.2.1}/cmake/CxxStdAutodetect.cmake +0 -0
- {deme-2.1.9 → deme-2.2.1}/cmake/DEMEConfig.cmake.in +0 -0
- {deme-2.1.9 → deme-2.2.1}/cmake/FixNinjaColors.cmake +0 -0
- {deme-2.1.9 → deme-2.2.1}/data/clumps/3_clump.csv +0 -0
- {deme-2.1.9 → deme-2.2.1}/data/clumps/6_clump.csv +0 -0
- {deme-2.1.9 → deme-2.2.1}/data/clumps/ContactChain_initial.csv +0 -0
- {deme-2.1.9 → deme-2.2.1}/data/clumps/TeddyBear.csv +0 -0
- {deme-2.1.9 → deme-2.2.1}/data/clumps/ViperWheelSimple.csv +0 -0
- {deme-2.1.9 → deme-2.2.1}/data/clumps/ellipsoid_2_1_1.csv +0 -0
- {deme-2.1.9 → deme-2.2.1}/data/clumps/molecule.csv +0 -0
- {deme-2.1.9 → deme-2.2.1}/data/clumps/spiky_sphere.csv +0 -0
- {deme-2.1.9 → deme-2.2.1}/data/clumps/triangular_flat.csv +0 -0
- {deme-2.1.9 → deme-2.2.1}/data/clumps/triangular_flat_6comp.csv +0 -0
- {deme-2.1.9 → deme-2.2.1}/data/mesh/GPBR_Vessel_Fine.obj +0 -0
- {deme-2.1.9 → deme-2.2.1}/data/mesh/cone.obj +0 -0
- {deme-2.1.9 → deme-2.2.1}/data/mesh/cube.obj +0 -0
- {deme-2.1.9 → deme-2.2.1}/data/mesh/cyl_r1_h2.obj +0 -0
- {deme-2.1.9 → deme-2.2.1}/data/mesh/excavator.obj +0 -0
- {deme-2.1.9 → deme-2.2.1}/data/mesh/funnel.obj +0 -0
- {deme-2.1.9 → deme-2.2.1}/data/mesh/funnel_left.obj +0 -0
- {deme-2.1.9 → deme-2.2.1}/data/mesh/hourglass.obj +0 -0
- {deme-2.1.9 → deme-2.2.1}/data/mesh/hourglass_cap.obj +0 -0
- {deme-2.1.9 → deme-2.2.1}/data/mesh/internal_mixer.obj +0 -0
- {deme-2.1.9 → deme-2.2.1}/data/mesh/plane_20by20.obj +0 -0
- {deme-2.1.9 → deme-2.2.1}/data/mesh/rover_wheels/curiosity_wheel.obj +0 -0
- {deme-2.1.9 → deme-2.2.1}/data/mesh/rover_wheels/curiosity_wheel_surface.obj +0 -0
- {deme-2.1.9 → deme-2.2.1}/data/mesh/rover_wheels/viper_wheel_right.obj +0 -0
- {deme-2.1.9 → deme-2.2.1}/data/mesh/silo.obj +0 -0
- {deme-2.1.9 → deme-2.2.1}/data/mesh/sphere.obj +0 -0
- {deme-2.1.9 → deme-2.2.1}/data/mesh/thin_plate.obj +0 -0
- {deme-2.1.9 → deme-2.2.1}/data/sim_data/example_cnt_pairs.csv +0 -0
- {deme-2.1.9 → deme-2.2.1}/deme.egg-info/SOURCES.txt +0 -0
- {deme-2.1.9 → deme-2.2.1}/deme.egg-info/dependency_links.txt +0 -0
- {deme-2.1.9 → deme-2.2.1}/deme.egg-info/not-zip-safe +0 -0
- {deme-2.1.9 → deme-2.2.1}/deme.egg-info/requires.txt +0 -0
- {deme-2.1.9 → deme-2.2.1}/deme.egg-info/top_level.txt +0 -0
- {deme-2.1.9 → deme-2.2.1}/packaging_instructions.txt +0 -0
- {deme-2.1.9 → deme-2.2.1}/pyproject.toml +0 -0
- {deme-2.1.9 → deme-2.2.1}/setup.cfg +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/.format_all +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/DEM/API.h +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/DEM/APIPublic.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/DEM/AuxClasses.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/DEM/AuxClasses.h +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/DEM/BdrsAndObjs.h +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/DEM/CMakeLists.txt +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/DEM/Defines.h +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/DEM/MeshUtils.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/DEM/Models.h +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/DEM/Structs.h +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/DEM/VariableTypes.h +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/DEM/dT.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/DEM/dT.h +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/DEM/kT.h +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/DEM/utils/Samplers.hpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/algorithms/CMakeLists.txt +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/algorithms/DEMCubContactDetection.cu +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/algorithms/DEMCubForceCollection.cu +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/algorithms/DEMCubInstantiations.cu +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/algorithms/DEMDynamicMisc.cu +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/algorithms/DEMStaticDeviceSubroutines.h +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/algorithms/DEMStaticDeviceUtilities.cuh +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/core/ApiVersion.h.in +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/core/CMakeLists.txt +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/core/DebugInfo.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/core/utils/CudaAllocator.hpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/core/utils/DEMEPaths.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/core/utils/DEMEPaths.h +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/core/utils/DataMigrationHelper.hpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/core/utils/GpuError.h +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/core/utils/GpuManager.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/core/utils/GpuManager.h +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/core/utils/HeaderGenerator.h +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/core/utils/JitHelper.h +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/core/utils/RuntimeData.cpp.in +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/core/utils/RuntimeData.h +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/core/utils/ThreadManager.h +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/core/utils/Timer.hpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/core/utils/WavefrontMeshLoader.hpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/core/utils/csv.hpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/demo/CMakeLists.txt +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/demo/DEMdemo_BallDrop.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/demo/DEMdemo_BallDrop2D.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/demo/DEMdemo_Centrifuge.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/demo/DEMdemo_ConePenetration.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/demo/DEMdemo_ContactChain.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/demo/DEMdemo_Electrostatic.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/demo/DEMdemo_FlexibleMesh.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/demo/DEMdemo_Fracture_Box.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/demo/DEMdemo_GRCPrep_Part1.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/demo/DEMdemo_GRCPrep_Part2.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/demo/DEMdemo_GRCPrep_Part3.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/demo/DEMdemo_GameOfLife.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/demo/DEMdemo_Hopper_Sphere_Cylinder.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/demo/DEMdemo_Indentation.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/demo/DEMdemo_Mixer.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/demo/DEMdemo_Plow.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/demo/DEMdemo_Repose.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/demo/DEMdemo_Repose2D.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/demo/DEMdemo_RotatingDrum.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/demo/DEMdemo_Shake.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/demo/DEMdemo_Sieve.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/demo/DEMdemo_SingleSphereCollide.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/demo/DEMdemo_SolarSystem.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/demo/DEMdemo_TestPack.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/demo/DEMdemo_WheelDP.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/demo/DEMdemo_WheelDPSimplified.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/demo/DEMdemo_WheelSlopeSlip.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/demo/pyDEME_BallDrop.py +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/demo/pyDEME_BallDrop2D.py +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/demo/pyDEME_Centrifuge.py +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/demo/pyDEME_ConePenetration.py +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/demo/pyDEME_Electrostatic.py +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/demo/pyDEME_FlexibleMesh.py +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/demo/pyDEME_GRCPrep_Part1.py +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/demo/pyDEME_GameOfLife.py +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/demo/pyDEME_Mixer.py +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/demo/pyDEME_WheelDPSimplified.py +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMBinSphereKernels.cu +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMBinTriangleKernels.cu +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMCalcForceKernels.cu +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMCollectForceKernels.cu +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMCollectForceKernels_Compact.cu +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMCollisionKernels.cu +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMContactKernels_SphereSphere.cu +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMContactKernels_SphereTriangle.cu +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMCustomizablePolicies/AnalyticalCompDefJitify.cu +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMCustomizablePolicies/ClumpCompAcqStratAllFlatten.cu +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMCustomizablePolicies/ClumpCompAcqStratAllJitify.cu +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMCustomizablePolicies/ClumpCompAcqStratPartialJitify.cu +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMCustomizablePolicies/ClumpCompDefJitify.cu +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMCustomizablePolicies/ContactInfoWriteBack.cu +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMCustomizablePolicies/ForceInKernelReductionStrat.cu +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMCustomizablePolicies/FrictionlessHertzianForceModel.cu +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMCustomizablePolicies/FullHertzianForceModel.cu +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMCustomizablePolicies/IntegrationVelPassOnCenteredDiff.cu +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMCustomizablePolicies/IntegrationVelPassOnExtendedTaylor.cu +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMCustomizablePolicies/IntegrationVelPassOnForwardEuler.cu +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMCustomizablePolicies/MOIAcqStratFlatten.cu +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMCustomizablePolicies/MOIAcqStratJitify.cu +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMCustomizablePolicies/MOIDefJitify.cu +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMCustomizablePolicies/MassAcqStratFlatten.cu +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMCustomizablePolicies/MassAcqStratJitify.cu +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMCustomizablePolicies/MassDefJitify.cu +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMHistoryMappingKernels.cu +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMIntegrationKernels.cu +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMMiscKernels.cu +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMModeratorKernels.cu +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMOwnerQueryKernels.cu +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMPrepForceKernels.cu +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMSphereQueryKernels.cu +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMTriangleBoxIntersect.cu +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMUserScripts/ForceModel2D.cu +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMUserScripts/ForceModelMooring.cu +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMUserScripts/ForceModelMooringPosition.cu +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMUserScripts/ForceModelWithCohesion.cu +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMUserScripts/ForceModelWithElectrostatic.cu +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMUserScripts/ForceModelWithFractureModel.cu +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMUserScripts/ForceModelWithGravity.cu +0 -0
- {deme-2.1.9 → deme-2.2.1}/src/kernel/hello.cu +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/jitify/.clang-format +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/jitify/.git +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/jitify/.gitignore +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/jitify/Doxyfile +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/jitify/LICENSE +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/jitify/Makefile +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/jitify/README.md +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/jitify/example_headers/class_arg_kernel.cuh +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/jitify/example_headers/constant_header.cuh +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/jitify/example_headers/my_header1.cuh +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/jitify/example_headers/my_header2.cuh +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/jitify/example_headers/my_header3.cuh +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/jitify/jitify.hpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/jitify/jitify_example.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/jitify/jitify_test.cu +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/jitify/nvrtc_cli.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/jitify/nvrtc_cli_test.sh +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/jitify/stringify.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/.appveyor.yml +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/.clang-format +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/.clang-tidy +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/.cmake-format.yaml +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/.codespell-ignore-lines +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/.git +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/.gitattributes +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/.github/CODEOWNERS +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/.github/CONTRIBUTING.md +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/.github/dependabot.yml +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/.github/labeler.yml +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/.github/labeler_merged.yml +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/.github/matchers/pylint.json +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/.github/pull_request_template.md +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/.github/workflows/ci.yml +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/.github/workflows/configure.yml +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/.github/workflows/format.yml +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/.github/workflows/labeler.yml +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/.github/workflows/pip.yml +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/.github/workflows/upstream.yml +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/.gitignore +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/.pre-commit-config.yaml +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/.readthedocs.yml +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/CMakeLists.txt +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/LICENSE +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/MANIFEST.in +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/README.rst +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/Doxyfile +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/Makefile +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/_static/css/custom.css +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/advanced/cast/chrono.rst +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/advanced/cast/custom.rst +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/advanced/cast/eigen.rst +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/advanced/cast/functional.rst +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/advanced/cast/index.rst +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/advanced/cast/overview.rst +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/advanced/cast/stl.rst +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/advanced/cast/strings.rst +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/advanced/classes.rst +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/advanced/embedding.rst +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/advanced/exceptions.rst +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/advanced/functions.rst +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/advanced/misc.rst +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/advanced/pycpp/index.rst +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/advanced/pycpp/numpy.rst +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/advanced/pycpp/object.rst +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/advanced/pycpp/utilities.rst +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/advanced/smart_ptrs.rst +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/basics.rst +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/benchmark.py +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/benchmark.rst +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/changelog.rst +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/classes.rst +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/cmake/index.rst +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/compiling.rst +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/conf.py +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/faq.rst +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/index.rst +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/installing.rst +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/limitations.rst +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/pybind11-logo.png +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/pybind11_vs_boost_python1.png +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/pybind11_vs_boost_python1.svg +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/pybind11_vs_boost_python2.png +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/pybind11_vs_boost_python2.svg +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/reference.rst +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/release.rst +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/requirements.txt +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/upgrade.rst +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/include/pybind11/attr.h +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/include/pybind11/buffer_info.h +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/include/pybind11/cast.h +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/include/pybind11/chrono.h +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/include/pybind11/common.h +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/include/pybind11/complex.h +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/include/pybind11/detail/class.h +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/include/pybind11/detail/common.h +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/include/pybind11/detail/descr.h +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/include/pybind11/detail/init.h +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/include/pybind11/detail/internals.h +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/include/pybind11/detail/type_caster_base.h +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/include/pybind11/detail/typeid.h +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/include/pybind11/eigen/matrix.h +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/include/pybind11/eigen/tensor.h +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/include/pybind11/eigen.h +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/include/pybind11/embed.h +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/include/pybind11/eval.h +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/include/pybind11/functional.h +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/include/pybind11/gil.h +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/include/pybind11/iostream.h +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/include/pybind11/numpy.h +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/include/pybind11/operators.h +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/include/pybind11/options.h +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/include/pybind11/pybind11.h +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/include/pybind11/pytypes.h +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/include/pybind11/stl/filesystem.h +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/include/pybind11/stl.h +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/include/pybind11/stl_bind.h +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/noxfile.py +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/pybind11/__init__.py +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/pybind11/__main__.py +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/pybind11/_version.py +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/pybind11/commands.py +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/pybind11/py.typed +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/pybind11/setup_helpers.py +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/pyproject.toml +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/setup.cfg +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/setup.py +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/CMakeLists.txt +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/conftest.py +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/constructor_stats.h +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/cross_module_gil_utils.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/cross_module_interleaved_error_already_set.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/eigen_tensor_avoid_stl_array.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/env.py +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/extra_python_package/pytest.ini +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/extra_python_package/test_files.py +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/extra_setuptools/pytest.ini +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/extra_setuptools/test_setuphelper.py +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/local_bindings.h +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/object.h +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/pybind11_cross_module_tests.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/pybind11_tests.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/pybind11_tests.h +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/pytest.ini +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/requirements.txt +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_async.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_async.py +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_buffers.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_buffers.py +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_builtin_casters.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_builtin_casters.py +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_call_policies.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_call_policies.py +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_callbacks.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_callbacks.py +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_chrono.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_chrono.py +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_class.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_class.py +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_cmake_build/CMakeLists.txt +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_cmake_build/embed.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_cmake_build/installed_embed/CMakeLists.txt +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_cmake_build/installed_function/CMakeLists.txt +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_cmake_build/installed_target/CMakeLists.txt +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_cmake_build/main.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_cmake_build/subdirectory_embed/CMakeLists.txt +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_cmake_build/subdirectory_function/CMakeLists.txt +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_cmake_build/subdirectory_target/CMakeLists.txt +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_cmake_build/test.py +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_const_name.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_const_name.py +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_constants_and_functions.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_constants_and_functions.py +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_copy_move.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_copy_move.py +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_custom_type_casters.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_custom_type_casters.py +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_custom_type_setup.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_custom_type_setup.py +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_docstring_options.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_docstring_options.py +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_eigen_matrix.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_eigen_matrix.py +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_eigen_tensor.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_eigen_tensor.inl +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_eigen_tensor.py +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_embed/CMakeLists.txt +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_embed/catch.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_embed/external_module.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_embed/test_interpreter.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_embed/test_interpreter.py +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_embed/test_trampoline.py +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_enum.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_enum.py +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_eval.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_eval.py +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_eval_call.py +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_exceptions.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_exceptions.h +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_exceptions.py +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_factory_constructors.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_factory_constructors.py +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_gil_scoped.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_gil_scoped.py +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_iostream.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_iostream.py +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_kwargs_and_defaults.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_kwargs_and_defaults.py +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_local_bindings.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_local_bindings.py +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_methods_and_attributes.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_methods_and_attributes.py +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_modules.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_modules.py +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_multiple_inheritance.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_multiple_inheritance.py +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_numpy_array.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_numpy_array.py +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_numpy_dtypes.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_numpy_dtypes.py +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_numpy_vectorize.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_numpy_vectorize.py +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_opaque_types.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_opaque_types.py +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_operator_overloading.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_operator_overloading.py +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_pickling.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_pickling.py +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_pytypes.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_pytypes.py +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_sequences_and_iterators.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_sequences_and_iterators.py +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_smart_ptr.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_smart_ptr.py +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_stl.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_stl.py +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_stl_binders.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_stl_binders.py +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_tagbased_polymorphic.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_tagbased_polymorphic.py +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_thread.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_thread.py +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_union.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_union.py +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_virtual_functions.cpp +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_virtual_functions.py +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/valgrind-numpy-scipy.supp +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/valgrind-python.supp +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tools/FindCatch.cmake +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tools/FindEigen3.cmake +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tools/FindPythonLibsNew.cmake +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tools/JoinPaths.cmake +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tools/check-style.sh +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tools/cmake_uninstall.cmake.in +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tools/codespell_ignore_lines_from_errors.py +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tools/libsize.py +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tools/make_changelog.py +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tools/pybind11.pc.in +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tools/pybind11Common.cmake +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tools/pybind11Config.cmake.in +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tools/pybind11NewTools.cmake +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tools/pybind11Tools.cmake +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tools/pyproject.toml +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tools/setup_global.py.in +0 -0
- {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tools/setup_main.py.in +0 -0
|
@@ -177,6 +177,7 @@ After the build process is done, you can start trying out the demos. On Windows,
|
|
|
177
177
|
|
|
178
178
|
Some additional troubleshooting tips for running the demos:
|
|
179
179
|
|
|
180
|
+
- If the program silently exits while creating the `DEMSolver` object, check if your NVIDIA driver supports your current CUDA version (`nvidia-smi`).
|
|
180
181
|
- If errors similar to `CUDA_ERROR_UNSUPPORTED_PTX_VERSION` are encountered while you run the demos, or (rarely) the simulations proceed without detecting any contacts, then please make sure the CUDA installation is the same version as when the code is compiled.
|
|
181
182
|
- Another cause for the simulations proceeding without detecting any contacts, could be the force kernel silently failed. This could also lead to a **too-many-geometries-in-bin** crash. The cause is usually that the force kernel was launched with too many threads per block, therefore not enough registers can be leveraged. This can be avoided by calling `SetForceCalcThreadsPerBlock` prior to the start of simulation with the argument being smaller choices like 128. **Note that you should only try this if you are using a custom force model**.
|
|
182
183
|
- Used your own force model but got runtime compilation error like `expression must have pointer-to-object type but it has type "float"`, or `unknown variable "delta_time"`? Check out what we did in demo `DEMdemo_Electrostatic`. You may need to manually specify what material properties are pairwise and what contact wildcards you have using `SetMustPairwiseMatProp` and `SetPerContactWildcards`.
|
|
@@ -20,7 +20,6 @@
|
|
|
20
20
|
# version of the CUDA Toolkit
|
|
21
21
|
#
|
|
22
22
|
# Minimum CUDA version: 7.0
|
|
23
|
-
# Maximum CUDA version: 11.6
|
|
24
23
|
|
|
25
24
|
function(cuda_supported_architectures)
|
|
26
25
|
|
|
@@ -31,7 +30,9 @@ function(cuda_supported_architectures)
|
|
|
31
30
|
set(cu10 30 35 50 52 60 61 70 72 75)
|
|
32
31
|
set(cu11 35 50 52 60 61 70 72 75 80)
|
|
33
32
|
set(cu11_x 35 50 52 60 61 70 72 75 80 86)
|
|
34
|
-
set(cu12_x 50 52 60 61 70 72 75 80 86)
|
|
33
|
+
set(cu12_x 50 52 60 61 70 72 75 80 86 89)
|
|
34
|
+
set(cu12_8 50 52 60 61 70 72 75 80 86 89 120)
|
|
35
|
+
set(cu13_x 75 80 86 89 90 100 120 121)
|
|
35
36
|
|
|
36
37
|
if (CMAKE_CUDA_COMPILER_VERSION VERSION_GREATER_EQUAL 7)
|
|
37
38
|
set(CUDASUP_ARCHITECTURES ${cu7} CACHE INTERNAL "")
|
|
@@ -61,6 +62,14 @@ function(cuda_supported_architectures)
|
|
|
61
62
|
set(CUDASUP_ARCHITECTURES ${cu12_x} CACHE INTERNAL "")
|
|
62
63
|
endif()
|
|
63
64
|
|
|
65
|
+
if (CMAKE_CUDA_COMPILER_VERSION VERSION_GREATER_EQUAL 12.8)
|
|
66
|
+
set(CUDASUP_ARCHITECTURES ${cu12_8} CACHE INTERNAL "")
|
|
67
|
+
endif()
|
|
68
|
+
|
|
69
|
+
if (CMAKE_CUDA_COMPILER_VERSION VERSION_GREATER_EQUAL 13)
|
|
70
|
+
set(CUDASUP_ARCHITECTURES ${cu13_x} CACHE INTERNAL "")
|
|
71
|
+
endif()
|
|
72
|
+
|
|
64
73
|
if (NOT DEFINED CUDASUP_ARCHITECTURES)
|
|
65
74
|
message(SEND_ERROR "[CUDASUP] Could not determine device architectures supported by the CUDA toolkit!")
|
|
66
75
|
endif()
|
|
@@ -152,7 +152,7 @@ class CMakeBuild(build_ext):
|
|
|
152
152
|
# logic and declaration, and simpler if you include description/version in a file.
|
|
153
153
|
setup(
|
|
154
154
|
name="deme",
|
|
155
|
-
version="2.1
|
|
155
|
+
version="2.2.1",
|
|
156
156
|
author="Ruochun Zhang",
|
|
157
157
|
author_email="ruochunz@gmail.com",
|
|
158
158
|
description="PyBind Wrapper Library for DEM-Engine",
|
|
@@ -2138,8 +2138,12 @@ inline void DEMSolver::equipKernelIncludes(std::unordered_map<std::string, std::
|
|
|
2138
2138
|
// It's put here as ApiVersion.h.in (which sets DEME_CUDA_TOOLKIT_HEADERS) is a CMake-in configuration file, we don't
|
|
2139
2139
|
// want to include it anywhere in the h headers in case DEM-Engine is included by some parent project.
|
|
2140
2140
|
void DEMSolver::setDefaultSolverParams() {
|
|
2141
|
-
m_jitify_options = {"-I" + (JitHelper::KERNEL_INCLUDE_DIR).string(),
|
|
2142
|
-
"-I" +
|
|
2141
|
+
m_jitify_options = {"-I" + (JitHelper::KERNEL_INCLUDE_DIR).string(),
|
|
2142
|
+
"-I" + (JitHelper::KERNEL_DIR).string(),
|
|
2143
|
+
"-I" + std::string(DEME_CUDA_TOOLKIT_HEADERS),
|
|
2144
|
+
"-std=c++17",
|
|
2145
|
+
"-diag-suppress=550",
|
|
2146
|
+
"-diag-suppress=177"};
|
|
2143
2147
|
}
|
|
2144
2148
|
|
|
2145
2149
|
} // namespace deme
|
|
@@ -588,7 +588,7 @@ inline std::vector<double> FrameTransformLocalToGlobal(const std::vector<double>
|
|
|
588
588
|
const std::vector<double>& vec,
|
|
589
589
|
const std::vector<double>& rot_Q) {
|
|
590
590
|
double3 deme_pos, deme_vec;
|
|
591
|
-
|
|
591
|
+
double4_vec deme_Q;
|
|
592
592
|
deme_pos.x = pos[0];
|
|
593
593
|
deme_pos.y = pos[1];
|
|
594
594
|
deme_pos.z = pos[2];
|
|
@@ -599,7 +599,7 @@ inline std::vector<double> FrameTransformLocalToGlobal(const std::vector<double>
|
|
|
599
599
|
deme_Q.y = rot_Q[1];
|
|
600
600
|
deme_Q.z = rot_Q[2];
|
|
601
601
|
deme_Q.w = rot_Q[3];
|
|
602
|
-
applyFrameTransformLocalToGlobal<double3, double3,
|
|
602
|
+
applyFrameTransformLocalToGlobal<double3, double3, double4_vec>(deme_pos, deme_vec, deme_Q);
|
|
603
603
|
return {deme_pos.x, deme_pos.y, deme_pos.z};
|
|
604
604
|
}
|
|
605
605
|
|
|
@@ -618,7 +618,7 @@ inline std::vector<double> FrameTransformGlobalToLocal(const std::vector<double>
|
|
|
618
618
|
const std::vector<double>& vec,
|
|
619
619
|
const std::vector<double>& rot_Q) {
|
|
620
620
|
double3 deme_pos, deme_vec;
|
|
621
|
-
|
|
621
|
+
double4_vec deme_Q;
|
|
622
622
|
deme_pos.x = pos[0];
|
|
623
623
|
deme_pos.y = pos[1];
|
|
624
624
|
deme_pos.z = pos[2];
|
|
@@ -629,7 +629,7 @@ inline std::vector<double> FrameTransformGlobalToLocal(const std::vector<double>
|
|
|
629
629
|
deme_Q.y = rot_Q[1];
|
|
630
630
|
deme_Q.z = rot_Q[2];
|
|
631
631
|
deme_Q.w = rot_Q[3];
|
|
632
|
-
applyFrameTransformGlobalToLocal<double3, double3,
|
|
632
|
+
applyFrameTransformGlobalToLocal<double3, double3, double4_vec>(deme_pos, deme_vec, deme_Q);
|
|
633
633
|
return {deme_pos.x, deme_pos.y, deme_pos.z};
|
|
634
634
|
}
|
|
635
635
|
|
|
@@ -1250,6 +1250,14 @@ PYBIND11_MODULE(DEME, obj) {
|
|
|
1250
1250
|
&deme::DEMClumpBatch::AddGeometryWildcard))
|
|
1251
1251
|
.def("AddGeometryWildcard", static_cast<void (deme::DEMClumpBatch::*)(const std::string&, float)>(
|
|
1252
1252
|
&deme::DEMClumpBatch::AddGeometryWildcard))
|
|
1253
|
+
.def("SetOriQ",
|
|
1254
|
+
static_cast<void (deme::DEMClumpBatch::*)(const std::vector<float4>&)>(&deme::DEMClumpBatch::SetOriQ))
|
|
1255
|
+
.def("SetOriQ",
|
|
1256
|
+
static_cast<void (deme::DEMClumpBatch::*)(float4)>(&deme::DEMClumpBatch::SetOriQ))
|
|
1257
|
+
.def("SetOriQ",
|
|
1258
|
+
static_cast<void (deme::DEMClumpBatch::*)(const std::vector<float>&)>(&deme::DEMClumpBatch::SetOriQ))
|
|
1259
|
+
.def("SetOriQ", static_cast<void (deme::DEMClumpBatch::*)(const std::vector<std::vector<float>>&)>(
|
|
1260
|
+
&deme::DEMClumpBatch::SetOriQ))
|
|
1253
1261
|
.def("GetNumContacts", &deme::DEMClumpBatch::GetNumContacts);
|
|
1254
1262
|
|
|
1255
1263
|
py::class_<deme::DEMExternObj, deme::DEMInitializer, std::shared_ptr<deme::DEMExternObj>>(obj, "DEMExternObj")
|
|
@@ -83,14 +83,13 @@ void DEMKinematicThread::calibrateParams() {
|
|
|
83
83
|
} else {
|
|
84
84
|
simParams->binSize /= (1. - stateParams.binCurrentChangeRate);
|
|
85
85
|
}
|
|
86
|
-
// Register the new bin size
|
|
87
|
-
stateParams.numBins =
|
|
88
|
-
hostCalcBinNum(simParams->nbX, simParams->nbY, simParams->nbZ, simParams->voxelSize, simParams->binSize,
|
|
89
|
-
simParams->nvXp2, simParams->nvYp2, simParams->nvZp2);
|
|
90
|
-
|
|
91
|
-
DEME_DEBUG_PRINTF("Bin size is now: %.7g", simParams->binSize);
|
|
92
|
-
DEME_DEBUG_PRINTF("Total num of bins is now: %zu", stateParams.numBins);
|
|
93
86
|
}
|
|
87
|
+
// Register the new bin size
|
|
88
|
+
stateParams.numBins = hostCalcBinNum(simParams->nbX, simParams->nbY, simParams->nbZ, simParams->voxelSize,
|
|
89
|
+
simParams->binSize, simParams->nvXp2, simParams->nvYp2, simParams->nvZp2);
|
|
90
|
+
|
|
91
|
+
DEME_DEBUG_PRINTF("Bin size is now: %.7g", simParams->binSize);
|
|
92
|
+
DEME_DEBUG_PRINTF("Total num of bins is now: %zu", stateParams.numBins);
|
|
94
93
|
DEME_DEBUG_PRINTF("kT runtime per step: %.7gs", CDAccumTimer.GetPrevTime());
|
|
95
94
|
}
|
|
96
95
|
// binSize is now calculated, we need to migrate that to device
|
|
@@ -8,6 +8,14 @@
|
|
|
8
8
|
#include <DEM/Structs.h>
|
|
9
9
|
#include <core/utils/GpuError.h>
|
|
10
10
|
|
|
11
|
+
#if CUDART_VERSION >= 13000
|
|
12
|
+
#define DEME_CUB_SUM_OP(T) \
|
|
13
|
+
cuda::std::plus<T> {}
|
|
14
|
+
#else
|
|
15
|
+
#define DEME_CUB_SUM_OP(T) \
|
|
16
|
+
cub::Sum {}
|
|
17
|
+
#endif
|
|
18
|
+
|
|
11
19
|
namespace deme {
|
|
12
20
|
|
|
13
21
|
// Functor type for selecting values less than some criteria
|
|
@@ -75,10 +83,11 @@ inline void cubDEMPrefixScan(T1* d_in,
|
|
|
75
83
|
// let you know when it happens. I made a trick: use ExclusiveScan and (T2)0 as the initial value, and this forces
|
|
76
84
|
// cub to store results as T2 type.
|
|
77
85
|
size_t cub_scratch_bytes = 0;
|
|
78
|
-
cub::DeviceScan::ExclusiveScan(NULL, cub_scratch_bytes, d_in, d_out,
|
|
86
|
+
cub::DeviceScan::ExclusiveScan(NULL, cub_scratch_bytes, d_in, d_out, DEME_CUB_SUM_OP(T2), (T2)0, n, this_stream);
|
|
79
87
|
DEME_GPU_CALL(cudaStreamSynchronize(this_stream));
|
|
80
88
|
void* d_scratch_space = (void*)scratchPad.allocateScratchSpace(cub_scratch_bytes);
|
|
81
|
-
cub::DeviceScan::ExclusiveScan(d_scratch_space, cub_scratch_bytes, d_in, d_out,
|
|
89
|
+
cub::DeviceScan::ExclusiveScan(d_scratch_space, cub_scratch_bytes, d_in, d_out, DEME_CUB_SUM_OP(T2), (T2)0, n,
|
|
90
|
+
this_stream);
|
|
82
91
|
DEME_GPU_CALL(cudaStreamSynchronize(this_stream));
|
|
83
92
|
}
|
|
84
93
|
|
|
@@ -156,23 +165,14 @@ inline void cubDEMReduceByKeys(T1* d_keys_in,
|
|
|
156
165
|
template <typename T1, typename T2>
|
|
157
166
|
void cubDEMSum(T1* d_in, T2* d_out, size_t n, cudaStream_t& this_stream, DEMSolverScratchData& scratchPad) {
|
|
158
167
|
size_t cub_scratch_bytes = 0;
|
|
159
|
-
cub::DeviceReduce::Reduce(NULL, cub_scratch_bytes, d_in, d_out, n,
|
|
168
|
+
cub::DeviceReduce::Reduce(NULL, cub_scratch_bytes, d_in, d_out, n, DEME_CUB_SUM_OP(T2), (T2)0, this_stream);
|
|
160
169
|
DEME_GPU_CALL(cudaStreamSynchronize(this_stream));
|
|
161
170
|
void* d_scratch_space = (void*)scratchPad.allocateScratchSpace(cub_scratch_bytes);
|
|
162
|
-
cub::DeviceReduce::Reduce(d_scratch_space, cub_scratch_bytes, d_in, d_out, n,
|
|
171
|
+
cub::DeviceReduce::Reduce(d_scratch_space, cub_scratch_bytes, d_in, d_out, n, DEME_CUB_SUM_OP(T2), (T2)0,
|
|
172
|
+
this_stream);
|
|
163
173
|
DEME_GPU_CALL(cudaStreamSynchronize(this_stream));
|
|
164
174
|
}
|
|
165
175
|
|
|
166
|
-
// template <typename T1>
|
|
167
|
-
// void cubDEMSum(T1* d_in, T1* d_out, size_t n, cudaStream_t& this_stream, DEMSolverScratchData& scratchPad) {
|
|
168
|
-
// size_t cub_scratch_bytes = 0;
|
|
169
|
-
// cub::DeviceReduce::Sum(NULL, cub_scratch_bytes, d_in, d_out, n, this_stream);
|
|
170
|
-
// DEME_GPU_CALL(cudaStreamSynchronize(this_stream));
|
|
171
|
-
// void* d_scratch_space = (void*)scratchPad.allocateScratchSpace(cub_scratch_bytes);
|
|
172
|
-
// cub::DeviceReduce::Sum(d_scratch_space, cub_scratch_bytes, d_in, d_out, n, this_stream);
|
|
173
|
-
// DEME_GPU_CALL(cudaStreamSynchronize(this_stream));
|
|
174
|
-
// }
|
|
175
|
-
|
|
176
176
|
template <typename T1>
|
|
177
177
|
void cubDEMMax(T1* d_in, T1* d_out, size_t n, cudaStream_t& this_stream, DEMSolverScratchData& scratchPad) {
|
|
178
178
|
size_t cub_scratch_bytes = 0;
|
|
@@ -7,6 +7,10 @@
|
|
|
7
7
|
#include <filesystem>
|
|
8
8
|
#include <string>
|
|
9
9
|
#include <regex>
|
|
10
|
+
#include <vector>
|
|
11
|
+
#include <sstream>
|
|
12
|
+
#include <algorithm>
|
|
13
|
+
#include <cstdlib>
|
|
10
14
|
|
|
11
15
|
#include <core/ApiVersion.h>
|
|
12
16
|
#include "RuntimeData.h"
|
|
@@ -41,6 +45,29 @@ jitify::Program JitHelper::buildProgram(
|
|
|
41
45
|
std::unordered_map<std::string, std::string> substitutions,
|
|
42
46
|
// std::vector<JitHelper::Header> headers, // THIS PARAMETER PROBABLY WON'T EVER BE USED
|
|
43
47
|
std::vector<std::string> flags) {
|
|
48
|
+
// Double ensure include paths for runtime headers + CUDA/CCCL (cuda::std)
|
|
49
|
+
auto add_inc = [&](const std::filesystem::path& p) {
|
|
50
|
+
if (p.empty())
|
|
51
|
+
return;
|
|
52
|
+
std::error_code ec;
|
|
53
|
+
if (!std::filesystem::exists(p, ec))
|
|
54
|
+
return;
|
|
55
|
+
const std::string inc_flag = "-I" + p.string();
|
|
56
|
+
if (std::find(flags.begin(), flags.end(), inc_flag) == flags.end())
|
|
57
|
+
flags.push_back(inc_flag);
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
// Project/runtime includes
|
|
61
|
+
add_inc(KERNEL_INCLUDE_DIR);
|
|
62
|
+
|
|
63
|
+
// Common fallbacks
|
|
64
|
+
if (const char* cuda_home = std::getenv("CUDA_HOME")) {
|
|
65
|
+
add_inc(std::filesystem::path(cuda_home) / "include");
|
|
66
|
+
add_inc(std::filesystem::path(cuda_home) / "include" / "cccl");
|
|
67
|
+
}
|
|
68
|
+
add_inc("/usr/local/cuda/include");
|
|
69
|
+
add_inc("/usr/local/cuda/include/cccl");
|
|
70
|
+
|
|
44
71
|
std::string code = name + "\n";
|
|
45
72
|
|
|
46
73
|
code.append(JitHelper::loadSourceFile(source));
|
|
@@ -13,10 +13,27 @@
|
|
|
13
13
|
// Convenience functions to help with Managed Memory (allocated using ManagedAllocator, typically)
|
|
14
14
|
namespace deme {
|
|
15
15
|
|
|
16
|
+
#if CUDART_VERSION >= 13000
|
|
17
|
+
inline cudaMemLocation make_device_location(int device) {
|
|
18
|
+
cudaMemLocation loc{};
|
|
19
|
+
loc.type = cudaMemLocationTypeDevice;
|
|
20
|
+
loc.id = device;
|
|
21
|
+
return loc;
|
|
22
|
+
}
|
|
23
|
+
#endif
|
|
24
|
+
|
|
16
25
|
// Underlying implementation
|
|
17
26
|
template <class T>
|
|
18
27
|
inline void __migrate_impl(T* data, std::size_t size, int device, cudaStream_t stream = 0) {
|
|
28
|
+
#if CUDART_VERSION >= 13000
|
|
29
|
+
// CUDA 13.0+: cudaMemPrefetchAsync(const void*, size_t, cudaMemLocation, unsigned int flags, cudaStream_t)
|
|
30
|
+
auto loc = make_device_location(device);
|
|
31
|
+
unsigned int flags = 0;
|
|
32
|
+
cudaMemPrefetchAsync(static_cast<void*>(data), size * sizeof(T), loc, flags, stream);
|
|
33
|
+
#else
|
|
34
|
+
// CUDA <= 12.x: cudaMemPrefetchAsync(const void*, size_t, int dstDevice, cudaStream_t)
|
|
19
35
|
cudaMemPrefetchAsync(static_cast<void*>(data), size * sizeof(T), device, stream);
|
|
36
|
+
#endif
|
|
20
37
|
}
|
|
21
38
|
|
|
22
39
|
// Pointer syntax, basically the same as cudaMemPrefetchAsync(...)
|
|
@@ -68,7 +85,16 @@ enum class ManagedAdvice {
|
|
|
68
85
|
// Underlying implementation
|
|
69
86
|
template <class T>
|
|
70
87
|
void __advise_impl(const T* data, std::size_t size, ManagedAdvice advice, int device) {
|
|
71
|
-
|
|
88
|
+
#if CUDART_VERSION >= 13000
|
|
89
|
+
cudaMemLocation loc{};
|
|
90
|
+
loc.type = cudaMemLocationTypeDevice;
|
|
91
|
+
loc.id = device;
|
|
92
|
+
// CUDA 13.0+: cudaMemAdvise(const void*, size_t, cudaMemoryAdvise, cudaMemLocation)
|
|
93
|
+
cudaMemAdvise(static_cast<const void*>(data), size * sizeof(T), static_cast<cudaMemoryAdvise>(advice), loc);
|
|
94
|
+
#else
|
|
95
|
+
// Older toolkits: cudaMemAdvise(const void*, size_t, cudaMemoryAdvise, int)
|
|
96
|
+
cudaMemAdvise(static_cast<const void*>(data), size * sizeof(T), static_cast<cudaMemoryAdvise>(advice), device);
|
|
97
|
+
#endif
|
|
72
98
|
}
|
|
73
99
|
|
|
74
100
|
// Advice for raw pointer
|
|
@@ -69,6 +69,17 @@ inline float rsqrtf(float x) {
|
|
|
69
69
|
}
|
|
70
70
|
#endif
|
|
71
71
|
|
|
72
|
+
#if defined(CUDART_VERSION) && CUDART_VERSION >= 13000
|
|
73
|
+
///////////////////////////////////////////////////
|
|
74
|
+
// New Toolkits
|
|
75
|
+
using double4_vec = double4_16a; // or double4_32a, but 32 byte alignment is not good for GPUs before Blackwell
|
|
76
|
+
// (128bit --> 256 bit register)
|
|
77
|
+
#else
|
|
78
|
+
////////////////////////////////////////////////////
|
|
79
|
+
// Old Toolkits
|
|
80
|
+
using double4_vec = double4;
|
|
81
|
+
#endif
|
|
82
|
+
|
|
72
83
|
////////////////////////////////////////////////////////////////////////////////
|
|
73
84
|
// constructors
|
|
74
85
|
////////////////////////////////////////////////////////////////////////////////
|
|
@@ -914,9 +925,12 @@ inline __host__ __device__ uint4 max(uint4 a, uint4 b) {
|
|
|
914
925
|
// logical
|
|
915
926
|
////////////////////////////////////////////////////////////////////////////////
|
|
916
927
|
|
|
917
|
-
inline __host__ __device__ bool
|
|
928
|
+
inline __host__ __device__ bool float_near(const float& a, const float& b, float tol = 1e-6f) {
|
|
918
929
|
return fabs(a - b) < tol;
|
|
919
930
|
}
|
|
931
|
+
inline __host__ __device__ bool float3_near(const float3& a, const float3& b, float tol = 1e-6f) {
|
|
932
|
+
return float_near(a.x, b.x, tol) && float_near(a.y, b.y, tol) && float_near(a.z, b.z, tol);
|
|
933
|
+
}
|
|
920
934
|
|
|
921
935
|
////////////////////////////////////////////////////////////////////////////////
|
|
922
936
|
// lerp
|
|
@@ -1055,6 +1069,15 @@ inline __host__ __device__ float length(float3 v) {
|
|
|
1055
1069
|
inline __host__ __device__ float length(float4 v) {
|
|
1056
1070
|
return sqrtf(dot(v, v));
|
|
1057
1071
|
}
|
|
1072
|
+
inline __host__ __device__ float length2(float2 v) {
|
|
1073
|
+
return dot(v, v);
|
|
1074
|
+
}
|
|
1075
|
+
inline __host__ __device__ float length2(float3 v) {
|
|
1076
|
+
return dot(v, v);
|
|
1077
|
+
}
|
|
1078
|
+
inline __host__ __device__ float length2(float4 v) {
|
|
1079
|
+
return dot(v, v);
|
|
1080
|
+
}
|
|
1058
1081
|
|
|
1059
1082
|
////////////////////////////////////////////////////////////////////////////////
|
|
1060
1083
|
// normalize
|
|
@@ -1199,19 +1222,25 @@ inline __host__ __device__ float dot(double3 a, float3 b) {
|
|
|
1199
1222
|
return a.x * b.x + a.y * b.y + a.z * b.z;
|
|
1200
1223
|
}
|
|
1201
1224
|
|
|
1202
|
-
inline __host__ __device__ double dot(
|
|
1225
|
+
inline __host__ __device__ double dot(double4_vec a, double4_vec b) {
|
|
1203
1226
|
return a.x * b.x + a.y * b.y + a.z * b.z + a.w * b.w;
|
|
1204
1227
|
}
|
|
1205
|
-
inline __host__ __device__ float dot(
|
|
1228
|
+
inline __host__ __device__ float dot(double4_vec a, float4 b) {
|
|
1206
1229
|
return a.x * b.x + a.y * b.y + a.z * b.z + a.w * b.w;
|
|
1207
1230
|
}
|
|
1208
1231
|
|
|
1209
1232
|
inline __host__ __device__ double length(double3 v) {
|
|
1210
1233
|
return sqrt(dot(v, v));
|
|
1211
1234
|
}
|
|
1212
|
-
inline __host__ __device__ double length(
|
|
1235
|
+
inline __host__ __device__ double length(double4_vec v) {
|
|
1213
1236
|
return sqrt(dot(v, v));
|
|
1214
1237
|
}
|
|
1238
|
+
inline __host__ __device__ double length2(double3 v) {
|
|
1239
|
+
return dot(v, v);
|
|
1240
|
+
}
|
|
1241
|
+
inline __host__ __device__ double length2(double4_vec v) {
|
|
1242
|
+
return dot(v, v);
|
|
1243
|
+
}
|
|
1215
1244
|
|
|
1216
1245
|
// Addition and subtraction
|
|
1217
1246
|
|
|
@@ -1343,14 +1372,27 @@ inline __host__ __device__ void operator/=(double3& a, double b) {
|
|
|
1343
1372
|
inline __host__ __device__ float4 operator/(float4 a, double b) {
|
|
1344
1373
|
return make_float4(a.x / b, a.y / b, a.z / b, a.w / b);
|
|
1345
1374
|
}
|
|
1346
|
-
|
|
1375
|
+
#if defined(CUDART_VERSION) && CUDART_VERSION >= 13000
|
|
1376
|
+
///////////////////////////////////////////////////
|
|
1377
|
+
// New Toolkits
|
|
1378
|
+
inline __host__ __device__ double4_vec operator/(double4_vec a, float b) {
|
|
1379
|
+
return make_double4_16a(a.x / b, a.y / b, a.z / b, a.w / b);
|
|
1380
|
+
}
|
|
1381
|
+
inline __host__ __device__ double4_vec operator/(double4_vec a, double b) {
|
|
1382
|
+
return make_double4_16a(a.x / b, a.y / b, a.z / b, a.w / b);
|
|
1383
|
+
}
|
|
1384
|
+
#else
|
|
1385
|
+
////////////////////////////////////////////////////
|
|
1386
|
+
// Old Toolkits
|
|
1347
1387
|
inline __host__ __device__ double4 operator/(double4 a, float b) {
|
|
1348
1388
|
return make_double4(a.x / b, a.y / b, a.z / b, a.w / b);
|
|
1349
1389
|
}
|
|
1350
1390
|
inline __host__ __device__ double4 operator/(double4 a, double b) {
|
|
1351
1391
|
return make_double4(a.x / b, a.y / b, a.z / b, a.w / b);
|
|
1352
1392
|
}
|
|
1353
|
-
|
|
1393
|
+
#endif
|
|
1394
|
+
|
|
1395
|
+
inline __host__ __device__ void operator/=(double4_vec& a, float b) {
|
|
1354
1396
|
a.x /= b;
|
|
1355
1397
|
a.y /= b;
|
|
1356
1398
|
a.z /= b;
|
|
@@ -1362,17 +1404,23 @@ inline __host__ __device__ double3 normalize(double3 v) {
|
|
|
1362
1404
|
return v * invLen;
|
|
1363
1405
|
}
|
|
1364
1406
|
|
|
1407
|
+
// Lexicographic comparator
|
|
1408
|
+
template <typename T>
|
|
1409
|
+
inline __host__ __device__ bool lex_less(T a, T b) {
|
|
1410
|
+
if (a.x != b.x)
|
|
1411
|
+
return a.x < b.x;
|
|
1412
|
+
if (a.y != b.y)
|
|
1413
|
+
return a.y < b.y;
|
|
1414
|
+
return a.z < b.z;
|
|
1415
|
+
}
|
|
1416
|
+
|
|
1365
1417
|
// Float3 < is an element-wise comparison where x, y, z components are assigned priorities in that order.
|
|
1366
1418
|
// Must be in global namespace for std::less to pick it up.
|
|
1367
1419
|
inline __host__ __device__ bool operator<(const float3& a, const float3& b) {
|
|
1368
|
-
|
|
1369
|
-
|
|
1370
|
-
|
|
1371
|
-
|
|
1372
|
-
else if (floatNear(a.z, b.z)) // y comp. same but z different
|
|
1373
|
-
return a.z < b.z;
|
|
1374
|
-
else // all components same
|
|
1375
|
-
return false; // for constructing a set
|
|
1420
|
+
return lex_less(a, b);
|
|
1421
|
+
}
|
|
1422
|
+
inline __host__ __device__ bool operator<(const double3& a, const double3& b) {
|
|
1423
|
+
return lex_less(a, b);
|
|
1376
1424
|
}
|
|
1377
1425
|
|
|
1378
1426
|
// Assignment
|
|
@@ -454,58 +454,6 @@ inline __host__ __device__ void matProxy2ContactParam(T1& E_eff,
|
|
|
454
454
|
E_eff = (T1)1 / invE;
|
|
455
455
|
}
|
|
456
456
|
|
|
457
|
-
/*
|
|
458
|
-
// This version of checkSphereEntityOverlap is not used anymore for code clarity, and the fact that every use case now
|
|
459
|
-
// requires overlapDepth.
|
|
460
|
-
template <typename T1, typename T2>
|
|
461
|
-
inline __device__ deme::contact_t checkSphereEntityOverlap(const T1& A,
|
|
462
|
-
const T2& radA,
|
|
463
|
-
const deme::objType_t& typeB,
|
|
464
|
-
const T1& B,
|
|
465
|
-
const float3& dirB,
|
|
466
|
-
const float& size1B,
|
|
467
|
-
const float& size2B,
|
|
468
|
-
const float& size3B,
|
|
469
|
-
const float& normal_sign,
|
|
470
|
-
const float& beta4Entity) {
|
|
471
|
-
deme::contact_t contactType;
|
|
472
|
-
switch (typeB) {
|
|
473
|
-
case (deme::ANAL_OBJ_TYPE_PLANE): {
|
|
474
|
-
const T1 plane2sph = A - B;
|
|
475
|
-
// Plane is directional, and the direction is given by plane rotation
|
|
476
|
-
const double dist = dot(plane2sph, dirB);
|
|
477
|
-
const double overlapDepth = (radA + beta4Entity - dist);
|
|
478
|
-
if (overlapDepth < 0.0) {
|
|
479
|
-
contactType = deme::NOT_A_CONTACT;
|
|
480
|
-
} else {
|
|
481
|
-
contactType = deme::SPHERE_PLANE_CONTACT;
|
|
482
|
-
}
|
|
483
|
-
return contactType;
|
|
484
|
-
}
|
|
485
|
-
case (deme::ANAL_OBJ_TYPE_PLATE): {
|
|
486
|
-
return deme::NOT_A_CONTACT;
|
|
487
|
-
}
|
|
488
|
-
case (deme::ANAL_OBJ_TYPE_CYL_INF): {
|
|
489
|
-
T1 sph2cyl = B - A;
|
|
490
|
-
// Projection along cyl axis direction
|
|
491
|
-
const double proj_dist = dot(sph2cyl, dirB);
|
|
492
|
-
// Radial vector from cylinder center to sphere center, along inward direction
|
|
493
|
-
sph2cyl -= proj_dist * dirB;
|
|
494
|
-
const double dist_delta_r = length(sph2cyl);
|
|
495
|
-
const double overlapDepth = radA - abs(size1B - dist_delta_r - beta4Entity);
|
|
496
|
-
if (overlapDepth <= DEME_TINY_FLOAT) {
|
|
497
|
-
contactType = deme::NOT_A_CONTACT;
|
|
498
|
-
} else {
|
|
499
|
-
contactType = deme::SPHERE_CYL_CONTACT;
|
|
500
|
-
}
|
|
501
|
-
return contactType;
|
|
502
|
-
}
|
|
503
|
-
default:
|
|
504
|
-
return deme::NOT_A_CONTACT;
|
|
505
|
-
}
|
|
506
|
-
}
|
|
507
|
-
*/
|
|
508
|
-
|
|
509
457
|
// Check whether a sphere and an analytical boundary are in contact, and gives overlap depth, contact point and contact
|
|
510
458
|
// normal.
|
|
511
459
|
template <typename T1, typename T2, typename T3>
|
|
@@ -550,15 +498,21 @@ inline __host__ __device__ deme::contact_t checkSphereEntityOverlap(const T1& A,
|
|
|
550
498
|
// Radial vector from cylinder center to sphere center, along inward direction
|
|
551
499
|
sph2cyl -= proj_dist * dirB;
|
|
552
500
|
const T3 dist_delta_r = length(sph2cyl);
|
|
553
|
-
|
|
554
|
-
|
|
501
|
+
// We can think the existence of beta4Entity simply enlarges or shrinks the rad of cyl
|
|
502
|
+
float cyl_rad = size1B - normal_sign * beta4Entity;
|
|
503
|
+
overlapDepth = radA - normal_sign * (cyl_rad - dist_delta_r);
|
|
504
|
+
if (overlapDepth < (T3)0.0) {
|
|
555
505
|
contactType = deme::NOT_A_CONTACT;
|
|
556
506
|
} else {
|
|
557
507
|
contactType = deme::SPHERE_CYL_CONTACT;
|
|
558
508
|
}
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
509
|
+
if (dist_delta_r >= (T3)DEME_TINY_FLOAT) {
|
|
510
|
+
cntNormal = to_real3<T1, float3>(normal_sign / dist_delta_r * sph2cyl);
|
|
511
|
+
CP = A - to_real3<float3, T1>(cntNormal * (radA - overlapDepth / 2.0));
|
|
512
|
+
} else {
|
|
513
|
+
cntNormal = dirB;
|
|
514
|
+
CP = A;
|
|
515
|
+
}
|
|
562
516
|
return contactType;
|
|
563
517
|
}
|
|
564
518
|
default:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|