Merged
Conversation
Build the _scs_accelerate extension module automatically on macOS using the Accelerate framework's sparse LDLt solver. Users select it at runtime with apple_ldl=True. The module uses 32-bit integers (Accelerate does not support DLONG). - Add _scs_accelerate to meson.build with DLONG filtered from c_args - Add PY_ACCELERATE to scsmodule.h preprocessor chain - Add apple_ldl kwarg to _select_scs_module() in __init__.py - Add test_solve_random_cone_prob_accelerate.py - Add build_accelerate CI job (macOS, Python 3.10-3.14) - Update README with accelerate usage - Update scs_source submodule to include accelerate backend Co-Authored-By: Claude Opus 4.6 <[email protected]>
The build_accelerate CI job runs on macos-latest (ARM) but pixi.toml only listed linux-64, causing pixi to fail on macOS runners. Co-Authored-By: Claude Opus 4.6 <[email protected]>
Adding osx-arm64 globally to pixi.toml broke MKL jobs because pixi tried to solve MKL deps for osx-arm64 where they don't exist. Instead, the accelerate job adds the platform at runtime. Co-Authored-By: Claude Opus 4.6 <[email protected]>
Add osx-arm64 to pixi.toml platforms so setup-pixi works on macOS. Use --platform linux-64 in Linux jobs and --platform osx-arm64 in the accelerate job so pixi doesn't try to solve platform-specific packages (like MKL) for the wrong platform. Co-Authored-By: Claude Opus 4.6 <[email protected]>
Use pytest.skip on non-macOS instead of try/except ImportError. This ensures the macOS wheel build fails if _scs_accelerate is not included. Co-Authored-By: Claude Opus 4.6 <[email protected]>
Skip on macOS and Linux aarch64 where MKL is not included. On Linux x86_64 and Windows, fail if _scs_mkl import is missing to catch wheel packaging regressions. Co-Authored-By: Claude Opus 4.6 <[email protected]>
Skip on macOS and non-x86_64 Linux. On x86_64 Linux, use try/except for the import to handle musllinux (openblas) vs manylinux (MKL). On Windows, fail hard if _scs_mkl is missing. Co-Authored-By: Claude Opus 4.6 <[email protected]>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
_scs_accelerateextension module automatically on macOS using the Accelerate framework's sparse LDLt solverapple_ldl=True(e.g.,scs.SCS(data, cone, apple_ldl=True))Files changed
meson.build— auto-detect macOS, build_scs_acceleratewith DLONG filtered from c_argsscs/scsmodule.h— addPY_ACCELERATEto preprocessor chainscs/py/__init__.py— addapple_ldlkwarg to_select_scs_module()test/test_solve_random_cone_prob_accelerate.py— feasible/infeasible/unbounded tests.github/workflows/build.yml—build_acceleratejob (macOS, Python 3.10–3.14)README.md— document accelerate usagescs_source— update submodule to include accelerate backendTest plan
_scs_accelerate.cpython-312-darwin.so🤖 Generated with Claude Code