sleipnirgroup-jormungandr 0.6.7.dev44__tar.gz → 0.6.7.dev46__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.

Potentially problematic release.


This version of sleipnirgroup-jormungandr might be problematic. Click here for more details.

Files changed (123) hide show
  1. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/PKG-INFO +1 -1
  2. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/include/sleipnir/autodiff/expression.hpp +1 -2
  3. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/include/sleipnir/util/intrusive_shared_ptr.hpp +1 -1
  4. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/include/sleipnir/util/pool.hpp +16 -65
  5. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/python/src/sleipnir/__init__.py +1 -1
  6. sleipnirgroup_jormungandr-0.6.7.dev46/src/util/pool.cpp +79 -0
  7. sleipnirgroup_jormungandr-0.6.7.dev44/src/util/pool.cpp +0 -8
  8. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/CMakeLists.txt +0 -0
  9. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/LICENSE.txt +0 -0
  10. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/README.md +0 -0
  11. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/SleipnirConfig.cmake.in +0 -0
  12. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/cmake/BuildTypes.cmake +0 -0
  13. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/cmake/CompilerFlags.cmake +0 -0
  14. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/cmake/Pybind11Mkdoc.cmake +0 -0
  15. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/cmake/SubdirList.cmake +0 -0
  16. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/cmake/arm-none-eabi.cmake +0 -0
  17. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/include/sleipnir/autodiff/expression_graph.hpp +0 -0
  18. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/include/sleipnir/autodiff/expression_type.hpp +0 -0
  19. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/include/sleipnir/autodiff/gradient.hpp +0 -0
  20. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/include/sleipnir/autodiff/hessian.hpp +0 -0
  21. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/include/sleipnir/autodiff/jacobian.hpp +0 -0
  22. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/include/sleipnir/autodiff/sleipnir_base.hpp +0 -0
  23. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/include/sleipnir/autodiff/slice.hpp +0 -0
  24. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/include/sleipnir/autodiff/variable.hpp +0 -0
  25. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/include/sleipnir/autodiff/variable_block.hpp +0 -0
  26. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/include/sleipnir/autodiff/variable_matrix.hpp +0 -0
  27. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/include/sleipnir/optimization/multistart.hpp +0 -0
  28. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/include/sleipnir/optimization/ocp/dynamics_type.hpp +0 -0
  29. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/include/sleipnir/optimization/ocp/timestep_method.hpp +0 -0
  30. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/include/sleipnir/optimization/ocp/transcription_method.hpp +0 -0
  31. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/include/sleipnir/optimization/ocp.hpp +0 -0
  32. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/include/sleipnir/optimization/problem.hpp +0 -0
  33. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/include/sleipnir/optimization/solver/exit_status.hpp +0 -0
  34. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/include/sleipnir/optimization/solver/ipm.hpp +0 -0
  35. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/include/sleipnir/optimization/solver/ipm_matrix_callbacks.hpp +0 -0
  36. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/include/sleipnir/optimization/solver/iteration_info.hpp +0 -0
  37. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/include/sleipnir/optimization/solver/newton.hpp +0 -0
  38. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/include/sleipnir/optimization/solver/newton_matrix_callbacks.hpp +0 -0
  39. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/include/sleipnir/optimization/solver/options.hpp +0 -0
  40. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/include/sleipnir/optimization/solver/sqp.hpp +0 -0
  41. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/include/sleipnir/optimization/solver/sqp_matrix_callbacks.hpp +0 -0
  42. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/include/sleipnir/optimization/solver/util/all_finite.hpp +0 -0
  43. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/include/sleipnir/optimization/solver/util/append_as_triplets.hpp +0 -0
  44. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/include/sleipnir/optimization/solver/util/bounds.hpp +0 -0
  45. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/include/sleipnir/optimization/solver/util/dense_kkt_solver.hpp +0 -0
  46. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/include/sleipnir/optimization/solver/util/feasibility_restoration.hpp +0 -0
  47. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/include/sleipnir/optimization/solver/util/filter.hpp +0 -0
  48. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/include/sleipnir/optimization/solver/util/fraction_to_the_boundary_rule.hpp +0 -0
  49. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/include/sleipnir/optimization/solver/util/inertia.hpp +0 -0
  50. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/include/sleipnir/optimization/solver/util/kkt_error.hpp +0 -0
  51. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/include/sleipnir/optimization/solver/util/kkt_solver.hpp +0 -0
  52. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/include/sleipnir/optimization/solver/util/problem_scaling.hpp +0 -0
  53. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/include/sleipnir/optimization/solver/util/sparse_inf_norms.hpp +0 -0
  54. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/include/sleipnir/optimization/solver/util/sparse_kkt_solver.hpp +0 -0
  55. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/include/sleipnir/util/assert.hpp +0 -0
  56. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/include/sleipnir/util/concepts.hpp +0 -0
  57. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/include/sleipnir/util/empty.hpp +0 -0
  58. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/include/sleipnir/util/function_ref.hpp +0 -0
  59. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/include/sleipnir/util/print.hpp +0 -0
  60. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/include/sleipnir/util/print_diagnostics.hpp +0 -0
  61. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/include/sleipnir/util/profiler.hpp +0 -0
  62. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/include/sleipnir/util/scope_exit.hpp +0 -0
  63. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/include/sleipnir/util/spy.hpp +0 -0
  64. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/include/sleipnir/util/symbol_exports.hpp +0 -0
  65. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/pyproject.toml +0 -0
  66. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/python/cpp/autodiff/bind_expression_type.cpp +0 -0
  67. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/python/cpp/autodiff/bind_gradient.cpp +0 -0
  68. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/python/cpp/autodiff/bind_hessian.cpp +0 -0
  69. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/python/cpp/autodiff/bind_jacobian.cpp +0 -0
  70. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/python/cpp/autodiff/bind_variable.cpp +0 -0
  71. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/python/cpp/autodiff/bind_variable_block.cpp +0 -0
  72. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/python/cpp/autodiff/bind_variable_matrix.cpp +0 -0
  73. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/python/cpp/binders.hpp +0 -0
  74. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/python/cpp/docstrings.hpp +0 -0
  75. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/python/cpp/for_each_type.hpp +0 -0
  76. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/python/cpp/main.cpp +0 -0
  77. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/python/cpp/optimization/bind_equality_constraints.cpp +0 -0
  78. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/python/cpp/optimization/bind_inequality_constraints.cpp +0 -0
  79. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/python/cpp/optimization/bind_ocp.cpp +0 -0
  80. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/python/cpp/optimization/bind_problem.cpp +0 -0
  81. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/python/cpp/optimization/ocp/bind_dynamics_type.cpp +0 -0
  82. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/python/cpp/optimization/ocp/bind_timestep_method.cpp +0 -0
  83. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/python/cpp/optimization/ocp/bind_transcription_method.cpp +0 -0
  84. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/python/cpp/optimization/solver/bind_exit_status.cpp +0 -0
  85. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/python/cpp/optimization/solver/bind_iteration_info.cpp +0 -0
  86. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/python/cpp/try_cast.hpp +0 -0
  87. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/python/src/sleipnir/autodiff/__init__.py +0 -0
  88. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/python/src/sleipnir/optimization/__init__.py +0 -0
  89. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/python/test/autodiff/gradient_test.py +0 -0
  90. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/python/test/autodiff/hessian_test.py +0 -0
  91. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/python/test/autodiff/jacobian_test.py +0 -0
  92. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/python/test/autodiff/variable_matrix_test.py +0 -0
  93. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/python/test/autodiff/variable_test.py +0 -0
  94. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/python/test/optimization/arm_on_elevator_problem_test.py +0 -0
  95. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/python/test/optimization/cart_pole_ocp_test.py +0 -0
  96. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/python/test/optimization/cart_pole_problem_test.py +0 -0
  97. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/python/test/optimization/cart_pole_util.py +0 -0
  98. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/python/test/optimization/constraints_test.py +0 -0
  99. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/python/test/optimization/decision_variable_test.py +0 -0
  100. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/python/test/optimization/differential_drive_ocp_test.py +0 -0
  101. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/python/test/optimization/differential_drive_problem_test.py +0 -0
  102. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/python/test/optimization/differential_drive_util.py +0 -0
  103. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/python/test/optimization/double_integrator_problem_test.py +0 -0
  104. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/python/test/optimization/flywheel_ocp_test.py +0 -0
  105. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/python/test/optimization/flywheel_problem_test.py +0 -0
  106. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/python/test/optimization/linear_problem_test.py +0 -0
  107. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/python/test/optimization/multistart_test.py +0 -0
  108. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/python/test/optimization/near.py +0 -0
  109. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/python/test/optimization/nonlinear_problem_test.py +0 -0
  110. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/python/test/optimization/problem_spy_test.py +0 -0
  111. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/python/test/optimization/quadratic_problem_test.py +0 -0
  112. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/python/test/optimization/rk4.py +0 -0
  113. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/python/test/optimization/solver/exit_status_test.py +0 -0
  114. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/python/test/optimization/trivial_problem_test.py +0 -0
  115. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/src/autodiff/gradient.cpp +0 -0
  116. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/src/autodiff/hessian.cpp +0 -0
  117. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/src/autodiff/jacobian.cpp +0 -0
  118. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/src/autodiff/variable_matrix.cpp +0 -0
  119. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/src/optimization/ocp.cpp +0 -0
  120. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/src/optimization/problem.cpp +0 -0
  121. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/src/optimization/solver/ipm.cpp +0 -0
  122. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/src/optimization/solver/newton.cpp +0 -0
  123. {sleipnirgroup_jormungandr-0.6.7.dev44 → sleipnirgroup_jormungandr-0.6.7.dev46}/src/optimization/solver/sqp.cpp +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sleipnirgroup-jormungandr
3
- Version: 0.6.7.dev44
3
+ Version: 0.6.7.dev46
4
4
  Summary: Reverse mode autodiff library and NLP solver DSL
5
5
  License-Expression: BSD-3-Clause
6
6
  License-File: LICENSE.txt
@@ -772,8 +772,7 @@ constexpr void dec_ref_count(Expression<Scalar>* expr) {
772
772
  // refcounts, which was already done above.
773
773
  if constexpr (USE_POOL_ALLOCATOR) {
774
774
  auto alloc = global_pool_allocator<Expression<Scalar>>();
775
- std::allocator_traits<decltype(alloc)>::deallocate(
776
- alloc, elem, sizeof(Expression<Scalar>));
775
+ std::allocator_traits<decltype(alloc)>::deallocate(alloc, elem, 1);
777
776
  } else {
778
777
  operator delete(elem);
779
778
  }
@@ -272,7 +272,7 @@ IntrusiveSharedPtr<T> make_intrusive_shared(Args&&... args) {
272
272
  /// @param args Constructor arguments for T.
273
273
  template <typename T, typename Alloc, typename... Args>
274
274
  IntrusiveSharedPtr<T> allocate_intrusive_shared(Alloc alloc, Args&&... args) {
275
- auto ptr = std::allocator_traits<Alloc>::allocate(alloc, sizeof(T));
275
+ auto ptr = std::allocator_traits<Alloc>::allocate(alloc, 1);
276
276
  std::allocator_traits<Alloc>::construct(alloc, ptr,
277
277
  std::forward<Args>(args)...);
278
278
  return IntrusiveSharedPtr<T>{ptr};
@@ -2,7 +2,6 @@
2
2
 
3
3
  #pragma once
4
4
 
5
- #include <algorithm>
6
5
  #include <cstddef>
7
6
  #include <memory>
8
7
 
@@ -24,8 +23,10 @@ class SLEIPNIR_DLLEXPORT PoolResource {
24
23
  /// Constructs a default PoolResource.
25
24
  ///
26
25
  /// @param blocks_per_chunk Number of blocks per chunk of memory.
27
- explicit PoolResource(size_t blocks_per_chunk)
28
- : blocks_per_chunk{blocks_per_chunk} {}
26
+ explicit PoolResource(size_t blocks_per_chunk);
27
+
28
+ /// Destructor.
29
+ ~PoolResource();
29
30
 
30
31
  /// Copy constructor.
31
32
  PoolResource(const PoolResource&) = delete;
@@ -36,12 +37,12 @@ class SLEIPNIR_DLLEXPORT PoolResource {
36
37
  PoolResource& operator=(const PoolResource&) = delete;
37
38
 
38
39
  /// Move constructor.
39
- PoolResource(PoolResource&&) = default;
40
+ PoolResource(PoolResource&&);
40
41
 
41
42
  /// Move assignment operator.
42
43
  ///
43
44
  /// @return This pool resource.
44
- PoolResource& operator=(PoolResource&&) = default;
45
+ PoolResource& operator=(PoolResource&&);
45
46
 
46
47
  /// Returns a block of memory from the pool.
47
48
  ///
@@ -50,27 +51,7 @@ class SLEIPNIR_DLLEXPORT PoolResource {
50
51
  /// than alignof(std::max_align_t).
51
52
  /// @return A block of memory from the pool.
52
53
  [[nodiscard]]
53
- void* allocate(size_t bytes, size_t alignment = alignof(std::max_align_t)) {
54
- // Round up to a multiple of the alignment so consecutive blocks in a chunk
55
- // stay aligned. `alignment` is a power of two, so `alignment - 1` is a mask
56
- // of the bits below it.
57
- //
58
- // 1. Add `alignment - 1` so the round-down in step 4 becomes a round-up
59
- // 2. Create mask `alignment - 1` with every bit below the alignment set
60
- // 3. Invert mask via `~(alignment - 1)` so only higher bits are set
61
- // 4. Bitwise AND to zero out lower bits, rounding down to a multiple of the
62
- // alignment
63
- size_t block_size = (bytes + alignment - 1) & ~(alignment - 1);
64
-
65
- auto& pool = get_pool(block_size);
66
- if (pool.free_list.empty()) {
67
- add_chunk(pool);
68
- }
69
-
70
- auto ptr = pool.free_list.back();
71
- pool.free_list.pop_back();
72
- return ptr;
73
- }
54
+ void* allocate(size_t bytes, size_t alignment = alignof(std::max_align_t));
74
55
 
75
56
  /// Gives a block of memory back to the pool.
76
57
  ///
@@ -80,17 +61,8 @@ class SLEIPNIR_DLLEXPORT PoolResource {
80
61
  /// @param p A pointer to the block of memory.
81
62
  /// @param bytes Number of bytes in the block (unused).
82
63
  /// @param alignment Alignment of the block (unused).
83
- void deallocate(
84
- void* p, [[maybe_unused]] size_t bytes,
85
- [[maybe_unused]] size_t alignment = alignof(std::max_align_t)) {
86
- // Find the last chunk that starts at or before p
87
- auto chunk = std::upper_bound(
88
- m_chunks.begin(), m_chunks.end(), static_cast<std::byte*>(p),
89
- [](const std::byte* ptr, const Chunk& c) { return ptr < c.begin; });
90
- --chunk;
91
-
92
- m_pools[chunk->pool_index].free_list.emplace_back(p);
93
- }
64
+ void deallocate(void* p, size_t bytes,
65
+ size_t alignment = alignof(std::max_align_t));
94
66
 
95
67
  /// Returns true if this pool resource has the same backing storage as
96
68
  /// another.
@@ -144,35 +116,13 @@ class SLEIPNIR_DLLEXPORT PoolResource {
144
116
  ///
145
117
  /// @param block_size Number of bytes per block.
146
118
  /// @return The pool for the given block size.
147
- Pool& get_pool(size_t block_size) {
148
- for (auto& pool : m_pools) {
149
- if (pool.block_size == block_size) {
150
- return pool;
151
- }
152
- }
153
-
154
- return m_pools.emplace_back(Pool{block_size, {}});
155
- }
119
+ Pool& get_pool(size_t block_size);
156
120
 
157
121
  /// Adds a memory chunk to the given pool, partitions it into blocks with the
158
122
  /// pool's block size, and appends pointers to them to the pool's free list.
159
123
  ///
160
124
  /// @param pool The pool.
161
- void add_chunk(Pool& pool) {
162
- auto begin =
163
- m_buffer.emplace_back(new std::byte[pool.block_size * blocks_per_chunk])
164
- .get();
165
-
166
- size_t pool_index = &pool - m_pools.data();
167
- auto pos = std::upper_bound(
168
- m_chunks.begin(), m_chunks.end(), begin,
169
- [](const std::byte* ptr, const Chunk& c) { return ptr < c.begin; });
170
- m_chunks.insert(pos, Chunk{begin, pool_index});
171
-
172
- for (int i = blocks_per_chunk - 1; i >= 0; --i) {
173
- pool.free_list.emplace_back(begin + pool.block_size * i);
174
- }
175
- }
125
+ void add_chunk(Pool& pool);
176
126
  };
177
127
 
178
128
  /// This class is an allocator for the pool resource.
@@ -199,19 +149,20 @@ class PoolAllocator {
199
149
 
200
150
  /// Returns a block of memory from the pool.
201
151
  ///
202
- /// @param n Number of bytes in the block.
152
+ /// @param n Number of objects in the block.
203
153
  /// @return A block of memory from the pool.
204
154
  [[nodiscard]]
205
155
  constexpr T* allocate(size_t n) {
206
- return static_cast<T*>(m_memory_resource->allocate(n, alignof(T)));
156
+ return static_cast<T*>(
157
+ m_memory_resource->allocate(n * sizeof(T), alignof(T)));
207
158
  }
208
159
 
209
160
  /// Gives a block of memory back to the pool.
210
161
  ///
211
162
  /// @param p A pointer to the block of memory.
212
- /// @param n Number of bytes in the block.
163
+ /// @param n Number of objects in the block.
213
164
  constexpr void deallocate(T* p, size_t n) {
214
- m_memory_resource->deallocate(p, n, alignof(T));
165
+ m_memory_resource->deallocate(p, n * sizeof(T), alignof(T));
215
166
  }
216
167
 
217
168
  private:
@@ -2,4 +2,4 @@
2
2
 
3
3
  from ._sleipnir import *
4
4
 
5
- __version__ = "0.6.7.dev44"
5
+ __version__ = "0.6.7.dev46"
@@ -0,0 +1,79 @@
1
+ // Copyright (c) Sleipnir contributors
2
+
3
+ #include "sleipnir/util/pool.hpp"
4
+
5
+ #include <algorithm>
6
+ #include <cstddef>
7
+
8
+ slp::PoolResource::PoolResource(size_t blocks_per_chunk)
9
+ : blocks_per_chunk{blocks_per_chunk} {}
10
+
11
+ slp::PoolResource::~PoolResource() = default;
12
+
13
+ slp::PoolResource::PoolResource(PoolResource&&) = default;
14
+
15
+ slp::PoolResource& slp::PoolResource::operator=(PoolResource&&) = default;
16
+
17
+ void* slp::PoolResource::allocate(size_t bytes, size_t alignment) {
18
+ // Round up to a multiple of the alignment so consecutive blocks in a chunk
19
+ // stay aligned. `alignment` is a power of two, so `alignment - 1` is a mask
20
+ // of the bits below it.
21
+ //
22
+ // 1. Add `alignment - 1` so the round-down in step 4 becomes a round-up
23
+ // 2. Create mask `alignment - 1` with every bit below the alignment set
24
+ // 3. Invert mask via `~(alignment - 1)` so only higher bits are set
25
+ // 4. Bitwise AND to zero out lower bits, rounding down to a multiple of the
26
+ // alignment
27
+ size_t block_size = (bytes + alignment - 1) & ~(alignment - 1);
28
+
29
+ auto& pool = get_pool(block_size);
30
+ if (pool.free_list.empty()) {
31
+ add_chunk(pool);
32
+ }
33
+
34
+ auto ptr = pool.free_list.back();
35
+ pool.free_list.pop_back();
36
+ return ptr;
37
+ }
38
+
39
+ void slp::PoolResource::deallocate(void* p, [[maybe_unused]] size_t bytes,
40
+ [[maybe_unused]] size_t alignment) {
41
+ // Find the last chunk that starts at or before p
42
+ auto chunk = std::upper_bound(
43
+ m_chunks.begin(), m_chunks.end(), static_cast<std::byte*>(p),
44
+ [](const std::byte* ptr, const Chunk& c) { return ptr < c.begin; });
45
+ --chunk;
46
+
47
+ m_pools[chunk->pool_index].free_list.emplace_back(p);
48
+ }
49
+
50
+ slp::PoolResource::Pool& slp::PoolResource::get_pool(size_t block_size) {
51
+ for (auto& pool : m_pools) {
52
+ if (pool.block_size == block_size) {
53
+ return pool;
54
+ }
55
+ }
56
+
57
+ return m_pools.emplace_back(Pool{block_size, {}});
58
+ }
59
+
60
+ void slp::PoolResource::add_chunk(Pool& pool) {
61
+ auto begin =
62
+ m_buffer.emplace_back(new std::byte[pool.block_size * blocks_per_chunk])
63
+ .get();
64
+
65
+ size_t pool_index = &pool - m_pools.data();
66
+ auto pos = std::upper_bound(
67
+ m_chunks.begin(), m_chunks.end(), begin,
68
+ [](const std::byte* ptr, const Chunk& c) { return ptr < c.begin; });
69
+ m_chunks.insert(pos, Chunk{begin, pool_index});
70
+
71
+ for (int i = blocks_per_chunk - 1; i >= 0; --i) {
72
+ pool.free_list.emplace_back(begin + pool.block_size * i);
73
+ }
74
+ }
75
+
76
+ slp::PoolResource& slp::global_pool_resource() {
77
+ thread_local PoolResource pool{16384};
78
+ return pool;
79
+ }
@@ -1,8 +0,0 @@
1
- // Copyright (c) Sleipnir contributors
2
-
3
- #include "sleipnir/util/pool.hpp"
4
-
5
- slp::PoolResource& slp::global_pool_resource() {
6
- thread_local PoolResource pool{16384};
7
- return pool;
8
- }