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

Class Method Summary collapse

Class Attribute Details

.handleFFI::Pointer?

Returns cuSPARSE handle.

Returns:

  • (FFI::Pointer, nil)

    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

Parameters:

  • status (Integer)

    cuSPARSE status code

  • context (String) (defaults to: "cuSPARSE operation")

    Context for error message

Raises:

  • (CuSPARSEError)


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_handleFFI::Pointer

Get or create cuSPARSE handle

Returns:

  • (FFI::Pointer)


86
87
88
89
# File 'lib/nvruby/sparse/cusparse_bindings.rb', line 86

def get_handle
  ensure_loaded!
  @handle
end