Since SCS libraries link with openblas32 it makes sense to link them against blastrampoline in julia-1.10 (after it is announced the new lts); How should we proceed with switching to libblastrampoline?
Options:
Dropping support for julia <1.10 and going fully through lbt
splitting our codepaths for julia [1.6-1.10) and [1.10 - ).
In both cases running with lbt requires manually forwarding LP64 blas:
(SCS) pkg> st
Project SCS v2.0.1
Status `~/.julia/dev/SCS/Project.toml`
[b8f27783] MathOptInterface v1.31.1
[ae029012] Requires v1.3.0
⌅ [656ef2d0] OpenBLAS32_jll v0.3.24+0
[f4f2fc5b] SCS_jll v3.2.7+0 `~/.julia/dev/SCS_jll`
[2f01184e] SparseArrays v1.10.0
Info Packages marked with ⌅ have new versions available but compatibility constraints restrict them from upgrading. To see why use `status --outdated`
julia> using SCS
julia> using Test
julia> include("test/test_problems.jl")
test_options (generic function with 1 method)
julia> using LinearAlgebra
julia> LinearAlgebra.BLAS.lbt_get_config()
LinearAlgebra.BLAS.LBTConfig
Libraries:
└ [ILP64] libopenblas64_.so
julia> test_options(SCS.DirectSolver)
------------------------------------------------------------------
SCS v3.2.7 - Splitting Conic Solver
(c) Brendan O'Donoghue, Stanford University, 2012
------------------------------------------------------------------
problem: variables n: 5, constraints m: 8
cones: l: linear vars: 8
settings: eps_abs: 1.0e-04, eps_rel: 1.0e-04, eps_infeas: 1.0e-07
alpha: 1.50, scale: 1.00e-01, adaptive_scale: 1
max_iters: 100000, normalize: 1, rho_x: 1.00e-06
acceleration_lookback: 10, acceleration_interval: 10
compiled with openmp parallelization enabled
lin-sys: sparse-direct-amd-qdldl
nnz(A): 12, nnz(P): 0
Error: no BLAS/LAPACK library loaded!
[...]
Error: no BLAS/LAPACK library loaded!
------------------------------------------------------------------
iter | pri res | dua res | gap | obj | scale | time (s)
------------------------------------------------------------------
Error: no BLAS/LAPACK library loaded!
[...]
Error: no BLAS/LAPACK library loaded!
0|1.94e-318 2.76e-313 1.25e-309 0.00e+00 1.00e-01 6.70e-04
Error: no BLAS/LAPACK library loaded!
Error: no BLAS/LAPACK library loaded!
Error: no BLAS/LAPACK library loaded!
WARNING - large complementary slackness residual: 0.000000
Error: no BLAS/LAPACK library loaded!
Error: no BLAS/LAPACK library loaded!
Error: no BLAS/LAPACK library loaded!
------------------------------------------------------------------
status: solved
timings: total: 6.79e-04s = setup: 4.40e-04s + solve: 2.38e-04s
lin-sys: 3.39e-06s, cones: 1.68e-06s, accel: 4.00e-08s
------------------------------------------------------------------
objective = 0.000000
------------------------------------------------------------------
Test Failed at /home/kalmar/.julia/dev/SCS/test/test_problems.jl:757
Expression: isapprox((solution.x)' * args.c, -99.0; rtol = 0.0001)
Evaluated: isapprox(0.0, -99.0; rtol = 0.0001)
ERROR: There was an error during testing
however after
julia> using OpenBLAS32_jll
julia> LinearAlgebra.BLAS.lbt_forward(OpenBLAS32_jll.libopenblas)
4864
Since SCS libraries link with openblas32 it makes sense to link them against blastrampoline in julia-1.10 (after it is announced the new lts); How should we proceed with switching to libblastrampoline?
Options:
In both cases running with lbt requires manually forwarding LP64 blas:
however after
things run as they are expected:
What is nice is that things run equally well with MKL: