I’m pleased to announce the release of SCS.jl-0.7.1, which finally plumbed the optional support for the gpu indirect solver through jlls.
Since we didn’t want to depend on CUDA_jll (a huge dependancy), the gpu solver is enabled only if using SCS is done AFTER using CUDA_jll. The SCS_GPU_jll providing the support depends on CUDA_jll@9.0, so remember to pin the version appropriately
One way to make sure that the gpu solver is available is to check SCS.available_solvers:
julia> import Pkg
julia> Pkg.add(Pkg.PackageSpec(name = "CUDA_jll", version = "9.0"))
julia> using CUDA_jll # This must be called before `using SCS`.
julia> using SCS
julia> SCS.available_solvers
3-element Array{DataType,1}:
SCS.DirectSolver
SCS.IndirectSolver
SCS.GpuIndirectSolver
julia> solver = SCS.Optimizer(linear_solver = SCS.GpuIndirectSolver)
SCS.Optimizer
Of course the support is very young, so don’t forget to file issues/submit PRs is something goes awry
Thank you for providing GPU support for SCS!
However, I have trouble getting it to work. After following your instructions on SCS.jl-0.7.1, and CUDA_jll version 9.0, I get
julia> using CUDA_jll
[NVBLAS] NVBLAS_CONFIG_FILE environment variable is NOT set : relying on default config filename 'nvblas.conf'
[NVBLAS] Cannot open default config file 'nvblas.conf'
[NVBLAS] Config parsed
[NVBLAS] CPU Blas library need to be provided
after trying to run an SCS optimization using the GPUIndirectSolver, I get
ERROR: could not load library "/home/david/.julia/artifacts/8ae303d28090f987e71f6f5337ab4cf2d8a458bd/lib/libscsgpuindir.so"
libcudart.so.10.1: cannot open shared object file: No such file or directory
Did the state-of-the-art GPU integration change?
Do I have to recompile SCS from source?
Any help appreciated!