bodono / scs-python

Python interface for SCS
MIT License
41 stars 33 forks source link

Hi, when I try to install scs with gpu `python setup.py install --scs --gpu`, it comes with the following error: #71

Open QiuCB opened 1 year ago

QiuCB commented 1 year ago

Namespace(blas64=False, extraverbose=False, float32=False, gpu=True, gpu_atrans=True, int32=False, mkl=False, openmp=False, scs=True) running install /home/ubuntu/anaconda3/envs/test2/lib/python3.7/site-packages/setuptools/command/install.py:37: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools. setuptools.SetuptoolsDeprecationWarning, /home/ubuntu/anaconda3/envs/test2/lib/python3.7/site-packages/setuptools/command/easy_install.py:147: EasyInstallDeprecationWarning: easy_install command is deprecated. Use build and pip and other standards-based tools. EasyInstallDeprecationWarning, running bdist_egg running egg_info writing scs.egg-info/PKG-INFO writing dependency_links to scs.egg-info/dependency_links.txt writing requirements to scs.egg-info/requires.txt writing top-level names to scs.egg-info/top_level.txt blas_mkl_info: NOT AVAILABLE blis_info: NOT AVAILABLE openblas_info: libraries = ['openblas', 'openblas'] library_dirs = ['/usr/local/lib'] language = c define_macros = [('HAVE_CBLAS', None)] runtime_library_dirs = ['/usr/local/lib'] blas_opt_info: libraries = ['openblas', 'openblas'] library_dirs = ['/usr/local/lib'] language = c define_macros = [('HAVE_CBLAS', None)] runtime_library_dirs = ['/usr/local/lib'] lapack_mkl_info: NOT AVAILABLE openblas_lapack_info: libraries = ['openblas', 'openblas'] library_dirs = ['/usr/local/lib'] language = c define_macros = [('HAVE_CBLAS', None)] runtime_library_dirs = ['/usr/local/lib'] lapack_opt_info: libraries = ['openblas', 'openblas'] library_dirs = ['/usr/local/lib'] language = c define_macros = [('HAVE_CBLAS', None)] runtime_library_dirs = ['/usr/local/lib'] Supported SIMD extensions in this NumPy install: baseline = SSE,SSE2,SSE3 found = SSSE3,SSE41,POPCNT,SSE42,AVX,F16C,FMA3,AVX2 not found = AVX512F,AVX512CD,AVX512_KNL,AVX512_KNM,AVX512_SKX,AVX512_CLX,AVX512_CNL,AVX512_ICL /home/ubuntu/anaconda3/envs/test2/lib/python3.7/site-packages/numpy/distutils/system_info.py:2026: UserWarning: Optimized (vendor) Blas libraries are not found. Falls back to netlib Blas library which has worse performance. A better performance should be easily gained by switching Blas library. if self._calc_info(blas): /home/ubuntu/anaconda3/envs/test2/lib/python3.7/site-packages/numpy/distutils/system_info.py:2026: UserWarning: Blas (http://www.netlib.org/blas/) libraries not found. Directories to search for the libraries can be specified in the numpy/distutils/site.cfg file (section [blas]) or by setting the BLAS environment variable. if self._calc_info(blas): /home/ubuntu/anaconda3/envs/test2/lib/python3.7/site-packages/numpy/distutils/system_info.py:2026: UserWarning: Blas (http://www.netlib.org/blas/) sources not found. Directories to search for the sources can be specified in the numpy/distutils/site.cfg file (section [blas_src]) or by setting the BLAS_SRC environment variable. if self._calc_info(blas): Blas info: {} /home/ubuntu/anaconda3/envs/test2/lib/python3.7/site-packages/numpy/distutils/system_info.py:1858: UserWarning: Lapack (http://www.netlib.org/lapack/) libraries not found. Directories to search for the libraries can be specified in the numpy/distutils/site.cfg file (section [lapack]) or by setting the LAPACK environment variable. return getattr(self, '_calcinfo{}'.format(name))() /home/ubuntu/anaconda3/envs/test2/lib/python3.7/site-packages/numpy/distutils/system_info.py:1858: UserWarning: Lapack (http://www.netlib.org/lapack/) sources not found. Directories to search for the sources can be specified in the numpy/distutils/site.cfg file (section [lapack_src]) or by setting the LAPACK_SRC environment variable. return getattr(self, '_calcinfo{}'.format(name))() Lapack info: {} In file included from scs/linsys/gpu/gpu.c:1:0: scs/linsys/gpu/gpu.h:96:3: error: unknown type name ‘cusparseSpMatDescr_t’ cusparseSpMatDescr_t descr; ^~~~~~~~ scs/linsys/gpu/gpu.h:100:37: error: unknown type name ‘cusparseDnVecDescr_t’ const cusparseDnVecDescr_t x, ^~~~~~~~ In file included from scs/linsys/gpu/indirect/private.h:10:0, from scs/linsys/gpu/indirect/private.c:1: scs/linsys/gpu/gpu.h:96:3: error: unknown type name ‘cusparseSpMatDescr_t’ cusparseSpMatDescr_t descr; ^~~~~~~~ scs/linsys/gpu/gpu.h:100:37: error: unknown type name ‘cusparseDnVecDescr_t’ const cusparseDnVecDescr_t x, ^~~~~~~~ scs/linsys/gpu/gpu.h:101:31: error: unknown type name ‘cusparseDnVecDescr_t’; did you mean ‘cusparseMatDescr_t’? cusparseDnVecDescr_t y, ^~~~~~~~ cusparseMatDescr_t scs/linsys/gpu/gpu.h:105:55: error: unknown type name ‘cusparseDnVecDescr_t’ d SCS(accum_by_a_gpu)(const ScsGpuMatrix A, const cusparseDnVecDescr_t x, ^~~~~~~~ scs/linsys/gpu/gpu.h:101:31: error: unknown type name ‘cusparseDnVecDescr_t’; did you mean ‘cusparseMatDescr_t’? cusparseDnVecDescr_t y, ^~~~~~~~ cusparseMatDescr_t scs/linsys/gpu/gpu.h:105:55: error: unknown type name ‘cusparseDnVecDescr_t’ d SCS(accum_by_a_gpu)(const ScsGpuMatrix A, const cusparseDnVecDescr_t x, ^~~~~~~~ scs/linsys/gpu/gpu.h:106:26: error: unknown type name ‘cusparseDnVecDescr_t’; did you mean ‘cusparseMatDescr_t’? cusparseDnVecDescr_t y, ^~~~~~~~ cusparseMatDescr_t scs/linsys/gpu/gpu.h:110:55: error: unknown type name ‘cusparseDnVecDescr_t’ d SCS(accum_by_p_gpu)(const ScsGpuMatrix P, const cusparseDnVecDescr_t x, ^~~~~~~~ scs/linsys/gpu/gpu.h:106:26: error: unknown type name ‘cusparseDnVecDescr_t’; did you mean ‘cusparseMatDescr_t’? cusparseDnVecDescr_t y, ^~~~~~~~ cusparseMatDescr_t scs/linsys/gpu/gpu.h:110:55: error: unknown type name ‘cusparseDnVecDescr_t’ d SCS(accum_by_p_gpu)(const ScsGpuMatrix P, const cusparseDnVecDescr_t x, ^~~~~~~~ scs/linsys/gpu/gpu.h:111:26: error: unknown type name ‘cusparseDnVecDescr_t’; did you mean ‘cusparseMatDescr_t’? cusparseDnVecDescr_t y, ^~~~~~~~ cusparseMatDescr_t In file included from scs/linsys/gpu/indirect/private.c:1:0: scs/linsys/gpu/indirect/private.h:38:3: error: unknown type name ‘cusparseDnVecDescr_t’ cusparseDnVecDescr_t dn_vec_m; / Dense vector of length m / ^~~~~~~~ scs/linsys/gpu/indirect/private.h:39:3: error: unknown type name ‘cusparseDnVecDescr_t’ cusparseDnVecDescr_t dn_vec_n; / Dense vector of length n / ^~~~~~~~ scs/linsys/gpu/indirect/private.h:40:3: error: unknown type name ‘cusparseDnVecDescr_t’ cusparseDnVecDescr_t dn_vec_n_p; / Dense vector of length n / ^~~~~~~~ scs/linsys/gpu/gpu.h:111:26: error: unknown type name ‘cusparseDnVecDescr_t’; did you mean ‘cusparseMatDescr_t’? cusparseDnVecDescr_t y, ^~~~~~~~ cusparseMatDescr_t scs/linsys/gpu/gpu.c:4:37: error: unknown type name ‘cusparseDnVecDescr_t’ const cusparseDnVecDescr_t x, ^~~~~~~~ scs/linsys/gpu/gpu.c:5:31: error: unknown type name ‘cusparseDnVecDescr_t’; did you mean ‘cusparseMatDescr_t’? cusparseDnVecDescr_t y, ^~~~~~~~ cusparseMatDescr_t scs/linsys/gpu/gpu.c:32:56: error: unknown type name ‘cusparseDnVecDescr_t’ SCS(accum_by_a_gpu)(const ScsGpuMatrix Ag, const cusparseDnVecDescr_t x, ^~~~~~~~ scs/linsys/gpu/indirect/private.c: In function ‘scs_free_lin_sys_work’: scs/linsys/gpu/indirect/private.c:114:5: warning: implicit declaration of function ‘cusparseDestroyDnVec’; did you mean ‘cusparseDestroy’? [-Wimplicit-function-declaration] cusparseDestroyDnVec(p->dn_vec_m); ^~~~~~~~ cusparseDestroy scs/linsys/gpu/gpu.c:33:26: error: unknown type name ‘cusparseDnVecDescr_t’; did you mean ‘cusparseMatDescr_t’? cusparseDnVecDescr_t y, ^~~~~~~~ cusparseMatDescr_t scs/linsys/gpu/gpu.c:66:56: error: unknown type name ‘cusparseDnVecDescr_t’ SCS(accum_by_p_gpu)(const ScsGpuMatrix Pg, const cusparseDnVecDescr_t x, ^~~~~~~~ scs/linsys/gpu/gpu.c:67:26: error: unknown type name ‘cusparseDnVecDescr_t’; did you mean ‘cusparseMatDescr_t’? cusparseDnVecDescr_t y, ^~~~~~~~ cusparseMatDescr_t scs/linsys/gpu/indirect/private.c: In function ‘mat_vec’: scs/linsys/gpu/indirect/private.c:139:3: warning: implicit declaration of function ‘cusparseDnVecSetValues’; did you mean ‘cusparseDcsrilu02’? [-Wimplicit-function-declaration] cusparseDnVecSetValues(p->dn_vec_m, (void *)z); ^~~~~~ cusparseDcsrilu02 In file included from scs/linsys/csparse.h:10:0, from scs/linsys/gpu/indirect/private.h:8, from scs/linsys/gpu/indirect/private.c:1: scs/include/glbopts.h:12:16: warning: implicit declaration of function ‘_scs_accum_by_p_gpu’; did you mean ‘_scs_accum_by_p’? [-Wimplicit-function-declaration]

define SCS(x) scs##x

            ^

scs/linsys/gpu/indirect/private.c:150:5: note: in expansion of macro ‘SCS’ SCS(accum_by_p_gpu) ^~~ scs/linsys/gpu/gpu.c: In function ‘_scs_free_gpu_matrix’: scs/linsys/gpu/gpu.c:77:3: warning: implicit declaration of function ‘cusparseDestroySpMat’; did you mean ‘cusparseDestroyHybMat’? [-Wimplicit-function-declaration] cusparseDestroySpMat(A->descr); ^~~~~~~~ cusparseDestroyHybMat scs/include/glbopts.h:12:16: warning: implicit declaration of function ‘_scs_accum_by_atrans_gpu’; did you mean ‘_scs_accum_by_atrans’? [-Wimplicit-function-declaration]

define SCS(x) scs##x

            ^

scs/linsys/gpu/indirect/private.c:157:3: note: in expansion of macro ‘SCS’ SCS(accum_by_atrans_gpu) ^~~ scs/linsys/gpu/indirect/private.c: In function ‘scs_init_lin_sys_work’: scs/linsys/gpu/indirect/private.c:275:3: warning: implicit declaration of function ‘cusparseCreateCsr’; did you mean ‘cusparseCreate’? [-Wimplicit-function-declaration] cusparseCreateCsr(&Ag->descr, Ag->n, Ag->m, Ag->nnz, Ag->p, Ag->i, Ag->x, ^~~~~ cusparseCreate In file included from scs/linsys/gpu/indirect/private.h:10:0, from scs/linsys/gpu/indirect/private.c:1: scs/linsys/gpu/gpu.h:72:28: error: ‘CUSPARSE_INDEX_32I’ undeclared (first use in this function); did you mean ‘CUSPARSE_SIDE_LEFT’?

define SCS_CUSPARSE_INDEX CUSPARSE_INDEX_32I

                        ^

scs/linsys/gpu/indirect/private.c:276:21: note: in expansion of macro ‘SCS_CUSPARSE_INDEX’ SCS_CUSPARSE_INDEX, SCS_CUSPARSE_INDEX, ^~~~~~ scs/linsys/gpu/gpu.h:72:28: note: each undeclared identifier is reported only once for each function it appears in

define SCS_CUSPARSE_INDEX CUSPARSE_INDEX_32I

                        ^

scs/linsys/gpu/indirect/private.c:276:21: note: in expansion of macro ‘SCS_CUSPARSE_INDEX’ SCS_CUSPARSE_INDEX, SCS_CUSPARSE_INDEX, ^~~~~~ scs/linsys/gpu/indirect/private.c:311:3: warning: implicit declaration of function ‘cusparseCreateDnVec’; did you mean ‘cusparseCreate’? [-Wimplicit-function-declaration] cusparseCreateDnVec(&p->dn_vec_n, Ag->n, p->tmp_m, SCS_CUDA_FLOAT); ^~~~~~~ cusparseCreate scs/linsys/gpu/indirect/private.c:331:3: warning: implicit declaration of function ‘cusparseCsr2cscEx2_bufferSize’; did you mean ‘cusparseCsrmvEx_bufferSize’? [-Wimplicit-function-declaration] cusparseCsr2cscEx2_bufferSize( ^~~~~~~~~ cusparseCsrmvEx_bufferSize In file included from scs/linsys/gpu/indirect/private.h:10:0, from scs/linsys/gpu/indirect/private.c:1: scs/linsys/gpu/gpu.h:78:25: error: ‘CUSPARSE_CSR2CSC_ALG1’ undeclared (first use in this function); did you mean ‘CUSPARSE_COLOR_ALG1’?

define SCS_CSR2CSC_ALG CUSPARSE_CSR2CSC_ALG1

                     ^

scs/linsys/gpu/indirect/private.c:334:33: note: in expansion of macro ‘SCS_CSR2CSC_ALG’ CUSPARSE_INDEX_BASE_ZERO, SCS_CSR2CSC_ALG, &new_buffer_size); ^~~~~~~ scs/linsys/gpu/indirect/private.c:344:3: warning: implicit declaration of function ‘cusparseCsr2cscEx2’; did you mean ‘cusparseCsr2cscEx’? [-Wimplicit-function-declaration] cusparseCsr2cscEx2(p->cusparse_handle, A->n, A->m, A->p[A->n], Ag->x, Ag->p, ^~~~~~ cusparseCsr2cscEx scs/src/rw.c: In function ‘_scs_read_data’: scs/src/rw.c:237:3: warning: ignoring return value of ‘fread’, declared with attribute warn_unused_result [-Wunused-result] fread(&(file_int_sz), sizeof(uint32_t), 1, fin); ^~~~~~~~~~~ scs/src/rw.c:238:3: warning: ignoring return value of ‘fread’, declared with attribute warn_unused_result [-Wunused-result] fread(&(file_float_sz), sizeof(uint32_t), 1, fin); ^~~~~~~~~~~~~ scs/src/rw.c:254:3: warning: ignoring return value of ‘fread’, declared with attribute warn_unused_result [-Wunused-result] fread(&(file_version_sz), sizeof(uint32_t), 1, fin); ^~~~~~~~~~~ scs/src/rw.c:255:3: warning: ignoring return value of ‘fread’, declared with attribute warn_unused_result [-Wunused-result] fread(file_version, 1, file_version_sz, fin); ^~~~~~~~~~~~ scs/src/rw.c: In function ‘read_scs_cone’: scs/src/rw.c:90:5: warning: ignoring return value of ‘fread’, declared with attribute warn_unused_result [-Wunused-result] fread(k->bl, sizeof(scs_float), MAX(k->bsize - 1, 0), fin); ^~~~~~~~~~~~~~ scs/src/rw.c:91:5: warning: ignoring return value of ‘fread’, declared with attribute warn_unused_result [-Wunused-result] fread(k->bu, sizeof(scs_float), MAX(k->bsize - 1, 0), fin); ^~~~~~~~~~~~~~ scs/src/rw.c:108:5: warning: ignoring return value of ‘fread’, declared with attribute warn_unused_result [-Wunused-result] fread(k->p, sizeof(scs_float), k->psize, fin); ^~~~~~~~~~~~~ scs/src/rw.c: In function ‘read_scs_data’: scs/src/rw.c:197:3: warning: ignoring return value of ‘fread’, declared with attribute warn_unused_result [-Wunused-result] fread(d->b, sizeof(scs_float), d->m, fin); ^~~~~~~~~ scs/src/rw.c:198:3: warning: ignoring return value of ‘fread’, declared with attribute warn_unused_result [-Wunused-result] fread(d->c, sizeof(scs_float), d->n, fin); ^~~~~~~~~ scs/src/rw.c: In function ‘read_amatrix’: scs/src/rw.c:170:3: warning: ignoring return value of ‘fread’, declared with attribute warn_unused_result [-Wunused-result] fread(A->x, sizeof(scs_float), Anz, fin); ^~~~~~~~~~~~ scs/src/rw.c: In function ‘read_scs_stgs’: scs/src/rw.c:136:3: warning: ignoring return value of ‘fread’, declared with attribute warn_unused_result [-Wunused-result] fread(&(s->scale), sizeof(scs_float), 1, fin); ^~~~~~~~~~~~~ scs/src/rw.c:137:3: warning: ignoring return value of ‘fread’, declared with attribute warn_unused_result [-Wunused-result] fread(&(s->rho_x), sizeof(scs_float), 1, fin); ^~~~~~~~~~~~~ scs/src/rw.c:139:3: warning: ignoring return value of ‘fread’, declared with attribute warn_unused_result [-Wunused-result] fread(&(s->eps_abs), sizeof(scs_float), 1, fin); ^~~~~~~~~~~ scs/src/rw.c:140:3: warning: ignoring return value of ‘fread’, declared with attribute warn_unused_result [-Wunused-result] fread(&(s->eps_rel), sizeof(scs_float), 1, fin); ^~~~~~~~~~~ scs/src/rw.c:141:3: warning: ignoring return value of ‘fread’, declared with attribute warn_unused_result [-Wunused-result] fread(&(s->eps_infeas), sizeof(scs_float), 1, fin); ^~~~~~~~~~~~~~ scs/src/rw.c:142:3: warning: ignoring return value of ‘fread’, declared with attribute warn_unused_result [-Wunused-result] fread(&(s->alpha), sizeof(scs_float), 1, fin); ^~~~~~~~~~~~~ error: Command "gcc -pthread -B /home/ubuntu/anaconda3/envs/test2/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -DPYTHON -DCTRLC=1 -DGPU_TRANSPOSE_MAT=1 -DPY_GPU -DINDIRECT=1 -Iscs/include -Iscs/linsys -I/usr/local/cuda/include -Iscs/linsys/gpu/ -Iscs/linsys/gpu/indirect -I/home/ubuntu/anaconda3/envs/test2/lib/python3.7/site-packages/numpy/core/include -I/home/ubuntu/anaconda3/envs/test2/include/python3.7m -c scs/linsys/gpu/gpu.c -o build/temp.linux-x86_64-cpython-37/scs/linsys/gpu/gpu.o -O3" failed with exit status 1

bodono commented 1 year ago

What version of Cuda / CUsparse are you using? This looks like you're probably using an older version than SCS is assuming.

QiuCB commented 1 year ago

What version of Cuda / CUsparse are you using? This looks like you're probably using an older version than SCS is assuming.

Thank you for your reply. My CUDA version is 10.2. And if it is a version problem, can I get an earlier version of SCS? Or can I only solve it by updating CUDA?

bodono commented 1 year ago

I'm not sure what the earliest version of CuSparse where those functions appeared, but they are in version 12.2: https://docs.nvidia.com/cuda/cusparse/

I would recommend updating CuSparse over using an old version of SCS. Alternately you can use the MKL version of SCS, which is trypically faster than the GPU version anyway.

QiuCB commented 1 year ago

I'm not sure what the earliest version of CuSparse where those functions appeared, but they are in version 12.2: https://docs.nvidia.com/cuda/cusparse/

I would recommend updating CuSparse over using an old version of SCS. Alternately you can use the MKL version of SCS, which is trypically faster than the GPU version anyway.

Okay, I'll try the MKL version of SCS first, thanks again!

QiuCB commented 1 year ago

I'm not sure what the earliest version of CuSparse where those functions appeared, but they are in version 12.2: https://docs.nvidia.com/cuda/cusparse/

I would recommend updating CuSparse over using an old version of SCS. Alternately you can use the MKL version of SCS, which is trypically faster than the GPU version anyway.

====================================

(GPU version) Hello, I upgraded my CUDA but this error seems to still persist and there are many "unknown type name" errors.


running install
/home/ubuntu/anaconda3/envs/test2/lib/python3.7/site-packages/setuptools/command/install.py:37: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools.
  setuptools.SetuptoolsDeprecationWarning,
/home/ubuntu/anaconda3/envs/test2/lib/python3.7/site-packages/setuptools/command/easy_install.py:147: EasyInstallDeprecationWarning: easy_install command is deprecated. Use build and pip and other standards-based tools.
  EasyInstallDeprecationWarning,
running bdist_egg
running egg_info
writing scs.egg-info/PKG-INFO
writing dependency_links to scs.egg-info/dependency_links.txt
writing requirements to scs.egg-info/requires.txt
writing top-level names to scs.egg-info/top_level.txt
blas_info:
    libraries = ['cblas', 'blas', 'cblas', 'blas']
    library_dirs = ['/home/ubuntu/anaconda3/envs/test2/lib']
    include_dirs = ['/home/ubuntu/anaconda3/envs/test2/include']
    language = c
    define_macros = [('HAVE_CBLAS', None)]
blas_opt_info:
    define_macros = [('NO_ATLAS_INFO', 1), ('HAVE_CBLAS', None)]
    libraries = ['cblas', 'blas', 'cblas', 'blas']
    library_dirs = ['/home/ubuntu/anaconda3/envs/test2/lib']
    include_dirs = ['/home/ubuntu/anaconda3/envs/test2/include']
    language = c
lapack_info:
    libraries = ['lapack', 'blas', 'lapack', 'blas']
    library_dirs = ['/home/ubuntu/anaconda3/envs/test2/lib']
    language = f77
lapack_opt_info:
    libraries = ['lapack', 'blas', 'lapack', 'blas', 'cblas', 'blas', 'cblas', 'blas']
    library_dirs = ['/home/ubuntu/anaconda3/envs/test2/lib']
    language = c
    define_macros = [('NO_ATLAS_INFO', 1), ('HAVE_CBLAS', None)]
    include_dirs = ['/home/ubuntu/anaconda3/envs/test2/include']
Supported SIMD extensions in this NumPy install:
    baseline = SSE,SSE2,SSE3
    found = SSSE3,SSE41,POPCNT,SSE42,AVX,F16C,FMA3,AVX2
    not found = AVX512F,AVX512CD,AVX512_KNL,AVX512_KNM,AVX512_SKX,AVX512_CLX,AVX512_CNL,AVX512_ICL
/home/ubuntu/anaconda3/envs/test2/lib/python3.7/site-packages/numpy/distutils/system_info.py:2026: UserWarning: 
    Optimized (vendor) Blas libraries are not found.
    Falls back to netlib Blas library which has worse performance.
    A better performance should be easily gained by switching
    Blas library.
  if self._calc_info(blas):
{'define_macros': [('NO_ATLAS_INFO', 1), ('HAVE_CBLAS', None)], 'libraries': ['cblas', 'blas', 'cblas', 'blas'], 'library_dirs': ['/home/ubuntu/anaconda3/envs/test2/lib'], 'include_dirs': ['/home/ubuntu/anaconda3/envs/test2/include'], 'language': 'c'}
{'libraries': ['lapack', 'blas', 'lapack', 'blas', 'cblas', 'blas', 'cblas', 'blas'], 'library_dirs': ['/home/ubuntu/anaconda3/envs/test2/lib'], 'language': 'c', 'define_macros': [('NO_ATLAS_INFO', 1), ('HAVE_CBLAS', None)], 'include_dirs': ['/home/ubuntu/anaconda3/envs/test2/include']}
warning: no directories found matching 'scs'
warning: no directories found matching 'scs/src'
warning: no directories found matching 'scs/test'
warning: no directories found matching 'scs/test/problems'
warning: no directories found matching 'scs/include'
warning: no directories found matching 'scs/linsys'
warning: no directories found matching 'scs/linsys/cpu'
warning: no directories found matching 'scs/linsys/cpu/direct'
warning: no directories found matching 'scs/linsys/cpu/indirect'
warning: no directories found matching 'scs/linsys/gpu'
warning: no directories found matching 'scs/linsys/gpu/indirect'
warning: no directories found matching 'scs/linsys/external'
warning: no directories found matching 'scs/linsys/external/amd'
warning: no directories found matching 'scs/linsys/external/qdldl'
src/scspy.c:16:10: fatal error: glbopts.h: No such file or directory
 #include "glbopts.h"           /* Constants and *alloc */
          ^~~~~~~~~~~
compilation terminated.
error: Command "gcc -pthread -B /home/ubuntu/anaconda3/envs/test2/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -DPYTHON -DCTRLC=1 -DDLONG=1 -DUSE_LAPACK -DNO_ATLAS_INFO=1 -DHAVE_CBLAS -DNO_ATLAS_INFO=1 -DHAVE_CBLAS -Iscs/include -Iscs/linsys -Iscs/linsys/cpu/direct/ -Iscs/linsys/external/amd -Iscs/linsys/external/dqlql -I/home/ubuntu/anaconda3/envs/test2/lib/python3.7/site-packages/numpy/core/include -I/home/ubuntu/anaconda3/envs/test2/include -I/home/ubuntu/anaconda3/envs/test2/include -I/home/ubuntu/anaconda3/envs/test2/include/python3.7m -c src/scspy.c -o build/temp.linux-x86_64-cpython-37/src/scspy.o -O3" failed with exit status 1
(test2) ubuntu@LXCqiuchengbo2:~/test0330/scs_test/scs-python-3.2.0$ python setup.py install --scs --gpu
Namespace(blas64=False, extraverbose=False, float32=False, gpu=True, gpu_atrans=True, int32=False, scs=True)
running install
/home/ubuntu/anaconda3/envs/test2/lib/python3.7/site-packages/setuptools/command/install.py:37: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools.
  setuptools.SetuptoolsDeprecationWarning,
/home/ubuntu/anaconda3/envs/test2/lib/python3.7/site-packages/setuptools/command/easy_install.py:147: EasyInstallDeprecationWarning: easy_install command is deprecated. Use build and pip and other standards-based tools.
  EasyInstallDeprecationWarning,
running bdist_egg
running egg_info
writing scs.egg-info/PKG-INFO
writing dependency_links to scs.egg-info/dependency_links.txt
writing requirements to scs.egg-info/requires.txt
writing top-level names to scs.egg-info/top_level.txt
blas_info:
    libraries = ['cblas', 'blas', 'cblas', 'blas']
    library_dirs = ['/home/ubuntu/anaconda3/envs/test2/lib']
    include_dirs = ['/home/ubuntu/anaconda3/envs/test2/include']
    language = c
    define_macros = [('HAVE_CBLAS', None)]
blas_opt_info:
    define_macros = [('NO_ATLAS_INFO', 1), ('HAVE_CBLAS', None)]
    libraries = ['cblas', 'blas', 'cblas', 'blas']
    library_dirs = ['/home/ubuntu/anaconda3/envs/test2/lib']
    include_dirs = ['/home/ubuntu/anaconda3/envs/test2/include']
    language = c
lapack_info:
    libraries = ['lapack', 'blas', 'lapack', 'blas']
    library_dirs = ['/home/ubuntu/anaconda3/envs/test2/lib']
    language = f77
lapack_opt_info:
    libraries = ['lapack', 'blas', 'lapack', 'blas', 'cblas', 'blas', 'cblas', 'blas']
    library_dirs = ['/home/ubuntu/anaconda3/envs/test2/lib']
    language = c
    define_macros = [('NO_ATLAS_INFO', 1), ('HAVE_CBLAS', None)]
    include_dirs = ['/home/ubuntu/anaconda3/envs/test2/include']
Supported SIMD extensions in this NumPy install:
    baseline = SSE,SSE2,SSE3
    found = SSSE3,SSE41,POPCNT,SSE42,AVX,F16C,FMA3,AVX2
    not found = AVX512F,AVX512CD,AVX512_KNL,AVX512_KNM,AVX512_SKX,AVX512_CLX,AVX512_CNL,AVX512_ICL
/home/ubuntu/anaconda3/envs/test2/lib/python3.7/site-packages/numpy/distutils/system_info.py:2026: UserWarning: 
    Optimized (vendor) Blas libraries are not found.
    Falls back to netlib Blas library which has worse performance.
    A better performance should be easily gained by switching
    Blas library.
  if self._calc_info(blas):
{'define_macros': [('NO_ATLAS_INFO', 1), ('HAVE_CBLAS', None)], 'libraries': ['cblas', 'blas', 'cblas', 'blas'], 'library_dirs': ['/home/ubuntu/anaconda3/envs/test2/lib'], 'include_dirs': ['/home/ubuntu/anaconda3/envs/test2/include'], 'language': 'c'}
{'libraries': ['lapack', 'blas', 'lapack', 'blas', 'cblas', 'blas', 'cblas', 'blas'], 'library_dirs': ['/home/ubuntu/anaconda3/envs/test2/lib'], 'language': 'c', 'define_macros': [('NO_ATLAS_INFO', 1), ('HAVE_CBLAS', None)], 'include_dirs': ['/home/ubuntu/anaconda3/envs/test2/include']}
warning: no directories found matching 'scs'
warning: no directories found matching 'scs/src'
warning: no directories found matching 'scs/test'
warning: no directories found matching 'scs/test/problems'
warning: no directories found matching 'scs/include'
warning: no directories found matching 'scs/linsys'
warning: no directories found matching 'scs/linsys/cpu'
warning: no directories found matching 'scs/linsys/cpu/direct'
warning: no directories found matching 'scs/linsys/cpu/indirect'
warning: no directories found matching 'scs/linsys/gpu'
warning: no directories found matching 'scs/linsys/gpu/indirect'
warning: no directories found matching 'scs/linsys/external'
warning: no directories found matching 'scs/linsys/external/amd'
warning: no directories found matching 'scs/linsys/external/qdldl'
src/scspy.c:16:10: fatal error: glbopts.h: No such file or directory
 #include "glbopts.h"           /* Constants and *alloc */
          ^~~~~~~~~~~
compilation terminated.
error: Command "gcc -pthread -B /home/ubuntu/anaconda3/envs/test2/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -DPYTHON -DCTRLC=1 -DUSE_LAPACK -DNO_ATLAS_INFO=1 -DHAVE_CBLAS -DNO_ATLAS_INFO=1 -DHAVE_CBLAS -Iscs/include -Iscs/linsys -Iscs/linsys/cpu/direct/ -Iscs/linsys/external/amd -Iscs/linsys/external/dqlql -I/home/ubuntu/anaconda3/envs/test2/lib/python3.7/site-packages/numpy/core/include -I/home/ubuntu/anaconda3/envs/test2/include -I/home/ubuntu/anaconda3/envs/test2/include -I/home/ubuntu/anaconda3/envs/test2/include/python3.7m -c src/scspy.c -o build/temp.linux-x86_64-cpython-37/src/scspy.o -O3" failed with exit status 1```

~~~~~~~~~~~~~
QiuCB commented 1 year ago

(MKL version) In addition, when I installed the MKL version, I also got some error, o(╥﹏╥)o


running install
/home/ubuntu/anaconda3/envs/test2/lib/python3.7/site-packages/setuptools/command/install.py:37: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools.
  setuptools.SetuptoolsDeprecationWarning,
/home/ubuntu/anaconda3/envs/test2/lib/python3.7/site-packages/setuptools/command/easy_install.py:147: EasyInstallDeprecationWarning: easy_install command is deprecated. Use build and pip and other standards-based tools.
  EasyInstallDeprecationWarning,
running bdist_egg
running egg_info
writing scs.egg-info/PKG-INFO
writing dependency_links to scs.egg-info/dependency_links.txt
writing requirements to scs.egg-info/requires.txt
writing top-level names to scs.egg-info/top_level.txt
blas_info:
    libraries = ['cblas', 'blas', 'cblas', 'blas']
    library_dirs = ['/home/ubuntu/anaconda3/envs/test2/lib']
    include_dirs = ['/home/ubuntu/anaconda3/envs/test2/include']
    language = c
    define_macros = [('HAVE_CBLAS', None)]
blas_opt_info:
    define_macros = [('NO_ATLAS_INFO', 1), ('HAVE_CBLAS', None)]
    libraries = ['cblas', 'blas', 'cblas', 'blas']
    library_dirs = ['/home/ubuntu/anaconda3/envs/test2/lib']
    include_dirs = ['/home/ubuntu/anaconda3/envs/test2/include']
    language = c
lapack_info:
    libraries = ['lapack', 'blas', 'lapack', 'blas']
    library_dirs = ['/home/ubuntu/anaconda3/envs/test2/lib']
    language = f77
lapack_opt_info:
    libraries = ['lapack', 'blas', 'lapack', 'blas', 'cblas', 'blas', 'cblas', 'blas']
    library_dirs = ['/home/ubuntu/anaconda3/envs/test2/lib']
    language = c
    define_macros = [('NO_ATLAS_INFO', 1), ('HAVE_CBLAS', None)]
    include_dirs = ['/home/ubuntu/anaconda3/envs/test2/include']
Supported SIMD extensions in this NumPy install:
    baseline = SSE,SSE2,SSE3
    found = SSSE3,SSE41,POPCNT,SSE42,AVX,F16C,FMA3,AVX2
    not found = AVX512F,AVX512CD,AVX512_KNL,AVX512_KNM,AVX512_SKX,AVX512_CLX,AVX512_CNL,AVX512_ICL
/home/ubuntu/anaconda3/envs/test2/lib/python3.7/site-packages/numpy/distutils/system_info.py:2026: UserWarning: 
    Optimized (vendor) Blas libraries are not found.
    Falls back to netlib Blas library which has worse performance.
    A better performance should be easily gained by switching
    Blas library.
  if self._calc_info(blas):
{'define_macros': [('NO_ATLAS_INFO', 1), ('HAVE_CBLAS', None)], 'libraries': ['cblas', 'blas', 'cblas', 'blas'], 'library_dirs': ['/home/ubuntu/anaconda3/envs/test2/lib'], 'include_dirs': ['/home/ubuntu/anaconda3/envs/test2/include'], 'language': 'c'}
{'libraries': ['lapack', 'blas', 'lapack', 'blas', 'cblas', 'blas', 'cblas', 'blas'], 'library_dirs': ['/home/ubuntu/anaconda3/envs/test2/lib'], 'language': 'c', 'define_macros': [('NO_ATLAS_INFO', 1), ('HAVE_CBLAS', None)], 'include_dirs': ['/home/ubuntu/anaconda3/envs/test2/include']}
warning: no directories found matching 'scs'
warning: no directories found matching 'scs/src'
warning: no directories found matching 'scs/test'
warning: no directories found matching 'scs/test/problems'
warning: no directories found matching 'scs/include'
warning: no directories found matching 'scs/linsys'
warning: no directories found matching 'scs/linsys/cpu'
warning: no directories found matching 'scs/linsys/cpu/direct'
warning: no directories found matching 'scs/linsys/cpu/indirect'
warning: no directories found matching 'scs/linsys/gpu'
warning: no directories found matching 'scs/linsys/gpu/indirect'
warning: no directories found matching 'scs/linsys/external'
warning: no directories found matching 'scs/linsys/external/amd'
warning: no directories found matching 'scs/linsys/external/qdldl'
src/scspy.c:16:10: fatal error: glbopts.h: No such file or directory
 #include "glbopts.h"           /* Constants and *alloc */
          ^~~~~~~~~~~
compilation terminated.
error: Command "gcc -pthread -B /home/ubuntu/anaconda3/envs/test2/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -DPYTHON -DCTRLC=1 -DDLONG=1 -DUSE_LAPACK -DNO_ATLAS_INFO=1 -DHAVE_CBLAS -DNO_ATLAS_INFO=1 -DHAVE_CBLAS -Iscs/include -Iscs/linsys -Iscs/linsys/cpu/direct/ -Iscs/linsys/external/amd -Iscs/linsys/external/dqlql -I/home/ubuntu/anaconda3/envs/test2/lib/python3.7/site-packages/numpy/core/include -I/home/ubuntu/anaconda3/envs/test2/include -I/home/ubuntu/anaconda3/envs/test2/include -I/home/ubuntu/anaconda3/envs/test2/include/python3.7m -c src/scspy.c -o build/temp.linux-x86_64-cpython-37/src/scspy.o -O3" failed with exit status 1```
QiuCB commented 1 year ago

I'm not sure what the earliest version of CuSparse where those functions appeared, but they are in version 12.2: https://docs.nvidia.com/cuda/cusparse/

I would recommend updating CuSparse over using an old version of SCS. Alternately you can use the MKL version of SCS, which is trypically faster than the GPU version anyway.

=================================

scs-gpu version

Hello, I seem to have finally installed scs-gpu. there are some problems when using it. My test code is as follows:

import cvxpy as cp
import numpy as np

# Generate random SDP problem
n = 100
np.random.seed(1)
A = np.random.randn(n, n) 
A = 0.5 * (A + A.T)
X = cp.Variable((n, n), PSD=True)
obj = cp.Maximize(cp.trace(A @ X))
constraints = [X >= 0, cp.trace(X) == 1]
prob = cp.Problem(obj, constraints)

# Solve problem on GPU
prob.solve(solver=cp.SCS, gpu=True, use_indirect=True)

# Print solution
print("Optimal value: ", prob.value)
print("Solution: ")
print(X.value)

Due to the configuration of my computer, I can only install cuda11.8 at most, so I tested two versions of scs-gpu:3.0.0 and 3.2.0

TEST 1: version 3.0.0

And the error reported is as follows:

** On entry to cusparseCreateCsr() parameter number 5 (csrRowOffsets) had an illegal value: null pointer

 ** On entry to cusparseCreateDnVec() parameter number 3 (values) had an illegal value: null pointer

 ** On entry to cusparseCreateDnVec() parameter number 3 (values) had an illegal value: null pointer

 ** On entry to cusparseCreateDnVec() parameter number 3 (values) had an illegal value: null pointer

Segmentation fault (core dumped)

And when I run the pytest -v, it comes:

test/test_scs_basic.py::test_problems[cone0-False-1] PASSED                                    [  4%]
test/test_scs_basic.py::test_problems[cone1-True-1] PASSED                                     [  9%]
test/test_scs_basic.py::test_problems[cone2-False-0.5] PASSED                                  [ 13%]
test/test_scs_basic.py::test_problems[cone3-True-0.5] PASSED                                   [ 18%]
test/test_scs_basic.py::test_failures PASSED                                                   [ 22%]
test/test_scs_rand.py::test_feasible[False] PASSED                                             [ 27%]
test/test_scs_rand.py::test_feasible[True] PASSED                                              [ 31%]
test/test_scs_rand.py::test_infeasible[False] PASSED                                           [ 36%]
test/test_scs_rand.py::test_infeasible[True] PASSED                                            [ 40%]
test/test_scs_rand.py::test_unbounded[False] PASSED                                            [ 45%]
test/test_scs_sdp.py::test_feasible[False] PASSED                                              [ 50%]
test/test_scs_sdp.py::test_feasible[True] PASSED                                               [ 54%]
test/test_scs_sdp.py::test_infeasible[False] PASSED                                            [ 59%]
test/test_scs_sdp.py::test_infeasible[True] PASSED                                             [ 63%]
test/test_scs_sdp.py::test_unbounded[False] PASSED                                             [ 68%]
test/test_solve_random_cone_prob.py::test_solve_feasible[False-False] PASSED                   [ 72%]
test/test_solve_random_cone_prob.py::test_solve_feasible[True-False] PASSED                    [ 77%]
test/test_solve_random_cone_prob.py::test_solve_feasible[True-True] Fatal Python error: Segmentation fault

Current thread 0x00007fa7bae9f740 (most recent call first):
  File "/home/ubuntu/anaconda3/envs/test3/lib/python3.8/site-packages/scs-3.0.0-py3.8-linux-x86_64.egg/scs/__init__.py", line 103 in solve
  File "/home/ubuntu/test0330/scs_test/scs-python-3.0.0/test/test_solve_random_cone_prob.py", line 55 in test_solve_feasible
  File "/home/ubuntu/anaconda3/envs/test3/lib/python3.8/site-packages/_pytest/python.py", line 194 in pytest_pyfunc_call
  File "/home/ubuntu/anaconda3/envs/test3/lib/python3.8/site-packages/pluggy/_callers.py", line 77 in _multicall
  File "/home/ubuntu/anaconda3/envs/test3/lib/python3.8/site-packages/pluggy/_manager.py", line 115 in _hookexec
  File "/home/ubuntu/anaconda3/envs/test3/lib/python3.8/site-packages/pluggy/_hooks.py", line 493 in __call__
  File "/home/ubuntu/anaconda3/envs/test3/lib/python3.8/site-packages/_pytest/python.py", line 1792 in runtest
  File "/home/ubuntu/anaconda3/envs/test3/lib/python3.8/site-packages/_pytest/runner.py", line 169 in pytest_runtest_call
  File "/home/ubuntu/anaconda3/envs/test3/lib/python3.8/site-packages/pluggy/_callers.py", line 77 in _multicall
  File "/home/ubuntu/anaconda3/envs/test3/lib/python3.8/site-packages/pluggy/_manager.py", line 115 in _hookexec
  File "/home/ubuntu/anaconda3/envs/test3/lib/python3.8/site-packages/pluggy/_hooks.py", line 493 in __call__
  File "/home/ubuntu/anaconda3/envs/test3/lib/python3.8/site-packages/_pytest/runner.py", line 262 in <lambda>
  File "/home/ubuntu/anaconda3/envs/test3/lib/python3.8/site-packages/_pytest/runner.py", line 341 in from_call
  File "/home/ubuntu/anaconda3/envs/test3/lib/python3.8/site-packages/_pytest/runner.py", line 261 in call_runtest_hook
  File "/home/ubuntu/anaconda3/envs/test3/lib/python3.8/site-packages/_pytest/runner.py", line 222 in call_and_report
  File "/home/ubuntu/anaconda3/envs/test3/lib/python3.8/site-packages/_pytest/runner.py", line 133 in runtestprotocol
  File "/home/ubuntu/anaconda3/envs/test3/lib/python3.8/site-packages/_pytest/runner.py", line 114 in pytest_runtest_protocol
  File "/home/ubuntu/anaconda3/envs/test3/lib/python3.8/site-packages/pluggy/_callers.py", line 77 in _multicall
  File "/home/ubuntu/anaconda3/envs/test3/lib/python3.8/site-packages/pluggy/_manager.py", line 115 in _hookexec
  File "/home/ubuntu/anaconda3/envs/test3/lib/python3.8/site-packages/pluggy/_hooks.py", line 493 in __call__
  File "/home/ubuntu/anaconda3/envs/test3/lib/python3.8/site-packages/_pytest/main.py", line 350 in pytest_runtestloop
  File "/home/ubuntu/anaconda3/envs/test3/lib/python3.8/site-packages/pluggy/_callers.py", line 77 in _multicall
  File "/home/ubuntu/anaconda3/envs/test3/lib/python3.8/site-packages/pluggy/_manager.py", line 115 in _hookexec
  File "/home/ubuntu/anaconda3/envs/test3/lib/python3.8/site-packages/pluggy/_hooks.py", line 493 in __call__
  File "/home/ubuntu/anaconda3/envs/test3/lib/python3.8/site-packages/_pytest/main.py", line 325 in _main
  File "/home/ubuntu/anaconda3/envs/test3/lib/python3.8/site-packages/_pytest/main.py", line 271 in wrap_session
  File "/home/ubuntu/anaconda3/envs/test3/lib/python3.8/site-packages/_pytest/main.py", line 318 in pytest_cmdline_main
  File "/home/ubuntu/anaconda3/envs/test3/lib/python3.8/site-packages/pluggy/_callers.py", line 77 in _multicall
  File "/home/ubuntu/anaconda3/envs/test3/lib/python3.8/site-packages/pluggy/_manager.py", line 115 in _hookexec
  File "/home/ubuntu/anaconda3/envs/test3/lib/python3.8/site-packages/pluggy/_hooks.py", line 493 in __call__
  File "/home/ubuntu/anaconda3/envs/test3/lib/python3.8/site-packages/_pytest/config/__init__.py", line 169 in main
  File "/home/ubuntu/anaconda3/envs/test3/lib/python3.8/site-packages/_pytest/config/__init__.py", line 192 in console_main
  File "/home/ubuntu/anaconda3/envs/test3/bin/pytest", line 8 in <module>
Segmentation fault (core dumped)

TEST 2: version 3.2.0

And the error reported is as follows:

cudaError: 803 (100 indicates no device)
ERROR: init_lin_sys_work failure
Traceback (most recent call last):
  File "test.py", line 99, in <module>
    prob.solve(solver=cp.SCS, gpu=True, use_indirect='gpu:0')
  File "/home/ubuntu/anaconda3/envs/test2/lib/python3.7/site-packages/cvxpy/problems/problem.py", line 472, in solve
    return solve_func(self, *args, **kwargs)
  File "/home/ubuntu/anaconda3/envs/test2/lib/python3.7/site-packages/cvxpy/problems/problem.py", line 975, in _solve
    self, data, warm_start, verbose, kwargs)
  File "/home/ubuntu/anaconda3/envs/test2/lib/python3.7/site-packages/cvxpy/reductions/solvers/solving_chain.py", line 344, in solve_via_data
    solver_opts, problem._solver_cache)
  File "/home/ubuntu/anaconda3/envs/test2/lib/python3.7/site-packages/cvxpy/reductions/solvers/conic_solvers/scs_conif.py", line 321, in solve_via_data
    results = scs.solve(args, cones, verbose=verbose, **solver_opts)
  File "/home/ubuntu/anaconda3/envs/test2/lib/python3.7/site-packages/scs-3.2.0-py3.7-linux-x86_64.egg/scs/__init__.py", line 166, in solve
    solver = SCS(data, cone, **settings)
  File "/home/ubuntu/anaconda3/envs/test2/lib/python3.7/site-packages/scs-3.2.0-py3.7-linux-x86_64.egg/scs/__init__.py", line 129, in __init__
    **self._settings
ValueError: ScsWork allocation error!

And when I run the pytest -v, it comes:

platform linux -- Python 3.7.13, pytest-7.4.2, pluggy-1.0.0 -- /home/ubuntu/anaconda3/envs/test2/bin/python3.7
cachedir: .pytest_cache
rootdir: /home/ubuntu/test0330/scs_test/scs-python-3.2.0
collected 26 items                                                                                   

test/test_scs_basic.py::test_problems[cone0-False-1] PASSED                                    [  3%]
test/test_scs_basic.py::test_problems[cone1-True-1] PASSED                                     [  7%]
test/test_scs_basic.py::test_problems[cone2-False-0.5] PASSED                                  [ 11%]
test/test_scs_basic.py::test_problems[cone3-True-0.5] PASSED                                   [ 15%]
test/test_scs_basic.py::test_failures PASSED                                                   [ 19%]
test/test_scs_object.py::test_update[False] PASSED                                             [ 23%]
test/test_scs_object.py::test_update[True] PASSED                                              [ 26%]
test/test_scs_object.py::test_warm_start[False] PASSED                                         [ 30%]
test/test_scs_object.py::test_warm_start[True] PASSED                                          [ 34%]
test/test_scs_rand.py::test_feasible[False] PASSED                                             [ 38%]
test/test_scs_rand.py::test_feasible[True] PASSED                                              [ 42%]
test/test_scs_rand.py::test_infeasible[False] PASSED                                           [ 46%]
test/test_scs_rand.py::test_infeasible[True] PASSED                                            [ 50%]
test/test_scs_rand.py::test_unbounded[False] PASSED                                            [ 53%]
test/test_scs_sdp.py::test_feasible[False] PASSED                                              [ 57%]
test/test_scs_sdp.py::test_feasible[True] PASSED                                               [ 61%]
test/test_scs_sdp.py::test_infeasible[False] PASSED                                            [ 65%]
test/test_scs_sdp.py::test_infeasible[True] PASSED                                             [ 69%]
test/test_scs_sdp.py::test_unbounded[False] PASSED                                             [ 73%]
test/test_solve_random_cone_prob.py::test_solve_feasible[False-False] PASSED                   [ 76%]
test/test_solve_random_cone_prob.py::test_solve_feasible[True-False] PASSED                    [ 80%]
test/test_solve_random_cone_prob.py::test_solve_feasible[True-True] FAILED                     [ 84%]
test/test_solve_random_cone_prob.py::test_solve_infeasible[False-False] PASSED                 [ 88%]
test/test_solve_random_cone_prob.py::test_solve_infeasible[True-False] PASSED                  [ 92%]
test/test_solve_random_cone_prob.py::test_solve_infeasible[True-True] FAILED                   [ 96%]
test/test_solve_random_cone_prob.py::test_solve_unbounded[False-False] PASSED                  [100%]

============================================== FAILURES ==============================================
___________________________________ test_solve_feasible[True-True] ___________________________________

use_indirect = True, gpu = True

    @pytest.mark.parametrize("use_indirect,gpu", flags)
    def test_solve_feasible(use_indirect, gpu):
        data, p_star = tools.gen_feasible(K, n=m // 3, density=0.1)

>       sol = scs.solve(data, K, use_indirect=use_indirect, gpu=gpu, **params)

test/test_solve_random_cone_prob.py:52: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../../../anaconda3/envs/test2/lib/python3.7/site-packages/scs-3.2.0-py3.7-linux-x86_64.egg/scs/__init__.py:166: in solve
    solver = SCS(data, cone, **settings)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <scs.SCS object at 0x7f0689c9c850>
data = {'A': <185x61 sparse matrix of type '<class 'numpy.float64'>'
        with 1128 stored elements in Compressed Sparse Column f... 0.33570231, -2.94340476,
       -2.00974735, -0.81127314, -3.18870305, -6.65891815,  2.8272063 ,
        5.31327757])}
