DEME 2.3.0__tar.gz → 2.3.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.
Files changed (443) hide show
  1. {deme-2.3.0/deme.egg-info → deme-2.3.1}/PKG-INFO +1 -1
  2. {deme-2.3.0 → deme-2.3.1/deme.egg-info}/PKG-INFO +1 -1
  3. {deme-2.3.0 → deme-2.3.1}/setup.py +1 -1
  4. {deme-2.3.0 → deme-2.3.1}/src/DEM/API.h +11 -6
  5. {deme-2.3.0 → deme-2.3.1}/src/DEM/APIPrivate.cpp +20 -18
  6. {deme-2.3.0 → deme-2.3.1}/src/DEM/APIPublic.cpp +94 -17
  7. {deme-2.3.0 → deme-2.3.1}/src/DEM/dT.cpp +1 -1
  8. {deme-2.3.0 → deme-2.3.1}/src/DEM/dT.h +1 -1
  9. {deme-2.3.0 → deme-2.3.1}/src/DEM/kT.cpp +1 -1
  10. {deme-2.3.0 → deme-2.3.1}/src/DEM/kT.h +1 -1
  11. {deme-2.3.0 → deme-2.3.1}/src/algorithms/CMakeLists.txt +1 -1
  12. {deme-2.3.0 → deme-2.3.1}/src/core/utils/GpuManager.cpp +19 -0
  13. {deme-2.3.0 → deme-2.3.1}/src/core/utils/GpuManager.h +3 -1
  14. {deme-2.3.0 → deme-2.3.1}/CMakeLists.txt +0 -0
  15. {deme-2.3.0 → deme-2.3.1}/LICENSE.md +0 -0
  16. {deme-2.3.0 → deme-2.3.1}/MANIFEST.in +0 -0
  17. {deme-2.3.0 → deme-2.3.1}/README.md +0 -0
  18. {deme-2.3.0 → deme-2.3.1}/cmake/CudaSupportedArchitectures.cmake +0 -0
  19. {deme-2.3.0 → deme-2.3.1}/cmake/CxxStdAutodetect.cmake +0 -0
  20. {deme-2.3.0 → deme-2.3.1}/cmake/DEMEConfig.cmake.in +0 -0
  21. {deme-2.3.0 → deme-2.3.1}/cmake/FixNinjaColors.cmake +0 -0
  22. {deme-2.3.0 → deme-2.3.1}/data/clumps/3_clump.csv +0 -0
  23. {deme-2.3.0 → deme-2.3.1}/data/clumps/6_clump.csv +0 -0
  24. {deme-2.3.0 → deme-2.3.1}/data/clumps/ContactChain_initial.csv +0 -0
  25. {deme-2.3.0 → deme-2.3.1}/data/clumps/TeddyBear.csv +0 -0
  26. {deme-2.3.0 → deme-2.3.1}/data/clumps/ViperWheelSimple.csv +0 -0
  27. {deme-2.3.0 → deme-2.3.1}/data/clumps/ellipsoid_2_1_1.csv +0 -0
  28. {deme-2.3.0 → deme-2.3.1}/data/clumps/molecule.csv +0 -0
  29. {deme-2.3.0 → deme-2.3.1}/data/clumps/spiky_sphere.csv +0 -0
  30. {deme-2.3.0 → deme-2.3.1}/data/clumps/triangular_flat.csv +0 -0
  31. {deme-2.3.0 → deme-2.3.1}/data/clumps/triangular_flat_6comp.csv +0 -0
  32. {deme-2.3.0 → deme-2.3.1}/data/mesh/GPBR_Vessel_Fine.obj +0 -0
  33. {deme-2.3.0 → deme-2.3.1}/data/mesh/cone.obj +0 -0
  34. {deme-2.3.0 → deme-2.3.1}/data/mesh/cube.obj +0 -0
  35. {deme-2.3.0 → deme-2.3.1}/data/mesh/cyl_r1_h2.obj +0 -0
  36. {deme-2.3.0 → deme-2.3.1}/data/mesh/excavator.obj +0 -0
  37. {deme-2.3.0 → deme-2.3.1}/data/mesh/funnel.obj +0 -0
  38. {deme-2.3.0 → deme-2.3.1}/data/mesh/funnel_left.obj +0 -0
  39. {deme-2.3.0 → deme-2.3.1}/data/mesh/hourglass.obj +0 -0
  40. {deme-2.3.0 → deme-2.3.1}/data/mesh/hourglass_cap.obj +0 -0
  41. {deme-2.3.0 → deme-2.3.1}/data/mesh/internal_mixer.obj +0 -0
  42. {deme-2.3.0 → deme-2.3.1}/data/mesh/plane_20by20.obj +0 -0
  43. {deme-2.3.0 → deme-2.3.1}/data/mesh/rover_wheels/curiosity_wheel.obj +0 -0
  44. {deme-2.3.0 → deme-2.3.1}/data/mesh/rover_wheels/curiosity_wheel_surface.obj +0 -0
  45. {deme-2.3.0 → deme-2.3.1}/data/mesh/rover_wheels/viper_wheel_right.obj +0 -0
  46. {deme-2.3.0 → deme-2.3.1}/data/mesh/silo.obj +0 -0
  47. {deme-2.3.0 → deme-2.3.1}/data/mesh/sphere.obj +0 -0
  48. {deme-2.3.0 → deme-2.3.1}/data/mesh/thin_plate.obj +0 -0
  49. {deme-2.3.0 → deme-2.3.1}/data/sim_data/example_cnt_pairs.csv +0 -0
  50. {deme-2.3.0 → deme-2.3.1}/deme.egg-info/SOURCES.txt +0 -0
  51. {deme-2.3.0 → deme-2.3.1}/deme.egg-info/dependency_links.txt +0 -0
  52. {deme-2.3.0 → deme-2.3.1}/deme.egg-info/not-zip-safe +0 -0
  53. {deme-2.3.0 → deme-2.3.1}/deme.egg-info/requires.txt +0 -0
  54. {deme-2.3.0 → deme-2.3.1}/deme.egg-info/top_level.txt +0 -0
  55. {deme-2.3.0 → deme-2.3.1}/packaging_instructions.txt +0 -0
  56. {deme-2.3.0 → deme-2.3.1}/pyproject.toml +0 -0
  57. {deme-2.3.0 → deme-2.3.1}/setup.cfg +0 -0
  58. {deme-2.3.0 → deme-2.3.1}/src/.format_all +0 -0
  59. {deme-2.3.0 → deme-2.3.1}/src/DEM/AuxClasses.cpp +0 -0
  60. {deme-2.3.0 → deme-2.3.1}/src/DEM/AuxClasses.h +0 -0
  61. {deme-2.3.0 → deme-2.3.1}/src/DEM/BdrsAndObjs.h +0 -0
  62. {deme-2.3.0 → deme-2.3.1}/src/DEM/CMakeLists.txt +0 -0
  63. {deme-2.3.0 → deme-2.3.1}/src/DEM/Defines.h +0 -0
  64. {deme-2.3.0 → deme-2.3.1}/src/DEM/HostSideHelpers.hpp +0 -0
  65. {deme-2.3.0 → deme-2.3.1}/src/DEM/MeshUtils.cpp +0 -0
  66. {deme-2.3.0 → deme-2.3.1}/src/DEM/Models.h +0 -0
  67. {deme-2.3.0 → deme-2.3.1}/src/DEM/PyDEME.cpp +0 -0
  68. {deme-2.3.0 → deme-2.3.1}/src/DEM/Structs.h +0 -0
  69. {deme-2.3.0 → deme-2.3.1}/src/DEM/VariableTypes.h +0 -0
  70. {deme-2.3.0 → deme-2.3.1}/src/DEM/utils/Samplers.hpp +0 -0
  71. {deme-2.3.0 → deme-2.3.1}/src/algorithms/DEMCubContactDetection.cu +0 -0
  72. {deme-2.3.0 → deme-2.3.1}/src/algorithms/DEMCubForceCollection.cu +0 -0
  73. {deme-2.3.0 → deme-2.3.1}/src/algorithms/DEMCubInstantiations.cu +0 -0
  74. {deme-2.3.0 → deme-2.3.1}/src/algorithms/DEMCubWrappers.cu +0 -0
  75. {deme-2.3.0 → deme-2.3.1}/src/algorithms/DEMDynamicMisc.cu +0 -0
  76. {deme-2.3.0 → deme-2.3.1}/src/algorithms/DEMStaticDeviceSubroutines.h +0 -0
  77. {deme-2.3.0 → deme-2.3.1}/src/algorithms/DEMStaticDeviceUtilities.cuh +0 -0
  78. {deme-2.3.0 → deme-2.3.1}/src/core/ApiVersion.h.in +0 -0
  79. {deme-2.3.0 → deme-2.3.1}/src/core/CMakeLists.txt +0 -0
  80. {deme-2.3.0 → deme-2.3.1}/src/core/DebugInfo.cpp +0 -0
  81. {deme-2.3.0 → deme-2.3.1}/src/core/utils/CudaAllocator.hpp +0 -0
  82. {deme-2.3.0 → deme-2.3.1}/src/core/utils/DEMEPaths.cpp +0 -0
  83. {deme-2.3.0 → deme-2.3.1}/src/core/utils/DEMEPaths.h +0 -0
  84. {deme-2.3.0 → deme-2.3.1}/src/core/utils/DataMigrationHelper.hpp +0 -0
  85. {deme-2.3.0 → deme-2.3.1}/src/core/utils/GpuError.h +0 -0
  86. {deme-2.3.0 → deme-2.3.1}/src/core/utils/HeaderGenerator.h +0 -0
  87. {deme-2.3.0 → deme-2.3.1}/src/core/utils/JitHelper.cpp +0 -0
  88. {deme-2.3.0 → deme-2.3.1}/src/core/utils/JitHelper.h +0 -0
  89. {deme-2.3.0 → deme-2.3.1}/src/core/utils/ManagedMemory.hpp +0 -0
  90. {deme-2.3.0 → deme-2.3.1}/src/core/utils/RuntimeData.cpp.in +0 -0
  91. {deme-2.3.0 → deme-2.3.1}/src/core/utils/RuntimeData.h +0 -0
  92. {deme-2.3.0 → deme-2.3.1}/src/core/utils/ThreadManager.h +0 -0
  93. {deme-2.3.0 → deme-2.3.1}/src/core/utils/Timer.hpp +0 -0
  94. {deme-2.3.0 → deme-2.3.1}/src/core/utils/WavefrontMeshLoader.hpp +0 -0
  95. {deme-2.3.0 → deme-2.3.1}/src/core/utils/csv.hpp +0 -0
  96. {deme-2.3.0 → deme-2.3.1}/src/demo/CMakeLists.txt +0 -0
  97. {deme-2.3.0 → deme-2.3.1}/src/demo/DEMdemo_BallDrop.cpp +0 -0
  98. {deme-2.3.0 → deme-2.3.1}/src/demo/DEMdemo_BallDrop2D.cpp +0 -0
  99. {deme-2.3.0 → deme-2.3.1}/src/demo/DEMdemo_Centrifuge.cpp +0 -0
  100. {deme-2.3.0 → deme-2.3.1}/src/demo/DEMdemo_ConePenetration.cpp +0 -0
  101. {deme-2.3.0 → deme-2.3.1}/src/demo/DEMdemo_ContactChain.cpp +0 -0
  102. {deme-2.3.0 → deme-2.3.1}/src/demo/DEMdemo_Electrostatic.cpp +0 -0
  103. {deme-2.3.0 → deme-2.3.1}/src/demo/DEMdemo_FlexibleMesh.cpp +0 -0
  104. {deme-2.3.0 → deme-2.3.1}/src/demo/DEMdemo_Fracture_Box.cpp +0 -0
  105. {deme-2.3.0 → deme-2.3.1}/src/demo/DEMdemo_GRCPrep_Part1.cpp +0 -0
  106. {deme-2.3.0 → deme-2.3.1}/src/demo/DEMdemo_GRCPrep_Part2.cpp +0 -0
  107. {deme-2.3.0 → deme-2.3.1}/src/demo/DEMdemo_GRCPrep_Part3.cpp +0 -0
  108. {deme-2.3.0 → deme-2.3.1}/src/demo/DEMdemo_GameOfLife.cpp +0 -0
  109. {deme-2.3.0 → deme-2.3.1}/src/demo/DEMdemo_Hopper_Sphere_Cylinder.cpp +0 -0
  110. {deme-2.3.0 → deme-2.3.1}/src/demo/DEMdemo_Indentation.cpp +0 -0
  111. {deme-2.3.0 → deme-2.3.1}/src/demo/DEMdemo_Mixer.cpp +0 -0
  112. {deme-2.3.0 → deme-2.3.1}/src/demo/DEMdemo_Plow.cpp +0 -0
  113. {deme-2.3.0 → deme-2.3.1}/src/demo/DEMdemo_Repose.cpp +0 -0
  114. {deme-2.3.0 → deme-2.3.1}/src/demo/DEMdemo_Repose2D.cpp +0 -0
  115. {deme-2.3.0 → deme-2.3.1}/src/demo/DEMdemo_RotatingDrum.cpp +0 -0
  116. {deme-2.3.0 → deme-2.3.1}/src/demo/DEMdemo_Shake.cpp +0 -0
  117. {deme-2.3.0 → deme-2.3.1}/src/demo/DEMdemo_Sieve.cpp +0 -0
  118. {deme-2.3.0 → deme-2.3.1}/src/demo/DEMdemo_SingleSphereCollide.cpp +0 -0
  119. {deme-2.3.0 → deme-2.3.1}/src/demo/DEMdemo_SolarSystem.cpp +0 -0
  120. {deme-2.3.0 → deme-2.3.1}/src/demo/DEMdemo_TestPack.cpp +0 -0
  121. {deme-2.3.0 → deme-2.3.1}/src/demo/DEMdemo_WheelDP.cpp +0 -0
  122. {deme-2.3.0 → deme-2.3.1}/src/demo/DEMdemo_WheelDPSimplified.cpp +0 -0
  123. {deme-2.3.0 → deme-2.3.1}/src/demo/DEMdemo_WheelSlopeSlip.cpp +0 -0
  124. {deme-2.3.0 → deme-2.3.1}/src/demo/pyDEME_BallDrop.py +0 -0
  125. {deme-2.3.0 → deme-2.3.1}/src/demo/pyDEME_BallDrop2D.py +0 -0
  126. {deme-2.3.0 → deme-2.3.1}/src/demo/pyDEME_Centrifuge.py +0 -0
  127. {deme-2.3.0 → deme-2.3.1}/src/demo/pyDEME_ConePenetration.py +0 -0
  128. {deme-2.3.0 → deme-2.3.1}/src/demo/pyDEME_Electrostatic.py +0 -0
  129. {deme-2.3.0 → deme-2.3.1}/src/demo/pyDEME_FlexibleMesh.py +0 -0
  130. {deme-2.3.0 → deme-2.3.1}/src/demo/pyDEME_GRCPrep_Part1.py +0 -0
  131. {deme-2.3.0 → deme-2.3.1}/src/demo/pyDEME_GameOfLife.py +0 -0
  132. {deme-2.3.0 → deme-2.3.1}/src/demo/pyDEME_Mixer.py +0 -0
  133. {deme-2.3.0 → deme-2.3.1}/src/demo/pyDEME_WheelDPSimplified.py +0 -0
  134. {deme-2.3.0 → deme-2.3.1}/src/kernel/CUDAMathHelpers.cuh +0 -0
  135. {deme-2.3.0 → deme-2.3.1}/src/kernel/DEMBinSphereKernels.cu +0 -0
  136. {deme-2.3.0 → deme-2.3.1}/src/kernel/DEMBinTriangleKernels.cu +0 -0
  137. {deme-2.3.0 → deme-2.3.1}/src/kernel/DEMCalcForceKernels.cu +0 -0
  138. {deme-2.3.0 → deme-2.3.1}/src/kernel/DEMCollectForceKernels.cu +0 -0
  139. {deme-2.3.0 → deme-2.3.1}/src/kernel/DEMCollectForceKernels_Compact.cu +0 -0
  140. {deme-2.3.0 → deme-2.3.1}/src/kernel/DEMCollisionKernels.cu +0 -0
  141. {deme-2.3.0 → deme-2.3.1}/src/kernel/DEMContactKernels_SphereSphere.cu +0 -0
  142. {deme-2.3.0 → deme-2.3.1}/src/kernel/DEMContactKernels_SphereTriangle.cu +0 -0
  143. {deme-2.3.0 → deme-2.3.1}/src/kernel/DEMCustomizablePolicies/AnalyticalCompDefJitify.cu +0 -0
  144. {deme-2.3.0 → deme-2.3.1}/src/kernel/DEMCustomizablePolicies/ClumpCompAcqStratAllFlatten.cu +0 -0
  145. {deme-2.3.0 → deme-2.3.1}/src/kernel/DEMCustomizablePolicies/ClumpCompAcqStratAllJitify.cu +0 -0
  146. {deme-2.3.0 → deme-2.3.1}/src/kernel/DEMCustomizablePolicies/ClumpCompAcqStratPartialJitify.cu +0 -0
  147. {deme-2.3.0 → deme-2.3.1}/src/kernel/DEMCustomizablePolicies/ClumpCompDefJitify.cu +0 -0
  148. {deme-2.3.0 → deme-2.3.1}/src/kernel/DEMCustomizablePolicies/ContactInfoWriteBack.cu +0 -0
  149. {deme-2.3.0 → deme-2.3.1}/src/kernel/DEMCustomizablePolicies/ForceInKernelReductionStrat.cu +0 -0
  150. {deme-2.3.0 → deme-2.3.1}/src/kernel/DEMCustomizablePolicies/FrictionlessHertzianForceModel.cu +0 -0
  151. {deme-2.3.0 → deme-2.3.1}/src/kernel/DEMCustomizablePolicies/FullHertzianForceModel.cu +0 -0
  152. {deme-2.3.0 → deme-2.3.1}/src/kernel/DEMCustomizablePolicies/IntegrationVelPassOnCenteredDiff.cu +0 -0
  153. {deme-2.3.0 → deme-2.3.1}/src/kernel/DEMCustomizablePolicies/IntegrationVelPassOnExtendedTaylor.cu +0 -0
  154. {deme-2.3.0 → deme-2.3.1}/src/kernel/DEMCustomizablePolicies/IntegrationVelPassOnForwardEuler.cu +0 -0
  155. {deme-2.3.0 → deme-2.3.1}/src/kernel/DEMCustomizablePolicies/MOIAcqStratFlatten.cu +0 -0
  156. {deme-2.3.0 → deme-2.3.1}/src/kernel/DEMCustomizablePolicies/MOIAcqStratJitify.cu +0 -0
  157. {deme-2.3.0 → deme-2.3.1}/src/kernel/DEMCustomizablePolicies/MOIDefJitify.cu +0 -0
  158. {deme-2.3.0 → deme-2.3.1}/src/kernel/DEMCustomizablePolicies/MassAcqStratFlatten.cu +0 -0
  159. {deme-2.3.0 → deme-2.3.1}/src/kernel/DEMCustomizablePolicies/MassAcqStratJitify.cu +0 -0
  160. {deme-2.3.0 → deme-2.3.1}/src/kernel/DEMCustomizablePolicies/MassDefJitify.cu +0 -0
  161. {deme-2.3.0 → deme-2.3.1}/src/kernel/DEMHelperKernels.cuh +0 -0
  162. {deme-2.3.0 → deme-2.3.1}/src/kernel/DEMHistoryMappingKernels.cu +0 -0
  163. {deme-2.3.0 → deme-2.3.1}/src/kernel/DEMIntegrationKernels.cu +0 -0
  164. {deme-2.3.0 → deme-2.3.1}/src/kernel/DEMMiscKernels.cu +0 -0
  165. {deme-2.3.0 → deme-2.3.1}/src/kernel/DEMModeratorKernels.cu +0 -0
  166. {deme-2.3.0 → deme-2.3.1}/src/kernel/DEMOwnerQueryKernels.cu +0 -0
  167. {deme-2.3.0 → deme-2.3.1}/src/kernel/DEMPrepForceKernels.cu +0 -0
  168. {deme-2.3.0 → deme-2.3.1}/src/kernel/DEMSphereQueryKernels.cu +0 -0
  169. {deme-2.3.0 → deme-2.3.1}/src/kernel/DEMTriangleBoxIntersect.cu +0 -0
  170. {deme-2.3.0 → deme-2.3.1}/src/kernel/DEMUserScripts/ForceModel2D.cu +0 -0
  171. {deme-2.3.0 → deme-2.3.1}/src/kernel/DEMUserScripts/ForceModelMooring.cu +0 -0
  172. {deme-2.3.0 → deme-2.3.1}/src/kernel/DEMUserScripts/ForceModelMooringPosition.cu +0 -0
  173. {deme-2.3.0 → deme-2.3.1}/src/kernel/DEMUserScripts/ForceModelWithCohesion.cu +0 -0
  174. {deme-2.3.0 → deme-2.3.1}/src/kernel/DEMUserScripts/ForceModelWithElectrostatic.cu +0 -0
  175. {deme-2.3.0 → deme-2.3.1}/src/kernel/DEMUserScripts/ForceModelWithFractureModel.cu +0 -0
  176. {deme-2.3.0 → deme-2.3.1}/src/kernel/DEMUserScripts/ForceModelWithGravity.cu +0 -0
  177. {deme-2.3.0 → deme-2.3.1}/src/kernel/hello.cu +0 -0
  178. {deme-2.3.0 → deme-2.3.1}/thirdparty/jitify/.clang-format +0 -0
  179. {deme-2.3.0 → deme-2.3.1}/thirdparty/jitify/.git +0 -0
  180. {deme-2.3.0 → deme-2.3.1}/thirdparty/jitify/.gitignore +0 -0
  181. {deme-2.3.0 → deme-2.3.1}/thirdparty/jitify/Doxyfile +0 -0
  182. {deme-2.3.0 → deme-2.3.1}/thirdparty/jitify/LICENSE +0 -0
  183. {deme-2.3.0 → deme-2.3.1}/thirdparty/jitify/Makefile +0 -0
  184. {deme-2.3.0 → deme-2.3.1}/thirdparty/jitify/README.md +0 -0
  185. {deme-2.3.0 → deme-2.3.1}/thirdparty/jitify/example_headers/class_arg_kernel.cuh +0 -0
  186. {deme-2.3.0 → deme-2.3.1}/thirdparty/jitify/example_headers/constant_header.cuh +0 -0
  187. {deme-2.3.0 → deme-2.3.1}/thirdparty/jitify/example_headers/my_header1.cuh +0 -0
  188. {deme-2.3.0 → deme-2.3.1}/thirdparty/jitify/example_headers/my_header2.cuh +0 -0
  189. {deme-2.3.0 → deme-2.3.1}/thirdparty/jitify/example_headers/my_header3.cuh +0 -0
  190. {deme-2.3.0 → deme-2.3.1}/thirdparty/jitify/jitify.hpp +0 -0
  191. {deme-2.3.0 → deme-2.3.1}/thirdparty/jitify/jitify_example.cpp +0 -0
  192. {deme-2.3.0 → deme-2.3.1}/thirdparty/jitify/jitify_test.cu +0 -0
  193. {deme-2.3.0 → deme-2.3.1}/thirdparty/jitify/nvrtc_cli.cpp +0 -0
  194. {deme-2.3.0 → deme-2.3.1}/thirdparty/jitify/nvrtc_cli_test.sh +0 -0
  195. {deme-2.3.0 → deme-2.3.1}/thirdparty/jitify/stringify.cpp +0 -0
  196. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/.appveyor.yml +0 -0
  197. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/.clang-format +0 -0
  198. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/.clang-tidy +0 -0
  199. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/.cmake-format.yaml +0 -0
  200. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/.codespell-ignore-lines +0 -0
  201. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/.git +0 -0
  202. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/.gitattributes +0 -0
  203. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/.github/CODEOWNERS +0 -0
  204. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/.github/CONTRIBUTING.md +0 -0
  205. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
  206. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/.github/ISSUE_TEMPLATE/config.yml +0 -0
  207. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/.github/dependabot.yml +0 -0
  208. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/.github/labeler.yml +0 -0
  209. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/.github/labeler_merged.yml +0 -0
  210. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/.github/matchers/pylint.json +0 -0
  211. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/.github/pull_request_template.md +0 -0
  212. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/.github/workflows/ci.yml +0 -0
  213. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/.github/workflows/configure.yml +0 -0
  214. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/.github/workflows/format.yml +0 -0
  215. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/.github/workflows/labeler.yml +0 -0
  216. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/.github/workflows/pip.yml +0 -0
  217. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/.github/workflows/upstream.yml +0 -0
  218. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/.gitignore +0 -0
  219. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/.pre-commit-config.yaml +0 -0
  220. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/.readthedocs.yml +0 -0
  221. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/CMakeLists.txt +0 -0
  222. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/LICENSE +0 -0
  223. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/MANIFEST.in +0 -0
  224. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/README.rst +0 -0
  225. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/docs/Doxyfile +0 -0
  226. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/docs/Makefile +0 -0
  227. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/docs/_static/css/custom.css +0 -0
  228. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/docs/advanced/cast/chrono.rst +0 -0
  229. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/docs/advanced/cast/custom.rst +0 -0
  230. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/docs/advanced/cast/eigen.rst +0 -0
  231. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/docs/advanced/cast/functional.rst +0 -0
  232. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/docs/advanced/cast/index.rst +0 -0
  233. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/docs/advanced/cast/overview.rst +0 -0
  234. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/docs/advanced/cast/stl.rst +0 -0
  235. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/docs/advanced/cast/strings.rst +0 -0
  236. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/docs/advanced/classes.rst +0 -0
  237. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/docs/advanced/embedding.rst +0 -0
  238. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/docs/advanced/exceptions.rst +0 -0
  239. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/docs/advanced/functions.rst +0 -0
  240. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/docs/advanced/misc.rst +0 -0
  241. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/docs/advanced/pycpp/index.rst +0 -0
  242. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/docs/advanced/pycpp/numpy.rst +0 -0
  243. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/docs/advanced/pycpp/object.rst +0 -0
  244. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/docs/advanced/pycpp/utilities.rst +0 -0
  245. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/docs/advanced/smart_ptrs.rst +0 -0
  246. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/docs/basics.rst +0 -0
  247. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/docs/benchmark.py +0 -0
  248. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/docs/benchmark.rst +0 -0
  249. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/docs/changelog.rst +0 -0
  250. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/docs/classes.rst +0 -0
  251. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/docs/cmake/index.rst +0 -0
  252. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/docs/compiling.rst +0 -0
  253. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/docs/conf.py +0 -0
  254. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/docs/faq.rst +0 -0
  255. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/docs/index.rst +0 -0
  256. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/docs/installing.rst +0 -0
  257. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/docs/limitations.rst +0 -0
  258. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/docs/pybind11-logo.png +0 -0
  259. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/docs/pybind11_vs_boost_python1.png +0 -0
  260. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/docs/pybind11_vs_boost_python1.svg +0 -0
  261. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/docs/pybind11_vs_boost_python2.png +0 -0
  262. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/docs/pybind11_vs_boost_python2.svg +0 -0
  263. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/docs/reference.rst +0 -0
  264. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/docs/release.rst +0 -0
  265. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/docs/requirements.txt +0 -0
  266. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/docs/upgrade.rst +0 -0
  267. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/include/pybind11/attr.h +0 -0
  268. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/include/pybind11/buffer_info.h +0 -0
  269. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/include/pybind11/cast.h +0 -0
  270. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/include/pybind11/chrono.h +0 -0
  271. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/include/pybind11/common.h +0 -0
  272. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/include/pybind11/complex.h +0 -0
  273. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/include/pybind11/detail/class.h +0 -0
  274. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/include/pybind11/detail/common.h +0 -0
  275. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/include/pybind11/detail/descr.h +0 -0
  276. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/include/pybind11/detail/init.h +0 -0
  277. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/include/pybind11/detail/internals.h +0 -0
  278. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/include/pybind11/detail/type_caster_base.h +0 -0
  279. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/include/pybind11/detail/typeid.h +0 -0
  280. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/include/pybind11/eigen/matrix.h +0 -0
  281. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/include/pybind11/eigen/tensor.h +0 -0
  282. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/include/pybind11/eigen.h +0 -0
  283. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/include/pybind11/embed.h +0 -0
  284. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/include/pybind11/eval.h +0 -0
  285. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/include/pybind11/functional.h +0 -0
  286. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/include/pybind11/gil.h +0 -0
  287. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/include/pybind11/iostream.h +0 -0
  288. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/include/pybind11/numpy.h +0 -0
  289. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/include/pybind11/operators.h +0 -0
  290. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/include/pybind11/options.h +0 -0
  291. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/include/pybind11/pybind11.h +0 -0
  292. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/include/pybind11/pytypes.h +0 -0
  293. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/include/pybind11/stl/filesystem.h +0 -0
  294. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/include/pybind11/stl.h +0 -0
  295. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/include/pybind11/stl_bind.h +0 -0
  296. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/noxfile.py +0 -0
  297. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/pybind11/__init__.py +0 -0
  298. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/pybind11/__main__.py +0 -0
  299. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/pybind11/_version.py +0 -0
  300. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/pybind11/commands.py +0 -0
  301. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/pybind11/py.typed +0 -0
  302. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/pybind11/setup_helpers.py +0 -0
  303. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/pyproject.toml +0 -0
  304. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/setup.cfg +0 -0
  305. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/setup.py +0 -0
  306. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/CMakeLists.txt +0 -0
  307. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/conftest.py +0 -0
  308. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/constructor_stats.h +0 -0
  309. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/cross_module_gil_utils.cpp +0 -0
  310. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/cross_module_interleaved_error_already_set.cpp +0 -0
  311. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/eigen_tensor_avoid_stl_array.cpp +0 -0
  312. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/env.py +0 -0
  313. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/extra_python_package/pytest.ini +0 -0
  314. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/extra_python_package/test_files.py +0 -0
  315. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/extra_setuptools/pytest.ini +0 -0
  316. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/extra_setuptools/test_setuphelper.py +0 -0
  317. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/local_bindings.h +0 -0
  318. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/object.h +0 -0
  319. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/pybind11_cross_module_tests.cpp +0 -0
  320. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/pybind11_tests.cpp +0 -0
  321. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/pybind11_tests.h +0 -0
  322. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/pytest.ini +0 -0
  323. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/requirements.txt +0 -0
  324. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_async.cpp +0 -0
  325. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_async.py +0 -0
  326. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_buffers.cpp +0 -0
  327. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_buffers.py +0 -0
  328. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_builtin_casters.cpp +0 -0
  329. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_builtin_casters.py +0 -0
  330. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_call_policies.cpp +0 -0
  331. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_call_policies.py +0 -0
  332. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_callbacks.cpp +0 -0
  333. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_callbacks.py +0 -0
  334. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_chrono.cpp +0 -0
  335. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_chrono.py +0 -0
  336. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_class.cpp +0 -0
  337. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_class.py +0 -0
  338. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_cmake_build/CMakeLists.txt +0 -0
  339. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_cmake_build/embed.cpp +0 -0
  340. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_cmake_build/installed_embed/CMakeLists.txt +0 -0
  341. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_cmake_build/installed_function/CMakeLists.txt +0 -0
  342. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_cmake_build/installed_target/CMakeLists.txt +0 -0
  343. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_cmake_build/main.cpp +0 -0
  344. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_cmake_build/subdirectory_embed/CMakeLists.txt +0 -0
  345. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_cmake_build/subdirectory_function/CMakeLists.txt +0 -0
  346. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_cmake_build/subdirectory_target/CMakeLists.txt +0 -0
  347. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_cmake_build/test.py +0 -0
  348. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_const_name.cpp +0 -0
  349. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_const_name.py +0 -0
  350. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_constants_and_functions.cpp +0 -0
  351. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_constants_and_functions.py +0 -0
  352. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_copy_move.cpp +0 -0
  353. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_copy_move.py +0 -0
  354. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_custom_type_casters.cpp +0 -0
  355. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_custom_type_casters.py +0 -0
  356. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_custom_type_setup.cpp +0 -0
  357. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_custom_type_setup.py +0 -0
  358. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_docstring_options.cpp +0 -0
  359. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_docstring_options.py +0 -0
  360. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_eigen_matrix.cpp +0 -0
  361. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_eigen_matrix.py +0 -0
  362. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_eigen_tensor.cpp +0 -0
  363. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_eigen_tensor.inl +0 -0
  364. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_eigen_tensor.py +0 -0
  365. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_embed/CMakeLists.txt +0 -0
  366. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_embed/catch.cpp +0 -0
  367. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_embed/external_module.cpp +0 -0
  368. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_embed/test_interpreter.cpp +0 -0
  369. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_embed/test_interpreter.py +0 -0
  370. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_embed/test_trampoline.py +0 -0
  371. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_enum.cpp +0 -0
  372. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_enum.py +0 -0
  373. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_eval.cpp +0 -0
  374. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_eval.py +0 -0
  375. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_eval_call.py +0 -0
  376. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_exceptions.cpp +0 -0
  377. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_exceptions.h +0 -0
  378. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_exceptions.py +0 -0
  379. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_factory_constructors.cpp +0 -0
  380. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_factory_constructors.py +0 -0
  381. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_gil_scoped.cpp +0 -0
  382. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_gil_scoped.py +0 -0
  383. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_iostream.cpp +0 -0
  384. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_iostream.py +0 -0
  385. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_kwargs_and_defaults.cpp +0 -0
  386. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_kwargs_and_defaults.py +0 -0
  387. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_local_bindings.cpp +0 -0
  388. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_local_bindings.py +0 -0
  389. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_methods_and_attributes.cpp +0 -0
  390. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_methods_and_attributes.py +0 -0
  391. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_modules.cpp +0 -0
  392. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_modules.py +0 -0
  393. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_multiple_inheritance.cpp +0 -0
  394. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_multiple_inheritance.py +0 -0
  395. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_numpy_array.cpp +0 -0
  396. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_numpy_array.py +0 -0
  397. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_numpy_dtypes.cpp +0 -0
  398. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_numpy_dtypes.py +0 -0
  399. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_numpy_vectorize.cpp +0 -0
  400. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_numpy_vectorize.py +0 -0
  401. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_opaque_types.cpp +0 -0
  402. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_opaque_types.py +0 -0
  403. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_operator_overloading.cpp +0 -0
  404. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_operator_overloading.py +0 -0
  405. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_pickling.cpp +0 -0
  406. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_pickling.py +0 -0
  407. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_pytypes.cpp +0 -0
  408. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_pytypes.py +0 -0
  409. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_sequences_and_iterators.cpp +0 -0
  410. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_sequences_and_iterators.py +0 -0
  411. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_smart_ptr.cpp +0 -0
  412. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_smart_ptr.py +0 -0
  413. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_stl.cpp +0 -0
  414. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_stl.py +0 -0
  415. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_stl_binders.cpp +0 -0
  416. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_stl_binders.py +0 -0
  417. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_tagbased_polymorphic.cpp +0 -0
  418. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_tagbased_polymorphic.py +0 -0
  419. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_thread.cpp +0 -0
  420. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_thread.py +0 -0
  421. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_union.cpp +0 -0
  422. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_union.py +0 -0
  423. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_virtual_functions.cpp +0 -0
  424. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/test_virtual_functions.py +0 -0
  425. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/valgrind-numpy-scipy.supp +0 -0
  426. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tests/valgrind-python.supp +0 -0
  427. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tools/FindCatch.cmake +0 -0
  428. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tools/FindEigen3.cmake +0 -0
  429. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tools/FindPythonLibsNew.cmake +0 -0
  430. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tools/JoinPaths.cmake +0 -0
  431. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tools/check-style.sh +0 -0
  432. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tools/cmake_uninstall.cmake.in +0 -0
  433. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tools/codespell_ignore_lines_from_errors.py +0 -0
  434. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tools/libsize.py +0 -0
  435. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tools/make_changelog.py +0 -0
  436. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tools/pybind11.pc.in +0 -0
  437. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tools/pybind11Common.cmake +0 -0
  438. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tools/pybind11Config.cmake.in +0 -0
  439. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tools/pybind11NewTools.cmake +0 -0
  440. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tools/pybind11Tools.cmake +0 -0
  441. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tools/pyproject.toml +0 -0
  442. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tools/setup_global.py.in +0 -0
  443. {deme-2.3.0 → deme-2.3.1}/thirdparty/pybind11/tools/setup_main.py.in +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: deme
