Is it possible to permit the SCS.jl indirect solver to parallelize its computations with multiple threads running on a multi-core CPU? I am trying to solve a very large LP.
problem: variables n: 47251695, constraints m: 94518279
cones: z: primal zero / dual free vars: 14889
l: linear vars: 94503390
settings: eps_abs: 1.0e-004, eps_rel: 1.0e-004, eps_infeas: 1.0e-012
alpha: 1.50, scale: 1.00e-001, adaptive_scale: 1
max_iters: 100000, normalize: 1, rho_x: 1.00e-006
acceleration_lookback: 10, acceleration_interval: 10
nnz(A): 189001496, nnz(P): 0
I don’t think so. You can find the options for SCS here: Settings — SCS 3.2.1 documentation
There is some support for the GPU solver, GitHub - jump-dev/SCS.jl: Julia Wrapper for SCS (https://github.com/cvxgrp/scs), but it’s currently segfaulting on our tests, so it’s still experimental. cc @abulak
Have you considered using Gurobi?
Gurobi and CPLEX ran out of memory.
@Stuart_Rogers With that size I’d guess your best chance would be to try finding some additional structure among variables or constraints. Maybe the problem enjoys some kind of symmetry?
If not then you may
If you’re running out of memory the GPU solver will not help you (and it’s not really recommended by us or by the upstream).
I couldn’t track why exactly, but setting
OMP_NUM_THREADS before calling first solve with
SCS does change the number of used threads. I found it quite strange since we compile with
USE_OPENMP=0, but that’s how it looks here