Commit f6b7dc6
authored
Add MKL BLAS64 support and multi-threaded PARDISO in wheels (#192)
* Add MKL BLAS64 support and multi-threaded PARDISO in wheels
Previously the MKL backend only supported LP64 (32-bit BLAS integers)
and shipped sequential MKL in pip wheels, giving single-threaded
PARDISO. This adds ILP64 support and ships multi-threaded MKL.
meson.build:
- Select LP64 or ILP64 MKL component libraries based on use_blas64
- Prefer iomp (Intel OpenMP) variant for multi-threaded MKL/PARDISO,
fall back to sequential if iomp pkg-config is unavailable
- Windows uses sequential MKL due to a broken iomp .pc file in conda
- Add mkl_rt to MKL backend dependencies so MKL_Set_Interface_Layer()
is available at runtime (symbol not exported by component libraries)
pyproject.toml:
- Add compiler pkgconfig/lib paths to cibuildwheel environment so
mkl-dynamic-lp64-iomp is discoverable (its .pc file lives under
the compiler runtime, not the MKL directory)
- Result: Linux x86_64 wheels now bundle libiomp5 + libmkl_intel_thread
instead of libmkl_sequential, enabling multi-threaded PARDISO
- Install intel-openmp on Windows for future iomp support
build.yml:
- Add use_blas64 matrix dimension to build_mkl CI job
- Simplify build step to always pass link_mkl, conditionally add
use_blas64
Depends on cvxgrp/scs#383 (updates scs_source submodule).
* Fail fast on unsupported MKL configurations
* Update scs_source MKL initialization order
* Stop enforcing MKL threading layer at runtime
* Document MKL wheel and BLAS64 contracts
* Update scs_source for CMake BLAS64 fix
* Fix pixi MKL dependency set in CI
* Update scs_source for expanded MKL CMake matrix
* Update scs_source for clearer MKL init error
* Update scs_source for MKL mismatch CI
* Update scs_source for verbose MKL mismatch test
* Update scs_source for mismatch test ABI fix
* Update scs_source to merged SCS master
* Simplify Meson mkl_rt lookup1 parent e7ec42f commit f6b7dc6
6 files changed
Lines changed: 91 additions & 16 deletions
File tree
- .github/workflows
- test
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
58 | 58 | | |
59 | 59 | | |
60 | 60 | | |
| 61 | + | |
61 | 62 | | |
62 | 63 | | |
63 | 64 | | |
64 | 65 | | |
| 66 | + | |
65 | 67 | | |
66 | 68 | | |
67 | 69 | | |
| |||
90 | 92 | | |
91 | 93 | | |
92 | 94 | | |
93 | | - | |
94 | | - | |
95 | | - | |
96 | | - | |
97 | | - | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
98 | 98 | | |
| 99 | + | |
99 | 100 | | |
100 | 101 | | |
101 | 102 | | |
| |||
198 | 199 | | |
199 | 200 | | |
200 | 201 | | |
201 | | - | |
| 202 | + | |
202 | 203 | | |
203 | 204 | | |
204 | 205 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
48 | 48 | | |
49 | 49 | | |
50 | 50 | | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
51 | 54 | | |
52 | 55 | | |
53 | 56 | | |
| |||
58 | 61 | | |
59 | 62 | | |
60 | 63 | | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
61 | 69 | | |
62 | 70 | | |
63 | 71 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
22 | 22 | | |
23 | 23 | | |
24 | 24 | | |
| 25 | + | |
25 | 26 | | |
26 | | - | |
27 | | - | |
28 | | - | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
29 | 68 | | |
30 | 69 | | |
31 | 70 | | |
32 | 71 | | |
33 | 72 | | |
34 | 73 | | |
35 | | - | |
36 | | - | |
37 | | - | |
38 | 74 | | |
39 | 75 | | |
40 | 76 | | |
| |||
276 | 312 | | |
277 | 313 | | |
278 | 314 | | |
| 315 | + | |
| 316 | + | |
| 317 | + | |
| 318 | + | |
| 319 | + | |
| 320 | + | |
| 321 | + | |
| 322 | + | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
279 | 334 | | |
280 | 335 | | |
281 | 336 | | |
282 | 337 | | |
283 | 338 | | |
284 | 339 | | |
285 | 340 | | |
286 | | - | |
| 341 | + | |
287 | 342 | | |
288 | | - | |
| 343 | + | |
289 | 344 | | |
290 | 345 | | |
291 | 346 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
75 | 75 | | |
76 | 76 | | |
77 | 77 | | |
78 | | - | |
| 78 | + | |
79 | 79 | | |
80 | 80 | | |
81 | 81 | | |
| |||
Submodule scs_source updated 17 files
- .github/workflows/build_mkl.yml+16-6
- .github/workflows/cmake_mkl.yml+30-10
- .github/workflows/mkl_interface_mismatch.yml+72
- CMakeLists.txt+48-7
- Makefile+7-3
- docs/src/api/compile_flags.rst+1-1
- docs/src/api/python.rst+4-1
- docs/src/install/c.rst+10-1
- docs/src/install/python.rst+27-1
- docs/src/linear_solver/index.rst+5
- linsys/mkl/direct/private.c+35-14
- scs.mk+12-1
- src/aa.c+32-32
- src/scs.c+114-59
- test/mkl_interface_mismatch.c+64
- test/problems/test_inaccurate.h+10-6
- test/problems/test_solver_options.h+1-1
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
| 2 | + | |
| 3 | + | |
2 | 4 | | |
3 | 5 | | |
4 | 6 | | |
| |||
41 | 43 | | |
42 | 44 | | |
43 | 45 | | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
44 | 55 | | |
45 | 56 | | |
46 | 57 | | |
| |||
0 commit comments