Skip to content

Address 3.3.0 review: BLAS64 gating, infinity validation, lin_sys_solver, CI/test fixes - #230

Merged
bodono merged 3 commits into
masterfrom
fix/review-batch
Sep 5, 2026
Merged

Address 3.3.0 review: BLAS64 gating, infinity validation, lin_sys_solver, CI/test fixes#230
bodono merged 3 commits into
masterfrom
fix/review-batch

Conversation

@bodono

@bodono bodono commented Aug 30, 2026

Copy link
Copy Markdown
Owner

Batch of the scs-python findings from the 3.3.0 review, excluding the removed-kwargs shim (intentionally skipped) and the SIGINT interrupt manager (separate PR):

  • BLAS64 gating: use_blas64=true without link_mkl=true declared ILP64 integer widths against LP64 system BLAS — memory corruption by configuration (the review measured 20 spectral failures under Accelerate). Meson now rejects the combination with a clear error; README example fixed.
  • Infinity validation aligned with core: the wrapper admitted +inf for eps_*/time_limit_secs that core then rejected with a misleading generic error. The wrapper now mirrors core's !isfinite with per-setting messages (time_limit_secs=0 remains the no-limit spelling).
  • info['lin_sys_solver'] exposed — with AUTO choosing invisibly (and preferring MKL in standard wheels), the chosen backend is now inspectable (verified: returns e.g. 'sparse-direct-amd-qdldl').
  • README: AUTO/MKL upgrade-behavior disclosure with pinning guidance; acceleration_interval default corrected to 5.
  • Duplicate test name fixed: the shadowed scale/rho_x/alpha +inf rejection tests run again.
  • CI: the source-MKL job runs three semantic cases (an LP64 build solving under an MKL-backed NumPy, an ILP64 build hitting the interface-layer guard under that same NumPy, an ILP64 build solving under an OpenBLAS NumPy) instead of every Python version times both widths; the OpenMP, Accelerate and native-arch source lanes run one configuration each, the wheel matrix covers every Python ABI. Unrecognized pytest option dropped.

Stacked on #232.

🤖 Generated with Claude Code

@wshanks

wshanks commented Aug 31, 2026

Copy link
Copy Markdown

Will this address the following error that I see with scs 3.3.0 or should I open a new issue?

INTEL oneMKL ERROR: /home/runner/work/qiskit-experiments/qiskit-experiments/.tox/qiskit-main/lib/python3.10/site-packages/scs/../scs.libs/libmkl_def.so.3: cannot open shared object file: No such file or directory.
Intel oneMKL FATAL ERROR: Cannot load libmkl_def.so.3.

bodono added a commit that referenced this pull request Aug 31, 2026
Moves the scs/py_ctrlc.c legacy-build wiring here from #230: the file
is introduced by this PR, so the branch that references it must be the
one that contains it.
bodono added a commit that referenced this pull request Aug 31, 2026
Moves the scs/py_ctrlc.c legacy-build wiring here from #230: the file
is introduced by this PR, so the branch that references it must be the
one that contains it.
bodono added a commit that referenced this pull request Aug 31, 2026
Moves the scs/py_ctrlc.c legacy-build wiring here from #230: the file
is introduced by this PR, so the branch that references it must be the
one that contains it.
bodono added a commit that referenced this pull request Aug 31, 2026
Moves the scs/py_ctrlc.c legacy-build wiring here from #230: the file
is introduced by this PR, so the branch that references it must be the
one that contains it.
bodono added a commit that referenced this pull request Aug 31, 2026
Moves the scs/py_ctrlc.c legacy-build wiring here from #230: the file
is introduced by this PR, so the branch that references it must be the
one that contains it.
bodono added a commit that referenced this pull request Sep 1, 2026
Moves the scs/py_ctrlc.c legacy-build wiring here from #230: the file
is introduced by this PR, so the branch that references it must be the
one that contains it.
@bodono
bodono changed the base branch from master to fix/wheels-openblas-423 September 3, 2026 19:51
@bodono
bodono force-pushed the fix/review-batch branch 3 times, most recently from 2ca97c6 to 90e7010 Compare September 3, 2026 21:07
@bodono
bodono force-pushed the fix/wheels-openblas-423 branch from 1442623 to 8e12289 Compare September 3, 2026 21:17
@bodono
bodono force-pushed the fix/review-batch branch 3 times, most recently from 195d884 to aad08cc Compare September 4, 2026 11:36
bodono and others added 2 commits September 4, 2026 17:48
- acceleration_regularization: only non-finite values are invalid; the
  sign selects the mode per the core contract (negative = pinned).
- eps_*, time_limit_secs: reject +inf like the core (!isfinite) with
  setting-specific messages; 0 disables the time limit.
- info gains lin_sys_solver, the backend that actually ran.
- use_blas64 without link_mkl is refused at configure time: declaring
  ILP64 against an LP64 system BLAS corrupts every BLAS call. The legacy
  setup script refuses --blas64 for the same reason.
- Drop the unrecognized faulthandler_exit_on_timeout pytest option.
- README: acceleration_interval default is 5; BLAS64 needs link_mkl.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
build_mkl runs an LP64 solve under an MKL-backed NumPy, the ILP64
interface-layer guard under that same NumPy (a checked-in probe), and an
ILP64 solve under an OpenBLAS NumPy, instead of every Python version
times both widths; the solver name is asserted in the MKL test itself.
The OpenMP, Accelerate and native-arch source lanes run one
configuration each; the wheel matrix already covers every Python ABI.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@bodono
bodono changed the base branch from fix/wheels-openblas-423 to master September 5, 2026 14:51
@bodono
bodono merged commit d805d8e into master Sep 5, 2026
21 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants