scs 3.2.7.post2__tar.gz → 3.2.9__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.
- {scs-3.2.7.post2 → scs-3.2.9}/.bumpversion.cfg +1 -2
- {scs-3.2.7.post2 → scs-3.2.9}/.github/workflows/build.yml +30 -39
- {scs-3.2.7.post2 → scs-3.2.9}/.gitignore +4 -0
- scs-3.2.9/.gitmodules +6 -0
- {scs-3.2.7.post2 → scs-3.2.9}/PKG-INFO +16 -4
- {scs-3.2.7.post2 → scs-3.2.9}/README.md +1 -2
- {scs-3.2.7.post2 → scs-3.2.9}/legacy_setup.py +23 -1
- scs-3.2.9/meson.build +253 -0
- scs-3.2.9/meson.options +27 -0
- scs-3.2.9/pixi.toml +12 -0
- {scs-3.2.7.post2 → scs-3.2.9}/pyproject.toml +23 -4
- {scs-3.2.7.post2/scs → scs-3.2.9/scs/py}/__init__.py +18 -9
- scs-3.2.9/scs/pythoncapi-compat/.github/workflows/build.yml +122 -0
- scs-3.2.9/scs/pythoncapi-compat/.gitignore +5 -0
- scs-3.2.9/scs/pythoncapi-compat/.readthedocs.yaml +12 -0
- scs-3.2.9/scs/pythoncapi-compat/CODE_OF_CONDUCT.md +11 -0
- scs-3.2.9/scs/pythoncapi-compat/COPYING +14 -0
- scs-3.2.9/scs/pythoncapi-compat/README.rst +55 -0
- scs-3.2.9/scs/pythoncapi-compat/docs/Makefile +20 -0
- scs-3.2.9/scs/pythoncapi-compat/docs/api.rst +796 -0
- scs-3.2.9/scs/pythoncapi-compat/docs/changelog.rst +191 -0
- scs-3.2.9/scs/pythoncapi-compat/docs/conf.py +53 -0
- scs-3.2.9/scs/pythoncapi-compat/docs/index.rst +29 -0
- scs-3.2.9/scs/pythoncapi-compat/docs/links.rst +29 -0
- scs-3.2.9/scs/pythoncapi-compat/docs/make.bat +35 -0
- scs-3.2.9/scs/pythoncapi-compat/docs/tests.rst +17 -0
- scs-3.2.9/scs/pythoncapi-compat/docs/upgrade.rst +168 -0
- scs-3.2.9/scs/pythoncapi-compat/docs/users.rst +74 -0
- scs-3.2.9/scs/pythoncapi-compat/pythoncapi_compat.h +2270 -0
- scs-3.2.9/scs/pythoncapi-compat/runtests.py +122 -0
- scs-3.2.9/scs/pythoncapi-compat/tests/__init__.py +0 -0
- scs-3.2.9/scs/pythoncapi-compat/tests/setup.py +110 -0
- scs-3.2.9/scs/pythoncapi-compat/tests/test_pythoncapi_compat.py +220 -0
- scs-3.2.9/scs/pythoncapi-compat/tests/test_pythoncapi_compat_cext.c +2412 -0
- scs-3.2.9/scs/pythoncapi-compat/tests/test_pythoncapi_compat_cppext.cpp +4 -0
- scs-3.2.9/scs/pythoncapi-compat/tests/test_upgrade_pythoncapi.py +962 -0
- scs-3.2.9/scs/pythoncapi-compat/tests/utils.py +41 -0
- scs-3.2.9/scs/pythoncapi-compat/upgrade_pythoncapi.py +752 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs/scsmodule.h +6 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs/scsobject.h +9 -7
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/.bumpversion.cfg +1 -2
- scs-3.2.9/scs_source/.github/workflows/build.yml +82 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/.github/workflows/build_mkl.yml +1 -1
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/.github/workflows/build_openmp.yml +1 -1
- scs-3.2.9/scs_source/.github/workflows/build_spectral.yml +36 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/.github/workflows/buildpp.yml +3 -3
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/.github/workflows/cmake.yml +2 -2
- scs-3.2.9/scs_source/.github/workflows/cmake_cudss.yml +36 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/.github/workflows/cmake_mkl.yml +1 -1
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/.github/workflows/cmake_openmp.yml +1 -1
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/.github/workflows/coverage.yml +1 -1
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/.github/workflows/docs.yml +3 -3
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/.github/workflows/gpu.yml +11 -2
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/.github/workflows/valgrind.yml +1 -1
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/.gitignore +1 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/CITATION.cff +2 -2
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/CMakeLists.txt +136 -6
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/Makefile +53 -3
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/README.md +1 -1
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/cmake/scs_types.h.in +4 -5
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/Doxyfile +1 -1
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/api/cones.rst +42 -19
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/api/index.rst +3 -0
- scs-3.2.9/scs_source/docs/src/api/javascript.rst +190 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/citing/index.rst +1 -1
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/conf.py +1 -1
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/contributing/index.rst +0 -1
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/examples/index.rst +3 -0
- scs-3.2.9/scs_source/docs/src/examples/javascript.rst +241 -0
- scs-3.2.9/scs_source/docs/src/examples/javascript_disc.html +316 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/examples/python/mpc.py +1 -1
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/index.rst +1 -1
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/install/c.rst +32 -1
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/install/index.rst +3 -0
- scs-3.2.9/scs_source/docs/src/install/javascript.rst +50 -0
- scs-3.2.9/scs_source/docs/src/install/python.rst +51 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/linear_solver/index.rst +17 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/include/cones.h +47 -2
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/include/glbopts.h +1 -1
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/include/scs.h +29 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/include/scs_blas.h +4 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/include/scs_types.h +3 -1
- scs-3.2.9/scs_source/include/util_spectral_cones.h +45 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/cpu/direct/private.c +3 -3
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/cpu/direct/private.h +2 -1
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/csparse.c +1 -1
- scs-3.2.9/scs_source/linsys/cudss/direct/private.c +279 -0
- scs-3.2.9/scs_source/linsys/cudss/direct/private.h +63 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/external/amd/amd_1.c +1 -1
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/external/amd/amd_2.c +44 -44
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/external/amd/amd_aat.c +5 -5
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/external/amd/amd_dump.c +12 -12
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/external/amd/amd_post_tree.c +3 -3
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/external/amd/amd_postorder.c +8 -8
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/external/amd/amd_valid.c +5 -5
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/external/qdldl/qdldl_types.h +1 -1
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/gpu/indirect/private.c +14 -21
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/scs.mk +17 -2
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/src/aa.c +8 -12
- scs-3.2.9/scs_source/src/cones.c +1623 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/src/rw.c +15 -1
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/src/scs.c +4 -0
- scs-3.2.9/scs_source/src/spectral_cones/logdeterminant/log_cone_IPM.c +660 -0
- scs-3.2.9/scs_source/src/spectral_cones/logdeterminant/log_cone_Newton.c +279 -0
- scs-3.2.9/scs_source/src/spectral_cones/logdeterminant/log_cone_wrapper.c +205 -0
- scs-3.2.9/scs_source/src/spectral_cones/logdeterminant/logdet_cone.c +143 -0
- scs-3.2.9/scs_source/src/spectral_cones/nuclear/ell1_cone.c +221 -0
- scs-3.2.9/scs_source/src/spectral_cones/nuclear/nuclear_cone.c +99 -0
- scs-3.2.9/scs_source/src/spectral_cones/sum-largest/sum_largest_cone.c +196 -0
- scs-3.2.9/scs_source/src/spectral_cones/sum-largest/sum_largest_eval_cone.c +140 -0
- scs-3.2.9/scs_source/src/spectral_cones/util_spectral_cones.c +52 -0
- scs-3.2.9/scs_source/test/problems/complex_PSD.h +83 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/test/rng.h +4 -4
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/test/run_tests.c +25 -0
- scs-3.2.9/scs_source/test/spectral_cones_problems/exp_design.h +141 -0
- scs-3.2.9/scs_source/test/spectral_cones_problems/graph_partitioning.h +275 -0
- scs-3.2.9/scs_source/test/spectral_cones_problems/robust_pca.h +253 -0
- scs-3.2.9/scs_source/test/spectral_cones_problems/several_logdet_cones.h +222 -0
- scs-3.2.9/scs_source/test/spectral_cones_problems/several_nuc_cone.h +285 -0
- scs-3.2.9/scs_source/test/spectral_cones_problems/several_sum_largest.h +420 -0
- scs-3.2.9/test/test_solve_random_cone_prob_cudss.py +82 -0
- {scs-3.2.7.post2 → scs-3.2.9}/test/test_solve_random_cone_prob_mkl.py +1 -1
- scs-3.2.7.post2/.gitmodules +0 -3
- scs-3.2.7.post2/meson.build +0 -195
- scs-3.2.7.post2/meson.options +0 -9
- scs-3.2.7.post2/scs_source/.github/workflows/build.yml +0 -45
- scs-3.2.7.post2/scs_source/docs/src/install/python.rst +0 -54
- scs-3.2.7.post2/scs_source/src/cones.c +0 -834
- {scs-3.2.7.post2 → scs-3.2.9}/.github/ISSUE_TEMPLATE.md +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/.github/dependabot.yml +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/LICENSE +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/distribute.sh +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/notebooks/analyze_csv_logs.ipynb +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/notebooks/scs_benchmarks.ipynb +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/notebooks/scs_qp.ipynb +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs/scspy.c +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/.github/ISSUE_TEMPLATE.md +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/.github/dependabot.yml +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/LICENSE.txt +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/cmake/AddInstallRPATHSupport.cmake +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/cmake/AddUninstallTarget.cmake +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/cmake/InstallBasicPackageFiles.cmake +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/Makefile +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/_static/css/scs_theme.css +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/_static/favicon.ico +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/_static/scs_logo.png +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/_static/scs_logo_transparent.png +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/algorithm/acceleration.rst +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/algorithm/equilibration.rst +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/algorithm/index.rst +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/algorithm/relaxation.rst +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/algorithm/scale.rst +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/algorithm/warm_start.rst +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/api/c.rst +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/api/compile_flags.rst +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/api/exit_flags.rst +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/api/info.rst +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/api/julia.rst +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/api/matlab.rst +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/api/matrices.rst +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/api/python.rst +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/api/r.rst +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/api/ruby.rst +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/api/settings.rst +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/blas_lapack/index.rst +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/examples/.gitignore +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/examples/c.rst +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/examples/julia.rst +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/examples/matlab.rst +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/examples/python/basic_qp.rst +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/examples/python/entropy.py +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/examples/python/entropy.py.out +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/examples/python/entropy.rst +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/examples/python/lasso.py +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/examples/python/lasso.py.out +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/examples/python/lasso.rst +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/examples/python/mat_completion.py +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/examples/python/mat_completion.py.out +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/examples/python/mat_completion.rst +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/examples/python/mpc.py.out +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/examples/python/mpc.rst +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/examples/python/qp.py +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/examples/python/qp.py.out +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/examples/python.rst +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/examples/qp.c +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/examples/qp.c.out +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/examples/qp.m +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/examples/qp.m.out +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/examples/qp.prob +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/examples/r.rst +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/examples/ruby.rst +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/files/qp_solvers_benchmark.png +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/files/windows1.png +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/files/windows2.png +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/files/windows3.png +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/help/index.rst +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/install/julia.rst +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/install/matlab.rst +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/install/r.rst +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/install/ruby.rst +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/make.bat +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/docs/src/requirements.txt +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/include/aa.h +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/include/ctrlc.h +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/include/linalg.h +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/include/linsys.h +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/include/normalize.h +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/include/rw.h +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/include/scs_work.h +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/include/util.h +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/cpu/indirect/private.c +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/cpu/indirect/private.h +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/csparse.h +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/external/amd/LICENSE.txt +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/external/amd/SuiteSparse_config.c +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/external/amd/SuiteSparse_config.h +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/external/amd/amd.h +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/external/amd/amd_control.c +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/external/amd/amd_defaults.c +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/external/amd/amd_global.c +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/external/amd/amd_info.c +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/external/amd/amd_internal.h +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/external/amd/amd_order.c +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/external/amd/amd_preprocess.c +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/external/amd/changes +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/external/qdldl/LICENSE +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/external/qdldl/README.md +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/external/qdldl/changes +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/external/qdldl/qdldl.c +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/external/qdldl/qdldl.h +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/gpu/gpu.c +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/gpu/gpu.h +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/gpu/indirect/private.h +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/mkl/direct/private.c +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/mkl/direct/private.h +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/scs_matrix.c +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/linsys/scs_matrix.h +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/src/ctrlc.c +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/src/exp_cone.c +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/src/linalg.c +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/src/normalize.c +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/src/scs_version.c +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/src/util.c +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/test/minunit.h +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/test/problem_utils.h +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/test/problems/degenerate.h +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/test/problems/hs21_tiny_qp.h +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/test/problems/hs21_tiny_qp_rw.h +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/test/problems/infeasible_tiny_qp.h +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/test/problems/max_ent +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/test/problems/max_ent.h +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/test/problems/mpc_bug.h +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/test/problems/mpc_bug1 +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/test/problems/mpc_bug2 +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/test/problems/mpc_bug3 +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/test/problems/qafiro_tiny_qp.h +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/test/problems/random_prob +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/test/problems/random_prob.h +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/test/problems/rob_gauss_cov_est.h +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/test/problems/small_lp.h +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/test/problems/small_qp.h +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/test/problems/test_exp_cone.h +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/test/problems/test_prob_from_data_file.h +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/test/problems/test_validation.h +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/test/problems/unbounded_tiny_qp.h +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/test/random_socp_prob.c +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/scs_source/test/run_from_file.c +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/test/gen_random_cone_prob.py +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/test/solve_random_cone_prob.py +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/test/test_scs_basic.py +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/test/test_scs_object.py +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/test/test_scs_quad.py +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/test/test_scs_rand.py +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/test/test_scs_sdp.py +0 -0
- {scs-3.2.7.post2 → scs-3.2.9}/test/test_solve_random_cone_prob.py +0 -0
@@ -25,22 +25,22 @@ jobs:
|
|
25
25
|
PYTHON_VERSION: ${{ matrix.python-version }}
|
26
26
|
|
27
27
|
steps:
|
28
|
-
- uses: actions/checkout@
|
28
|
+
- uses: actions/checkout@v5
|
29
29
|
with:
|
30
30
|
submodules: recursive
|
31
|
-
- uses:
|
31
|
+
- uses: prefix-dev/setup-pixi@v0.9.1
|
32
32
|
with:
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
33
|
+
cache: false
|
34
|
+
pixi-version: v0.46.0
|
35
|
+
- name: Add .pixi/envs/default to the $PATH
|
36
|
+
run: echo "$(pwd)/.pixi/envs/default/bin" >> $GITHUB_PATH
|
37
|
+
shell: bash
|
37
38
|
- name: Install dependencies
|
38
|
-
run:
|
39
|
-
conda install scipy numpy pytest 'setuptools<=60'
|
39
|
+
run: pixi add scipy numpy pip pytest meson meson-python openblas python==${{ matrix.python-version }}
|
40
40
|
- name: Test
|
41
41
|
run: |
|
42
|
-
python
|
43
|
-
pytest
|
42
|
+
pixi r python -m pip install -v . --no-build-isolation -Csetup-args=-Duse_openmp=true
|
43
|
+
pixi r pytest
|
44
44
|
rm -rf build/
|
45
45
|
|
46
46
|
build_mkl:
|
@@ -51,9 +51,7 @@ jobs:
|
|
51
51
|
strategy:
|
52
52
|
fail-fast: false
|
53
53
|
matrix:
|
54
|
-
|
55
|
-
# runners have Apple silicon chips.
|
56
|
-
os: [ ubuntu-latest, macos-13, windows-latest ]
|
54
|
+
os: [ ubuntu-latest ]
|
57
55
|
python-version: [ 3.9, "3.10", "3.11", "3.12", "3.13"]
|
58
56
|
link_mkl: [true]
|
59
57
|
|
@@ -62,7 +60,7 @@ jobs:
|
|
62
60
|
LINK_MKL: ${{ matrix.link_mkl }}
|
63
61
|
|
64
62
|
steps:
|
65
|
-
- uses: actions/checkout@
|
63
|
+
- uses: actions/checkout@v5
|
66
64
|
with:
|
67
65
|
submodules: recursive
|
68
66
|
|
@@ -70,12 +68,13 @@ jobs:
|
|
70
68
|
shell: bash
|
71
69
|
run: |
|
72
70
|
echo "PYTHON_SUBVERSION=$(echo $PYTHON_VERSION | cut -c 3-)" >> $GITHUB_ENV
|
73
|
-
- uses:
|
71
|
+
- uses: prefix-dev/setup-pixi@v0.9.1
|
74
72
|
with:
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
73
|
+
cache: false
|
74
|
+
pixi-version: v0.46.0
|
75
|
+
- name: Add .pixi/envs/default to the $PATH
|
76
|
+
run: echo "$(pwd)/.pixi/envs/default/bin" >> $GITHUB_PATH
|
77
|
+
shell: bash
|
79
78
|
- name: Install dependencies
|
80
79
|
run: |
|
81
80
|
if [[ "$LINK_MKL" == "true" ]]; then
|
@@ -83,26 +82,19 @@ jobs:
|
|
83
82
|
else
|
84
83
|
BLAS_PKGS="blas-devel=*=*openblas"
|
85
84
|
fi
|
86
|
-
|
87
|
-
conda install scipy=1.5 numpy=1.19 pytest $BLAS_PKGS pkg-config
|
88
|
-
elif [[ "$PYTHON_VERSION" == "3.10" ]]; then
|
89
|
-
conda install scipy=1.7 numpy=1.21 pytest $BLAS_PKGS pkg-config
|
90
|
-
elif [[ "$PYTHON_VERSION" == "3.11" ]]; then
|
91
|
-
conda install scipy=1.9.3 numpy=1.23.4 pytest $BLAS_PKGS pkg-config
|
92
|
-
elif [[ "$PYTHON_VERSION" == "3.12" || "$PYTHON_VERSION" == "3.13" ]]; then
|
93
|
-
conda install scipy numpy pytest $BLAS_PKGS pkg-config
|
94
|
-
fi
|
85
|
+
pixi add $BLAS_PKGS pip scipy numpy pytest mkl mkl-devel pkg-config meson meson-python
|
95
86
|
- name: Build
|
96
87
|
run: |
|
97
|
-
python -c "import numpy as np;
|
88
|
+
pixi r python -c "import numpy as np;print(np.show_config())"
|
98
89
|
if [[ "$LINK_MKL" == "true" ]]; then
|
99
|
-
|
90
|
+
|
91
|
+
pixi r python -m pip install --verbose --no-build-isolation -Csetup-args=-Dlink_mkl=true .
|
100
92
|
else
|
101
|
-
python -m pip install --verbose .
|
93
|
+
pixi r python -m pip install --verbose --no-build-isolation .
|
102
94
|
fi
|
103
95
|
- name: Test
|
104
96
|
run: |
|
105
|
-
pytest
|
97
|
+
pixi r pytest
|
106
98
|
rm -rf build/
|
107
99
|
|
108
100
|
# from here to end it's a copy-paste, with few changes, of
|
@@ -113,11 +105,10 @@ jobs:
|
|
113
105
|
runs-on: ${{ matrix.os }}
|
114
106
|
strategy:
|
115
107
|
matrix:
|
116
|
-
|
117
|
-
os: [ubuntu-latest, macos-14, windows-latest, macos-13]
|
108
|
+
os: [ubuntu-latest, macos-latest, windows-latest]
|
118
109
|
|
119
110
|
steps:
|
120
|
-
- uses: actions/checkout@
|
111
|
+
- uses: actions/checkout@v5
|
121
112
|
with:
|
122
113
|
submodules: true
|
123
114
|
|
@@ -139,7 +130,7 @@ jobs:
|
|
139
130
|
run: conda install -y openblas pkgconfig
|
140
131
|
|
141
132
|
- name: Build wheels
|
142
|
-
uses: pypa/cibuildwheel@
|
133
|
+
uses: pypa/cibuildwheel@v3.2.0
|
143
134
|
|
144
135
|
- uses: actions/upload-artifact@v4
|
145
136
|
with:
|
@@ -150,7 +141,7 @@ jobs:
|
|
150
141
|
name: Build source distribution
|
151
142
|
runs-on: ubuntu-latest
|
152
143
|
steps:
|
153
|
-
- uses: actions/checkout@
|
144
|
+
- uses: actions/checkout@v5
|
154
145
|
with:
|
155
146
|
submodules: true
|
156
147
|
|
@@ -174,7 +165,7 @@ jobs:
|
|
174
165
|
# Only run this step on GH release
|
175
166
|
# if: github.event_name == 'release' && github.event.action == 'published'
|
176
167
|
steps:
|
177
|
-
- uses: actions/download-artifact@
|
168
|
+
- uses: actions/download-artifact@v5
|
178
169
|
with:
|
179
170
|
# unpacks all CIBW artifacts into dist/
|
180
171
|
pattern: cibw-*
|
@@ -183,7 +174,7 @@ jobs:
|
|
183
174
|
|
184
175
|
- uses: pypa/gh-action-pypi-publish@release/v1
|
185
176
|
with:
|
186
|
-
skip-existing:
|
177
|
+
skip-existing: false # Fail loudly for duplicates.
|
187
178
|
# To test:
|
188
179
|
# with:
|
189
180
|
# repository-url: https://test.pypi.org/legacy/
|
scs-3.2.9/.gitmodules
ADDED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: scs
|
3
|
-
Version: 3.2.
|
3
|
+
Version: 3.2.9
|
4
4
|
Summary: Splitting conic solver
|
5
5
|
Author-Email: Brendan O'Donoghue <bodonoghue85@gmail.com>
|
6
6
|
License: MIT License
|
@@ -25,7 +25,20 @@ License: MIT License
|
|
25
25
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
26
26
|
SOFTWARE.
|
27
27
|
|
28
|
-
|
28
|
+
Classifier: License :: OSI Approved :: MIT License
|
29
|
+
Classifier: Programming Language :: C
|
30
|
+
Classifier: Programming Language :: Python
|
31
|
+
Classifier: Programming Language :: Python :: 3
|
32
|
+
Classifier: Programming Language :: Python :: 3.11
|
33
|
+
Classifier: Programming Language :: Python :: 3.12
|
34
|
+
Classifier: Programming Language :: Python :: 3.13
|
35
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
36
|
+
Classifier: Programming Language :: Python :: Implementation :: CPython
|
37
|
+
Classifier: Operating System :: Microsoft :: Windows
|
38
|
+
Classifier: Operating System :: POSIX
|
39
|
+
Classifier: Operating System :: Unix
|
40
|
+
Classifier: Operating System :: MacOS
|
41
|
+
Requires-Python: >=3.9
|
29
42
|
Requires-Dist: numpy
|
30
43
|
Requires-Dist: scipy
|
31
44
|
Description-Content-Type: text/markdown
|
@@ -35,8 +48,7 @@ scs-python
|
|
35
48
|
|
36
49
|
[](https://github.com/bodono/scs-python/actions/workflows/build.yml)
|
37
50
|
[](https://www.cvxgrp.org/scs/)
|
38
|
-
[](https://pepy.tech/project/scs)
|
40
52
|
|
41
53
|
Python interface for [SCS](https://github.com/cvxgrp/scs) 3.0.0 and higher.
|
42
54
|
The full documentation is available [here](https://www.cvxgrp.org/scs/).
|
@@ -3,8 +3,7 @@ scs-python
|
|
3
3
|
|
4
4
|
[](https://github.com/bodono/scs-python/actions/workflows/build.yml)
|
5
5
|
[](https://www.cvxgrp.org/scs/)
|
6
|
-
[](https://pepy.tech/project/scs)
|
8
7
|
|
9
8
|
Python interface for [SCS](https://github.com/cvxgrp/scs) 3.0.0 and higher.
|
10
9
|
The full documentation is available [here](https://www.cvxgrp.org/scs/).
|
@@ -33,6 +33,13 @@ parser.add_argument(
|
|
33
33
|
"to succeed. This option will be removed soon after which we shall "
|
34
34
|
"install the MKL version by default if MKL is available.",
|
35
35
|
)
|
36
|
+
parser.add_argument(
|
37
|
+
"--cudss",
|
38
|
+
dest="cudss",
|
39
|
+
action="store_true",
|
40
|
+
default=False,
|
41
|
+
help="Also compile the cuDSS version of SCS",
|
42
|
+
)
|
36
43
|
parser.add_argument(
|
37
44
|
"--openmp",
|
38
45
|
dest="openmp",
|
@@ -286,9 +293,24 @@ def install_scs(**kwargs):
|
|
286
293
|
)
|
287
294
|
ext_modules += [_scs_mkl]
|
288
295
|
|
296
|
+
if args.cudss:
|
297
|
+
# MKL should be included in the libraries already:
|
298
|
+
_scs_cudss = Extension(
|
299
|
+
name="_scs_cudss",
|
300
|
+
sources=sources + glob("scs_source/linsys/cudss/direct/*.c"),
|
301
|
+
depends=glob("scs/*.h"),
|
302
|
+
define_macros=list(define_macros) + [("PY_CUDSS", None)],
|
303
|
+
include_dirs=include_dirs + ["scs_source/linsys/cudss/direct/"],
|
304
|
+
libraries=list(libraries),
|
305
|
+
extra_compile_args=list(extra_compile_args),
|
306
|
+
extra_link_args=list(extra_link_args),
|
307
|
+
)
|
308
|
+
ext_modules += [_scs_cudss]
|
309
|
+
|
310
|
+
|
289
311
|
setup(
|
290
312
|
name="scs",
|
291
|
-
version="3.2.
|
313
|
+
version="3.2.9",
|
292
314
|
author="Brendan O'Donoghue",
|
293
315
|
author_email="bodonoghue85@gmail.com",
|
294
316
|
url="http://github.com/cvxgrp/scs",
|
scs-3.2.9/meson.build
ADDED
@@ -0,0 +1,253 @@
|
|
1
|
+
project('scs', 'c')
|
2
|
+
|
3
|
+
py = import('python').find_installation(pure: false)
|
4
|
+
|
5
|
+
cc = meson.get_compiler('c')
|
6
|
+
fs = import('fs')
|
7
|
+
# Check for submodule before doing anything else
|
8
|
+
if not fs.exists('scs_source/README.md')
|
9
|
+
error('Missing the `scs_source` submodule! Run `git submodule update --init` to fix this.')
|
10
|
+
endif
|
11
|
+
|
12
|
+
# Simpler check for numpy
|
13
|
+
incdir_numpy = run_command(py,['-c',
|
14
|
+
'''import os
|
15
|
+
import numpy as np
|
16
|
+
try:
|
17
|
+
incdir = os.path.relpath(np.get_include())
|
18
|
+
except Exception:
|
19
|
+
incdir = np.get_include()
|
20
|
+
print(incdir)
|
21
|
+
'''], check: true).stdout().strip()
|
22
|
+
|
23
|
+
# Get BLAS
|
24
|
+
blas_deps = []
|
25
|
+
if get_option('link_mkl')
|
26
|
+
blas_deps = [cc.find_library('mkl_rt', required : false)]
|
27
|
+
if not blas_deps[0].found()
|
28
|
+
blas_deps = [dependency('mkl-sdl', required : false)]
|
29
|
+
endif
|
30
|
+
if not blas_deps[0].found()
|
31
|
+
blas_deps = [ dependency('mkl-dynamic-ilp64-iomp', required: false) ]
|
32
|
+
endif
|
33
|
+
else
|
34
|
+
if host_machine.system() == 'darwin'
|
35
|
+
blas_deps = [dependency('Accelerate')]
|
36
|
+
else
|
37
|
+
blas_deps = [cc.find_library('openblas', static: get_option('link_blas_statically'), required : false)]
|
38
|
+
if not blas_deps[0].found()
|
39
|
+
blas_deps = [dependency(['openblas', 'OpenBLAS'], static: get_option('link_blas_statically'), required : false)]
|
40
|
+
endif
|
41
|
+
endif
|
42
|
+
|
43
|
+
# try to find blas/cblas (e.g., Linux)
|
44
|
+
if not blas_deps[0].found()
|
45
|
+
blas_deps = [cc.find_library('blas', static: get_option('link_blas_statically'), required : false)]
|
46
|
+
if not blas_deps[0].found()
|
47
|
+
blas_deps = [dependency('blas', static: get_option('link_blas_statically'), required : false)]
|
48
|
+
endif
|
49
|
+
lapack_dep = cc.find_library('lapack', static: get_option('link_blas_statically'), required : false)
|
50
|
+
if not lapack_dep.found()
|
51
|
+
lapack_dep = dependency('lapack', static: get_option('link_blas_statically'), required : false)
|
52
|
+
endif
|
53
|
+
if lapack_dep.found()
|
54
|
+
blas_deps += lapack_dep
|
55
|
+
endif
|
56
|
+
cblas_dep = cc.find_library('cblas', static: get_option('link_blas_statically'), required : false)
|
57
|
+
if not cblas_dep.found()
|
58
|
+
cblas_dep = dependency('cblas', static: get_option('link_blas_statically'), required : false)
|
59
|
+
endif
|
60
|
+
if cblas_dep.found()
|
61
|
+
blas_deps += cblas_dep
|
62
|
+
endif
|
63
|
+
endif
|
64
|
+
endif
|
65
|
+
|
66
|
+
# Since nothing above was required, we stop here if failed.
|
67
|
+
# When creating an sdist we are not compiling / linking, so don't need to fail.
|
68
|
+
if not blas_deps[0].found() and not get_option('sdist_mode')
|
69
|
+
error('OpenBLAS or Netlib BLAS/CBLAS is required on all platforms, and was not found.')
|
70
|
+
endif
|
71
|
+
|
72
|
+
# Common
|
73
|
+
common_c_args = cc.get_supported_arguments('-Wno-unused-result') + [
|
74
|
+
'-DPYTHON', '-DCTRLC=1'
|
75
|
+
]
|
76
|
+
common_includes = [
|
77
|
+
'scs',
|
78
|
+
'scs_source/include',
|
79
|
+
'scs_source/linsys',
|
80
|
+
incdir_numpy
|
81
|
+
]
|
82
|
+
_deps = [blas_deps]
|
83
|
+
if get_option('use_openmp')
|
84
|
+
_deps += dependency('openmp')
|
85
|
+
endif
|
86
|
+
|
87
|
+
is_linux = host_machine.system() == 'linux'
|
88
|
+
if is_linux
|
89
|
+
_deps += cc.find_library('rt', required : true)
|
90
|
+
endif
|
91
|
+
|
92
|
+
if get_option('use_lapack')
|
93
|
+
common_c_args += '-DUSE_LAPACK=1'
|
94
|
+
endif
|
95
|
+
|
96
|
+
if get_option('use_singleprec')
|
97
|
+
common_c_args += '-DSFLOAT=1'
|
98
|
+
endif
|
99
|
+
|
100
|
+
if get_option('use_blas64')
|
101
|
+
common_c_args += '-DBLAS64=1'
|
102
|
+
endif
|
103
|
+
|
104
|
+
if get_option('use_extraverbose')
|
105
|
+
common_c_args += '-DVERBOSITY=999'
|
106
|
+
endif
|
107
|
+
|
108
|
+
is_gpu_build = get_option('use_gpu') or get_option('link_cudss')
|
109
|
+
use_32bit_ints = get_option('int32')
|
110
|
+
|
111
|
+
if is_gpu_build and not use_32bit_ints
|
112
|
+
error('GPU builds require 32-bit integers. Please re-run Meson with -Dint32=true')
|
113
|
+
endif
|
114
|
+
|
115
|
+
if not use_32bit_ints
|
116
|
+
common_c_args += '-DDLONG=1'
|
117
|
+
endif
|
118
|
+
|
119
|
+
cuda_dep = dependency('cuda', required: is_gpu_build)
|
120
|
+
if is_gpu_build and not cuda_dep.found()
|
121
|
+
error('GPU build requested but CUDA toolkit was not found.')
|
122
|
+
endif
|
123
|
+
|
124
|
+
if get_option('use_gpu')
|
125
|
+
gpu_c_args = common_c_args + ['-DPY_GPU=1', '-DINDIRECT=1']
|
126
|
+
_deps += cuda_dep
|
127
|
+
if get_option('gpu_atrans')
|
128
|
+
gpu_c_args += '-DGPU_TRANSPOSE_MAT=1'
|
129
|
+
endif
|
130
|
+
ext_modules += py.extension_module(
|
131
|
+
'_scs_gpu',
|
132
|
+
common_sources,
|
133
|
+
# In Meson, sources with a `.cu` extension are compiled with nvcc by default.
|
134
|
+
# To compile `.c` files with nvcc, they must be explicitly targeted.
|
135
|
+
# It is strongly recommended to rename CUDA-C files to `.cu`.
|
136
|
+
fs.glob('scs_source/linsys/gpu/*.c'),
|
137
|
+
fs.glob('scs_source/linsys/gpu/indirect/*.c'),
|
138
|
+
c_args: gpu_c_args,
|
139
|
+
dependencies: _deps,
|
140
|
+
include_directories: [
|
141
|
+
common_includes, 'scs_source/linsys/gpu/', 'scs_source/linsys/gpu/indirect'
|
142
|
+
],
|
143
|
+
install: true,
|
144
|
+
install_dir: scs_dir,
|
145
|
+
)
|
146
|
+
endif
|
147
|
+
|
148
|
+
# Sources
|
149
|
+
scs_core_sources = files(
|
150
|
+
'scs_source/src/aa.c',
|
151
|
+
'scs_source/src/cones.c',
|
152
|
+
'scs_source/src/ctrlc.c',
|
153
|
+
'scs_source/src/exp_cone.c',
|
154
|
+
'scs_source/src/linalg.c',
|
155
|
+
'scs_source/src/normalize.c',
|
156
|
+
'scs_source/src/rw.c',
|
157
|
+
'scs_source/src/scs_version.c',
|
158
|
+
'scs_source/src/scs.c',
|
159
|
+
'scs_source/src/util.c'
|
160
|
+
)
|
161
|
+
|
162
|
+
common_linsys_sources = files(
|
163
|
+
'scs_source/linsys/scs_matrix.c',
|
164
|
+
'scs_source/linsys/csparse.c'
|
165
|
+
)
|
166
|
+
|
167
|
+
amd_sources = files(
|
168
|
+
'scs_source/linsys/external/amd/amd_1.c',
|
169
|
+
'scs_source/linsys/external/amd/amd_2.c',
|
170
|
+
'scs_source/linsys/external/amd/amd_aat.c',
|
171
|
+
'scs_source/linsys/external/amd/amd_control.c',
|
172
|
+
'scs_source/linsys/external/amd/amd_defaults.c',
|
173
|
+
'scs_source/linsys/external/amd/amd_dump.c',
|
174
|
+
'scs_source/linsys/external/amd/amd_global.c',
|
175
|
+
'scs_source/linsys/external/amd/amd_info.c',
|
176
|
+
'scs_source/linsys/external/amd/amd_order.c',
|
177
|
+
'scs_source/linsys/external/amd/amd_post_tree.c',
|
178
|
+
'scs_source/linsys/external/amd/amd_postorder.c',
|
179
|
+
'scs_source/linsys/external/amd/amd_preprocess.c',
|
180
|
+
'scs_source/linsys/external/amd/amd_valid.c',
|
181
|
+
'scs_source/linsys/external/amd/SuiteSparse_config.c'
|
182
|
+
)
|
183
|
+
|
184
|
+
# Build modules
|
185
|
+
scs_dir = py.get_install_dir() / 'scs'
|
186
|
+
py.extension_module(
|
187
|
+
'_scs_direct',
|
188
|
+
'scs/scspy.c',
|
189
|
+
'scs_source/linsys/cpu/direct/private.c',
|
190
|
+
'scs_source/linsys/external/qdldl/qdldl.c',
|
191
|
+
common_linsys_sources,
|
192
|
+
scs_core_sources,
|
193
|
+
amd_sources,
|
194
|
+
c_args: common_c_args,
|
195
|
+
include_directories: common_includes + [
|
196
|
+
'scs_source/linsys/cpu/direct',
|
197
|
+
'scs_source/linsys/external/qdldl',
|
198
|
+
'scs_source/linsys/external/amd'
|
199
|
+
],
|
200
|
+
dependencies: _deps,
|
201
|
+
install_dir: scs_dir,
|
202
|
+
install: true,
|
203
|
+
)
|
204
|
+
|
205
|
+
py.extension_module(
|
206
|
+
'_scs_indirect',
|
207
|
+
'scs/scspy.c',
|
208
|
+
'scs_source/linsys/cpu/indirect/private.c',
|
209
|
+
common_linsys_sources,
|
210
|
+
scs_core_sources,
|
211
|
+
c_args: common_c_args + ['-DPY_INDIRECT', '-DINDIRECT=1'],
|
212
|
+
include_directories: common_includes + ['scs_source/linsys/cpu/indirect'],
|
213
|
+
dependencies: _deps,
|
214
|
+
install_dir: scs_dir,
|
215
|
+
install: true,
|
216
|
+
)
|
217
|
+
|
218
|
+
if get_option('link_mkl')
|
219
|
+
py.extension_module(
|
220
|
+
'_scs_mkl',
|
221
|
+
'scs/scspy.c',
|
222
|
+
'scs_source/linsys/mkl/direct/private.c',
|
223
|
+
common_linsys_sources,
|
224
|
+
scs_core_sources,
|
225
|
+
c_args: common_c_args + ['-DPY_MKL'],
|
226
|
+
include_directories: common_includes + ['scs_source/linsys/mkl/direct'],
|
227
|
+
dependencies: _deps,
|
228
|
+
install_dir: scs_dir,
|
229
|
+
install: true,
|
230
|
+
)
|
231
|
+
endif
|
232
|
+
|
233
|
+
if get_option('link_cudss')
|
234
|
+
_deps += cuda_dep
|
235
|
+
cudss_dep = dependency('cudss', required: true)
|
236
|
+
_deps += cudss_dep
|
237
|
+
py.extension_module(
|
238
|
+
'_scs_cudss',
|
239
|
+
'scs/scspy.c',
|
240
|
+
'scs_source/linsys/cudss/direct/private.c',
|
241
|
+
common_linsys_sources,
|
242
|
+
scs_core_sources,
|
243
|
+
c_args: common_c_args + ['-DPY_CUDSS'],
|
244
|
+
include_directories: common_includes + ['scs_source/linsys/cudss/direct'],
|
245
|
+
dependencies: _deps,
|
246
|
+
install_dir: scs_dir,
|
247
|
+
install: true,
|
248
|
+
)
|
249
|
+
endif
|
250
|
+
|
251
|
+
|
252
|
+
|
253
|
+
py.install_sources('scs/py/__init__.py', subdir: 'scs')
|
scs-3.2.9/meson.options
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
# we use this to build pre-compiled wheels on github CI
|
2
|
+
# copying anaconda openblas into SCS wheels for ease of
|
3
|
+
# installation
|
4
|
+
option('link_blas_statically', type: 'boolean',
|
5
|
+
value: false, description: 'copy BLAS compiled object into SCS module(s)')
|
6
|
+
option('link_mkl', type: 'boolean',
|
7
|
+
value: false, description: 'link to mkl-rt library')
|
8
|
+
option('link_cudss', type: 'boolean',
|
9
|
+
value: false, description: 'link to cuDSS library')
|
10
|
+
option('use_openmp', type: 'boolean',
|
11
|
+
value: false, description: 'Compile SCS with OpenMP parallelization enabled. This can make SCS faster, but requires a compiler with openMP support, the user must control how many threads OpenMP uses')
|
12
|
+
option('sdist_mode', type: 'boolean', value: false,
|
13
|
+
description: 'Set to true if building an sdist')
|
14
|
+
option('use_lapack', type: 'boolean',
|
15
|
+
value: true, description: 'use LAPACK')
|
16
|
+
option('use_singleprec', type: 'boolean',
|
17
|
+
value: false, description: 'use single precision floating point')
|
18
|
+
option('use_extraverbose', type: 'boolean',
|
19
|
+
value: false, description: 'Enable extra verbose SCS (for debugging).')
|
20
|
+
option('use_gpu', type: 'boolean',
|
21
|
+
value: false, description: 'setup the GPU variant')
|
22
|
+
option('int32', type: 'boolean',
|
23
|
+
value: false, description: 'Use 32-bit integers (required for GPU).')
|
24
|
+
option('gpu_atrans', type: 'boolean',
|
25
|
+
value: false, description: 'transpose matrices for the GPU')
|
26
|
+
option('use_blas64', type: 'boolean',
|
27
|
+
value: false, description: 'Use 64-bit convention for BLAS')
|
scs-3.2.9/pixi.toml
ADDED
@@ -1,17 +1,31 @@
|
|
1
1
|
[build-system]
|
2
2
|
build-backend = 'mesonpy'
|
3
3
|
requires = [
|
4
|
-
"numpy >= 2.0.0
|
5
|
-
"oldest-supported-numpy; python_version <= '3.8'",
|
4
|
+
"numpy >= 2.0.0",
|
6
5
|
"meson-python"
|
7
6
|
]
|
8
7
|
|
9
8
|
[project]
|
10
9
|
name = 'scs'
|
11
|
-
version = "3.2.
|
10
|
+
version = "3.2.9"
|
12
11
|
description = 'Splitting conic solver'
|
13
12
|
readme = 'README.md'
|
14
|
-
requires-python = '>=3.
|
13
|
+
requires-python = '>=3.9'
|
14
|
+
classifiers = [
|
15
|
+
'License :: OSI Approved :: MIT License',
|
16
|
+
'Programming Language :: C',
|
17
|
+
'Programming Language :: Python',
|
18
|
+
'Programming Language :: Python :: 3',
|
19
|
+
'Programming Language :: Python :: 3.11',
|
20
|
+
'Programming Language :: Python :: 3.12',
|
21
|
+
'Programming Language :: Python :: 3.13',
|
22
|
+
'Programming Language :: Python :: 3 :: Only',
|
23
|
+
'Programming Language :: Python :: Implementation :: CPython',
|
24
|
+
'Operating System :: Microsoft :: Windows',
|
25
|
+
'Operating System :: POSIX',
|
26
|
+
'Operating System :: Unix',
|
27
|
+
'Operating System :: MacOS',
|
28
|
+
]
|
15
29
|
license = {file = 'LICENSE'}
|
16
30
|
authors = [
|
17
31
|
{name = "Brendan O'Donoghue", email = "bodonoghue85@gmail.com"}]
|
@@ -80,3 +94,8 @@ inherit.before-all = "append"
|
|
80
94
|
before-all = [
|
81
95
|
# "apk update", "apk search -v '*blas*'",
|
82
96
|
"apk add openblas-dev"]
|
97
|
+
|
98
|
+
[tool.pytest.ini_options]
|
99
|
+
testpaths = [
|
100
|
+
"test",
|
101
|
+
]
|
@@ -1,7 +1,7 @@
|
|
1
1
|
#!/usr/bin/env python
|
2
2
|
from warnings import warn
|
3
3
|
from scipy import sparse
|
4
|
-
import _scs_direct
|
4
|
+
from scs import _scs_direct
|
5
5
|
|
6
6
|
__version__ = _scs_direct.version()
|
7
7
|
__sizeof_int__ = _scs_direct.sizeof_int()
|
@@ -26,13 +26,13 @@ SOLVED_INACCURATE = 2 # SCS best guess solved
|
|
26
26
|
|
27
27
|
# Choose which SCS to import based on settings.
|
28
28
|
def _select_scs_module(stgs):
|
29
|
+
|
29
30
|
if stgs.pop("gpu", False): # False by default
|
30
31
|
if not stgs.pop("use_indirect", _USE_INDIRECT_DEFAULT):
|
31
32
|
raise NotImplementedError(
|
32
|
-
"GPU direct solver
|
33
|
-
|
34
|
-
|
35
|
-
|
33
|
+
"For the GPU direct solver, pass `use_indirect=False cudss=True`.")
|
34
|
+
from scs import _scs_gpu
|
35
|
+
|
36
36
|
return _scs_gpu
|
37
37
|
|
38
38
|
if stgs.pop("mkl", False): # False by default
|
@@ -40,12 +40,21 @@ def _select_scs_module(stgs):
|
|
40
40
|
raise NotImplementedError(
|
41
41
|
"MKL indirect solver not yet available, pass `use_indirect=False`."
|
42
42
|
)
|
43
|
-
import _scs_mkl
|
43
|
+
from scs import _scs_mkl
|
44
44
|
|
45
45
|
return _scs_mkl
|
46
46
|
|
47
|
+
if stgs.pop("cudss", False): # False by default
|
48
|
+
if stgs.pop("use_indirect", False):
|
49
|
+
raise NotImplementedError(
|
50
|
+
"cuDSS is a direct solver, pass `use_indirect=False`."
|
51
|
+
)
|
52
|
+
from scs import _scs_cudss
|
53
|
+
|
54
|
+
return _scs_cudss
|
55
|
+
|
47
56
|
if stgs.pop("use_indirect", _USE_INDIRECT_DEFAULT):
|
48
|
-
import _scs_indirect
|
57
|
+
from scs import _scs_indirect
|
49
58
|
|
50
59
|
return _scs_indirect
|
51
60
|
|
@@ -79,7 +88,7 @@ class SCS(object):
|
|
79
88
|
|
80
89
|
if not sparse.issparse(A):
|
81
90
|
raise TypeError("A is required to be a sparse matrix")
|
82
|
-
if not
|
91
|
+
if not A.format == "csc":
|
83
92
|
warn(
|
84
93
|
"Converting A to a CSC (compressed sparse column) matrix;"
|
85
94
|
" may take a while."
|
@@ -109,7 +118,7 @@ class SCS(object):
|
|
109
118
|
raise TypeError("P is required to be a sparse matrix")
|
110
119
|
if P.shape != (n, n):
|
111
120
|
raise ValueError("P shape not compatible with A,b,c")
|
112
|
-
if not
|
121
|
+
if not P.format == "csc":
|
113
122
|
warn(
|
114
123
|
"Converting P to a CSC (compressed sparse column) "
|
115
124
|
"matrix; may take a while."
|