Module: Ignis::LinAlg::CuBLASBindings
- Extended by:
- FFI::Library
- Defined in:
- lib/nvruby/linalg/cublas_bindings.rb
Overview
cuBLAS library FFI bindings
Constant Summary collapse
- CUBLAS_OP_N =
cuBLAS operation types
0- CUBLAS_OP_T =
No transpose
1- CUBLAS_OP_C =
Transpose
2- CUBLAS_FILL_MODE_LOWER =
cuBLAS fill modes
0- CUBLAS_FILL_MODE_UPPER =
1- CUBLAS_FILL_MODE_FULL =
2- CUBLAS_DIAG_NON_UNIT =
cuBLAS diagonal types
0- CUBLAS_DIAG_UNIT =
1- CUBLAS_SIDE_LEFT =
cuBLAS side modes
0- CUBLAS_SIDE_RIGHT =
1- CUBLAS_POINTER_MODE_HOST =
cuBLAS pointer modes
0- CUBLAS_POINTER_MODE_DEVICE =
1- CUBLAS_ATOMICS_NOT_ALLOWED =
cuBLAS atomics modes
0- CUBLAS_ATOMICS_ALLOWED =
1- CUBLAS_COMPUTE_16F =
cuBLAS compute types
64- CUBLAS_COMPUTE_16F_PEDANTIC =
65- CUBLAS_COMPUTE_32F =
68- CUBLAS_COMPUTE_32F_PEDANTIC =
69- CUBLAS_COMPUTE_32F_FAST_16F =
74- CUBLAS_COMPUTE_32F_FAST_16BF =
75- CUBLAS_COMPUTE_32F_FAST_TF32 =
77- CUBLAS_COMPUTE_64F =
70- CUBLAS_COMPUTE_64F_PEDANTIC =
71- CUBLAS_COMPUTE_32I =
72- CUBLAS_COMPUTE_32I_PEDANTIC =
73- CUBLASLT_EPILOGUE_DEFAULT =
cuBLASLt epilogue types
1- CUBLASLT_EPILOGUE_RELU =
2- CUBLASLT_EPILOGUE_RELU_AUX =
258- CUBLASLT_EPILOGUE_BIAS =
4- CUBLASLT_EPILOGUE_RELU_BIAS =
6- CUBLASLT_EPILOGUE_RELU_AUX_BIAS =
262- CUBLASLT_EPILOGUE_DRELU =
520- CUBLASLT_EPILOGUE_DRELU_BGRAD =
536- CUBLASLT_EPILOGUE_GELU =
32- CUBLASLT_EPILOGUE_GELU_AUX =
288- CUBLASLT_EPILOGUE_GELU_BIAS =
36- CUBLASLT_EPILOGUE_GELU_AUX_BIAS =
292- CUBLASLT_EPILOGUE_DGELU =
544- CUBLASLT_EPILOGUE_DGELU_BGRAD =
560- CUBLASLT_EPILOGUE_BGRADA =
576- CUBLASLT_EPILOGUE_BGRADB =
592- CUBLAS_DEFAULT_MATH =
cuBLAS Math Modes for Tensor Core control
0- CUBLAS_TENSOR_OP_MATH =
1- CUBLAS_PEDANTIC_MATH =
2- CUBLAS_TF32_TENSOR_OP_MATH =
3- CUBLAS_MATH_DISALLOW_REDUCED_PRECISION_REDUCTION =
16
Class Attribute Summary collapse
-
.handle ⇒ FFI::Pointer?
CuBLAS handle.
-
.lt_handle ⇒ FFI::Pointer?
CuBLASLt handle.
Class Method Summary collapse
-
.check_status!(status, context = "cuBLAS operation") ⇒ void
Check cuBLAS status and raise error if not success.
-
.ensure_loaded! ⇒ void
Ensure cuBLAS is loaded.
-
.finalize! ⇒ void
Finalize cuBLAS.
-
.get_handle ⇒ FFI::Pointer
Get or create cuBLAS handle.
Class Attribute Details
.handle ⇒ FFI::Pointer?
Returns cuBLAS handle.
81 82 83 |
# File 'lib/nvruby/linalg/cublas_bindings.rb', line 81 def handle @handle end |
.lt_handle ⇒ FFI::Pointer?
Returns cuBLASLt handle.
84 85 86 |
# File 'lib/nvruby/linalg/cublas_bindings.rb', line 84 def lt_handle @lt_handle end |
Class Method Details
.check_status!(status, context = "cuBLAS operation") ⇒ void
This method returns an undefined value.
Check cuBLAS status and raise error if not success
288 289 290 291 292 |
# File 'lib/nvruby/linalg/cublas_bindings.rb', line 288 def self.check_status!(status, context = "cuBLAS operation") return if status.zero? raise CuBLASError, status end |
.ensure_loaded! ⇒ void
This method returns an undefined value.
Ensure cuBLAS is loaded
88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 |
# File 'lib/nvruby/linalg/cublas_bindings.rb', line 88 def ensure_loaded! return if @loaded CUDA::LibraryLoader.load_library(:cublas) cuda_bin = Ignis.configuration.cuda_bin_path if cuda_bin ffi_lib Dir.glob(File.join(cuda_bin, "cublas64_*.dll")).max else ffi_lib "cublas64_12" end attach_cublas_functions! initialize_cublas! @loaded = true end |
.finalize! ⇒ void
This method returns an undefined value.
Finalize cuBLAS
115 116 117 118 119 120 121 |
# File 'lib/nvruby/linalg/cublas_bindings.rb', line 115 def finalize! return unless @handle cublasDestroy_v2(@handle) @handle = nil @loaded = false end |
.get_handle ⇒ FFI::Pointer
Get or create cuBLAS handle
108 109 110 111 |
# File 'lib/nvruby/linalg/cublas_bindings.rb', line 108 def get_handle ensure_loaded! @handle end |