Module: Ignis::Sparse::CuSPARSEBindings
- Extended by:
- FFI::Library
- Defined in:
- lib/nvruby/sparse/cusparse_bindings.rb
Overview
cuSPARSE library FFI bindings
Constant Summary collapse
- CUSPARSE_INDEX_BASE_ZERO =
Sparse matrix formats
0- CUSPARSE_INDEX_BASE_ONE =
1- CUSPARSE_MATRIX_TYPE_GENERAL =
Matrix types
0- CUSPARSE_MATRIX_TYPE_SYMMETRIC =
1- CUSPARSE_MATRIX_TYPE_HERMITIAN =
2- CUSPARSE_MATRIX_TYPE_TRIANGULAR =
3- CUSPARSE_FILL_MODE_LOWER =
Fill modes
0- CUSPARSE_FILL_MODE_UPPER =
1- CUSPARSE_DIAG_TYPE_NON_UNIT =
Diagonal types
0- CUSPARSE_DIAG_TYPE_UNIT =
1- CUSPARSE_INDEX_16U =
Index types
1- CUSPARSE_INDEX_32I =
2- CUSPARSE_INDEX_64I =
3- CUSPARSE_OPERATION_NON_TRANSPOSE =
Sparse matrix-vector operation types
0- CUSPARSE_OPERATION_TRANSPOSE =
1- CUSPARSE_OPERATION_CONJUGATE_TRANSPOSE =
2- CUSPARSE_SPMV_ALG_DEFAULT =
SpMV algorithms
0- CUSPARSE_SPMV_CSR_ALG1 =
1- CUSPARSE_SPMV_CSR_ALG2 =
2- CUSPARSE_SPMV_COO_ALG1 =
3- CUSPARSE_SPMV_COO_ALG2 =
4- CUSPARSE_SPMM_ALG_DEFAULT =
SpMM algorithms
0- CUSPARSE_SPMM_CSR_ALG1 =
1- CUSPARSE_SPMM_CSR_ALG2 =
2- CUSPARSE_SPMM_CSR_ALG3 =
3- CUSPARSE_SPMM_COO_ALG1 =
4- CUSPARSE_SPMM_COO_ALG2 =
5- CUSPARSE_SPMM_COO_ALG3 =
6- CUSPARSE_SPMM_COO_ALG4 =
7- CUSPARSE_SPMM_BLOCKED_ELL_ALG1 =
8
Class Attribute Summary collapse
-
.handle ⇒ FFI::Pointer?
CuSPARSE handle.
Class Method Summary collapse
-
.check_status!(status, context = "cuSPARSE operation") ⇒ void
Check cuSPARSE status and raise error if not success.
-
.ensure_loaded! ⇒ void
Ensure cuSPARSE is loaded.
-
.finalize! ⇒ void
Finalize cuSPARSE.
-
.get_handle ⇒ FFI::Pointer
Get or create cuSPARSE handle.
Class Attribute Details
.handle ⇒ FFI::Pointer?
Returns cuSPARSE handle.
62 63 64 |
# File 'lib/nvruby/sparse/cusparse_bindings.rb', line 62 def handle @handle end |
Class Method Details
.check_status!(status, context = "cuSPARSE operation") ⇒ void
This method returns an undefined value.
Check cuSPARSE status and raise error if not success
224 225 226 227 228 |
# File 'lib/nvruby/sparse/cusparse_bindings.rb', line 224 def self.check_status!(status, context = "cuSPARSE operation") return if status.zero? raise CuSPARSEError, status end |
.ensure_loaded! ⇒ void
This method returns an undefined value.
Ensure cuSPARSE is loaded
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
# File 'lib/nvruby/sparse/cusparse_bindings.rb', line 66 def ensure_loaded! return if @loaded CUDA::LibraryLoader.load_library(:cusparse) cuda_bin = Ignis.configuration.cuda_bin_path if cuda_bin ffi_lib Dir.glob(File.join(cuda_bin, "cusparse64_*.dll")).max else ffi_lib "cusparse64_12" end attach_cusparse_functions! initialize_cusparse! @loaded = true end |
.finalize! ⇒ void
This method returns an undefined value.
Finalize cuSPARSE
93 94 95 96 97 98 99 |
# File 'lib/nvruby/sparse/cusparse_bindings.rb', line 93 def finalize! return unless @handle cusparseDestroy(@handle) @handle = nil @loaded = false end |
.get_handle ⇒ FFI::Pointer
Get or create cuSPARSE handle
86 87 88 89 |
# File 'lib/nvruby/sparse/cusparse_bindings.rb', line 86 def get_handle ensure_loaded! @handle end |