casadi 3.6.5__cp39-none-manylinux2014_x86_64.whl → 3.6.7__cp39-none-manylinux2014_x86_64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (429) hide show
  1. casadi/_casadi.so +0 -0
  2. casadi/casadi.py +739 -308
  3. casadi/cbc +0 -0
  4. casadi/clp +0 -0
  5. casadi/cmake/casadi-config-version.cmake +1 -1
  6. casadi/cmake/highs/highs-config.cmake +6 -13
  7. casadi/cmake/highs/highs-targets-release.cmake +13 -13
  8. casadi/cmake/highs/highs-targets.cmake +13 -10
  9. casadi/highs +0 -0
  10. casadi/include/casadi/casadi.i +3 -0
  11. casadi/include/casadi/casadi_c.h +2 -0
  12. casadi/include/casadi/config.h +8 -8
  13. casadi/include/casadi/core/casadi_common.hpp +1 -0
  14. casadi/include/casadi/core/casadi_misc.hpp +52 -0
  15. casadi/include/casadi/core/casadi_types.hpp +3 -2
  16. casadi/include/casadi/core/code_generator.hpp +30 -1
  17. casadi/include/casadi/core/global_options.hpp +2 -0
  18. casadi/include/casadi/core/mx.hpp +18 -3
  19. casadi/include/casadi/core/optistack.hpp +23 -0
  20. casadi/include/casadi/core/runtime/casadi_nlp.hpp +19 -4
  21. casadi/include/casadi/core/runtime/casadi_ocp_block.hpp +55 -0
  22. casadi/include/casadi/core/runtime/casadi_oracle.hpp +44 -0
  23. casadi/include/casadi/core/runtime/casadi_oracle_callback.hpp +39 -0
  24. casadi/include/casadi/core/runtime/casadi_runtime.hpp +4 -1
  25. casadi/include/casadi/core/runtime/casadi_scaled_copy.hpp +31 -0
  26. casadi/include/casadi/core/serializing_stream.hpp +2 -2
  27. casadi/include/casadi/core/sparsity.hpp +7 -0
  28. casadi/include/casadi/doc.i +1513 -1016
  29. casadi/include/casadi/doc_merged.i +965 -719
  30. casadi/include/casadi/mem.h +1 -0
  31. casadi/include/daqp/api.h +46 -0
  32. casadi/include/daqp/auxiliary.h +29 -0
  33. casadi/include/daqp/bnb.h +32 -0
  34. casadi/include/daqp/codegen.h +18 -0
  35. casadi/include/daqp/constants.h +92 -0
  36. casadi/include/daqp/daqp.h +22 -0
  37. casadi/include/daqp/daqp_prox.h +18 -0
  38. casadi/include/daqp/factorization.h +18 -0
  39. casadi/include/daqp/types.h +161 -0
  40. casadi/include/daqp/utils.h +44 -0
  41. casadi/include/fatrop/auxiliary/Common.hpp +34 -0
  42. casadi/include/fatrop/auxiliary/DynamicLib.hpp +34 -0
  43. casadi/include/fatrop/auxiliary/FatropOptions.hpp +68 -0
  44. casadi/include/fatrop/auxiliary/FatropVector.hpp +143 -0
  45. casadi/include/fatrop/auxiliary/LinearAlgebra.hpp +88 -0
  46. casadi/include/fatrop/auxiliary/VectorUtils.hpp +54 -0
  47. casadi/include/fatrop/blasfeo_wrapper/LinearAlgebraBlasfeo.hpp +493 -0
  48. casadi/include/fatrop/fatrop.hpp +39 -0
  49. casadi/include/fatrop/function_evaluation/CasadiCodegen.hpp +104 -0
  50. casadi/include/fatrop/function_evaluation/FunctionEvaluation.hpp +60 -0
  51. casadi/include/fatrop/json/json.h +946 -0
  52. casadi/include/fatrop/ocp/CasadiCApiUserdataWrap.hpp +87 -0
  53. casadi/include/fatrop/ocp/DuInfEvaluator.hpp +38 -0
  54. casadi/include/fatrop/ocp/FatropOCP.hpp +161 -0
  55. casadi/include/fatrop/ocp/FatropOCPBuilder.hpp +52 -0
  56. casadi/include/fatrop/ocp/FatropOCPResto.hpp +299 -0
  57. casadi/include/fatrop/ocp/OCP.hpp +82 -0
  58. casadi/include/fatrop/ocp/OCPAbstract.hpp +254 -0
  59. casadi/include/fatrop/ocp/OCPAdapter.hpp +197 -0
  60. casadi/include/fatrop/ocp/OCPCInterface.h +289 -0
  61. casadi/include/fatrop/ocp/OCPDims.hpp +60 -0
  62. casadi/include/fatrop/ocp/OCPInitializer.hpp +41 -0
  63. casadi/include/fatrop/ocp/OCPKKT.hpp +69 -0
  64. casadi/include/fatrop/ocp/OCPLSRiccati.hpp +198 -0
  65. casadi/include/fatrop/ocp/OCPLSScaler.hpp +66 -0
  66. casadi/include/fatrop/ocp/OCPLinearSolver.hpp +75 -0
  67. casadi/include/fatrop/ocp/OCPNoScaling.hpp +42 -0
  68. casadi/include/fatrop/ocp/OCPScalingMethod.hpp +42 -0
  69. casadi/include/fatrop/ocp/StageOCP.hpp +592 -0
  70. casadi/include/fatrop/ocp/StageOCPApplication.hpp +242 -0
  71. casadi/include/fatrop/ocp/StageOCPExpressions.hpp +182 -0
  72. casadi/include/fatrop/ocp/UStageEvalAbstract.hpp +168 -0
  73. casadi/include/fatrop/ocp/UStageOCPImpl.hpp +152 -0
  74. casadi/include/fatrop/quasi_newton/bfgs.hpp +159 -0
  75. casadi/include/fatrop/solver/AlgBuilder.hpp +76 -0
  76. casadi/include/fatrop/solver/AlgStrategy.hpp +33 -0
  77. casadi/include/fatrop/solver/FatropAlg.hpp +121 -0
  78. casadi/include/fatrop/solver/FatropData.hpp +188 -0
  79. casadi/include/fatrop/solver/FatropOptions.hpp +95 -0
  80. casadi/include/fatrop/solver/FatropPrinter.hpp +65 -0
  81. casadi/include/fatrop/solver/FatropStats.hpp +63 -0
  82. casadi/include/fatrop/solver/Filter.hpp +54 -0
  83. casadi/include/fatrop/solver/IterationData.hpp +56 -0
  84. casadi/include/fatrop/solver/LineSearch.hpp +86 -0
  85. casadi/include/fatrop/solver/NLPL1.hpp +263 -0
  86. casadi/include/fatrop/templates/NLPAlg.hpp +104 -0
  87. casadi/include/highs/HConfig.h +6 -5
  88. casadi/include/highs/Highs.h +93 -23
  89. casadi/include/highs/filereaderlp/def.hpp +19 -0
  90. casadi/include/highs/interfaces/highs_c_api.h +200 -24
  91. casadi/include/highs/io/Filereader.h +1 -1
  92. casadi/include/highs/io/FilereaderEms.h +1 -1
  93. casadi/include/highs/io/FilereaderLp.h +1 -1
  94. casadi/include/highs/io/FilereaderMps.h +1 -1
  95. casadi/include/highs/io/HMPSIO.h +1 -1
  96. casadi/include/highs/io/HMpsFF.h +5 -3
  97. casadi/include/highs/io/HighsIO.h +18 -8
  98. casadi/include/highs/io/LoadOptions.h +1 -1
  99. casadi/include/highs/ipm/IpxSolution.h +35 -0
  100. casadi/include/highs/ipm/IpxWrapper.h +1 -1
  101. casadi/include/highs/ipm/basiclu/basiclu.h +161 -0
  102. casadi/include/highs/ipm/basiclu/basiclu_factorize.h +247 -0
  103. casadi/include/highs/ipm/basiclu/basiclu_get_factors.h +108 -0
  104. casadi/include/highs/ipm/basiclu/basiclu_initialize.h +119 -0
  105. casadi/include/highs/ipm/basiclu/basiclu_obj_factorize.h +34 -0
  106. casadi/include/highs/ipm/basiclu/basiclu_obj_free.h +19 -0
  107. casadi/include/highs/ipm/basiclu/basiclu_obj_get_factors.h +34 -0
  108. casadi/include/highs/ipm/basiclu/basiclu_obj_initialize.h +46 -0
  109. casadi/include/highs/ipm/basiclu/basiclu_obj_solve_dense.h +29 -0
  110. casadi/include/highs/ipm/basiclu/basiclu_obj_solve_for_update.h +42 -0
  111. casadi/include/highs/ipm/basiclu/basiclu_obj_solve_sparse.h +32 -0
  112. casadi/include/highs/ipm/basiclu/basiclu_obj_update.h +31 -0
  113. casadi/include/highs/ipm/basiclu/basiclu_object.h +30 -0
  114. casadi/include/highs/ipm/basiclu/basiclu_solve_dense.h +75 -0
  115. casadi/include/highs/ipm/basiclu/basiclu_solve_for_update.h +169 -0
  116. casadi/include/highs/ipm/basiclu/basiclu_solve_sparse.h +112 -0
  117. casadi/include/highs/ipm/basiclu/basiclu_update.h +125 -0
  118. casadi/include/highs/ipm/basiclu/lu_def.h +39 -0
  119. casadi/include/highs/ipm/basiclu/lu_file.h +21 -0
  120. casadi/include/highs/ipm/basiclu/lu_internal.h +220 -0
  121. casadi/include/highs/ipm/basiclu/lu_list.h +168 -0
  122. casadi/include/highs/ipm/ipx/basiclu_kernel.h +20 -0
  123. casadi/include/highs/ipm/ipx/basiclu_wrapper.h +47 -0
  124. casadi/include/highs/ipm/ipx/basis.h +351 -0
  125. casadi/include/highs/ipm/ipx/conjugate_residuals.h +74 -0
  126. casadi/include/highs/ipm/ipx/control.h +163 -0
  127. casadi/include/highs/ipm/ipx/crossover.h +157 -0
  128. casadi/include/highs/ipm/ipx/diagonal_precond.h +45 -0
  129. casadi/include/highs/ipm/ipx/forrest_tomlin.h +102 -0
  130. casadi/include/highs/ipm/ipx/guess_basis.h +21 -0
  131. casadi/include/highs/ipm/ipx/indexed_vector.h +113 -0
  132. casadi/include/highs/ipm/ipx/info.h +27 -0
  133. casadi/include/highs/ipm/ipx/ipm.h +94 -0
  134. casadi/include/highs/ipm/ipx/ipx_c.h +47 -0
  135. casadi/include/highs/ipm/ipx/ipx_config.h +9 -0
  136. casadi/include/highs/ipm/ipx/ipx_info.h +111 -0
  137. casadi/include/highs/ipm/ipx/ipx_internal.h +88 -0
  138. casadi/include/highs/ipm/ipx/ipx_parameters.h +75 -0
  139. casadi/include/highs/ipm/ipx/ipx_status.h +57 -0
  140. casadi/include/highs/ipm/ipx/iterate.h +328 -0
  141. casadi/include/highs/ipm/ipx/kkt_solver.h +70 -0
  142. casadi/include/highs/ipm/ipx/kkt_solver_basis.h +66 -0
  143. casadi/include/highs/ipm/ipx/kkt_solver_diag.h +48 -0
  144. casadi/include/highs/ipm/ipx/linear_operator.h +26 -0
  145. casadi/include/highs/ipm/ipx/lp_solver.h +201 -0
  146. casadi/include/highs/ipm/ipx/lu_factorization.h +79 -0
  147. casadi/include/highs/ipm/ipx/lu_update.h +129 -0
  148. casadi/include/highs/ipm/ipx/maxvolume.h +54 -0
  149. casadi/include/highs/ipm/ipx/model.h +409 -0
  150. casadi/include/highs/ipm/ipx/multistream.h +52 -0
  151. casadi/include/highs/ipm/ipx/normal_matrix.h +44 -0
  152. casadi/include/highs/ipm/ipx/power_method.h +44 -0
  153. casadi/include/highs/ipm/ipx/sparse_matrix.h +195 -0
  154. casadi/include/highs/ipm/ipx/sparse_utils.h +58 -0
  155. casadi/include/highs/ipm/ipx/splitted_normal_matrix.h +63 -0
  156. casadi/include/highs/ipm/ipx/starting_basis.h +39 -0
  157. casadi/include/highs/ipm/ipx/symbolic_invert.h +29 -0
  158. casadi/include/highs/ipm/ipx/timer.h +24 -0
  159. casadi/include/highs/ipm/ipx/utils.h +39 -0
  160. casadi/include/highs/lp_data/HConst.h +20 -10
  161. casadi/include/highs/lp_data/HStruct.h +23 -1
  162. casadi/include/highs/lp_data/HighsAnalysis.h +1 -1
  163. casadi/include/highs/lp_data/HighsCallback.h +10 -3
  164. casadi/include/highs/lp_data/HighsCallbackStruct.h +31 -5
  165. casadi/include/highs/lp_data/HighsDebug.h +1 -1
  166. casadi/include/highs/lp_data/HighsInfo.h +20 -2
  167. casadi/include/highs/lp_data/HighsInfoDebug.h +1 -1
  168. casadi/include/highs/lp_data/HighsLp.h +17 -1
  169. casadi/include/highs/lp_data/HighsLpSolverObject.h +1 -1
  170. casadi/include/highs/lp_data/HighsLpUtils.h +19 -19
  171. casadi/include/highs/lp_data/HighsModelUtils.h +1 -1
  172. casadi/include/highs/lp_data/HighsOptions.h +237 -10
  173. casadi/include/highs/lp_data/HighsRanging.h +1 -1
  174. casadi/include/highs/lp_data/HighsRuntimeOptions.h +2 -2
  175. casadi/include/highs/lp_data/HighsSolution.h +2 -2
  176. casadi/include/highs/lp_data/HighsSolutionDebug.h +1 -1
  177. casadi/include/highs/lp_data/HighsSolve.h +3 -1
  178. casadi/include/highs/lp_data/HighsStatus.h +1 -1
  179. casadi/include/highs/mip/HighsCliqueTable.h +4 -4
  180. casadi/include/highs/mip/HighsConflictPool.h +1 -1
  181. casadi/include/highs/mip/HighsCutGeneration.h +1 -1
  182. casadi/include/highs/mip/HighsCutPool.h +2 -2
  183. casadi/include/highs/mip/HighsDebugSol.h +22 -29
  184. casadi/include/highs/mip/HighsDomain.h +10 -2
  185. casadi/include/highs/mip/HighsDomainChange.h +1 -1
  186. casadi/include/highs/mip/HighsDynamicRowMatrix.h +5 -3
  187. casadi/include/highs/mip/HighsGFkSolve.h +3 -3
  188. casadi/include/highs/mip/HighsImplications.h +3 -3
  189. casadi/include/highs/mip/HighsLpAggregator.h +1 -1
  190. casadi/include/highs/mip/HighsLpRelaxation.h +6 -1
  191. casadi/include/highs/mip/HighsMipSolver.h +4 -2
  192. casadi/include/highs/mip/HighsMipSolverData.h +47 -4
  193. casadi/include/highs/mip/HighsModkSeparator.h +2 -2
  194. casadi/include/highs/mip/HighsNodeQueue.h +5 -3
  195. casadi/include/highs/mip/HighsObjectiveFunction.h +1 -1
  196. casadi/include/highs/mip/HighsPathSeparator.h +2 -2
  197. casadi/include/highs/mip/HighsPrimalHeuristics.h +1 -1
  198. casadi/include/highs/mip/HighsPseudocost.h +35 -23
  199. casadi/include/highs/mip/HighsRedcostFixing.h +1 -1
  200. casadi/include/highs/mip/HighsSearch.h +2 -1
  201. casadi/include/highs/mip/HighsSeparation.h +1 -1
  202. casadi/include/highs/mip/HighsSeparator.h +1 -1
  203. casadi/include/highs/mip/HighsTableauSeparator.h +1 -1
  204. casadi/include/highs/mip/HighsTransformedLp.h +1 -1
  205. casadi/include/highs/model/HighsHessian.h +5 -0
  206. casadi/include/highs/model/HighsHessianUtils.h +2 -0
  207. casadi/include/highs/model/HighsModel.h +10 -1
  208. casadi/include/highs/parallel/HighsMutex.h +2 -1
  209. casadi/include/highs/parallel/HighsParallel.h +7 -2
  210. casadi/include/highs/parallel/HighsTask.h +1 -2
  211. casadi/include/highs/pdlp/CupdlpWrapper.h +93 -0
  212. casadi/include/highs/pdlp/cupdlp/cupdlp_cs.h +41 -0
  213. casadi/include/highs/pdlp/cupdlp/cupdlp_defs.h +423 -0
  214. casadi/include/highs/pdlp/cupdlp/cupdlp_linalg.h +183 -0
  215. casadi/include/highs/pdlp/cupdlp/cupdlp_proj.h +19 -0
  216. casadi/include/highs/pdlp/cupdlp/cupdlp_restart.h +31 -0
  217. casadi/include/highs/pdlp/cupdlp/cupdlp_scaling_cuda.h +28 -0
  218. casadi/include/highs/pdlp/cupdlp/cupdlp_solver.h +98 -0
  219. casadi/include/highs/pdlp/cupdlp/cupdlp_step.h +33 -0
  220. casadi/include/highs/pdlp/cupdlp/cupdlp_utils.c +1726 -0
  221. casadi/include/highs/pdqsort/pdqsort.h +532 -0
  222. casadi/include/highs/presolve/HPresolve.h +27 -14
  223. casadi/include/highs/presolve/HPresolveAnalysis.h +1 -1
  224. casadi/include/highs/presolve/HighsPostsolveStack.h +92 -68
  225. casadi/include/highs/presolve/HighsSymmetry.h +6 -5
  226. casadi/include/highs/presolve/ICrash.h +8 -2
  227. casadi/include/highs/presolve/ICrashUtil.h +1 -1
  228. casadi/include/highs/presolve/ICrashX.h +1 -1
  229. casadi/include/highs/presolve/PresolveComponent.h +1 -1
  230. casadi/include/highs/qpsolver/a_asm.hpp +23 -12
  231. casadi/include/highs/qpsolver/a_quass.hpp +8 -1
  232. casadi/include/highs/qpsolver/basis.hpp +150 -0
  233. casadi/include/highs/qpsolver/crashsolution.hpp +12 -0
  234. casadi/include/highs/qpsolver/dantzigpricing.hpp +72 -0
  235. casadi/include/highs/qpsolver/devexpricing.hpp +99 -0
  236. casadi/include/highs/qpsolver/eventhandler.hpp +23 -0
  237. casadi/include/highs/qpsolver/factor.hpp +400 -0
  238. casadi/include/highs/qpsolver/feasibility_bounded.hpp +105 -0
  239. casadi/include/highs/qpsolver/feasibility_highs.hpp +270 -0
  240. casadi/include/highs/qpsolver/gradient.hpp +39 -0
  241. casadi/include/highs/qpsolver/instance.hpp +63 -0
  242. casadi/include/highs/qpsolver/matrix.hpp +335 -0
  243. casadi/include/highs/qpsolver/pricing.hpp +15 -0
  244. casadi/include/highs/qpsolver/qpconst.hpp +27 -0
  245. casadi/include/highs/qpsolver/{vector.hpp → qpvector.hpp} +25 -25
  246. casadi/include/highs/qpsolver/quass.hpp +1 -1
  247. casadi/include/highs/qpsolver/ratiotest.hpp +19 -0
  248. casadi/include/highs/qpsolver/runtime.hpp +38 -0
  249. casadi/include/highs/qpsolver/settings.hpp +57 -0
  250. casadi/include/highs/qpsolver/snippets.hpp +29 -0
  251. casadi/include/highs/qpsolver/statistics.hpp +23 -0
  252. casadi/include/highs/qpsolver/steepestedgepricing.hpp +167 -0
  253. casadi/include/highs/simplex/HApp.h +1 -1
  254. casadi/include/highs/simplex/HEkk.h +52 -18
  255. casadi/include/highs/simplex/HEkkDual.h +1 -1
  256. casadi/include/highs/simplex/HEkkDualRHS.h +6 -7
  257. casadi/include/highs/simplex/HEkkDualRow.h +2 -2
  258. casadi/include/highs/simplex/HEkkPrimal.h +6 -1
  259. casadi/include/highs/simplex/HSimplex.h +1 -3
  260. casadi/include/highs/simplex/HSimplexDebug.h +1 -1
  261. casadi/include/highs/simplex/HSimplexNla.h +1 -1
  262. casadi/include/highs/simplex/HSimplexReport.h +1 -1
  263. casadi/include/highs/simplex/HighsSimplexAnalysis.h +228 -100
  264. casadi/include/highs/simplex/SimplexConst.h +1 -1
  265. casadi/include/highs/simplex/SimplexStruct.h +2 -2
  266. casadi/include/highs/simplex/SimplexTimer.h +1 -1
  267. casadi/include/highs/test/DevKkt.h +1 -1
  268. casadi/include/highs/test/KktCh2.h +1 -1
  269. casadi/include/highs/util/FactorTimer.h +1 -1
  270. casadi/include/highs/util/HFactor.h +35 -6
  271. casadi/include/highs/util/HFactorConst.h +1 -1
  272. casadi/include/highs/util/HFactorDebug.h +1 -1
  273. casadi/include/highs/util/HSet.h +1 -1
  274. casadi/include/highs/util/HVector.h +1 -1
  275. casadi/include/highs/util/HVectorBase.h +1 -1
  276. casadi/include/highs/util/HighsCDouble.h +3 -3
  277. casadi/include/highs/util/HighsComponent.h +1 -1
  278. casadi/include/highs/util/HighsDataStack.h +4 -4
  279. casadi/include/highs/util/HighsDisjointSets.h +1 -1
  280. casadi/include/highs/util/HighsHash.h +28 -21
  281. casadi/include/highs/util/HighsHashTree.h +63 -63
  282. casadi/include/highs/util/HighsInt.h +1 -1
  283. casadi/include/highs/util/HighsIntegers.h +8 -9
  284. casadi/include/highs/util/HighsLinearSumBounds.h +1 -1
  285. casadi/include/highs/util/HighsMatrixPic.h +1 -1
  286. casadi/include/highs/util/HighsMatrixSlice.h +9 -6
  287. casadi/include/highs/util/HighsMatrixUtils.h +1 -1
  288. casadi/include/highs/util/HighsMemoryAllocation.h +55 -0
  289. casadi/include/highs/util/HighsRandom.h +27 -15
  290. casadi/include/highs/util/HighsRbTree.h +2 -2
  291. casadi/include/highs/util/HighsSort.h +7 -7
  292. casadi/include/highs/util/HighsSparseMatrix.h +5 -2
  293. casadi/include/highs/util/HighsSparseVectorSum.h +2 -2
  294. casadi/include/highs/util/HighsSplay.h +1 -1
  295. casadi/include/highs/util/HighsTimer.h +18 -9
  296. casadi/include/highs/util/HighsUtils.h +15 -8
  297. casadi/include/highs/util/stringutil.h +9 -4
  298. casadi/include/highs/zstr/strict_fstream.hpp +237 -0
  299. casadi/include/highs/zstr/zstr.hpp +472 -0
  300. casadi/include/highs_export.h +42 -0
  301. casadi/include/licenses/daqp-external/LICENSE +21 -0
  302. casadi/include/licenses/fatrop-external/LICENSE.txt +165 -0
  303. casadi/include/licenses/fatrop-external/external/blasfeo/LICENSE.txt +26 -0
  304. casadi/include/licenses/fatrop-external/external/pybind11/LICENSE +29 -0
  305. casadi/include/licenses/highs-external/{LICENSE → LICENSE.txt} +1 -1
  306. casadi/include/osqp/constants.h +2 -3
  307. casadi/include/osqp/version.h +9 -0
  308. casadi/include/sleqp/defs.h +2 -2
  309. casadi/lib64/libtinyxml2.a +0 -0
  310. casadi/libCbcSolver.so +0 -0
  311. casadi/libCbcSolver.so.3 +0 -0
  312. casadi/libCbcSolver.so.3.10.11 +0 -0
  313. casadi/libClpSolver.so +0 -0
  314. casadi/libClpSolver.so.1 +0 -0
  315. casadi/libClpSolver.so.1.14.9 +0 -0
  316. casadi/libbonmin.so +0 -0
  317. casadi/libbonmin.so.4 +0 -0
  318. casadi/libbonmin.so.4.8.9 +0 -0
  319. casadi/libcasadi.so +0 -0
  320. casadi/libcasadi.so.3.7 +0 -0
  321. casadi/libcasadi_conic_cbc.so +0 -0
  322. casadi/libcasadi_conic_cbc.so.3.7 +0 -0
  323. casadi/libcasadi_conic_clp.so +0 -0
  324. casadi/libcasadi_conic_clp.so.3.7 +0 -0
  325. casadi/libcasadi_conic_cplex.so +0 -0
  326. casadi/libcasadi_conic_cplex.so.3.7 +0 -0
  327. casadi/libcasadi_conic_daqp.so +0 -0
  328. casadi/libcasadi_conic_daqp.so.3.7 +0 -0
  329. casadi/libcasadi_conic_fatrop.so +0 -0
  330. casadi/libcasadi_conic_fatrop.so.3.7 +0 -0
  331. casadi/libcasadi_conic_gurobi.so +0 -0
  332. casadi/libcasadi_conic_gurobi.so.3.7 +0 -0
  333. casadi/libcasadi_conic_highs.so +0 -0
  334. casadi/libcasadi_conic_highs.so.3.7 +0 -0
  335. casadi/libcasadi_conic_hpipm.so +0 -0
  336. casadi/libcasadi_conic_hpipm.so.3.7 +0 -0
  337. casadi/libcasadi_conic_ipqp.so +0 -0
  338. casadi/libcasadi_conic_ipqp.so.3.7 +0 -0
  339. casadi/libcasadi_conic_nlpsol.so +0 -0
  340. casadi/libcasadi_conic_nlpsol.so.3.7 +0 -0
  341. casadi/libcasadi_conic_osqp.so +0 -0
  342. casadi/libcasadi_conic_osqp.so.3.7 +0 -0
  343. casadi/libcasadi_conic_proxqp.so +0 -0
  344. casadi/libcasadi_conic_proxqp.so.3.7 +0 -0
  345. casadi/libcasadi_conic_qpoases.so +0 -0
  346. casadi/libcasadi_conic_qpoases.so.3.7 +0 -0
  347. casadi/libcasadi_conic_qrqp.so +0 -0
  348. casadi/libcasadi_conic_qrqp.so.3.7 +0 -0
  349. casadi/libcasadi_conic_superscs.so +0 -0
  350. casadi/libcasadi_conic_superscs.so.3.7 +0 -0
  351. casadi/libcasadi_integrator_collocation.so +0 -0
  352. casadi/libcasadi_integrator_collocation.so.3.7 +0 -0
  353. casadi/libcasadi_integrator_cvodes.so +0 -0
  354. casadi/libcasadi_integrator_cvodes.so.3.7 +0 -0
  355. casadi/libcasadi_integrator_idas.so +0 -0
  356. casadi/libcasadi_integrator_idas.so.3.7 +0 -0
  357. casadi/libcasadi_integrator_rk.so +0 -0
  358. casadi/libcasadi_integrator_rk.so.3.7 +0 -0
  359. casadi/libcasadi_nlpsol_alpaqa.so +0 -0
  360. casadi/libcasadi_nlpsol_alpaqa.so.3.7 +0 -0
  361. casadi/libcasadi_nlpsol_ampl.so +0 -0
  362. casadi/libcasadi_nlpsol_ampl.so.3.7 +0 -0
  363. casadi/libcasadi_nlpsol_blocksqp.so +0 -0
  364. casadi/libcasadi_nlpsol_blocksqp.so.3.7 +0 -0
  365. casadi/libcasadi_nlpsol_bonmin.so +0 -0
  366. casadi/libcasadi_nlpsol_bonmin.so.3.7 +0 -0
  367. casadi/libcasadi_nlpsol_fatrop.so +0 -0
  368. casadi/libcasadi_nlpsol_fatrop.so.3.7 +0 -0
  369. casadi/libcasadi_nlpsol_feasiblesqpmethod.so +0 -0
  370. casadi/libcasadi_nlpsol_feasiblesqpmethod.so.3.7 +0 -0
  371. casadi/libcasadi_nlpsol_ipopt.so +0 -0
  372. casadi/libcasadi_nlpsol_ipopt.so.3.7 +0 -0
  373. casadi/libcasadi_nlpsol_knitro.so +0 -0
  374. casadi/libcasadi_nlpsol_knitro.so.3.7 +0 -0
  375. casadi/libcasadi_nlpsol_madnlp.so +0 -0
  376. casadi/libcasadi_nlpsol_madnlp.so.3.7 +0 -0
  377. casadi/libcasadi_nlpsol_qrsqp.so +0 -0
  378. casadi/libcasadi_nlpsol_qrsqp.so.3.7 +0 -0
  379. casadi/libcasadi_nlpsol_scpgen.so +0 -0
  380. casadi/libcasadi_nlpsol_scpgen.so.3.7 +0 -0
  381. casadi/libcasadi_nlpsol_sleqp.so +0 -0
  382. casadi/libcasadi_nlpsol_sleqp.so.3.7 +0 -0
  383. casadi/libcasadi_nlpsol_snopt.so +0 -0
  384. casadi/libcasadi_nlpsol_snopt.so.3.7 +0 -0
  385. casadi/libcasadi_nlpsol_sqpmethod.so +0 -0
  386. casadi/libcasadi_nlpsol_sqpmethod.so.3.7 +0 -0
  387. casadi/libcasadi_nlpsol_worhp.so +0 -0
  388. casadi/libcasadi_nlpsol_worhp.so.3.7 +0 -0
  389. casadi/libcasadi_rootfinder_fast_newton.so +0 -0
  390. casadi/libcasadi_rootfinder_fast_newton.so.3.7 +0 -0
  391. casadi/libcasadi_rootfinder_kinsol.so +0 -0
  392. casadi/libcasadi_rootfinder_kinsol.so.3.7 +0 -0
  393. casadi/libcasadi_rootfinder_newton.so +0 -0
  394. casadi/libcasadi_rootfinder_newton.so.3.7 +0 -0
  395. casadi/libcasadi_rootfinder_nlpsol.so +0 -0
  396. casadi/libcasadi_rootfinder_nlpsol.so.3.7 +0 -0
  397. casadi/libcasadi_sundials_common.so +0 -0
  398. casadi/libcasadi_sundials_common.so.3.7 +0 -0
  399. casadi/libcoinmetis.la +1 -1
  400. casadi/libcoinmetis.so +0 -0
  401. casadi/libcoinmetis.so.2 +0 -0
  402. casadi/libcoinmetis.so.2.0.0 +0 -0
  403. casadi/libdaqp.so +0 -0
  404. casadi/libdaqpstat.a +0 -0
  405. casadi/libfatrop.so +0 -0
  406. casadi/libhighs.so +0 -0
  407. casadi/libhighs.so.1 +0 -0
  408. casadi/libhighs.so.1.7.2 +0 -0
  409. casadi/libindirect.a +0 -0
  410. casadi/liblinsys.a +0 -0
  411. casadi/libmatlab_ipc.so +0 -0
  412. casadi/libosqp.a +0 -0
  413. casadi/libosqp.so +0 -0
  414. casadi/libqdldl.a +0 -0
  415. casadi/libsleqp.so +0 -0
  416. casadi/libsleqp.so.1.0.1 +0 -0
  417. casadi/libspral.a +0 -0
  418. casadi/libsuperscs.a +0 -0
  419. casadi/pkgconfig/casadi.pc +1 -1
  420. casadi/pkgconfig/highs.pc +1 -1
  421. casadi/tools/__init__.py +4 -0
  422. casadi/tools/bounds.py +3 -3
  423. {casadi-3.6.5.dist-info → casadi-3.6.7.dist-info}/METADATA +2 -2
  424. {casadi-3.6.5.dist-info → casadi-3.6.7.dist-info}/RECORD +425 -255
  425. casadi/include/highs/fortran/highs_fortran_api.mod +0 -0
  426. casadi/libFortranHighs.so +0 -0
  427. casadi/libhighs.so.1.6 +0 -0
  428. casadi/libhighs.so.1.6.0 +0 -0
  429. {casadi-3.6.5.dist-info → casadi-3.6.7.dist-info}/WHEEL +0 -0
