vendor/scs/linsys/gpu/indirect/private.h in scs-0.2.3 vs vendor/scs/linsys/gpu/indirect/private.h in scs-0.3.0

- old
+ new

@@ -3,37 +3,46 @@ #ifdef __cplusplus extern "C" { #endif -#include "gpu.h" +#include "csparse.h" #include "glbopts.h" +#include "gpu.h" #include "linalg.h" #include "scs.h" - struct SCS_LIN_SYS_WORK { + scs_int n, m; /* linear system dimensions */ /* reporting */ scs_int tot_cg_its; - scs_float total_solve_time; /* ALL BELOW HOSTED ON THE GPU */ - scs_float *p; /* cg iterate, n */ - scs_float *r; /* cg residual, n */ - scs_float *Gp; /* G * p, n */ - scs_float *bg; /* b, n */ - scs_float *tmp_m; /* m, used in mat_vec */ - scs_float *z; /* preconditioned */ - scs_float *M; /* preconditioner */ - ScsGpuMatrix *Ag; /* A matrix on GPU */ - ScsGpuMatrix *Agt; /* A trans matrix on GPU */ + scs_float *p; /* cg iterate, n */ + scs_float *r; /* cg residual, n */ + scs_float *Gp; /* G * p, n */ + scs_float *bg; /* b, n */ + scs_float *tmp_m; /* m, used in mat_vec */ + scs_float *z; /* preconditioned */ + scs_float *M; /* preconditioner */ + const ScsMatrix *A; /* does *not* own this memory */ + const ScsMatrix *P; /* does *not* own this memory */ + ScsGpuMatrix *Ag; /* A matrix on GPU */ + ScsGpuMatrix *Agt; /* A trans matrix on GPU */ + ScsGpuMatrix *Pg; /* P matrix on GPU */ /* CUDA */ cublasHandle_t cublas_handle; cusparseHandle_t cusparse_handle; /* CUSPARSE */ size_t buffer_size; void *buffer; - cusparseDnVecDescr_t dn_vec_m; /* Dense vector of length m */ - cusparseDnVecDescr_t dn_vec_n; /* Dense vector of length n */ + cusparseDnVecDescr_t dn_vec_m; /* Dense vector of length m */ + cusparseDnVecDescr_t dn_vec_n; /* Dense vector of length n */ + cusparseDnVecDescr_t dn_vec_n_p; /* Dense vector of length n */ + + /* rho terms */ + scs_float rho_x; + scs_float *inv_rho_y_vec; /* inverse rho_y_vec */ + scs_float *inv_rho_y_vec_gpu; /* inverse rho_y_vec on GPU */ }; #ifdef __cplusplus } #endif