cone = {'ed': 10, 'ep': 10, 'f': 10, 'l': 15, ...}
settings = {'eps_abs': 1e-05, 'eps_infeas': 1e-05, 'eps_rel': 1e-05, 'verbose': True}
A = <185x61 sparse matrix of type '<class 'numpy.float64'>'
        with 1128 stored elements in Compressed Sparse Column format>
b = array([-1.77972177e+00, -7.21552814e-01,  6.04651853e-01,  4.17280359e-01,
        2.31310490e+00,  3.13874803e-01, -2...0, -6.10051807e-01,
       -6.43584550e-01,  3.53862034e+00, -2.31483244e-01, -2.65193217e+00,
       -1.54730012e+00])
c = array([ 0.43734599, -0.55049163,  0.06535198, -0.46593169, -0.76006428,
       -0.63595698,  0.6186646 ,  1.31535326, ...  0.33570231, -2.94340476,
       -2.00974735, -0.81127314, -3.18870305, -6.65891815,  2.8272063 ,
        5.31327757])
m = 185, n = 61
Adata = array([-0.70799426,  0.09878455, -0.01774488, ..., -2.67072051,
       -1.62321065,  0.62820047])
Aindices = array([  5,   9,  11, ..., 165, 171, 174], dtype=int32)

    def __init__(self, data, cone, **settings):
        """Initialize the SCS solver.

        @param data     Dictionary containing keys `P`, `A`, `b`, `c`.
        @param cone     Dictionary containing cone information.
        @param settings Settings as kwargs, see docs.

        """
        self._settings = settings
        if not data or not cone:
            raise ValueError("Missing data or cone information")

        if "b" not in data or "c" not in data:
            raise ValueError("Missing one of b, c from data dictionary")
        if "A" not in data:
            raise ValueError("Missing A from data dictionary")

        A = data["A"]
        b = data["b"]
        c = data["c"]

        if A is None or b is None or c is None:
            raise ValueError("Incomplete data specification")

        if not sparse.issparse(A):
            raise TypeError("A is required to be a sparse matrix")
        if not sparse.isspmatrix_csc(A):
            warn(
                "Converting A to a CSC (compressed sparse column) matrix;"
                " may take a while."
            )
            A = A.tocsc()

        if sparse.issparse(b):
            b = b.todense()

        if sparse.issparse(c):
            c = c.todense()

        m = len(b)
        n = len(c)

        if not A.has_sorted_indices:
            A.sort_indices()
        Adata, Aindices, Acolptr = A.data, A.indices, A.indptr
        if A.shape != (m, n):
            raise ValueError("A shape not compatible with b,c")

        Pdata, Pindices, Pcolptr = None, None, None
        if "P" in data:
            P = data["P"]
            if P is not None:
                if not sparse.issparse(P):
                    raise TypeError("P is required to be a sparse matrix")
                if P.shape != (n, n):
                    raise ValueError("P shape not compatible with A,b,c")
                if not sparse.isspmatrix_csc(P):
                    warn(
                        "Converting P to a CSC (compressed sparse column) "
                        "matrix; may take a while."
                    )
                    P = P.tocsc()
                # extract upper triangular component only
                if sparse.tril(P, -1).data.size > 0:
                    P = sparse.triu(P, format="csc")
                if not P.has_sorted_indices:
                    P.sort_indices()
                Pdata, Pindices, Pcolptr = P.data, P.indices, P.indptr

        # Which scs are we using (scs_direct, scs_indirect, ...)
        _scs = _select_scs_module(self._settings)

        # Initialize solver
        self._solver = _scs.SCS(
            (m, n),
            Adata,
            Aindices,
            Acolptr,
            Pdata,
            Pindices,
            Pcolptr,
            b,
            c,
            cone,
>           **self._settings
        )