@@ -0,0 +1,423 @@
1
+ #ifndef CUPDLP_H_GUARD
2
+ #define CUPDLP_H_GUARD
3
+
4
+ #define CUPDLP_CPU
5
+ #define CUPDLP_DEBUG (0)
6
+ #define CUPDLP_TIMER
7
+
8
+ #ifndef CUPDLP_CPU
9
+ #include "cuda/cupdlp_cuda_kernels.cuh"
10
+ #include "cuda/cupdlp_cudalinalg.cuh"
11
+ #endif
12
+ #ifdef __cplusplus
13
+ extern "C" {
14
+ #endif
15
+
16
+ #include <math.h>
17
+ #include <string.h>
18
+
19
+ #include "glbopts.h"
20
+
21
+ #define PDHG_USE_TIMERS (1)
22
+ #define USE_MY_BLAS (1)
23
+ #define USE_KERNELS (1)
24
+
25
+ #define PDHG_STEPSIZE_REDUCTION_EXP \
26
+ (0.3) // Parameters in PDLP adaptive linesearch
27
+ #define PDHG_STEPSIZE_GROWTH_EXP (0.6)
28
+ #define PDHG_USE_TIMERS (1)
29
+ #define PDHG_DISPLAY_TERMINATION_CHECK (1)
30
+
31
+ #define PDHG_PROJECT_INITIAL_X (0)
32
+ #define SHOW_DEFINE(x) printf("%s=%s\n", #x, STR(x))
33
+
34
+ #define CUPDLP_DEBUG_INTERVAL (40)
35
+ #define CUPDLP_RELEASE_INTERVAL (40)
36
+ #define CUPDLP_DUMP_ITERATES_STATS (1)
37
+ #define CUPDLP_DUMP_LINESEARCH_STATS (1)
38
+ #define CUPDLP_INEXACT_EPS (1e-4)
39
+
40
+ typedef struct CUPDLP_CUDA_DENSE_VEC CUPDLPvec;
41
+ typedef struct CUPDLP_DENSE_MATRIX CUPDLPdense;
42
+ typedef struct CUPDLP_CSR_MATRIX CUPDLPcsr;
43
+ typedef struct CUPDLP_CSC_MATRIX CUPDLPcsc;
44
+ typedef struct CUPDLP_DATA CUPDLPdata;
45
+ typedef struct CUPDLP_SETTINGS CUPDLPsettings;
46
+ typedef struct CUPDLP_PROBLEM CUPDLPproblem;
47
+ typedef struct CUPDLP_RES_OBJ CUPDLPresobj;
48
+ typedef struct CUPDLP_ITERATES CUPDLPiterates;
49
+ typedef struct CUPDLP_STEPSIZE CUPDLPstepsize;
50
+ typedef struct CUPDLP_SCALING CUPDLPscaling;
51
+ typedef struct CUPDLP_TIMERS CUPDLPtimers;
52
+ typedef struct CUPDLP_WORK CUPDLPwork;
53
+ typedef cupdlp_int cupdlp_retcode;
54
+
55
+ typedef enum {
56
+ OPTIMAL = 0,
57
+ INFEASIBLE,
58
+ UNBOUNDED,
59
+ INFEASIBLE_OR_UNBOUNDED,
60
+ TIMELIMIT_OR_ITERLIMIT,
61
+ FEASIBLE,
62
+ } termination_code;
63
+
64
+ typedef enum {
65
+ LAST_ITERATE = 0,
66
+ AVERAGE_ITERATE,
67
+ } termination_iterate;
68
+
69
+ typedef enum {
70
+ PDHG_FIXED_LINESEARCH = 0,
71
+ PDHG_MALITSKY_POCK_LINESEARCH,
72
+ PDHG_ADAPTIVE_LINESEARCH
73
+ } pdhg_linesearch;
74
+
75
+ typedef enum {
76
+ PDHG_WITHOUT_RESTART = 0,
77
+ PDHG_GPU_RESTART,
78
+ PDHG_CPU_RESTART,
79
+ } pdhg_restart;
80
+
81
+ typedef enum {
82
+ CPU = 0,
83
+ SINGLE_GPU,
84
+ MULTI_GPU,
85
+ } CUPDLP_DEVICE;
86
+
87
+ typedef enum {
88
+ DENSE = 0,
89
+ CSR,
90
+ CSC,
91
+ CSR_CSC,
92
+ } CUPDLP_MATRIX_FORMAT;
93
+
94
+ typedef enum {
95
+ N_ITER_LIM = 0,
96
+ IF_SCALING,
97
+ I_SCALING_METHOD,
98
+ E_LINE_SEARCH_METHOD,
99
+ E_RESTART_METHOD,
100
+ IF_RUIZ_SCALING,
101
+ IF_L2_SCALING,
102
+ IF_PC_SCALING,
103
+ N_LOG_LEVEL,
104
+ N_LOG_INTERVAL,
105
+ IF_PRESOLVE,
106
+ I_INF_NORM_ABS_LOCAL_TERMINATION,
107
+ N_INT_USER_PARAM
108
+ } CUPDLP_INT_USER_PARAM_INDEX;
109
+ //#define N_INT_USER_PARAM 12
110
+ typedef enum {
111
+ D_SCALING_LIMIT = 0,
112
+ D_PRIMAL_TOL,
113
+ D_DUAL_TOL,
114
+ D_GAP_TOL,
115
+ D_FEAS_TOL,
116
+ D_TIME_LIM,
117
+ N_FLOAT_USER_PARAM
118
+ } CUPDLP_FLOAT_USER_PARAM_INDEX;
119
+ //#define N_FLOAT_USER_PARAM 6
120
+
121
+ // used in sparse matrix-dense vector multiplication
122
+ struct CUPDLP_CUDA_DENSE_VEC {
123
+ cupdlp_int len;
124
+ cupdlp_float *data;
125
+ #ifndef CUPDLP_CPU
126
+ cusparseDnVecDescr_t cuda_vec;
127
+ #endif
128
+ };
129
+
130
+ struct CUPDLP_DENSE_MATRIX {
131
+ cupdlp_int nRows;
132
+ cupdlp_int nCols;
133
+ cupdlp_float *data;
134
+ };
135
+
136
+ struct CUPDLP_CSR_MATRIX {
137
+ cupdlp_int nRows;
138
+ cupdlp_int nCols;
139
+ cupdlp_int nMatElem;
140
+ cupdlp_int *rowMatBeg;
141
+ cupdlp_int *rowMatIdx;
142
+ cupdlp_float *rowMatElem;
143
+ #ifndef CUPDLP_CPU
144
+ // Pointers to GPU vectors
145
+ cusparseSpMatDescr_t cuda_csr;
146
+ #endif
147
+ };
148
+
149
+ struct CUPDLP_CSC_MATRIX {
150
+ cupdlp_int nRows;
151
+ cupdlp_int nCols;
152
+ cupdlp_int nMatElem;
153
+ cupdlp_int *colMatBeg;
154
+ cupdlp_int *colMatIdx;
155
+ cupdlp_float *colMatElem;
156
+
157
+ // Used to avoid implementing NormInf on cuda
158
+ cupdlp_float MatElemNormInf;
159
+ #ifndef CUPDLP_CPU
160
+ // Pointers to GPU vectors
161
+ cusparseSpMatDescr_t cuda_csc;
162
+ #endif
163
+ };
164
+
165
+ struct CUPDLP_DATA {
166
+ cupdlp_int nRows;
167
+ cupdlp_int nCols;
168
+ CUPDLP_MATRIX_FORMAT matrix_format;
169
+ CUPDLPdense *dense_matrix;
170
+ CUPDLPcsr *csr_matrix;
171
+ CUPDLPcsc *csc_matrix;
172
+ CUPDLP_DEVICE device;
173
+ };
174
+
175
+ struct CUPDLP_SETTINGS {
176
+ // scaling
177
+ cupdlp_int ifScaling;
178
+ cupdlp_int iScalingMethod;
179
+ cupdlp_float dScalingLimit;
180
+
181
+ // termination criteria
182
+ cupdlp_float dPrimalTol;
183
+ cupdlp_float dDualTol;
184
+ cupdlp_float dGapTol;
185
+ cupdlp_int iInfNormAbsLocalTermination;
186
+
187
+ // max iter and time
188
+ cupdlp_int nIterLim;
189
+ cupdlp_float dTimeLim;
190
+
191
+ // Logging
192
+ cupdlp_int nLogLevel;
193
+ cupdlp_int nLogInterval;
194
+
195
+ // restart
196
+ pdhg_restart eRestartMethod;
197
+ };
198
+
199
+ // some elements are duplicated from CUPDLP_DATA
200
+ struct CUPDLP_PROBLEM {
201
+ /* Copy of LP problem with permuted columns. */
202
+ CUPDLPdata *data;
203
+ // cupdlp_int nMatElem;
204
+ // cupdlp_int *colMatBeg;
205
+ // cupdlp_int *colMatIdx;
206
+ // cupdlp_float *colMatElem;
207
+ // cupdlp_int *rowMatBeg;
208
+ // cupdlp_int *rowMatIdx;
209
+ // cupdlp_float *rowMatElem;
210
+ cupdlp_float *lower;
211
+ cupdlp_float *upper;
212
+ cupdlp_float *cost; // cost for minimization
213
+ cupdlp_float *rhs;
214
+ cupdlp_float dMaxCost;
215
+ cupdlp_float dMaxRhs;
216
+ cupdlp_float dMaxRowBound;
217
+ cupdlp_int nRows;
218
+ cupdlp_int nCols;
219
+ cupdlp_int nEqs;
220
+ cupdlp_float *hasLower;
221
+ cupdlp_float *hasUpper;
222
+ cupdlp_float
223
+ offset; // true objVal = c'x * sig + offset, sig = 1 (min) or -1 (max)
224
+ cupdlp_float sense_origin; // sig = 1 (min) or -1 (max)
225
+ };
226
+
227
+ struct CUPDLP_RES_OBJ {
228
+ /* residuals and objectives */
229
+ cupdlp_float dFeasTol;
230
+ cupdlp_float dPrimalObj;
231
+ cupdlp_float dDualObj;
232
+ cupdlp_float dDualityGap;
233
+ cupdlp_float dComplementarity;
234
+ cupdlp_float dPrimalFeas;
235
+ cupdlp_float dDualFeas;
236
+ cupdlp_float dRelObjGap;
237
+ cupdlp_float *primalResidual;
238
+ cupdlp_float *dualResidual;
239
+ cupdlp_float *dSlackPos;
240
+ cupdlp_float *dSlackNeg;
241
+ cupdlp_float *dSlackPosAverage;
242
+ cupdlp_float *dSlackNegAverage;
243
+ cupdlp_float *dLowerFiltered;
244
+ cupdlp_float *dUpperFiltered;
245
+
246
+ /* for infeasibility detection */
247
+ termination_code primalCode;
248
+ termination_code dualCode;
249
+ termination_iterate termInfeasIterate;
250
+
251
+ cupdlp_float dPrimalInfeasObj;
252
+ cupdlp_float dDualInfeasObj;
253
+ cupdlp_float dPrimalInfeasRes;
254
+ cupdlp_float dDualInfeasRes;
255
+
256
+ cupdlp_float dPrimalInfeasObjAverage;
257
+ cupdlp_float dDualInfeasObjAverage;
258
+ cupdlp_float dPrimalInfeasResAverage;
259
+ cupdlp_float dDualInfeasResAverage;
260
+
261
+ // buffers
262
+ cupdlp_float *primalInfeasRay; // x / norm(x)
263
+ cupdlp_float *primalInfeasConstr; // [Ax, min(Gx, 0)]
264
+ cupdlp_float *primalInfeasBound; // primal bound violation
265
+ cupdlp_float *dualInfeasRay; // y / norm(y, lbd)
266
+ cupdlp_float *dualInfeasLbRay; // lbd^+ / norm(y, lbd)
267
+ cupdlp_float *dualInfeasUbRay; // lbd^- / norm(y, lbd)
268
+ cupdlp_float *dualInfeasConstr; // ATy1 + GTy2 + lambda
269
+ // cupdlp_float *dualInfeasBound; // dual bound violation
270
+
271
+ cupdlp_float dPrimalObjAverage;
272
+ cupdlp_float dDualObjAverage;
273
+ cupdlp_float dDualityGapAverage;
274
+ cupdlp_float dComplementarityAverage;
275
+ cupdlp_float dPrimalFeasAverage;
276
+ cupdlp_float dDualFeasAverage;
277
+ cupdlp_float dRelObjGapAverage;
278
+ cupdlp_float *primalResidualAverage;
279
+ cupdlp_float *dualResidualAverage;
280
+
281
+ cupdlp_float dPrimalFeasLastRestart;
282
+ cupdlp_float dDualFeasLastRestart;
283
+ cupdlp_float dDualityGapLastRestart;
284
+
285
+ cupdlp_float dPrimalFeasLastCandidate;
286
+ cupdlp_float dDualFeasLastCandidate;
287
+ cupdlp_float dDualityGapLastCandidate;
288
+
289
+ termination_code termCode;
290
+ termination_iterate termIterate;
291
+ };
292
+
293
+ struct CUPDLP_ITERATES {
294
+ /* iterates */
295
+ cupdlp_int nRows;
296
+ cupdlp_int nCols;
297
+ // todo, CPU VERSION, check
298
+ // cupdlp_float *x;
299
+ // cupdlp_float *y;
300
+ // cupdlp_float *xUpdate;
301
+ // cupdlp_float *yUpdate;
302
+ //
303
+ // cupdlp_int iLastRestartIter;
304
+ // cupdlp_float dLastRestartDualityGap;
305
+ // cupdlp_float dLastRestartBeta;
306
+ // cupdlp_float *xSum;
307
+ // cupdlp_float *ySum;
308
+ // cupdlp_float *xAverage;
309
+ // cupdlp_float *yAverage;
310
+ // cupdlp_float *xLastRestart;
311
+ // cupdlp_float *yLastRestart;
312
+ //
313
+ // cupdlp_float *ax;
314
+ // cupdlp_float *axUpdate;
315
+ // cupdlp_float *axAverage;
316
+ // cupdlp_float *aty;
317
+ // cupdlp_float *atyUpdate;
318
+ // cupdlp_float *atyAverage;
319
+
320
+ cupdlp_int iLastRestartIter;
321
+ cupdlp_float dLastRestartDualityGap;
322
+ cupdlp_float dLastRestartBeta;
323
+ cupdlp_float *xSum;
324
+ cupdlp_float *ySum;
325
+
326
+ cupdlp_float *xLastRestart;
327
+ cupdlp_float *yLastRestart;
328
+
329
+ CUPDLPvec *x, *xUpdate, *xAverage, *y, *yUpdate, *yAverage, *ax, *axUpdate,
330
+ *axAverage, *aty, *atyUpdate, *atyAverage;
331
+ };
332
+
333
+ struct CUPDLP_STEPSIZE {
334
+ /* stepsize */
335
+ pdhg_linesearch eLineSearchMethod; // 0 = FixedStep
336
+ cupdlp_float dPrimalStep;
337
+ cupdlp_float dDualStep;
338
+ cupdlp_float dSumPrimalStep;
339
+ cupdlp_float dSumDualStep;
340
+ // Stepsize ratio,
341
+ // \beta = dBeta = dDualStep / dPrimalStep,
342
+ // in the paper, primal weight is the \omega:
343
+ // \omega = \sqrt\beta
344
+ cupdlp_float dBeta;
345
+ cupdlp_float dTheta; // Used in Malitsky-Pock stepsize
346
+ cupdlp_int nStepSizeIter;
347
+ };
348
+
349
+ struct CUPDLP_SCALING {
350
+ /* scaling */
351
+ cupdlp_int ifScaled;
352
+ cupdlp_float *rowScale;
353
+ cupdlp_float *colScale;
354
+
355
+ /*new scaling*/
356
+ cupdlp_int ifRuizScaling;
357
+ cupdlp_int ifL2Scaling;
358
+ cupdlp_int ifPcScaling;
359
+ cupdlp_int RuizTimes;
360
+ cupdlp_float RuizNorm;
361
+ cupdlp_float PcAlpha;
362
+
363
+ /* original 2 norm */
364
+ cupdlp_float dNormCost;
365
+ cupdlp_float dNormRhs;
366
+ };
367
+
368
+ struct CUPDLP_TIMERS {
369
+ /* timers */
370
+ cupdlp_int nIter;
371
+ cupdlp_float dSolvingTime;
372
+ cupdlp_float dSolvingBeg;
373
+ cupdlp_float dScalingTime;
374
+ cupdlp_float dPresolveTime;
375
+ #if PDHG_USE_TIMERS
376
+ cupdlp_float dAtyTime;
377
+ cupdlp_float dAxTime;
378
+ cupdlp_float dComputeResidualsTime;
379
+ cupdlp_float dUpdateIterateTime;
380
+ cupdlp_int nAtyCalls;
381
+ cupdlp_int nAxCalls;
382
+ cupdlp_int nComputeResidualsCalls;
383
+ cupdlp_int nUpdateIterateCalls;
384
+ #endif
385
+ #ifndef CUPDLP_CPU
386
+ // GPU timers
387
+ cupdlp_float AllocMem_CopyMatToDeviceTime;
388
+ cupdlp_float CopyVecToDeviceTime;
389
+ cupdlp_float DeviceMatVecProdTime;
390
+ cupdlp_float CopyVecToHostTime;
391
+ cupdlp_float FreeDeviceMemTime;
392
+ cupdlp_float CudaPrepareTime;
393
+ #endif
394
+ };
395
+
396
+ struct CUPDLP_WORK {
397
+ CUPDLPproblem *problem;
398
+ CUPDLPsettings *settings;
399
+ CUPDLPresobj *resobj;
400
+ CUPDLPiterates *iterates;
401
+ CUPDLPstepsize *stepsize;
402
+ CUPDLPscaling *scaling;
403
+ CUPDLPtimers *timers;
404
+ // cupdlp_float *buffer;
405
+ CUPDLPvec *buffer;
406
+ cupdlp_float *buffer2;
407
+ cupdlp_float *buffer3;
408
+
409
+ cupdlp_float *rowScale;
410
+ cupdlp_float *colScale;
411
+ #ifndef CUPDLP_CPU
412
+ // CUDAmv *MV;
413
+ cusparseHandle_t cusparsehandle;
414
+ void *dBuffer;
415
+ // cusparseDnVecDescr_t vecbuffer;
416
+ cublasHandle_t cublashandle;
417
+ #endif
418
+ };
419
+
420
+ #ifdef __cplusplus
421
+ }
422
+ #endif
423
+ #endif
@@ -0,0 +1,183 @@
1
+ #ifndef CUPDLP_CUPDLP_LINALG_H
2
+ #define CUPDLP_CUPDLP_LINALG_H
3
+
4
+ #include "cupdlp_defs.h"
5
+ #include "cupdlp_utils.h"
6
+ #ifndef CUPDLP_CPU
7
+ #include "cuda/cupdlp_cudalinalg.cuh"
8
+ #endif
9
+
10
+ void ScatterCol(CUPDLPwork *w, cupdlp_int iCol, cupdlp_float multiplier,
11
+ cupdlp_float *target);
12
+
13
+ void ScatterRow(CUPDLPwork *w, cupdlp_int iRow, cupdlp_float multiplier,
14
+ cupdlp_float *target);
15
+
16
+ void AxCPU(CUPDLPwork *w, cupdlp_float *ax, const cupdlp_float *x);
17
+
18
+ void ATyCPU(CUPDLPwork *w, cupdlp_float *aty, const cupdlp_float *y);
19
+
20
+ extern double nrm2(cupdlp_int n, const double *x, cupdlp_int incx);
21
+
22
+ extern double nrminf(cupdlp_int n, const double *x, cupdlp_int incx);
23
+
24
+ double twoNorm(double *x, cupdlp_int n);
25
+
26
+ double twoNormSquared(double *x, cupdlp_int n);
27
+
28
+ double infNorm(double *x, cupdlp_int n);
29
+
30
+ cupdlp_int infNormIndex(double *x, cupdlp_int n);
31
+
32
+ /*------------------------ new added --------------------*/
33
+
34
+ double GenNorm(double *x, cupdlp_int n, cupdlp_float p);
35
+
36
+ void cupdlp_cdot(cupdlp_float *x, const cupdlp_float *y, const cupdlp_int len);
37
+
38
+ void cupdlp_cdiv(cupdlp_float *x, const cupdlp_float *y, const cupdlp_int len);
39
+
40
+ // void cupdlp_scaleVector(cupdlp_float *xout, cupdlp_float *x, cupdlp_float
41
+ // weight, const cupdlp_int len);
42
+ void cupdlp_projLowerBound(cupdlp_float *x, const cupdlp_float *lb,
43
+ const cupdlp_int len);
44
+ void cupdlp_projUpperBound(cupdlp_float *x, const cupdlp_float *ub,
45
+ const cupdlp_int len);
46
+ void cupdlp_projSameLowerBound(cupdlp_float *x, const cupdlp_float lb,
47
+ const cupdlp_int len);
48
+ void cupdlp_projSameUpperBound(cupdlp_float *x, const cupdlp_float ub,
49
+ const cupdlp_int len);
50
+ void cupdlp_projPositive(cupdlp_float *x, const cupdlp_int len);
51
+ void cupdlp_projNegative(cupdlp_float *x, const cupdlp_int len);
52
+
53
+ // void cupdlp_projLowerBound(cupdlp_float *xout, cupdlp_float *x, cupdlp_float
54
+ // *lb, const cupdlp_int len); void cupdlp_projUpperBound(cupdlp_float *xout,
55
+ // cupdlp_float *x, cupdlp_float *ub, const cupdlp_int len); void
56
+ // cupdlp_projSameLowerBound(cupdlp_float *xout, cupdlp_float *x, cupdlp_float
57
+ // lb, const cupdlp_int len); void cupdlp_projSameUpperBound(cupdlp_float *xout,
58
+ // cupdlp_float *x, cupdlp_float ub, const cupdlp_int len); void
59
+ // cupdlp_projPositive(cupdlp_float *xout, cupdlp_float *x, const cupdlp_int
60
+ // len); void cupdlp_projNegative(cupdlp_float *xout, cupdlp_float *x, const
61
+ // cupdlp_int len); cupdlp_float cupdlp_diffTwoNormSquared(cupdlp_float *x,
62
+ // cupdlp_float *y, const cupdlp_int len); cupdlp_float
63
+ // cupdlp_diffTwoNorm(cupdlp_float *x, cupdlp_float *y, const cupdlp_int len);
64
+ // cupdlp_float cupdlp_diffInfNorm(cupdlp_float *x, cupdlp_float *y, const
65
+ // cupdlp_int len); cupdlp_float cupdlp_diffDotDiff(cupdlp_float *x1,
66
+ // cupdlp_float *x2, cupdlp_float *y1, cupdlp_float *y2, const cupdlp_int len);
67
+ // void cupdlp_cdot_fb(cupdlp_float *x, const cupdlp_bool *y, const cupdlp_int
68
+ // len);
69
+
70
+ /*------------------------ new added --------------------*/
71
+
72
+ extern double dot(cupdlp_int n, const cupdlp_float *x, cupdlp_int incx,
73
+ const cupdlp_float *y, cupdlp_int incy);
74
+
75
+ extern double Dotprod(const cupdlp_float *x, const cupdlp_float *y, cupdlp_int n);
76
+
77
+ // todo, add this
78
+ extern double Dotprod_Neumaier(const cupdlp_float *x, const cupdlp_float *y, cupdlp_int n);
79
+
80
+ /* x = x + weight * y */
81
+ void AddToVector(cupdlp_float *x, const cupdlp_float weight,
82
+ const cupdlp_float *y, const cupdlp_int n);
83
+
84
+ void ScaleVector(cupdlp_float weight, cupdlp_float *x, cupdlp_int n);
85
+
86
+ // The main matrix-vector multiplication routines
87
+ // #ifndef CUPDLP_CPU
88
+ // Ax currently only works for CSC matrix multiply dense vector
89
+ // void Ax(CUPDLPwork *w, cupdlp_float *ax, const cupdlp_float *x);
90
+ // void Ax(CUPDLPwork *w, cupdlp_float *ax, void* vecAx, const cupdlp_float *x,
91
+ // void *vecX);
92
+ void Ax(CUPDLPwork *w, CUPDLPvec *ax, const CUPDLPvec *x);
93
+
94
+ // ATy currently only works for CSR matrix multiply dense vector
95
+ // void ATy(CUPDLPwork *w, cupdlp_float *aty, const cupdlp_float *y);
96
+ // void ATy(CUPDLPwork *w, cupdlp_float *aty, void *vecATy, const cupdlp_float
97
+ // *y, void *vecY);
98
+ void ATy(CUPDLPwork *w, CUPDLPvec *aty, const CUPDLPvec *y);
99
+
100
+ // #endif
101
+
102
+ /*-------------- Apis compatible with both CPU and GPU -------------------*/
103
+ // only implemented the APis need to be used on GPU
104
+
105
+ // functions in cublas
106
+ cupdlp_int cupdlp_axpy(CUPDLPwork *w, const cupdlp_int n,
107
+ const cupdlp_float *alpha, const cupdlp_float *x,
108
+ cupdlp_float *y);
109
+
110
+ cupdlp_int cupdlp_dot(CUPDLPwork *w, const cupdlp_int n, const cupdlp_float *x,
111
+ const cupdlp_float *y, cupdlp_float *res);
112
+
113
+ cupdlp_int cupdlp_twoNorm(CUPDLPwork *w, const cupdlp_int n,
114
+ const cupdlp_float *x, cupdlp_float *res);
115
+
116
+ cupdlp_int cupdlp_infNorm(CUPDLPwork *w, const cupdlp_int n,
117
+ const cupdlp_float *x, cupdlp_float *res);
118
+
119
+ cupdlp_int cupdlp_infNormIndex(CUPDLPwork *w, const cupdlp_int n,
120
+ const cupdlp_float *x, cupdlp_int *res);
121
+
122
+ cupdlp_int cupdlp_scaleVector(CUPDLPwork *w, const cupdlp_float weight,
123
+ cupdlp_float *x, const cupdlp_int n);
124
+
125
+ void cupdlp_twoNormSquared(CUPDLPwork *w, const cupdlp_int n,
126
+ const cupdlp_float *x, cupdlp_float *res);
127
+
128
+ void cupdlp_diffTwoNormSquared(CUPDLPwork *w, const cupdlp_float *x,
129
+ const cupdlp_float *y, const cupdlp_int len,
130
+ cupdlp_float *res);
131
+
132
+ void cupdlp_diffTwoNorm(CUPDLPwork *w, const cupdlp_float *x,
133
+ const cupdlp_float *y, const cupdlp_int len,
134
+ cupdlp_float *res);
135
+
136
+ void cupdlp_diffDotDiff(CUPDLPwork *w, const cupdlp_float *x1,
137
+ const cupdlp_float *x2, const cupdlp_float *y1,
138
+ const cupdlp_float *y2, const cupdlp_int len,
139
+ cupdlp_float *res);
140
+
141
+ // functions not in cublas
142
+ /* element wise dot: x = x .* y*/
143
+ void cupdlp_edot(cupdlp_float *x, const cupdlp_float *y, const cupdlp_int len);
144
+ /* element wise div: x = x ./ y*/
145
+ void cupdlp_ediv(cupdlp_float *x, const cupdlp_float *y, const cupdlp_int len);
146
+
147
+ void cupdlp_projlb(cupdlp_float *x, const cupdlp_float *lb,
148
+ const cupdlp_int len);
149
+
150
+ void cupdlp_projub(cupdlp_float *x, const cupdlp_float *ub,
151
+ const cupdlp_int len);
152
+
153
+ void cupdlp_projSamelb(cupdlp_float *x, const cupdlp_float lb,
154
+ const cupdlp_int len);
155
+
156
+ void cupdlp_projSameub(cupdlp_float *x, const cupdlp_float ub,
157
+ const cupdlp_int len);
158
+
159
+ /* xout = max(x, 0) */
160
+ void cupdlp_projPos(cupdlp_float *x, const cupdlp_int len);
161
+
162
+ /* xout = min(x, 0) */
163
+ void cupdlp_projNeg(cupdlp_float *x, const cupdlp_int len);
164
+
165
+ void cupdlp_haslb(cupdlp_float *haslb, const cupdlp_float *lb,
166
+ const cupdlp_float bound, const cupdlp_int len);
167
+
168
+ void cupdlp_hasub(cupdlp_float *hasub, const cupdlp_float *ub,
169
+ const cupdlp_float bound, const cupdlp_int len);
170
+
171
+ void cupdlp_filterlb(cupdlp_float *x, const cupdlp_float *lb,
172
+ const cupdlp_float bound, const cupdlp_int len);
173
+
174
+ void cupdlp_filterub(cupdlp_float *x, const cupdlp_float *ub,
175
+ const cupdlp_float bound, const cupdlp_int len);
176
+
177
+ void cupdlp_initvec(cupdlp_float *x, const cupdlp_float val,
178
+ const cupdlp_int len);
179
+
180
+ void cupdlp_compute_interaction_and_movement(CUPDLPwork *w,
181
+ cupdlp_float *dMovement,
182
+ cupdlp_float *dIteraction);
183
+ #endif // CUPDLP_CUPDLP_LINALG_H
@@ -0,0 +1,19 @@
1
+ //
2
+ // Created by chuwen on 23-11-28.
3
+ //
4
+
5
+ #ifndef CUPDLP_CUPDLP_PROJ_H
6
+ #define CUPDLP_CUPDLP_PROJ_H
7
+
8
+ #include "cupdlp_defs.h"
9
+ #include "glbopts.h"
10
+
11
+ void PDHG_Project_Bounds(CUPDLPwork *work, double *r);
12
+
13
+ void PDHG_Project_Row_Duals(CUPDLPwork *work, double *r);
14
+
15
+ void PDHG_Restart_Iterate(CUPDLPwork *pdhg);
16
+
17
+ void PDHG_Restart_Iterate_GPU(CUPDLPwork *pdhg);
18
+
19
+ #endif // CUPDLP_CUPDLP_PROJ_H
@@ -0,0 +1,31 @@
1
+ //
2
+ // Created by chuwen on 23-11-28.
3
+ //
4
+
5
+ #ifndef CUPDLP_CUPDLP_RESTART_H
6
+ #define CUPDLP_CUPDLP_RESTART_H
7
+
8
+ #include "cupdlp_defs.h"
9
+ #include "cupdlp_linalg.h"
10
+ #include "cupdlp_proj.h"
11
+ // #include "cupdlp_scaling.h"
12
+ #include "cupdlp_step.h"
13
+ #include "cupdlp_utils.h"
14
+ #include "glbopts.h"
15
+
16
+ typedef enum {
17
+ PDHG_NO_RESTART = 0,
18
+ PDHG_RESTART_TO_CURRENT,
19
+ PDHG_RESTART_TO_AVERAGE
20
+ } PDHG_restart_choice;
21
+
22
+ cupdlp_bool PDHG_Check_Restart_Merit_Function(CUPDLPwork *work);
23
+
24
+ PDHG_restart_choice PDHG_Check_Restart_GPU(CUPDLPwork *work);
25
+
26
+ cupdlp_float PDHG_Restart_Score_GPU(cupdlp_float weightSquared,
27
+ cupdlp_float dPrimalFeas,
28
+ cupdlp_float dDualFeas,
29
+ cupdlp_float dDualityGap);
30
+
31
+ #endif // CUPDLP_CUPDLP_RESTART_H
@@ -0,0 +1,28 @@
1
+ //
2
+ // Created by LJS on 23-11-30.
3
+ //
4
+
5
+ #ifndef CUPDLP_SCALING_CUDA_H
6
+ #define CUPDLP_SCALING_CUDA_H
7
+
8
+ #include "cupdlp_defs.h"
9
+ #include "glbopts.h"
10
+ #ifdef __cplusplus
11
+ extern "C" {
12
+ #endif
13
+
14
+ cupdlp_retcode H_PDHG_Scale_Data_cuda(cupdlp_int log_level,
15
+ CUPDLPcsc *csc, cupdlp_int ifScaling,
16
+ CUPDLPscaling *scaling, cupdlp_float *cost,
17
+ cupdlp_float *lower, cupdlp_float *upper,
18
+ cupdlp_float *rhs);
19
+
20
+ cupdlp_retcode H_Init_Scaling(cupdlp_int log_level,
21
+ CUPDLPscaling *scaling, cupdlp_int ncols,
22
+ cupdlp_int nrows, cupdlp_float *cost,
23
+ cupdlp_float *rhs);
24
+
25
+ #ifdef __cplusplus
26
+ }
27
+ #endif
28
+ #endif // CUPDLP_CUPDLP_SCALING_H