casadi 3.6.5__cp311-none-manylinux2014_x86_64.whl → 3.6.7__cp311-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.
- casadi/_casadi.so +0 -0
- casadi/casadi.py +739 -308
- casadi/cbc +0 -0
- casadi/clp +0 -0
- casadi/cmake/casadi-config-version.cmake +1 -1
- casadi/cmake/highs/highs-config.cmake +6 -13
- casadi/cmake/highs/highs-targets-release.cmake +13 -13
- casadi/cmake/highs/highs-targets.cmake +13 -10
- casadi/highs +0 -0
- casadi/include/casadi/casadi.i +3 -0
- casadi/include/casadi/casadi_c.h +2 -0
- casadi/include/casadi/config.h +8 -8
- casadi/include/casadi/core/casadi_common.hpp +1 -0
- casadi/include/casadi/core/casadi_misc.hpp +52 -0
- casadi/include/casadi/core/casadi_types.hpp +3 -2
- casadi/include/casadi/core/code_generator.hpp +30 -1
- casadi/include/casadi/core/global_options.hpp +2 -0
- casadi/include/casadi/core/mx.hpp +18 -3
- casadi/include/casadi/core/optistack.hpp +23 -0
- casadi/include/casadi/core/runtime/casadi_nlp.hpp +19 -4
- casadi/include/casadi/core/runtime/casadi_ocp_block.hpp +55 -0
- casadi/include/casadi/core/runtime/casadi_oracle.hpp +44 -0
- casadi/include/casadi/core/runtime/casadi_oracle_callback.hpp +39 -0
- casadi/include/casadi/core/runtime/casadi_runtime.hpp +4 -1
- casadi/include/casadi/core/runtime/casadi_scaled_copy.hpp +31 -0
- casadi/include/casadi/core/serializing_stream.hpp +2 -2
- casadi/include/casadi/core/sparsity.hpp +7 -0
- casadi/include/casadi/doc.i +1513 -1016
- casadi/include/casadi/doc_merged.i +965 -719
- casadi/include/casadi/mem.h +1 -0
- casadi/include/daqp/api.h +46 -0
- casadi/include/daqp/auxiliary.h +29 -0
- casadi/include/daqp/bnb.h +32 -0
- casadi/include/daqp/codegen.h +18 -0
- casadi/include/daqp/constants.h +92 -0
- casadi/include/daqp/daqp.h +22 -0
- casadi/include/daqp/daqp_prox.h +18 -0
- casadi/include/daqp/factorization.h +18 -0
- casadi/include/daqp/types.h +161 -0
- casadi/include/daqp/utils.h +44 -0
- casadi/include/fatrop/auxiliary/Common.hpp +34 -0
- casadi/include/fatrop/auxiliary/DynamicLib.hpp +34 -0
- casadi/include/fatrop/auxiliary/FatropOptions.hpp +68 -0
- casadi/include/fatrop/auxiliary/FatropVector.hpp +143 -0
- casadi/include/fatrop/auxiliary/LinearAlgebra.hpp +88 -0
- casadi/include/fatrop/auxiliary/VectorUtils.hpp +54 -0
- casadi/include/fatrop/blasfeo_wrapper/LinearAlgebraBlasfeo.hpp +493 -0
- casadi/include/fatrop/fatrop.hpp +39 -0
- casadi/include/fatrop/function_evaluation/CasadiCodegen.hpp +104 -0
- casadi/include/fatrop/function_evaluation/FunctionEvaluation.hpp +60 -0
- casadi/include/fatrop/json/json.h +946 -0
- casadi/include/fatrop/ocp/CasadiCApiUserdataWrap.hpp +87 -0
- casadi/include/fatrop/ocp/DuInfEvaluator.hpp +38 -0
- casadi/include/fatrop/ocp/FatropOCP.hpp +161 -0
- casadi/include/fatrop/ocp/FatropOCPBuilder.hpp +52 -0
- casadi/include/fatrop/ocp/FatropOCPResto.hpp +299 -0
- casadi/include/fatrop/ocp/OCP.hpp +82 -0
- casadi/include/fatrop/ocp/OCPAbstract.hpp +254 -0
- casadi/include/fatrop/ocp/OCPAdapter.hpp +197 -0
- casadi/include/fatrop/ocp/OCPCInterface.h +289 -0
- casadi/include/fatrop/ocp/OCPDims.hpp +60 -0
- casadi/include/fatrop/ocp/OCPInitializer.hpp +41 -0
- casadi/include/fatrop/ocp/OCPKKT.hpp +69 -0
- casadi/include/fatrop/ocp/OCPLSRiccati.hpp +198 -0
- casadi/include/fatrop/ocp/OCPLSScaler.hpp +66 -0
- casadi/include/fatrop/ocp/OCPLinearSolver.hpp +75 -0
- casadi/include/fatrop/ocp/OCPNoScaling.hpp +42 -0
- casadi/include/fatrop/ocp/OCPScalingMethod.hpp +42 -0
- casadi/include/fatrop/ocp/StageOCP.hpp +592 -0
- casadi/include/fatrop/ocp/StageOCPApplication.hpp +242 -0
- casadi/include/fatrop/ocp/StageOCPExpressions.hpp +182 -0
- casadi/include/fatrop/ocp/UStageEvalAbstract.hpp +168 -0
- casadi/include/fatrop/ocp/UStageOCPImpl.hpp +152 -0
- casadi/include/fatrop/quasi_newton/bfgs.hpp +159 -0
- casadi/include/fatrop/solver/AlgBuilder.hpp +76 -0
- casadi/include/fatrop/solver/AlgStrategy.hpp +33 -0
- casadi/include/fatrop/solver/FatropAlg.hpp +121 -0
- casadi/include/fatrop/solver/FatropData.hpp +188 -0
- casadi/include/fatrop/solver/FatropOptions.hpp +95 -0
- casadi/include/fatrop/solver/FatropPrinter.hpp +65 -0
- casadi/include/fatrop/solver/FatropStats.hpp +63 -0
- casadi/include/fatrop/solver/Filter.hpp +54 -0
- casadi/include/fatrop/solver/IterationData.hpp +56 -0
- casadi/include/fatrop/solver/LineSearch.hpp +86 -0
- casadi/include/fatrop/solver/NLPL1.hpp +263 -0
- casadi/include/fatrop/templates/NLPAlg.hpp +104 -0
- casadi/include/highs/HConfig.h +6 -5
- casadi/include/highs/Highs.h +93 -23
- casadi/include/highs/filereaderlp/def.hpp +19 -0
- casadi/include/highs/interfaces/highs_c_api.h +200 -24
- casadi/include/highs/io/Filereader.h +1 -1
- casadi/include/highs/io/FilereaderEms.h +1 -1
- casadi/include/highs/io/FilereaderLp.h +1 -1
- casadi/include/highs/io/FilereaderMps.h +1 -1
- casadi/include/highs/io/HMPSIO.h +1 -1
- casadi/include/highs/io/HMpsFF.h +5 -3
- casadi/include/highs/io/HighsIO.h +18 -8
- casadi/include/highs/io/LoadOptions.h +1 -1
- casadi/include/highs/ipm/IpxSolution.h +35 -0
- casadi/include/highs/ipm/IpxWrapper.h +1 -1
- casadi/include/highs/ipm/basiclu/basiclu.h +161 -0
- casadi/include/highs/ipm/basiclu/basiclu_factorize.h +247 -0
- casadi/include/highs/ipm/basiclu/basiclu_get_factors.h +108 -0
- casadi/include/highs/ipm/basiclu/basiclu_initialize.h +119 -0
- casadi/include/highs/ipm/basiclu/basiclu_obj_factorize.h +34 -0
- casadi/include/highs/ipm/basiclu/basiclu_obj_free.h +19 -0
- casadi/include/highs/ipm/basiclu/basiclu_obj_get_factors.h +34 -0
- casadi/include/highs/ipm/basiclu/basiclu_obj_initialize.h +46 -0
- casadi/include/highs/ipm/basiclu/basiclu_obj_solve_dense.h +29 -0
- casadi/include/highs/ipm/basiclu/basiclu_obj_solve_for_update.h +42 -0
- casadi/include/highs/ipm/basiclu/basiclu_obj_solve_sparse.h +32 -0
- casadi/include/highs/ipm/basiclu/basiclu_obj_update.h +31 -0
- casadi/include/highs/ipm/basiclu/basiclu_object.h +30 -0
- casadi/include/highs/ipm/basiclu/basiclu_solve_dense.h +75 -0
- casadi/include/highs/ipm/basiclu/basiclu_solve_for_update.h +169 -0
- casadi/include/highs/ipm/basiclu/basiclu_solve_sparse.h +112 -0
- casadi/include/highs/ipm/basiclu/basiclu_update.h +125 -0
- casadi/include/highs/ipm/basiclu/lu_def.h +39 -0
- casadi/include/highs/ipm/basiclu/lu_file.h +21 -0
- casadi/include/highs/ipm/basiclu/lu_internal.h +220 -0
- casadi/include/highs/ipm/basiclu/lu_list.h +168 -0
- casadi/include/highs/ipm/ipx/basiclu_kernel.h +20 -0
- casadi/include/highs/ipm/ipx/basiclu_wrapper.h +47 -0
- casadi/include/highs/ipm/ipx/basis.h +351 -0
- casadi/include/highs/ipm/ipx/conjugate_residuals.h +74 -0
- casadi/include/highs/ipm/ipx/control.h +163 -0
- casadi/include/highs/ipm/ipx/crossover.h +157 -0
- casadi/include/highs/ipm/ipx/diagonal_precond.h +45 -0
- casadi/include/highs/ipm/ipx/forrest_tomlin.h +102 -0
- casadi/include/highs/ipm/ipx/guess_basis.h +21 -0
- casadi/include/highs/ipm/ipx/indexed_vector.h +113 -0
- casadi/include/highs/ipm/ipx/info.h +27 -0
- casadi/include/highs/ipm/ipx/ipm.h +94 -0
- casadi/include/highs/ipm/ipx/ipx_c.h +47 -0
- casadi/include/highs/ipm/ipx/ipx_config.h +9 -0
- casadi/include/highs/ipm/ipx/ipx_info.h +111 -0
- casadi/include/highs/ipm/ipx/ipx_internal.h +88 -0
- casadi/include/highs/ipm/ipx/ipx_parameters.h +75 -0
- casadi/include/highs/ipm/ipx/ipx_status.h +57 -0
- casadi/include/highs/ipm/ipx/iterate.h +328 -0
- casadi/include/highs/ipm/ipx/kkt_solver.h +70 -0
- casadi/include/highs/ipm/ipx/kkt_solver_basis.h +66 -0
- casadi/include/highs/ipm/ipx/kkt_solver_diag.h +48 -0
- casadi/include/highs/ipm/ipx/linear_operator.h +26 -0
- casadi/include/highs/ipm/ipx/lp_solver.h +201 -0
- casadi/include/highs/ipm/ipx/lu_factorization.h +79 -0
- casadi/include/highs/ipm/ipx/lu_update.h +129 -0
- casadi/include/highs/ipm/ipx/maxvolume.h +54 -0
- casadi/include/highs/ipm/ipx/model.h +409 -0
- casadi/include/highs/ipm/ipx/multistream.h +52 -0
- casadi/include/highs/ipm/ipx/normal_matrix.h +44 -0
- casadi/include/highs/ipm/ipx/power_method.h +44 -0
- casadi/include/highs/ipm/ipx/sparse_matrix.h +195 -0
- casadi/include/highs/ipm/ipx/sparse_utils.h +58 -0
- casadi/include/highs/ipm/ipx/splitted_normal_matrix.h +63 -0
- casadi/include/highs/ipm/ipx/starting_basis.h +39 -0
- casadi/include/highs/ipm/ipx/symbolic_invert.h +29 -0
- casadi/include/highs/ipm/ipx/timer.h +24 -0
- casadi/include/highs/ipm/ipx/utils.h +39 -0
- casadi/include/highs/lp_data/HConst.h +20 -10
- casadi/include/highs/lp_data/HStruct.h +23 -1
- casadi/include/highs/lp_data/HighsAnalysis.h +1 -1
- casadi/include/highs/lp_data/HighsCallback.h +10 -3
- casadi/include/highs/lp_data/HighsCallbackStruct.h +31 -5
- casadi/include/highs/lp_data/HighsDebug.h +1 -1
- casadi/include/highs/lp_data/HighsInfo.h +20 -2
- casadi/include/highs/lp_data/HighsInfoDebug.h +1 -1
- casadi/include/highs/lp_data/HighsLp.h +17 -1
- casadi/include/highs/lp_data/HighsLpSolverObject.h +1 -1
- casadi/include/highs/lp_data/HighsLpUtils.h +19 -19
- casadi/include/highs/lp_data/HighsModelUtils.h +1 -1
- casadi/include/highs/lp_data/HighsOptions.h +237 -10
- casadi/include/highs/lp_data/HighsRanging.h +1 -1
- casadi/include/highs/lp_data/HighsRuntimeOptions.h +2 -2
- casadi/include/highs/lp_data/HighsSolution.h +2 -2
- casadi/include/highs/lp_data/HighsSolutionDebug.h +1 -1
- casadi/include/highs/lp_data/HighsSolve.h +3 -1
- casadi/include/highs/lp_data/HighsStatus.h +1 -1
- casadi/include/highs/mip/HighsCliqueTable.h +4 -4
- casadi/include/highs/mip/HighsConflictPool.h +1 -1
- casadi/include/highs/mip/HighsCutGeneration.h +1 -1
- casadi/include/highs/mip/HighsCutPool.h +2 -2
- casadi/include/highs/mip/HighsDebugSol.h +22 -29
- casadi/include/highs/mip/HighsDomain.h +10 -2
- casadi/include/highs/mip/HighsDomainChange.h +1 -1
- casadi/include/highs/mip/HighsDynamicRowMatrix.h +5 -3
- casadi/include/highs/mip/HighsGFkSolve.h +3 -3
- casadi/include/highs/mip/HighsImplications.h +3 -3
- casadi/include/highs/mip/HighsLpAggregator.h +1 -1
- casadi/include/highs/mip/HighsLpRelaxation.h +6 -1
- casadi/include/highs/mip/HighsMipSolver.h +4 -2
- casadi/include/highs/mip/HighsMipSolverData.h +47 -4
- casadi/include/highs/mip/HighsModkSeparator.h +2 -2
- casadi/include/highs/mip/HighsNodeQueue.h +5 -3
- casadi/include/highs/mip/HighsObjectiveFunction.h +1 -1
- casadi/include/highs/mip/HighsPathSeparator.h +2 -2
- casadi/include/highs/mip/HighsPrimalHeuristics.h +1 -1
- casadi/include/highs/mip/HighsPseudocost.h +35 -23
- casadi/include/highs/mip/HighsRedcostFixing.h +1 -1
- casadi/include/highs/mip/HighsSearch.h +2 -1
- casadi/include/highs/mip/HighsSeparation.h +1 -1
- casadi/include/highs/mip/HighsSeparator.h +1 -1
- casadi/include/highs/mip/HighsTableauSeparator.h +1 -1
- casadi/include/highs/mip/HighsTransformedLp.h +1 -1
- casadi/include/highs/model/HighsHessian.h +5 -0
- casadi/include/highs/model/HighsHessianUtils.h +2 -0
- casadi/include/highs/model/HighsModel.h +10 -1
- casadi/include/highs/parallel/HighsMutex.h +2 -1
- casadi/include/highs/parallel/HighsParallel.h +7 -2
- casadi/include/highs/parallel/HighsTask.h +1 -2
- casadi/include/highs/pdlp/CupdlpWrapper.h +93 -0
- casadi/include/highs/pdlp/cupdlp/cupdlp_cs.h +41 -0
- casadi/include/highs/pdlp/cupdlp/cupdlp_defs.h +423 -0
- casadi/include/highs/pdlp/cupdlp/cupdlp_linalg.h +183 -0
- casadi/include/highs/pdlp/cupdlp/cupdlp_proj.h +19 -0
- casadi/include/highs/pdlp/cupdlp/cupdlp_restart.h +31 -0
- casadi/include/highs/pdlp/cupdlp/cupdlp_scaling_cuda.h +28 -0
- casadi/include/highs/pdlp/cupdlp/cupdlp_solver.h +98 -0
- casadi/include/highs/pdlp/cupdlp/cupdlp_step.h +33 -0
- casadi/include/highs/pdlp/cupdlp/cupdlp_utils.c +1726 -0
- casadi/include/highs/pdqsort/pdqsort.h +532 -0
- casadi/include/highs/presolve/HPresolve.h +27 -14
- casadi/include/highs/presolve/HPresolveAnalysis.h +1 -1
- casadi/include/highs/presolve/HighsPostsolveStack.h +92 -68
- casadi/include/highs/presolve/HighsSymmetry.h +6 -5
- casadi/include/highs/presolve/ICrash.h +8 -2
- casadi/include/highs/presolve/ICrashUtil.h +1 -1
- casadi/include/highs/presolve/ICrashX.h +1 -1
- casadi/include/highs/presolve/PresolveComponent.h +1 -1
- casadi/include/highs/qpsolver/a_asm.hpp +23 -12
- casadi/include/highs/qpsolver/a_quass.hpp +8 -1
- casadi/include/highs/qpsolver/basis.hpp +150 -0
- casadi/include/highs/qpsolver/crashsolution.hpp +12 -0
- casadi/include/highs/qpsolver/dantzigpricing.hpp +72 -0
- casadi/include/highs/qpsolver/devexpricing.hpp +99 -0
- casadi/include/highs/qpsolver/eventhandler.hpp +23 -0
- casadi/include/highs/qpsolver/factor.hpp +400 -0
- casadi/include/highs/qpsolver/feasibility_bounded.hpp +105 -0
- casadi/include/highs/qpsolver/feasibility_highs.hpp +270 -0
- casadi/include/highs/qpsolver/gradient.hpp +39 -0
- casadi/include/highs/qpsolver/instance.hpp +63 -0
- casadi/include/highs/qpsolver/matrix.hpp +335 -0
- casadi/include/highs/qpsolver/pricing.hpp +15 -0
- casadi/include/highs/qpsolver/qpconst.hpp +27 -0
- casadi/include/highs/qpsolver/{vector.hpp → qpvector.hpp} +25 -25
- casadi/include/highs/qpsolver/quass.hpp +1 -1
- casadi/include/highs/qpsolver/ratiotest.hpp +19 -0
- casadi/include/highs/qpsolver/runtime.hpp +38 -0
- casadi/include/highs/qpsolver/settings.hpp +57 -0
- casadi/include/highs/qpsolver/snippets.hpp +29 -0
- casadi/include/highs/qpsolver/statistics.hpp +23 -0
- casadi/include/highs/qpsolver/steepestedgepricing.hpp +167 -0
- casadi/include/highs/simplex/HApp.h +1 -1
- casadi/include/highs/simplex/HEkk.h +52 -18
- casadi/include/highs/simplex/HEkkDual.h +1 -1
- casadi/include/highs/simplex/HEkkDualRHS.h +6 -7
- casadi/include/highs/simplex/HEkkDualRow.h +2 -2
- casadi/include/highs/simplex/HEkkPrimal.h +6 -1
- casadi/include/highs/simplex/HSimplex.h +1 -3
- casadi/include/highs/simplex/HSimplexDebug.h +1 -1
- casadi/include/highs/simplex/HSimplexNla.h +1 -1
- casadi/include/highs/simplex/HSimplexReport.h +1 -1
- casadi/include/highs/simplex/HighsSimplexAnalysis.h +228 -100
- casadi/include/highs/simplex/SimplexConst.h +1 -1
- casadi/include/highs/simplex/SimplexStruct.h +2 -2
- casadi/include/highs/simplex/SimplexTimer.h +1 -1
- casadi/include/highs/test/DevKkt.h +1 -1
- casadi/include/highs/test/KktCh2.h +1 -1
- casadi/include/highs/util/FactorTimer.h +1 -1
- casadi/include/highs/util/HFactor.h +35 -6
- casadi/include/highs/util/HFactorConst.h +1 -1
- casadi/include/highs/util/HFactorDebug.h +1 -1
- casadi/include/highs/util/HSet.h +1 -1
- casadi/include/highs/util/HVector.h +1 -1
- casadi/include/highs/util/HVectorBase.h +1 -1
- casadi/include/highs/util/HighsCDouble.h +3 -3
- casadi/include/highs/util/HighsComponent.h +1 -1
- casadi/include/highs/util/HighsDataStack.h +4 -4
- casadi/include/highs/util/HighsDisjointSets.h +1 -1
- casadi/include/highs/util/HighsHash.h +28 -21
- casadi/include/highs/util/HighsHashTree.h +63 -63
- casadi/include/highs/util/HighsInt.h +1 -1
- casadi/include/highs/util/HighsIntegers.h +8 -9
- casadi/include/highs/util/HighsLinearSumBounds.h +1 -1
- casadi/include/highs/util/HighsMatrixPic.h +1 -1
- casadi/include/highs/util/HighsMatrixSlice.h +9 -6
- casadi/include/highs/util/HighsMatrixUtils.h +1 -1
- casadi/include/highs/util/HighsMemoryAllocation.h +55 -0
- casadi/include/highs/util/HighsRandom.h +27 -15
- casadi/include/highs/util/HighsRbTree.h +2 -2
- casadi/include/highs/util/HighsSort.h +7 -7
- casadi/include/highs/util/HighsSparseMatrix.h +5 -2
- casadi/include/highs/util/HighsSparseVectorSum.h +2 -2
- casadi/include/highs/util/HighsSplay.h +1 -1
- casadi/include/highs/util/HighsTimer.h +18 -9
- casadi/include/highs/util/HighsUtils.h +15 -8
- casadi/include/highs/util/stringutil.h +9 -4
- casadi/include/highs/zstr/strict_fstream.hpp +237 -0
- casadi/include/highs/zstr/zstr.hpp +472 -0
- casadi/include/highs_export.h +42 -0
- casadi/include/licenses/daqp-external/LICENSE +21 -0
- casadi/include/licenses/fatrop-external/LICENSE.txt +165 -0
- casadi/include/licenses/fatrop-external/external/blasfeo/LICENSE.txt +26 -0
- casadi/include/licenses/fatrop-external/external/pybind11/LICENSE +29 -0
- casadi/include/licenses/highs-external/{LICENSE → LICENSE.txt} +1 -1
- casadi/include/osqp/constants.h +2 -3
- casadi/include/osqp/version.h +9 -0
- casadi/include/sleqp/defs.h +2 -2
- casadi/lib64/libtinyxml2.a +0 -0
- casadi/libCbcSolver.so +0 -0
- casadi/libCbcSolver.so.3 +0 -0
- casadi/libCbcSolver.so.3.10.11 +0 -0
- casadi/libClpSolver.so +0 -0
- casadi/libClpSolver.so.1 +0 -0
- casadi/libClpSolver.so.1.14.9 +0 -0
- casadi/libbonmin.so +0 -0
- casadi/libbonmin.so.4 +0 -0
- casadi/libbonmin.so.4.8.9 +0 -0
- casadi/libcasadi.so +0 -0
- casadi/libcasadi.so.3.7 +0 -0
- casadi/libcasadi_conic_cbc.so +0 -0
- casadi/libcasadi_conic_cbc.so.3.7 +0 -0
- casadi/libcasadi_conic_clp.so +0 -0
- casadi/libcasadi_conic_clp.so.3.7 +0 -0
- casadi/libcasadi_conic_cplex.so +0 -0
- casadi/libcasadi_conic_cplex.so.3.7 +0 -0
- casadi/libcasadi_conic_daqp.so +0 -0
- casadi/libcasadi_conic_daqp.so.3.7 +0 -0
- casadi/libcasadi_conic_fatrop.so +0 -0
- casadi/libcasadi_conic_fatrop.so.3.7 +0 -0
- casadi/libcasadi_conic_gurobi.so +0 -0
- casadi/libcasadi_conic_gurobi.so.3.7 +0 -0
- casadi/libcasadi_conic_highs.so +0 -0
- casadi/libcasadi_conic_highs.so.3.7 +0 -0
- casadi/libcasadi_conic_hpipm.so +0 -0
- casadi/libcasadi_conic_hpipm.so.3.7 +0 -0
- casadi/libcasadi_conic_ipqp.so +0 -0
- casadi/libcasadi_conic_ipqp.so.3.7 +0 -0
- casadi/libcasadi_conic_nlpsol.so +0 -0
- casadi/libcasadi_conic_nlpsol.so.3.7 +0 -0
- casadi/libcasadi_conic_osqp.so +0 -0
- casadi/libcasadi_conic_osqp.so.3.7 +0 -0
- casadi/libcasadi_conic_proxqp.so +0 -0
- casadi/libcasadi_conic_proxqp.so.3.7 +0 -0
- casadi/libcasadi_conic_qpoases.so +0 -0
- casadi/libcasadi_conic_qpoases.so.3.7 +0 -0
- casadi/libcasadi_conic_qrqp.so +0 -0
- casadi/libcasadi_conic_qrqp.so.3.7 +0 -0
- casadi/libcasadi_conic_superscs.so +0 -0
- casadi/libcasadi_conic_superscs.so.3.7 +0 -0
- casadi/libcasadi_integrator_collocation.so +0 -0
- casadi/libcasadi_integrator_collocation.so.3.7 +0 -0
- casadi/libcasadi_integrator_cvodes.so +0 -0
- casadi/libcasadi_integrator_cvodes.so.3.7 +0 -0
- casadi/libcasadi_integrator_idas.so +0 -0
- casadi/libcasadi_integrator_idas.so.3.7 +0 -0
- casadi/libcasadi_integrator_rk.so +0 -0
- casadi/libcasadi_integrator_rk.so.3.7 +0 -0
- casadi/libcasadi_nlpsol_alpaqa.so +0 -0
- casadi/libcasadi_nlpsol_alpaqa.so.3.7 +0 -0
- casadi/libcasadi_nlpsol_ampl.so +0 -0
- casadi/libcasadi_nlpsol_ampl.so.3.7 +0 -0
- casadi/libcasadi_nlpsol_blocksqp.so +0 -0
- casadi/libcasadi_nlpsol_blocksqp.so.3.7 +0 -0
- casadi/libcasadi_nlpsol_bonmin.so +0 -0
- casadi/libcasadi_nlpsol_bonmin.so.3.7 +0 -0
- casadi/libcasadi_nlpsol_fatrop.so +0 -0
- casadi/libcasadi_nlpsol_fatrop.so.3.7 +0 -0
- casadi/libcasadi_nlpsol_feasiblesqpmethod.so +0 -0
- casadi/libcasadi_nlpsol_feasiblesqpmethod.so.3.7 +0 -0
- casadi/libcasadi_nlpsol_ipopt.so +0 -0
- casadi/libcasadi_nlpsol_ipopt.so.3.7 +0 -0
- casadi/libcasadi_nlpsol_knitro.so +0 -0
- casadi/libcasadi_nlpsol_knitro.so.3.7 +0 -0
- casadi/libcasadi_nlpsol_madnlp.so +0 -0
- casadi/libcasadi_nlpsol_madnlp.so.3.7 +0 -0
- casadi/libcasadi_nlpsol_qrsqp.so +0 -0
- casadi/libcasadi_nlpsol_qrsqp.so.3.7 +0 -0
- casadi/libcasadi_nlpsol_scpgen.so +0 -0
- casadi/libcasadi_nlpsol_scpgen.so.3.7 +0 -0
- casadi/libcasadi_nlpsol_sleqp.so +0 -0
- casadi/libcasadi_nlpsol_sleqp.so.3.7 +0 -0
- casadi/libcasadi_nlpsol_snopt.so +0 -0
- casadi/libcasadi_nlpsol_snopt.so.3.7 +0 -0
- casadi/libcasadi_nlpsol_sqpmethod.so +0 -0
- casadi/libcasadi_nlpsol_sqpmethod.so.3.7 +0 -0
- casadi/libcasadi_nlpsol_worhp.so +0 -0
- casadi/libcasadi_nlpsol_worhp.so.3.7 +0 -0
- casadi/libcasadi_rootfinder_fast_newton.so +0 -0
- casadi/libcasadi_rootfinder_fast_newton.so.3.7 +0 -0
- casadi/libcasadi_rootfinder_kinsol.so +0 -0
- casadi/libcasadi_rootfinder_kinsol.so.3.7 +0 -0
- casadi/libcasadi_rootfinder_newton.so +0 -0
- casadi/libcasadi_rootfinder_newton.so.3.7 +0 -0
- casadi/libcasadi_rootfinder_nlpsol.so +0 -0
- casadi/libcasadi_rootfinder_nlpsol.so.3.7 +0 -0
- casadi/libcasadi_sundials_common.so +0 -0
- casadi/libcasadi_sundials_common.so.3.7 +0 -0
- casadi/libcoinmetis.la +1 -1
- casadi/libcoinmetis.so +0 -0
- casadi/libcoinmetis.so.2 +0 -0
- casadi/libcoinmetis.so.2.0.0 +0 -0
- casadi/libdaqp.so +0 -0
- casadi/libdaqpstat.a +0 -0
- casadi/libfatrop.so +0 -0
- casadi/libhighs.so +0 -0
- casadi/libhighs.so.1 +0 -0
- casadi/libhighs.so.1.7.2 +0 -0
- casadi/libindirect.a +0 -0
- casadi/liblinsys.a +0 -0
- casadi/libmatlab_ipc.so +0 -0
- casadi/libosqp.a +0 -0
- casadi/libosqp.so +0 -0
- casadi/libqdldl.a +0 -0
- casadi/libsleqp.so +0 -0
- casadi/libsleqp.so.1.0.1 +0 -0
- casadi/libspral.a +0 -0
- casadi/libsuperscs.a +0 -0
- casadi/pkgconfig/casadi.pc +1 -1
- casadi/pkgconfig/highs.pc +1 -1
- casadi/tools/__init__.py +4 -0
- casadi/tools/bounds.py +3 -3
- {casadi-3.6.5.dist-info → casadi-3.6.7.dist-info}/METADATA +2 -2
- {casadi-3.6.5.dist-info → casadi-3.6.7.dist-info}/RECORD +425 -255
- casadi/include/highs/fortran/highs_fortran_api.mod +0 -0
- casadi/libFortranHighs.so +0 -0
- casadi/libhighs.so.1.6 +0 -0
- casadi/libhighs.so.1.6.0 +0 -0
- {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
|