E       ValueError: ScsWork allocation error!

../../../anaconda3/envs/test2/lib/python3.7/site-packages/scs-3.2.0-py3.7-linux-x86_64.egg/scs/__init__.py:129: ValueError
---------------------------------------- Captured stdout call ----------------------------------------
SCS deprecation warning: The 'f' field in the cone struct 
has been replaced by 'z' to better reflect the Zero cone. 
Please replace usage of 'f' with 'z'. If both 'f' and 'z' 
are set then we sum the two fields to get the final zero 
cone size.
------------------------------------------------------------------
               SCS v3.2.0 - Splitting Conic Solver
        (c) Brendan O'Donoghue, Stanford University, 2012
------------------------------------------------------------------
problem:  variables n: 61, constraints m: 185
cones:    z: primal zero / dual free vars: 10
          l: linear vars: 15
          q: soc vars: 16, qsize: 4
          s: psd vars: 72, ssize: 6
          e: exp vars: 30, dual exp vars: 30
          p: primal + dual power vars: 12
settings: eps_abs: 1.0e-05, eps_rel: 1.0e-05, eps_infeas: 1.0e-05
          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
lin-sys:  sparse-indirect GPU
          nnz(A): 1128, nnz(P): 0
cudaError: 803 (100 indicates no device)
ERROR: init_lin_sys_work failure
__________________________________ test_solve_infeasible[True-True] __________________________________