3
- Version: 2.3.0
3
+ Version: 2.3.1
4
4
  Summary: PyBind Wrapper Library for DEM-Engine
5
5
  Author: Ruochun Zhang
6
6
  Author-email: ruochunz@gmail.com
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: deme
3
- Version: 2.3.0
3
+ Version: 2.3.1
4
4
  Summary: PyBind Wrapper Library for DEM-Engine
5
5
  Author: Ruochun Zhang
6
6
  Author-email: ruochunz@gmail.com
@@ -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.3.0",
155
+ version="2.3.1",
156
156
  author="Ruochun Zhang",
157
157
  author_email="ruochunz@gmail.com",
158
158
  description="PyBind Wrapper Library for DEM-Engine",
@@ -10,6 +10,7 @@
10
10
  #include <set>
11
11
  #include <cfloat>
12
12
  #include <functional>
13
+ #include <memory>
13
14
 
14
15
  #include "kT.h"
15
16
  #include "dT.h"
@@ -49,7 +50,11 @@ class DEMTracker;
49
50
  /// Main DEM-Engine solver.
50
51
  class DEMSolver {
51
52
  public:
53
+ /// Default constructor: scans available GPUs and uses at most 2.
52
54
  DEMSolver(unsigned int nGPUs = 2);
55
+ /// Construct using explicit GPU device IDs. Errors if any ID is unavailable. Warns and uses the first 2 if more
56
+ /// than 2 are given.
57
+ DEMSolver(std::vector<int> device_ids);
53
58
  ~DEMSolver();
54
59
 
55
60
  /// Set output detail level.
@@ -1807,12 +1812,12 @@ class DEMSolver {
1807
1812
  // DEM system's workers, helpers, friends
1808
1813
  ////////////////////////////////////////////////////////////////////////////////
1809
1814
 
1810
- WorkerReportChannel* kTMain_InteractionManager;
1811
- WorkerReportChannel* dTMain_InteractionManager;
1812
- GpuManager* dTkT_GpuManager;
1813
- ThreadManager* dTkT_InteractionManager;
1814
- DEMKinematicThread* kT;
1815
- DEMDynamicThread* dT;
1815
+ std::unique_ptr<GpuManager> dTkT_GpuManager;
1816
+ std::unique_ptr<ThreadManager> dTkT_InteractionManager;
1817
+ std::unique_ptr<WorkerReportChannel> dTMain_InteractionManager;
1818
+ std::unique_ptr<WorkerReportChannel> kTMain_InteractionManager;
1819
+ std::unique_ptr<DEMDynamicThread> dT;
1820
+ std::unique_ptr<DEMKinematicThread> kT;
1816
1821
 
1817
1822
  ////////////////////////////////////////////////////////////////////////////////
1818
1823
  // DEM system's private methods
@@ -579,7 +579,9 @@ void DEMSolver::decideCDMarginStrat() {
579
579
 
580
580
  void DEMSolver::reportInitStats() const {
581
581
  DEME_INFO("\n");
582
- DEME_INFO("Number of total active devices: %d", dTkT_GpuManager->getNumDevices());
582
+
583
+ DEME_INFO("Number of system devices detected: %d", GpuManager::scanNumDevices());
584
+ DEME_INFO("Number of active devices used by DEME: %d", dTkT_GpuManager->getNumDevices());
583
585
 
584
586
  DEME_INFO("User-specified X-dimension range: [%.7g, %.7g]", m_user_box_min.x, m_user_box_max.x);
585
587
  DEME_INFO("User-specified Y-dimension range: [%.7g, %.7g]", m_user_box_min.y, m_user_box_max.y);
@@ -1282,8 +1284,8 @@ void DEMSolver::packDataPointers() {
1282
1284
  kT->packDataPointers();
1283
1285
  // Each worker thread needs pointers used for data transfering. Note this step must be done after packDataPointers
1284
1286
  // are called, so each thread has its own pointers packed.
1285
- dT->packTransferPointers(kT);
1286
- kT->packTransferPointers(dT);
1287
+ dT->packTransferPointers(kT.get());
1288
+ kT->packTransferPointers(dT.get());
1287
1289
  // Finally, the API needs to map all mesh to their owners
1288
1290
  for (const auto& mmesh : m_meshes) {
1289
1291
  m_owner_mesh_map[mmesh->owner] = mmesh->cache_offset;
@@ -1315,21 +1317,21 @@ void DEMSolver::validateUserInputs() {
1315
1317
  // LoadClumpType.");
1316
1318
  // }
1317
1319
 
1318
- // If not 2 GPUs detected, output warnings as needed
1319
- int ndevices = dTkT_GpuManager->getNumDevices();
1320
- if (ndevices == 0) {
1321
- DEME_ERROR(
1322
- "No GPU device is detected. Try lspci and see what you get.\nIf you indeed have GPU devices, maybe you "
1323
- "should try rebooting or reinstalling cuda components?");
1324
- // } else if (ndevices == 1) {
1325
- // DEME_WARNING(
1326
- // "One GPU device is detected. On consumer cards, DEME's performance edge is limited with only one"
1327
- // "GPU.\nTry allocating 2 GPU devices if possible.");
1328
- } else if (ndevices > 2) {
1329
- DEME_WARNING(
1330
- "More than two GPU devices are detected.\nCurrently, DEME can make use of at most two devices.\nMore "
1331
- "devices will not improve the performance.");
1332
- }
1320
+ // // If not 2 GPUs detected, output warnings as needed
1321
+ // int ndevices = dTkT_GpuManager->getNumDevices();
1322
+ // if (ndevices == 0) {
1323
+ // DEME_ERROR(
1324
+ // "No GPU device is detected. Try lspci and see what you get.\nIf you indeed have GPU devices, maybe you "
1325
+ // "should try rebooting or reinstalling cuda components?");
1326
+ // // } else if (ndevices == 1) {
1327
+ // // DEME_WARNING(
1328
+ // // "One GPU device is detected. On consumer cards, DEME's performance edge is limited with only one"
1329
+ // // "GPU.\nTry allocating 2 GPU devices if possible.");
1330
+ // } else if (ndevices > 2) {
1331
+ // DEME_WARNING(
1332
+ // "More than two GPU devices are detected.\nCurrently, DEME can make use of at most two devices.\nMore "
1333
+ // "devices will not improve the performance.");
1334
+ // }
1333
1335
 
1334
1336
  // Box size OK?
1335
1337
  float3 user_box_size = m_user_box_max - m_user_box_min;
@@ -21,36 +21,113 @@
21
21
  namespace deme {
22
22
 
23
23
  DEMSolver::DEMSolver(unsigned int nGPUs) {
24
- dTkT_InteractionManager = new ThreadManager();
25
- kTMain_InteractionManager = new WorkerReportChannel();
26
- dTMain_InteractionManager = new WorkerReportChannel();
24
+ if (nGPUs == 0) {
25
+ DEME_ERROR("DEMSolver was set to use 0 GPUs and that is currently not supported.");
26
+ }
27
27
 
28
- // 2 means 2 threads (nGPUs is currently not used)
29
- dTkT_GpuManager = new GpuManager(2);
28
+ dTkT_InteractionManager = std::make_unique<ThreadManager>();
29
+ kTMain_InteractionManager = std::make_unique<WorkerReportChannel>();
30
+ dTMain_InteractionManager = std::make_unique<WorkerReportChannel>();
30
31
 
31
32
  // Set default solver params
32
33
  setDefaultSolverParams();
33
34
 
35
+ // Determine which device IDs to use: scan available GPUs, use at most 2
36
+ int detected = GpuManager::scanNumDevices();
37
+ if (nGPUs > 2) {
38
+ DEME_WARNING("DEMSolver was requested to use %u GPUs, but at most 2 are supported. Using 2 GPUs.", nGPUs);
39
+ nGPUs = 2;
40
+ }
41
+ // Build a 2-element device ID list (one per thread); both threads share the same device when using 1 GPU
42
+ unsigned int nToUse = std::min((unsigned int)detected, nGPUs);
43
+ std::vector<int> device_ids;
44
+ if (nToUse >= 2) {
45
+ device_ids = {0, 1};
46
+ } else {
47
+ device_ids = {0, 0};
48
+ }
49
+ // Always use id list to avoid GpuManager deciding device usage by itself
50
+ dTkT_GpuManager = std::make_unique<GpuManager>(device_ids);
51
+
34
52
  // Thread-based worker creation may be needed as the workers allocate DualStructs on construction
35
53
  std::thread dT_construct([&]() {
36
54
  // Get a device/stream ID to use from the GPU Manager
37
55
  const GpuManager::StreamInfo dT_stream_info = dTkT_GpuManager->getAvailableStream();
38
56
  DEME_GPU_CALL(cudaSetDevice(dT_stream_info.device));
39
- dT = new DEMDynamicThread(dTMain_InteractionManager, dTkT_InteractionManager, dT_stream_info);
57
+ dT = std::make_unique<DEMDynamicThread>(dTMain_InteractionManager.get(), dTkT_InteractionManager.get(),
58
+ dT_stream_info);
59
+ });
60
+
61
+ std::thread kT_construct([&]() {
62
+ const GpuManager::StreamInfo kT_stream_info = dTkT_GpuManager->getAvailableStream();
63
+ DEME_GPU_CALL(cudaSetDevice(kT_stream_info.device));
64
+ kT = std::make_unique<DEMKinematicThread>(kTMain_InteractionManager.get(), dTkT_InteractionManager.get(),
65
+ kT_stream_info);
66
+ });
67
+
68
+ dT_construct.join();
69
+ kT_construct.join();
70
+
71
+ // Make friends
72
+ dT->kT = kT.get();
73
+ kT->dT = dT.get();
74
+
75
+ // Specify force model
76
+ m_force_model[DEFAULT_FORCE_MODEL_NAME] =
77
+ std::make_shared<DEMForceModel>(std::move(DEMForceModel(FORCE_MODEL::HERTZIAN)));
78
+ }
79
+
80
+ DEMSolver::DEMSolver(std::vector<int> device_ids) {
81
+ dTkT_InteractionManager = std::make_unique<ThreadManager>();
82
+ kTMain_InteractionManager = std::make_unique<WorkerReportChannel>();
83
+ dTMain_InteractionManager = std::make_unique<WorkerReportChannel>();
84
+
85
+ // Set default solver params
86
+ setDefaultSolverParams();
87
+
88
+ // Validate device IDs against the number of physically available GPUs
89
+ int detected = GpuManager::scanNumDevices();
90
+ if (device_ids.empty()) {
91
+ DEME_ERROR("DEMSolver was given an empty device ID list. Please provide at least one device ID.");
92
+ }
93
+ for (int id : device_ids) {
94
+ if (id < 0 || id >= detected) {
95
+ DEME_ERROR("DEMSolver was given device ID %d, but only %d GPU device(s) are available.", id, detected);
96
+ }
97
+ }
98
+ if (device_ids.size() > 2) {
99
+ DEME_WARNING("DEMSolver was given %zu device IDs, but at most 2 are supported. Using only the first 2.",
100
+ device_ids.size());
101
+ device_ids.resize(2);
102
+ }
103
+ // When only one device is specified, both threads run on that device
104
+ if (device_ids.size() == 1) {
105
+ device_ids = {device_ids[0], device_ids[0]};
106
+ }
107
+ // Always use id list to avoid GpuManager deciding device usage by itself
108
+ dTkT_GpuManager = std::make_unique<GpuManager>(device_ids);
109
+
110
+ // Thread-based worker creation may be needed as the workers allocate DualStructs on construction
111
+ std::thread dT_construct([&]() {
112
+ const GpuManager::StreamInfo dT_stream_info = dTkT_GpuManager->getAvailableStream();
113
+ DEME_GPU_CALL(cudaSetDevice(dT_stream_info.device));
114
+ dT = std::make_unique<DEMDynamicThread>(dTMain_InteractionManager.get(), dTkT_InteractionManager.get(),
115
+ dT_stream_info);
40
116
  });
41
117
 
42
118
  std::thread kT_construct([&]() {
43
119
  const GpuManager::StreamInfo kT_stream_info = dTkT_GpuManager->getAvailableStream();
44
120
  DEME_GPU_CALL(cudaSetDevice(kT_stream_info.device));
45
- kT = new DEMKinematicThread(kTMain_InteractionManager, dTkT_InteractionManager, kT_stream_info);
121
+ kT = std::make_unique<DEMKinematicThread>(kTMain_InteractionManager.get(), dTkT_InteractionManager.get(),
122
+ kT_stream_info);
46
123
  });
47
124
 
48
125
  dT_construct.join();
49
126
  kT_construct.join();
50
127
 
51
128
  // Make friends
52
- dT->kT = kT;
53
- kT->dT = dT;
129
+ dT->kT = kT.get();
130
+ kT->dT = dT.get();
54
131
 
55
132
  // Specify force model
56
133
  m_force_model[DEFAULT_FORCE_MODEL_NAME] =
@@ -60,12 +137,12 @@ DEMSolver::DEMSolver(unsigned int nGPUs) {
60
137
  DEMSolver::~DEMSolver() {
61
138
  if (sys_initialized)
62
139
  DoDynamicsThenSync(0.0);
63
- delete kT;
64
- delete dT;
65
- delete kTMain_InteractionManager;
66
- delete dTMain_InteractionManager;
67
- delete dTkT_InteractionManager;
68
- delete dTkT_GpuManager;
140
+ kT.reset();
141
+ dT.reset();
142
+ kTMain_InteractionManager.reset();
143
+ dTMain_InteractionManager.reset();
144
+ dTkT_InteractionManager.reset();
145
+ dTkT_GpuManager.reset();
69
146
  }
70
147
 
71
148
  void DEMSolver::SetVerbosity(const std::string& verbose) {
@@ -1919,13 +1996,13 @@ std::shared_ptr<DEMMeshConnected> DEMSolver::AddWavefrontMeshObject(const std::s
1919
1996
  }
1920
1997
 
1921
1998
  std::shared_ptr<DEMInspector> DEMSolver::CreateInspector(const std::string& quantity) {
1922
- DEMInspector insp(this, this->dT, quantity);
1999
+ DEMInspector insp(this, this->dT.get(), quantity);
1923
2000
  m_inspectors.push_back(std::make_shared<DEMInspector>(std::move(insp)));
1924
2001
  return m_inspectors.back();
1925
2002
  }
1926
2003
 
1927
2004
  std::shared_ptr<DEMInspector> DEMSolver::CreateInspector(const std::string& quantity, const std::string& region) {
1928
- DEMInspector insp(this, this->dT, quantity, region);
2005
+ DEMInspector insp(this, this->dT.get(), quantity, region);
1929
2006
  m_inspectors.push_back(std::make_shared<DEMInspector>(std::move(insp)));
1930
2007
  return m_inspectors.back();
1931
2008
  }
@@ -269,7 +269,7 @@ bodyID_t DEMDynamicThread::getGeoOwnerID(const bodyID_t& geoB, const contact_t&
269
269
  }
270
270
 
271
271
  // packTransferPointers
272
- void DEMDynamicThread::packTransferPointers(DEMKinematicThread*& kT) {
272
+ void DEMDynamicThread::packTransferPointers(DEMKinematicThread* kT) {
273
273
  // These are the pointers for sending data to dT
274
274
  granData->pKTOwnedBuffer_absVel = kT->absVel_buffer.data();
275
275
  granData->pKTOwnedBuffer_voxelID = kT->voxelID_buffer.data();
@@ -575,7 +575,7 @@ class DEMDynamicThread {
575
575
 
576
576
  /// Put sim data array pointers in place
577
577
  void packDataPointers();
578
- void packTransferPointers(DEMKinematicThread*& kT);
578
+ void packTransferPointers(DEMKinematicThread* kT);
579
579
 
580
580
  // Move array data to or from device
581
581
  void migrateDataToDevice();
@@ -525,7 +525,7 @@ void DEMKinematicThread::migrateDeviceModifiableInfoToHost() {
525
525
  migrateFamilyToHost();
526
526
  }
527
527
 
528
- void DEMKinematicThread::packTransferPointers(DEMDynamicThread*& dT) {
528
+ void DEMKinematicThread::packTransferPointers(DEMDynamicThread* dT) {
529
529
  // Set the pointers to dT owned buffers
530
530
  granData->pDTOwnedBuffer_nContactPairs = &(dT->nContactPairs_buffer);
531
531
  granData->pDTOwnedBuffer_idGeometryA = dT->idGeometryA_buffer.data();
@@ -342,7 +342,7 @@ class DEMKinematicThread {
342
342
 
343
343
  // Put sim data array pointers in place
344
344
  void packDataPointers();
345
- void packTransferPointers(DEMDynamicThread*& dT);
345
+ void packTransferPointers(DEMDynamicThread* dT);
346
346
 
347
347
  // Move array data to or from device
348
348
  void migrateDataToDevice();
@@ -53,7 +53,7 @@ target_sources(
53
53
  )
54
54
 
55
55
  # Get a list of supported architectures
56
- include(${CMAKE_SOURCE_DIR}/cmake/CudaSupportedArchitectures.cmake)
56
+ include(../../cmake/CudaSupportedArchitectures.cmake)
57
57
  cuda_supported_architectures()
58
58
 
59
59
  # Convert the cuda supported architectures into their respective CMake properties
@@ -1,4 +1,5 @@
1
1
  #include <algorithm>
2
+ #include <set>
2
3
  #include <stdexcept>
3
4
  #include <iostream>
4
5
 
@@ -32,6 +33,24 @@ GpuManager::GpuManager(unsigned int total_streams) {
32
33
  }
33
34
  }
34
35
 
36
+ GpuManager::GpuManager(const std::vector<int>& device_ids) {
37
+ // ndevices counts distinct physical devices in use
38
+ std::set<int> unique_ids(device_ids.begin(), device_ids.end());
39
+ ndevices = static_cast<int>(unique_ids.size());
40
+
41
+ if (!device_ids.empty()) {
42
+ int max_id = *std::max_element(device_ids.begin(), device_ids.end());
43
+ this->streams.resize(max_id + 1);
44
+ }
45
+
46
+ // Each entry in device_ids creates one stream; duplicate device IDs are intentional and result in multiple
47
+ // streams on the same device (used when both kT and dT threads run on the same physical device).
48
+ for (int dev_id : device_ids) {
49
+ cudaStream_t new_stream = nullptr;
50
+ this->streams[dev_id].push_back(StreamInfo{dev_id, new_stream, false});
51
+ }
52
+ }
53
+
35
54
  // TODO: add CUDA error checking
36
55
  GpuManager::~GpuManager() {
37
56
  for (auto outer = this->streams.begin(); outer != this->streams.end(); outer++) {
@@ -9,6 +9,8 @@
9
9
  class GpuManager {
10
10
  public:
11
11
  GpuManager(unsigned int total_streams = 1);
12
+ // Construct using explicit device IDs (one stream per device ID).
13
+ GpuManager(const std::vector<int>& device_ids);
12
14
  ~GpuManager();
13
15
 
14
16
  struct StreamInfo {
@@ -24,7 +26,7 @@ class GpuManager {
24
26
  // Returns the HIGHEST number of streams per device.
25
27
  unsigned int getMaxStreamsPerDevice();
26
28
 
27
- int scanNumDevices();
29
+ static int scanNumDevices();
28
30
 
29
31
  // DO NOT USE UNLESS YOU INTEND TO MANUALLY HANDLE YOUR STREAMS.
30
32
  const std::vector<StreamInfo>& getStreamsFromDevice(int index);
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
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