use_indirect = True, gpu = True

    @pytest.mark.parametrize("use_indirect,gpu", flags)
    def test_solve_infeasible(use_indirect, gpu):
        data = tools.gen_infeasible(K, n=m // 2)
>       sol = scs.solve(data, K, use_indirect=use_indirect, gpu=gpu, **params)

test/test_solve_random_cone_prob.py:72: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../../../anaconda3/envs/test2/lib/python3.7/site-packages/scs-3.2.0-py3.7-linux-x86_64.egg/scs/__init__.py:166: in solve
    solver = SCS(data, cone, **settings)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <scs.SCS object at 0x7f0689c99550>
data = {'A': <185x92 sparse matrix of type '<class 'numpy.float64'>'
        with 17020 stored elements in Compressed Sparse Column ...-0.04999   ,
        0.63148075, -0.08389907, -0.01735298, -0.71389919, -0.6706297 ,
       -0.61027395, -0.37698244])}
cone = {'ed': 10, 'ep': 10, 'f': 10, 'l': 15, ...}
settings = {'eps_abs': 1e-05, 'eps_infeas': 1e-05, 'eps_rel': 1e-05, 'verbose': True}
A = <185x92 sparse matrix of type '<class 'numpy.float64'>'
        with 17020 stored elements in Compressed Sparse Column format>
b = array([ 0.00517974,  0.17941606, -0.29172381,  0.01732769, -0.33715337,
        0.44261772,  0.22239132,  0.002331  , ...18561 ,  0.51127944,  0.13322921, -0.13817534,
        0.4025374 ,  0.06252133, -0.22711616, -0.00649554, -0.52139805])
c = array([ 1.04105485,  0.14433835,  1.50995752,  1.42838261,  0.27214613,
       -2.02074466, -0.32352807,  0.21903492, ... -0.04999   ,
        0.63148075, -0.08389907, -0.01735298, -0.71389919, -0.6706297 ,
       -0.61027395, -0.37698244])
m = 185, n = 92
Adata = array([-0.66023834,  0.60458358, -0.3772123 , ...,  0.27921679,
        0.57320994,  1.94738209])
Aindices = array([  0,   1,   2, ..., 182, 183, 184], dtype=int32)

    def __init__(self, data, cone, **settings):
        """Initialize the SCS solver.

        @param data     Dictionary containing keys `P`, `A`, `b`, `c`.
        @param cone     Dictionary containing cone information.
        @param settings Settings as kwargs, see docs.

        """
        self._settings = settings
        if not data or not cone:
            raise ValueError("Missing data or cone information")

        if "b" not in data or "c" not in data:
            raise ValueError("Missing one of b, c from data dictionary")
        if "A" not in data:
            raise ValueError("Missing A from data dictionary")

        A = data["A"]
        b = data["b"]
        c = data["c"]

        if A is None or b is None or c is None:
            raise ValueError("Incomplete data specification")

        if not sparse.issparse(A):
            raise TypeError("A is required to be a sparse matrix")
        if not sparse.isspmatrix_csc(A):
            warn(
                "Converting A to a CSC (compressed sparse column) matrix;"
                " may take a while."
            )
            A = A.tocsc()

        if sparse.issparse(b):
            b = b.todense()

        if sparse.issparse(c):
            c = c.todense()

        m = len(b)
        n = len(c)

        if not A.has_sorted_indices:
            A.sort_indices()
        Adata, Aindices, Acolptr = A.data, A.indices, A.indptr
        if A.shape != (m, n):
            raise ValueError("A shape not compatible with b,c")

        Pdata, Pindices, Pcolptr = None, None, None
        if "P" in data:
            P = data["P"]
            if P is not None:
                if not sparse.issparse(P):
                    raise TypeError("P is required to be a sparse matrix")
                if P.shape != (n, n):
                    raise ValueError("P shape not compatible with A,b,c")
                if not sparse.isspmatrix_csc(P):
                    warn(
                        "Converting P to a CSC (compressed sparse column) "
                        "matrix; may take a while."
                    )
                    P = P.tocsc()
                # extract upper triangular component only
                if sparse.tril(P, -1).data.size > 0:
                    P = sparse.triu(P, format="csc")
                if not P.has_sorted_indices:
                    P.sort_indices()
                Pdata, Pindices, Pcolptr = P.data, P.indices, P.indptr

        # Which scs are we using (scs_direct, scs_indirect, ...)
        _scs = _select_scs_module(self._settings)

        # Initialize solver
        self._solver = _scs.SCS(
            (m, n),
            Adata,
            Aindices,
            Acolptr,
            Pdata,
            Pindices,
            Pcolptr,
            b,
            c,
            cone,
>           **self._settings
        )
E       ValueError: ScsWork allocation error!

../../../anaconda3/envs/test2/lib/python3.7/site-packages/scs-3.2.0-py3.7-linux-x86_64.egg/scs/__init__.py:129: ValueError
---------------------------------------- Captured stdout call ----------------------------------------
SCS deprecation warning: The 'f' field in the cone struct 
has been replaced by 'z' to better reflect the Zero cone. 
Please replace usage of 'f' with 'z'. If both 'f' and 'z' 
are set then we sum the two fields to get the final zero 
cone size.
------------------------------------------------------------------
               SCS v3.2.0 - Splitting Conic Solver
        (c) Brendan O'Donoghue, Stanford University, 2012
------------------------------------------------------------------
problem:  variables n: 92, constraints m: 185
cones:    z: primal zero / dual free vars: 10
          l: linear vars: 15
          q: soc vars: 16, qsize: 4
          s: psd vars: 72, ssize: 6
          e: exp vars: 30, dual exp vars: 30
          p: primal + dual power vars: 12
settings: eps_abs: 1.0e-05, eps_rel: 1.0e-05, eps_infeas: 1.0e-05
          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
lin-sys:  sparse-indirect GPU
          nnz(A): 17020, nnz(P): 0
cudaError: 803 (100 indicates no device)
ERROR: init_lin_sys_work failure
====================================== short test summary info =======================================
FAILED test/test_solve_random_cone_prob.py::test_solve_feasible[True-True] - ValueError: ScsWork allocation error!
FAILED test/test_solve_random_cone_prob.py::test_solve_infeasible[True-True] - ValueError: ScsWork allocation error!
=================================== 2 failed, 24 passed in 10.00s ====================================

====== I'm wondering if I haven't found the right way to use the scs-gpu yet