/* automatically generated by rust-bindgen 0.68.1 */ pub type __off_t = ::core::ffi::c_long; pub type __off64_t = ::core::ffi::c_long; #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct CUstream_st { _unused: [u8; 0], } pub type cudaStream_t = *mut CUstream_st; #[repr(u32)] #[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)] pub enum cudaDataType_t { CUDA_R_16F = 2, CUDA_C_16F = 6, CUDA_R_16BF = 14, CUDA_C_16BF = 15, CUDA_R_32F = 0, CUDA_C_32F = 4, CUDA_R_64F = 1, CUDA_C_64F = 5, CUDA_R_4I = 16, CUDA_C_4I = 17, CUDA_R_4U = 18, CUDA_C_4U = 19, CUDA_R_8I = 3, CUDA_C_8I = 7, CUDA_R_8U = 8, CUDA_C_8U = 9, CUDA_R_16I = 20, CUDA_C_16I = 21, CUDA_R_16U = 22, CUDA_C_16U = 23, CUDA_R_32I = 10, CUDA_C_32I = 11, CUDA_R_32U = 12, CUDA_C_32U = 13, CUDA_R_64I = 24, CUDA_C_64I = 25, CUDA_R_64U = 26, CUDA_C_64U = 27, CUDA_R_8F_E4M3 = 28, CUDA_R_8F_E5M2 = 29, } pub use self::cudaDataType_t as cudaDataType; #[repr(u32)] #[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)] pub enum libraryPropertyType_t { MAJOR_VERSION = 0, MINOR_VERSION = 1, PATCH_LEVEL = 2, } pub use self::libraryPropertyType_t as libraryPropertyType; #[repr(u32)] #[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)] pub enum cublasStatus_t { CUBLAS_STATUS_SUCCESS = 0, CUBLAS_STATUS_NOT_INITIALIZED = 1, CUBLAS_STATUS_ALLOC_FAILED = 3, CUBLAS_STATUS_INVALID_VALUE = 7, CUBLAS_STATUS_ARCH_MISMATCH = 8, CUBLAS_STATUS_MAPPING_ERROR = 11, CUBLAS_STATUS_EXECUTION_FAILED = 13, CUBLAS_STATUS_INTERNAL_ERROR = 14, CUBLAS_STATUS_NOT_SUPPORTED = 15, CUBLAS_STATUS_LICENSE_ERROR = 16, } #[repr(u32)] #[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)] pub enum cublasComputeType_t { CUBLAS_COMPUTE_16F = 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, } pub type FILE = _IO_FILE; #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct _IO_marker { _unused: [u8; 0], } #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct _IO_codecvt { _unused: [u8; 0], } #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct _IO_wide_data { _unused: [u8; 0], } pub type _IO_lock_t = ::core::ffi::c_void; #[repr(C)] #[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)] pub struct _IO_FILE { pub _flags: ::core::ffi::c_int, pub _IO_read_ptr: *mut ::core::ffi::c_char, pub _IO_read_end: *mut ::core::ffi::c_char, pub _IO_read_base: *mut ::core::ffi::c_char, pub _IO_write_base: *mut ::core::ffi::c_char, pub _IO_write_ptr: *mut ::core::ffi::c_char, pub _IO_write_end: *mut ::core::ffi::c_char, pub _IO_buf_base: *mut ::core::ffi::c_char, pub _IO_buf_end: *mut ::core::ffi::c_char, pub _IO_save_base: *mut ::core::ffi::c_char, pub _IO_backup_base: *mut ::core::ffi::c_char, pub _IO_save_end: *mut ::core::ffi::c_char, pub _markers: *mut _IO_marker, pub _chain: *mut _IO_FILE, pub _fileno: ::core::ffi::c_int, pub _flags2: ::core::ffi::c_int, pub _old_offset: __off_t, pub _cur_column: ::core::ffi::c_ushort, pub _vtable_offset: ::core::ffi::c_schar, pub _shortbuf: [::core::ffi::c_char; 1usize], pub _lock: *mut _IO_lock_t, pub _offset: __off64_t, pub _codecvt: *mut _IO_codecvt, pub _wide_data: *mut _IO_wide_data, pub _freeres_list: *mut _IO_FILE, pub _freeres_buf: *mut ::core::ffi::c_void, pub __pad5: usize, pub _mode: ::core::ffi::c_int, pub _unused2: [::core::ffi::c_char; 20usize], } #[test] fn bindgen_test_layout__IO_FILE() { const UNINIT: ::core::mem::MaybeUninit<_IO_FILE> = ::core::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::core::mem::size_of::<_IO_FILE>(), 216usize, concat!("Size of: ", stringify!(_IO_FILE)) ); assert_eq!( ::core::mem::align_of::<_IO_FILE>(), 8usize, concat!("Alignment of ", stringify!(_IO_FILE)) ); assert_eq!( unsafe { ::core::ptr::addr_of!((*ptr)._flags) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(_IO_FILE), "::", stringify!(_flags) ) ); assert_eq!( unsafe { ::core::ptr::addr_of!((*ptr)._IO_read_ptr) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(_IO_FILE), "::", stringify!(_IO_read_ptr) ) ); assert_eq!( unsafe { ::core::ptr::addr_of!((*ptr)._IO_read_end) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(_IO_FILE), "::", stringify!(_IO_read_end) ) ); assert_eq!( unsafe { ::core::ptr::addr_of!((*ptr)._IO_read_base) as usize - ptr as usize }, 24usize, concat!( "Offset of field: ", stringify!(_IO_FILE), "::", stringify!(_IO_read_base) ) ); assert_eq!( unsafe { ::core::ptr::addr_of!((*ptr)._IO_write_base) as usize - ptr as usize }, 32usize, concat!( "Offset of field: ", stringify!(_IO_FILE), "::", stringify!(_IO_write_base) ) ); assert_eq!( unsafe { ::core::ptr::addr_of!((*ptr)._IO_write_ptr) as usize - ptr as usize }, 40usize, concat!( "Offset of field: ", stringify!(_IO_FILE), "::", stringify!(_IO_write_ptr) ) ); assert_eq!( unsafe { ::core::ptr::addr_of!((*ptr)._IO_write_end) as usize - ptr as usize }, 48usize, concat!( "Offset of field: ", stringify!(_IO_FILE), "::", stringify!(_IO_write_end) ) ); assert_eq!( unsafe { ::core::ptr::addr_of!((*ptr)._IO_buf_base) as usize - ptr as usize }, 56usize, concat!( "Offset of field: ", stringify!(_IO_FILE), "::", stringify!(_IO_buf_base) ) ); assert_eq!( unsafe { ::core::ptr::addr_of!((*ptr)._IO_buf_end) as usize - ptr as usize }, 64usize, concat!( "Offset of field: ", stringify!(_IO_FILE), "::", stringify!(_IO_buf_end) ) ); assert_eq!( unsafe { ::core::ptr::addr_of!((*ptr)._IO_save_base) as usize - ptr as usize }, 72usize, concat!( "Offset of field: ", stringify!(_IO_FILE), "::", stringify!(_IO_save_base) ) ); assert_eq!( unsafe { ::core::ptr::addr_of!((*ptr)._IO_backup_base) as usize - ptr as usize }, 80usize, concat!( "Offset of field: ", stringify!(_IO_FILE), "::", stringify!(_IO_backup_base) ) ); assert_eq!( unsafe { ::core::ptr::addr_of!((*ptr)._IO_save_end) as usize - ptr as usize }, 88usize, concat!( "Offset of field: ", stringify!(_IO_FILE), "::", stringify!(_IO_save_end) ) ); assert_eq!( unsafe { ::core::ptr::addr_of!((*ptr)._markers) as usize - ptr as usize }, 96usize, concat!( "Offset of field: ", stringify!(_IO_FILE), "::", stringify!(_markers) ) ); assert_eq!( unsafe { ::core::ptr::addr_of!((*ptr)._chain) as usize - ptr as usize }, 104usize, concat!( "Offset of field: ", stringify!(_IO_FILE), "::", stringify!(_chain) ) ); assert_eq!( unsafe { ::core::ptr::addr_of!((*ptr)._fileno) as usize - ptr as usize }, 112usize, concat!( "Offset of field: ", stringify!(_IO_FILE), "::", stringify!(_fileno) ) ); assert_eq!( unsafe { ::core::ptr::addr_of!((*ptr)._flags2) as usize - ptr as usize }, 116usize, concat!( "Offset of field: ", stringify!(_IO_FILE), "::", stringify!(_flags2) ) ); assert_eq!( unsafe { ::core::ptr::addr_of!((*ptr)._old_offset) as usize - ptr as usize }, 120usize, concat!( "Offset of field: ", stringify!(_IO_FILE), "::", stringify!(_old_offset) ) ); assert_eq!( unsafe { ::core::ptr::addr_of!((*ptr)._cur_column) as usize - ptr as usize }, 128usize, concat!( "Offset of field: ", stringify!(_IO_FILE), "::", stringify!(_cur_column) ) ); assert_eq!( unsafe { ::core::ptr::addr_of!((*ptr)._vtable_offset) as usize - ptr as usize }, 130usize, concat!( "Offset of field: ", stringify!(_IO_FILE), "::", stringify!(_vtable_offset) ) ); assert_eq!( unsafe { ::core::ptr::addr_of!((*ptr)._shortbuf) as usize - ptr as usize }, 131usize, concat!( "Offset of field: ", stringify!(_IO_FILE), "::", stringify!(_shortbuf) ) ); assert_eq!( unsafe { ::core::ptr::addr_of!((*ptr)._lock) as usize - ptr as usize }, 136usize, concat!( "Offset of field: ", stringify!(_IO_FILE), "::", stringify!(_lock) ) ); assert_eq!( unsafe { ::core::ptr::addr_of!((*ptr)._offset) as usize - ptr as usize }, 144usize, concat!( "Offset of field: ", stringify!(_IO_FILE), "::", stringify!(_offset) ) ); assert_eq!( unsafe { ::core::ptr::addr_of!((*ptr)._codecvt) as usize - ptr as usize }, 152usize, concat!( "Offset of field: ", stringify!(_IO_FILE), "::", stringify!(_codecvt) ) ); assert_eq!( unsafe { ::core::ptr::addr_of!((*ptr)._wide_data) as usize - ptr as usize }, 160usize, concat!( "Offset of field: ", stringify!(_IO_FILE), "::", stringify!(_wide_data) ) ); assert_eq!( unsafe { ::core::ptr::addr_of!((*ptr)._freeres_list) as usize - ptr as usize }, 168usize, concat!( "Offset of field: ", stringify!(_IO_FILE), "::", stringify!(_freeres_list) ) ); assert_eq!( unsafe { ::core::ptr::addr_of!((*ptr)._freeres_buf) as usize - ptr as usize }, 176usize, concat!( "Offset of field: ", stringify!(_IO_FILE), "::", stringify!(_freeres_buf) ) ); assert_eq!( unsafe { ::core::ptr::addr_of!((*ptr).__pad5) as usize - ptr as usize }, 184usize, concat!( "Offset of field: ", stringify!(_IO_FILE), "::", stringify!(__pad5) ) ); assert_eq!( unsafe { ::core::ptr::addr_of!((*ptr)._mode) as usize - ptr as usize }, 192usize, concat!( "Offset of field: ", stringify!(_IO_FILE), "::", stringify!(_mode) ) ); assert_eq!( unsafe { ::core::ptr::addr_of!((*ptr)._unused2) as usize - ptr as usize }, 196usize, concat!( "Offset of field: ", stringify!(_IO_FILE), "::", stringify!(_unused2) ) ); } impl Default for _IO_FILE { fn default() -> Self { let mut s = ::core::mem::MaybeUninit::::uninit(); unsafe { ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct cublasLtContext { _unused: [u8; 0], } pub type cublasLtHandle_t = *mut cublasLtContext; extern "C" { pub fn cublasLtCreate(lightHandle: *mut cublasLtHandle_t) -> cublasStatus_t; } extern "C" { pub fn cublasLtDestroy(lightHandle: cublasLtHandle_t) -> cublasStatus_t; } extern "C" { pub fn cublasLtGetStatusName(status: cublasStatus_t) -> *const ::core::ffi::c_char; } extern "C" { pub fn cublasLtGetStatusString(status: cublasStatus_t) -> *const ::core::ffi::c_char; } extern "C" { pub fn cublasLtGetVersion() -> usize; } extern "C" { pub fn cublasLtGetCudartVersion() -> usize; } extern "C" { pub fn cublasLtGetProperty( type_: libraryPropertyType, value: *mut ::core::ffi::c_int, ) -> cublasStatus_t; } extern "C" { pub fn cublasLtHeuristicsCacheGetCapacity(capacity: *mut usize) -> cublasStatus_t; } extern "C" { pub fn cublasLtHeuristicsCacheSetCapacity(capacity: usize) -> cublasStatus_t; } extern "C" { pub fn cublasLtDisableCpuInstructionsSetMask(mask: ::core::ffi::c_uint) -> ::core::ffi::c_uint; } #[repr(C)] #[derive(Debug, Default, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)] pub struct cublasLtMatrixLayoutOpaque_t { pub data: [u64; 8usize], } #[test] fn bindgen_test_layout_cublasLtMatrixLayoutOpaque_t() { const UNINIT: ::core::mem::MaybeUninit = ::core::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::core::mem::size_of::(), 64usize, concat!("Size of: ", stringify!(cublasLtMatrixLayoutOpaque_t)) ); assert_eq!( ::core::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(cublasLtMatrixLayoutOpaque_t)) ); assert_eq!( unsafe { ::core::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(cublasLtMatrixLayoutOpaque_t), "::", stringify!(data) ) ); } pub type cublasLtMatrixLayout_t = *mut cublasLtMatrixLayoutOpaque_t; #[repr(C)] #[derive(Debug, Default, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)] pub struct cublasLtMatmulAlgo_t { pub data: [u64; 8usize], } #[test] fn bindgen_test_layout_cublasLtMatmulAlgo_t() { const UNINIT: ::core::mem::MaybeUninit = ::core::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::core::mem::size_of::(), 64usize, concat!("Size of: ", stringify!(cublasLtMatmulAlgo_t)) ); assert_eq!( ::core::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(cublasLtMatmulAlgo_t)) ); assert_eq!( unsafe { ::core::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(cublasLtMatmulAlgo_t), "::", stringify!(data) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)] pub struct cublasLtMatmulDescOpaque_t { pub data: [u64; 32usize], } #[test] fn bindgen_test_layout_cublasLtMatmulDescOpaque_t() { const UNINIT: ::core::mem::MaybeUninit = ::core::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::core::mem::size_of::(), 256usize, concat!("Size of: ", stringify!(cublasLtMatmulDescOpaque_t)) ); assert_eq!( ::core::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(cublasLtMatmulDescOpaque_t)) ); assert_eq!( unsafe { ::core::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(cublasLtMatmulDescOpaque_t), "::", stringify!(data) ) ); } pub type cublasLtMatmulDesc_t = *mut cublasLtMatmulDescOpaque_t; #[repr(C)] #[derive(Debug, Default, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)] pub struct cublasLtMatrixTransformDescOpaque_t { pub data: [u64; 8usize], } #[test] fn bindgen_test_layout_cublasLtMatrixTransformDescOpaque_t() { const UNINIT: ::core::mem::MaybeUninit = ::core::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::core::mem::size_of::(), 64usize, concat!("Size of: ", stringify!(cublasLtMatrixTransformDescOpaque_t)) ); assert_eq!( ::core::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(cublasLtMatrixTransformDescOpaque_t) ) ); assert_eq!( unsafe { ::core::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(cublasLtMatrixTransformDescOpaque_t), "::", stringify!(data) ) ); } pub type cublasLtMatrixTransformDesc_t = *mut cublasLtMatrixTransformDescOpaque_t; #[repr(C)] #[derive(Debug, Default, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)] pub struct cublasLtMatmulPreferenceOpaque_t { pub data: [u64; 8usize], } #[test] fn bindgen_test_layout_cublasLtMatmulPreferenceOpaque_t() { const UNINIT: ::core::mem::MaybeUninit = ::core::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::core::mem::size_of::(), 64usize, concat!("Size of: ", stringify!(cublasLtMatmulPreferenceOpaque_t)) ); assert_eq!( ::core::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(cublasLtMatmulPreferenceOpaque_t) ) ); assert_eq!( unsafe { ::core::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(cublasLtMatmulPreferenceOpaque_t), "::", stringify!(data) ) ); } pub type cublasLtMatmulPreference_t = *mut cublasLtMatmulPreferenceOpaque_t; #[repr(u32)] #[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)] pub enum cublasLtMatmulTile_t { CUBLASLT_MATMUL_TILE_UNDEFINED = 0, CUBLASLT_MATMUL_TILE_8x8 = 1, CUBLASLT_MATMUL_TILE_8x16 = 2, CUBLASLT_MATMUL_TILE_16x8 = 3, CUBLASLT_MATMUL_TILE_8x32 = 4, CUBLASLT_MATMUL_TILE_16x16 = 5, CUBLASLT_MATMUL_TILE_32x8 = 6, CUBLASLT_MATMUL_TILE_8x64 = 7, CUBLASLT_MATMUL_TILE_16x32 = 8, CUBLASLT_MATMUL_TILE_32x16 = 9, CUBLASLT_MATMUL_TILE_64x8 = 10, CUBLASLT_MATMUL_TILE_32x32 = 11, CUBLASLT_MATMUL_TILE_32x64 = 12, CUBLASLT_MATMUL_TILE_64x32 = 13, CUBLASLT_MATMUL_TILE_32x128 = 14, CUBLASLT_MATMUL_TILE_64x64 = 15, CUBLASLT_MATMUL_TILE_128x32 = 16, CUBLASLT_MATMUL_TILE_64x128 = 17, CUBLASLT_MATMUL_TILE_128x64 = 18, CUBLASLT_MATMUL_TILE_64x256 = 19, CUBLASLT_MATMUL_TILE_128x128 = 20, CUBLASLT_MATMUL_TILE_256x64 = 21, CUBLASLT_MATMUL_TILE_64x512 = 22, CUBLASLT_MATMUL_TILE_128x256 = 23, CUBLASLT_MATMUL_TILE_256x128 = 24, CUBLASLT_MATMUL_TILE_512x64 = 25, CUBLASLT_MATMUL_TILE_64x96 = 26, CUBLASLT_MATMUL_TILE_96x64 = 27, CUBLASLT_MATMUL_TILE_96x128 = 28, CUBLASLT_MATMUL_TILE_128x160 = 29, CUBLASLT_MATMUL_TILE_160x128 = 30, CUBLASLT_MATMUL_TILE_192x128 = 31, CUBLASLT_MATMUL_TILE_128x192 = 32, CUBLASLT_MATMUL_TILE_128x96 = 33, CUBLASLT_MATMUL_TILE_32x256 = 34, CUBLASLT_MATMUL_TILE_256x32 = 35, CUBLASLT_MATMUL_TILE_END = 36, } #[repr(u32)] #[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)] pub enum cublasLtMatmulStages_t { CUBLASLT_MATMUL_STAGES_UNDEFINED = 0, CUBLASLT_MATMUL_STAGES_16x1 = 1, CUBLASLT_MATMUL_STAGES_16x2 = 2, CUBLASLT_MATMUL_STAGES_16x3 = 3, CUBLASLT_MATMUL_STAGES_16x4 = 4, CUBLASLT_MATMUL_STAGES_16x5 = 5, CUBLASLT_MATMUL_STAGES_16x6 = 6, CUBLASLT_MATMUL_STAGES_32x1 = 7, CUBLASLT_MATMUL_STAGES_32x2 = 8, CUBLASLT_MATMUL_STAGES_32x3 = 9, CUBLASLT_MATMUL_STAGES_32x4 = 10, CUBLASLT_MATMUL_STAGES_32x5 = 11, CUBLASLT_MATMUL_STAGES_32x6 = 12, CUBLASLT_MATMUL_STAGES_64x1 = 13, CUBLASLT_MATMUL_STAGES_64x2 = 14, CUBLASLT_MATMUL_STAGES_64x3 = 15, CUBLASLT_MATMUL_STAGES_64x4 = 16, CUBLASLT_MATMUL_STAGES_64x5 = 17, CUBLASLT_MATMUL_STAGES_64x6 = 18, CUBLASLT_MATMUL_STAGES_128x1 = 19, CUBLASLT_MATMUL_STAGES_128x2 = 20, CUBLASLT_MATMUL_STAGES_128x3 = 21, CUBLASLT_MATMUL_STAGES_128x4 = 22, CUBLASLT_MATMUL_STAGES_128x5 = 23, CUBLASLT_MATMUL_STAGES_128x6 = 24, CUBLASLT_MATMUL_STAGES_32x10 = 25, CUBLASLT_MATMUL_STAGES_8x4 = 26, CUBLASLT_MATMUL_STAGES_16x10 = 27, CUBLASLT_MATMUL_STAGES_8x5 = 28, CUBLASLT_MATMUL_STAGES_8x3 = 31, CUBLASLT_MATMUL_STAGES_8xAUTO = 32, CUBLASLT_MATMUL_STAGES_16xAUTO = 33, CUBLASLT_MATMUL_STAGES_32xAUTO = 34, CUBLASLT_MATMUL_STAGES_64xAUTO = 35, CUBLASLT_MATMUL_STAGES_128xAUTO = 36, CUBLASLT_MATMUL_STAGES_END = 37, } #[repr(u32)] #[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)] pub enum cublasLtClusterShape_t { CUBLASLT_CLUSTER_SHAPE_AUTO = 0, CUBLASLT_CLUSTER_SHAPE_1x1x1 = 2, CUBLASLT_CLUSTER_SHAPE_2x1x1 = 3, CUBLASLT_CLUSTER_SHAPE_4x1x1 = 4, CUBLASLT_CLUSTER_SHAPE_1x2x1 = 5, CUBLASLT_CLUSTER_SHAPE_2x2x1 = 6, CUBLASLT_CLUSTER_SHAPE_4x2x1 = 7, CUBLASLT_CLUSTER_SHAPE_1x4x1 = 8, CUBLASLT_CLUSTER_SHAPE_2x4x1 = 9, CUBLASLT_CLUSTER_SHAPE_4x4x1 = 10, CUBLASLT_CLUSTER_SHAPE_8x1x1 = 11, CUBLASLT_CLUSTER_SHAPE_1x8x1 = 12, CUBLASLT_CLUSTER_SHAPE_8x2x1 = 13, CUBLASLT_CLUSTER_SHAPE_2x8x1 = 14, CUBLASLT_CLUSTER_SHAPE_16x1x1 = 15, CUBLASLT_CLUSTER_SHAPE_1x16x1 = 16, CUBLASLT_CLUSTER_SHAPE_3x1x1 = 17, CUBLASLT_CLUSTER_SHAPE_5x1x1 = 18, CUBLASLT_CLUSTER_SHAPE_6x1x1 = 19, CUBLASLT_CLUSTER_SHAPE_7x1x1 = 20, CUBLASLT_CLUSTER_SHAPE_9x1x1 = 21, CUBLASLT_CLUSTER_SHAPE_10x1x1 = 22, CUBLASLT_CLUSTER_SHAPE_11x1x1 = 23, CUBLASLT_CLUSTER_SHAPE_12x1x1 = 24, CUBLASLT_CLUSTER_SHAPE_13x1x1 = 25, CUBLASLT_CLUSTER_SHAPE_14x1x1 = 26, CUBLASLT_CLUSTER_SHAPE_15x1x1 = 27, CUBLASLT_CLUSTER_SHAPE_3x2x1 = 28, CUBLASLT_CLUSTER_SHAPE_5x2x1 = 29, CUBLASLT_CLUSTER_SHAPE_6x2x1 = 30, CUBLASLT_CLUSTER_SHAPE_7x2x1 = 31, CUBLASLT_CLUSTER_SHAPE_1x3x1 = 32, CUBLASLT_CLUSTER_SHAPE_2x3x1 = 33, CUBLASLT_CLUSTER_SHAPE_3x3x1 = 34, CUBLASLT_CLUSTER_SHAPE_4x3x1 = 35, CUBLASLT_CLUSTER_SHAPE_5x3x1 = 36, CUBLASLT_CLUSTER_SHAPE_3x4x1 = 37, CUBLASLT_CLUSTER_SHAPE_1x5x1 = 38, CUBLASLT_CLUSTER_SHAPE_2x5x1 = 39, CUBLASLT_CLUSTER_SHAPE_3x5x1 = 40, CUBLASLT_CLUSTER_SHAPE_1x6x1 = 41, CUBLASLT_CLUSTER_SHAPE_2x6x1 = 42, CUBLASLT_CLUSTER_SHAPE_1x7x1 = 43, CUBLASLT_CLUSTER_SHAPE_2x7x1 = 44, CUBLASLT_CLUSTER_SHAPE_1x9x1 = 45, CUBLASLT_CLUSTER_SHAPE_1x10x1 = 46, CUBLASLT_CLUSTER_SHAPE_1x11x1 = 47, CUBLASLT_CLUSTER_SHAPE_1x12x1 = 48, CUBLASLT_CLUSTER_SHAPE_1x13x1 = 49, CUBLASLT_CLUSTER_SHAPE_1x14x1 = 50, CUBLASLT_CLUSTER_SHAPE_1x15x1 = 51, CUBLASLT_CLUSTER_SHAPE_END = 52, } #[repr(u32)] #[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)] pub enum cublasLtMatmulInnerShape_t { CUBLASLT_MATMUL_INNER_SHAPE_UNDEFINED = 0, CUBLASLT_MATMUL_INNER_SHAPE_MMA884 = 1, CUBLASLT_MATMUL_INNER_SHAPE_MMA1684 = 2, CUBLASLT_MATMUL_INNER_SHAPE_MMA1688 = 3, CUBLASLT_MATMUL_INNER_SHAPE_MMA16816 = 4, CUBLASLT_MATMUL_INNER_SHAPE_END = 5, } #[repr(u32)] #[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)] pub enum cublasLtPointerMode_t { CUBLASLT_POINTER_MODE_HOST = 0, CUBLASLT_POINTER_MODE_DEVICE = 1, CUBLASLT_POINTER_MODE_DEVICE_VECTOR = 2, CUBLASLT_POINTER_MODE_ALPHA_DEVICE_VECTOR_BETA_ZERO = 3, CUBLASLT_POINTER_MODE_ALPHA_DEVICE_VECTOR_BETA_HOST = 4, } #[repr(u32)] #[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)] pub enum cublasLtPointerModeMask_t { CUBLASLT_POINTER_MODE_MASK_HOST = 1, CUBLASLT_POINTER_MODE_MASK_DEVICE = 2, CUBLASLT_POINTER_MODE_MASK_DEVICE_VECTOR = 4, CUBLASLT_POINTER_MODE_MASK_ALPHA_DEVICE_VECTOR_BETA_ZERO = 8, CUBLASLT_POINTER_MODE_MASK_ALPHA_DEVICE_VECTOR_BETA_HOST = 16, } pub type cublasLtNumericalImplFlags_t = u64; extern "C" { pub fn cublasLtMatmul( lightHandle: cublasLtHandle_t, computeDesc: cublasLtMatmulDesc_t, alpha: *const ::core::ffi::c_void, A: *const ::core::ffi::c_void, Adesc: cublasLtMatrixLayout_t, B: *const ::core::ffi::c_void, Bdesc: cublasLtMatrixLayout_t, beta: *const ::core::ffi::c_void, C: *const ::core::ffi::c_void, Cdesc: cublasLtMatrixLayout_t, D: *mut ::core::ffi::c_void, Ddesc: cublasLtMatrixLayout_t, algo: *const cublasLtMatmulAlgo_t, workspace: *mut ::core::ffi::c_void, workspaceSizeInBytes: usize, stream: cudaStream_t, ) -> cublasStatus_t; } extern "C" { pub fn cublasLtMatrixTransform( lightHandle: cublasLtHandle_t, transformDesc: cublasLtMatrixTransformDesc_t, alpha: *const ::core::ffi::c_void, A: *const ::core::ffi::c_void, Adesc: cublasLtMatrixLayout_t, beta: *const ::core::ffi::c_void, B: *const ::core::ffi::c_void, Bdesc: cublasLtMatrixLayout_t, C: *mut ::core::ffi::c_void, Cdesc: cublasLtMatrixLayout_t, stream: cudaStream_t, ) -> cublasStatus_t; } #[repr(u32)] #[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)] pub enum cublasLtOrder_t { CUBLASLT_ORDER_COL = 0, CUBLASLT_ORDER_ROW = 1, CUBLASLT_ORDER_COL32 = 2, CUBLASLT_ORDER_COL4_4R2_8C = 3, CUBLASLT_ORDER_COL32_2R_4R4 = 4, } #[repr(u32)] #[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)] pub enum cublasLtMatrixLayoutAttribute_t { CUBLASLT_MATRIX_LAYOUT_TYPE = 0, CUBLASLT_MATRIX_LAYOUT_ORDER = 1, CUBLASLT_MATRIX_LAYOUT_ROWS = 2, CUBLASLT_MATRIX_LAYOUT_COLS = 3, CUBLASLT_MATRIX_LAYOUT_LD = 4, CUBLASLT_MATRIX_LAYOUT_BATCH_COUNT = 5, CUBLASLT_MATRIX_LAYOUT_STRIDED_BATCH_OFFSET = 6, CUBLASLT_MATRIX_LAYOUT_PLANE_OFFSET = 7, } extern "C" { pub fn cublasLtMatrixLayoutInit_internal( matLayout: cublasLtMatrixLayout_t, size: usize, type_: cudaDataType, rows: u64, cols: u64, ld: i64, ) -> cublasStatus_t; } extern "C" { pub fn cublasLtMatrixLayoutCreate( matLayout: *mut cublasLtMatrixLayout_t, type_: cudaDataType, rows: u64, cols: u64, ld: i64, ) -> cublasStatus_t; } extern "C" { pub fn cublasLtMatrixLayoutDestroy(matLayout: cublasLtMatrixLayout_t) -> cublasStatus_t; } extern "C" { pub fn cublasLtMatrixLayoutSetAttribute( matLayout: cublasLtMatrixLayout_t, attr: cublasLtMatrixLayoutAttribute_t, buf: *const ::core::ffi::c_void, sizeInBytes: usize, ) -> cublasStatus_t; } extern "C" { pub fn cublasLtMatrixLayoutGetAttribute( matLayout: cublasLtMatrixLayout_t, attr: cublasLtMatrixLayoutAttribute_t, buf: *mut ::core::ffi::c_void, sizeInBytes: usize, sizeWritten: *mut usize, ) -> cublasStatus_t; } #[repr(u32)] #[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)] pub enum cublasLtMatmulDescAttributes_t { CUBLASLT_MATMUL_DESC_COMPUTE_TYPE = 0, CUBLASLT_MATMUL_DESC_SCALE_TYPE = 1, CUBLASLT_MATMUL_DESC_POINTER_MODE = 2, CUBLASLT_MATMUL_DESC_TRANSA = 3, CUBLASLT_MATMUL_DESC_TRANSB = 4, CUBLASLT_MATMUL_DESC_TRANSC = 5, CUBLASLT_MATMUL_DESC_FILL_MODE = 6, CUBLASLT_MATMUL_DESC_EPILOGUE = 7, CUBLASLT_MATMUL_DESC_BIAS_POINTER = 8, CUBLASLT_MATMUL_DESC_BIAS_BATCH_STRIDE = 10, CUBLASLT_MATMUL_DESC_EPILOGUE_AUX_POINTER = 11, CUBLASLT_MATMUL_DESC_EPILOGUE_AUX_LD = 12, CUBLASLT_MATMUL_DESC_EPILOGUE_AUX_BATCH_STRIDE = 13, CUBLASLT_MATMUL_DESC_ALPHA_VECTOR_BATCH_STRIDE = 14, CUBLASLT_MATMUL_DESC_SM_COUNT_TARGET = 15, CUBLASLT_MATMUL_DESC_A_SCALE_POINTER = 17, CUBLASLT_MATMUL_DESC_B_SCALE_POINTER = 18, CUBLASLT_MATMUL_DESC_C_SCALE_POINTER = 19, CUBLASLT_MATMUL_DESC_D_SCALE_POINTER = 20, CUBLASLT_MATMUL_DESC_AMAX_D_POINTER = 21, CUBLASLT_MATMUL_DESC_EPILOGUE_AUX_DATA_TYPE = 22, CUBLASLT_MATMUL_DESC_EPILOGUE_AUX_SCALE_POINTER = 23, CUBLASLT_MATMUL_DESC_EPILOGUE_AUX_AMAX_POINTER = 24, CUBLASLT_MATMUL_DESC_FAST_ACCUM = 25, CUBLASLT_MATMUL_DESC_BIAS_DATA_TYPE = 26, CUBLASLT_MATMUL_DESC_ATOMIC_SYNC_NUM_CHUNKS_D_ROWS = 27, CUBLASLT_MATMUL_DESC_ATOMIC_SYNC_NUM_CHUNKS_D_COLS = 28, CUBLASLT_MATMUL_DESC_ATOMIC_SYNC_IN_COUNTERS_POINTER = 29, CUBLASLT_MATMUL_DESC_ATOMIC_SYNC_OUT_COUNTERS_POINTER = 30, } extern "C" { pub fn cublasLtMatmulDescInit_internal( matmulDesc: cublasLtMatmulDesc_t, size: usize, computeType: cublasComputeType_t, scaleType: cudaDataType_t, ) -> cublasStatus_t; } extern "C" { pub fn cublasLtMatmulDescCreate( matmulDesc: *mut cublasLtMatmulDesc_t, computeType: cublasComputeType_t, scaleType: cudaDataType_t, ) -> cublasStatus_t; } extern "C" { pub fn cublasLtMatmulDescDestroy(matmulDesc: cublasLtMatmulDesc_t) -> cublasStatus_t; } extern "C" { pub fn cublasLtMatmulDescSetAttribute( matmulDesc: cublasLtMatmulDesc_t, attr: cublasLtMatmulDescAttributes_t, buf: *const ::core::ffi::c_void, sizeInBytes: usize, ) -> cublasStatus_t; } extern "C" { pub fn cublasLtMatmulDescGetAttribute( matmulDesc: cublasLtMatmulDesc_t, attr: cublasLtMatmulDescAttributes_t, buf: *mut ::core::ffi::c_void, sizeInBytes: usize, sizeWritten: *mut usize, ) -> cublasStatus_t; } #[repr(u32)] #[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)] pub enum cublasLtMatrixTransformDescAttributes_t { CUBLASLT_MATRIX_TRANSFORM_DESC_SCALE_TYPE = 0, CUBLASLT_MATRIX_TRANSFORM_DESC_POINTER_MODE = 1, CUBLASLT_MATRIX_TRANSFORM_DESC_TRANSA = 2, CUBLASLT_MATRIX_TRANSFORM_DESC_TRANSB = 3, } extern "C" { pub fn cublasLtMatrixTransformDescInit_internal( transformDesc: cublasLtMatrixTransformDesc_t, size: usize, scaleType: cudaDataType, ) -> cublasStatus_t; } extern "C" { pub fn cublasLtMatrixTransformDescCreate( transformDesc: *mut cublasLtMatrixTransformDesc_t, scaleType: cudaDataType, ) -> cublasStatus_t; } extern "C" { pub fn cublasLtMatrixTransformDescDestroy( transformDesc: cublasLtMatrixTransformDesc_t, ) -> cublasStatus_t; } extern "C" { pub fn cublasLtMatrixTransformDescSetAttribute( transformDesc: cublasLtMatrixTransformDesc_t, attr: cublasLtMatrixTransformDescAttributes_t, buf: *const ::core::ffi::c_void, sizeInBytes: usize, ) -> cublasStatus_t; } extern "C" { pub fn cublasLtMatrixTransformDescGetAttribute( transformDesc: cublasLtMatrixTransformDesc_t, attr: cublasLtMatrixTransformDescAttributes_t, buf: *mut ::core::ffi::c_void, sizeInBytes: usize, sizeWritten: *mut usize, ) -> cublasStatus_t; } #[repr(u32)] #[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)] pub enum cublasLtReductionScheme_t { CUBLASLT_REDUCTION_SCHEME_NONE = 0, CUBLASLT_REDUCTION_SCHEME_INPLACE = 1, CUBLASLT_REDUCTION_SCHEME_COMPUTE_TYPE = 2, CUBLASLT_REDUCTION_SCHEME_OUTPUT_TYPE = 4, CUBLASLT_REDUCTION_SCHEME_MASK = 7, } #[repr(u32)] #[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)] pub enum cublasLtEpilogue_t { CUBLASLT_EPILOGUE_DEFAULT = 1, CUBLASLT_EPILOGUE_RELU = 2, CUBLASLT_EPILOGUE_RELU_AUX = 130, CUBLASLT_EPILOGUE_BIAS = 4, CUBLASLT_EPILOGUE_RELU_BIAS = 6, CUBLASLT_EPILOGUE_RELU_AUX_BIAS = 134, CUBLASLT_EPILOGUE_DRELU = 136, CUBLASLT_EPILOGUE_DRELU_BGRAD = 152, CUBLASLT_EPILOGUE_GELU = 32, CUBLASLT_EPILOGUE_GELU_AUX = 160, CUBLASLT_EPILOGUE_GELU_BIAS = 36, CUBLASLT_EPILOGUE_GELU_AUX_BIAS = 164, CUBLASLT_EPILOGUE_DGELU = 192, CUBLASLT_EPILOGUE_DGELU_BGRAD = 208, CUBLASLT_EPILOGUE_BGRADA = 256, CUBLASLT_EPILOGUE_BGRADB = 512, } #[repr(u32)] #[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)] pub enum cublasLtMatmulSearch_t { CUBLASLT_SEARCH_BEST_FIT = 0, CUBLASLT_SEARCH_LIMITED_BY_ALGO_ID = 1, CUBLASLT_SEARCH_RESERVED_02 = 2, CUBLASLT_SEARCH_RESERVED_03 = 3, CUBLASLT_SEARCH_RESERVED_04 = 4, CUBLASLT_SEARCH_RESERVED_05 = 5, } #[repr(u32)] #[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)] pub enum cublasLtMatmulPreferenceAttributes_t { CUBLASLT_MATMUL_PREF_SEARCH_MODE = 0, CUBLASLT_MATMUL_PREF_MAX_WORKSPACE_BYTES = 1, CUBLASLT_MATMUL_PREF_REDUCTION_SCHEME_MASK = 3, CUBLASLT_MATMUL_PREF_MIN_ALIGNMENT_A_BYTES = 5, CUBLASLT_MATMUL_PREF_MIN_ALIGNMENT_B_BYTES = 6, CUBLASLT_MATMUL_PREF_MIN_ALIGNMENT_C_BYTES = 7, CUBLASLT_MATMUL_PREF_MIN_ALIGNMENT_D_BYTES = 8, CUBLASLT_MATMUL_PREF_MAX_WAVES_COUNT = 9, CUBLASLT_MATMUL_PREF_IMPL_MASK = 12, } extern "C" { pub fn cublasLtMatmulPreferenceInit_internal( pref: cublasLtMatmulPreference_t, size: usize, ) -> cublasStatus_t; } extern "C" { pub fn cublasLtMatmulPreferenceCreate(pref: *mut cublasLtMatmulPreference_t) -> cublasStatus_t; } extern "C" { pub fn cublasLtMatmulPreferenceDestroy(pref: cublasLtMatmulPreference_t) -> cublasStatus_t; } extern "C" { pub fn cublasLtMatmulPreferenceSetAttribute( pref: cublasLtMatmulPreference_t, attr: cublasLtMatmulPreferenceAttributes_t, buf: *const ::core::ffi::c_void, sizeInBytes: usize, ) -> cublasStatus_t; } extern "C" { pub fn cublasLtMatmulPreferenceGetAttribute( pref: cublasLtMatmulPreference_t, attr: cublasLtMatmulPreferenceAttributes_t, buf: *mut ::core::ffi::c_void, sizeInBytes: usize, sizeWritten: *mut usize, ) -> cublasStatus_t; } #[repr(C)] #[derive(Debug, Copy, Clone, PartialOrd, PartialEq)] pub struct cublasLtMatmulHeuristicResult_t { pub algo: cublasLtMatmulAlgo_t, pub workspaceSize: usize, pub state: cublasStatus_t, pub wavesCount: f32, pub reserved: [::core::ffi::c_int; 4usize], } #[test] fn bindgen_test_layout_cublasLtMatmulHeuristicResult_t() { const UNINIT: ::core::mem::MaybeUninit = ::core::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::core::mem::size_of::(), 96usize, concat!("Size of: ", stringify!(cublasLtMatmulHeuristicResult_t)) ); assert_eq!( ::core::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(cublasLtMatmulHeuristicResult_t)) ); assert_eq!( unsafe { ::core::ptr::addr_of!((*ptr).algo) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(cublasLtMatmulHeuristicResult_t), "::", stringify!(algo) ) ); assert_eq!( unsafe { ::core::ptr::addr_of!((*ptr).workspaceSize) as usize - ptr as usize }, 64usize, concat!( "Offset of field: ", stringify!(cublasLtMatmulHeuristicResult_t), "::", stringify!(workspaceSize) ) ); assert_eq!( unsafe { ::core::ptr::addr_of!((*ptr).state) as usize - ptr as usize }, 72usize, concat!( "Offset of field: ", stringify!(cublasLtMatmulHeuristicResult_t), "::", stringify!(state) ) ); assert_eq!( unsafe { ::core::ptr::addr_of!((*ptr).wavesCount) as usize - ptr as usize }, 76usize, concat!( "Offset of field: ", stringify!(cublasLtMatmulHeuristicResult_t), "::", stringify!(wavesCount) ) ); assert_eq!( unsafe { ::core::ptr::addr_of!((*ptr).reserved) as usize - ptr as usize }, 80usize, concat!( "Offset of field: ", stringify!(cublasLtMatmulHeuristicResult_t), "::", stringify!(reserved) ) ); } impl Default for cublasLtMatmulHeuristicResult_t { fn default() -> Self { let mut s = ::core::mem::MaybeUninit::::uninit(); unsafe { ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } extern "C" { pub fn cublasLtMatmulAlgoGetHeuristic( lightHandle: cublasLtHandle_t, operationDesc: cublasLtMatmulDesc_t, Adesc: cublasLtMatrixLayout_t, Bdesc: cublasLtMatrixLayout_t, Cdesc: cublasLtMatrixLayout_t, Ddesc: cublasLtMatrixLayout_t, preference: cublasLtMatmulPreference_t, requestedAlgoCount: ::core::ffi::c_int, heuristicResultsArray: *mut cublasLtMatmulHeuristicResult_t, returnAlgoCount: *mut ::core::ffi::c_int, ) -> cublasStatus_t; } extern "C" { pub fn cublasLtMatmulAlgoGetIds( lightHandle: cublasLtHandle_t, computeType: cublasComputeType_t, scaleType: cudaDataType_t, Atype: cudaDataType_t, Btype: cudaDataType_t, Ctype: cudaDataType_t, Dtype: cudaDataType_t, requestedAlgoCount: ::core::ffi::c_int, algoIdsArray: *mut ::core::ffi::c_int, returnAlgoCount: *mut ::core::ffi::c_int, ) -> cublasStatus_t; } extern "C" { pub fn cublasLtMatmulAlgoInit( lightHandle: cublasLtHandle_t, computeType: cublasComputeType_t, scaleType: cudaDataType_t, Atype: cudaDataType_t, Btype: cudaDataType_t, Ctype: cudaDataType_t, Dtype: cudaDataType_t, algoId: ::core::ffi::c_int, algo: *mut cublasLtMatmulAlgo_t, ) -> cublasStatus_t; } extern "C" { pub fn cublasLtMatmulAlgoCheck( lightHandle: cublasLtHandle_t, operationDesc: cublasLtMatmulDesc_t, Adesc: cublasLtMatrixLayout_t, Bdesc: cublasLtMatrixLayout_t, Cdesc: cublasLtMatrixLayout_t, Ddesc: cublasLtMatrixLayout_t, algo: *const cublasLtMatmulAlgo_t, result: *mut cublasLtMatmulHeuristicResult_t, ) -> cublasStatus_t; } #[repr(u32)] #[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)] pub enum cublasLtMatmulAlgoCapAttributes_t { CUBLASLT_ALGO_CAP_SPLITK_SUPPORT = 0, CUBLASLT_ALGO_CAP_REDUCTION_SCHEME_MASK = 1, CUBLASLT_ALGO_CAP_CTA_SWIZZLING_SUPPORT = 2, CUBLASLT_ALGO_CAP_STRIDED_BATCH_SUPPORT = 3, CUBLASLT_ALGO_CAP_OUT_OF_PLACE_RESULT_SUPPORT = 4, CUBLASLT_ALGO_CAP_UPLO_SUPPORT = 5, CUBLASLT_ALGO_CAP_TILE_IDS = 6, CUBLASLT_ALGO_CAP_CUSTOM_OPTION_MAX = 7, CUBLASLT_ALGO_CAP_CUSTOM_MEMORY_ORDER = 10, CUBLASLT_ALGO_CAP_POINTER_MODE_MASK = 11, CUBLASLT_ALGO_CAP_EPILOGUE_MASK = 12, CUBLASLT_ALGO_CAP_STAGES_IDS = 13, CUBLASLT_ALGO_CAP_LD_NEGATIVE = 14, CUBLASLT_ALGO_CAP_NUMERICAL_IMPL_FLAGS = 15, CUBLASLT_ALGO_CAP_MIN_ALIGNMENT_A_BYTES = 16, CUBLASLT_ALGO_CAP_MIN_ALIGNMENT_B_BYTES = 17, CUBLASLT_ALGO_CAP_MIN_ALIGNMENT_C_BYTES = 18, CUBLASLT_ALGO_CAP_MIN_ALIGNMENT_D_BYTES = 19, CUBLASLT_ALGO_CAP_ATOMIC_SYNC = 20, } extern "C" { pub fn cublasLtMatmulAlgoCapGetAttribute( algo: *const cublasLtMatmulAlgo_t, attr: cublasLtMatmulAlgoCapAttributes_t, buf: *mut ::core::ffi::c_void, sizeInBytes: usize, sizeWritten: *mut usize, ) -> cublasStatus_t; } #[repr(u32)] #[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)] pub enum cublasLtMatmulAlgoConfigAttributes_t { CUBLASLT_ALGO_CONFIG_ID = 0, CUBLASLT_ALGO_CONFIG_TILE_ID = 1, CUBLASLT_ALGO_CONFIG_SPLITK_NUM = 2, CUBLASLT_ALGO_CONFIG_REDUCTION_SCHEME = 3, CUBLASLT_ALGO_CONFIG_CTA_SWIZZLING = 4, CUBLASLT_ALGO_CONFIG_CUSTOM_OPTION = 5, CUBLASLT_ALGO_CONFIG_STAGES_ID = 6, CUBLASLT_ALGO_CONFIG_INNER_SHAPE_ID = 7, CUBLASLT_ALGO_CONFIG_CLUSTER_SHAPE_ID = 8, } extern "C" { pub fn cublasLtMatmulAlgoConfigSetAttribute( algo: *mut cublasLtMatmulAlgo_t, attr: cublasLtMatmulAlgoConfigAttributes_t, buf: *const ::core::ffi::c_void, sizeInBytes: usize, ) -> cublasStatus_t; } extern "C" { pub fn cublasLtMatmulAlgoConfigGetAttribute( algo: *const cublasLtMatmulAlgo_t, attr: cublasLtMatmulAlgoConfigAttributes_t, buf: *mut ::core::ffi::c_void, sizeInBytes: usize, sizeWritten: *mut usize, ) -> cublasStatus_t; } pub type cublasLtLoggerCallback_t = ::core::option::Option< unsafe extern "C" fn( logLevel: ::core::ffi::c_int, functionName: *const ::core::ffi::c_char, message: *const ::core::ffi::c_char, ), >; extern "C" { pub fn cublasLtLoggerSetCallback(callback: cublasLtLoggerCallback_t) -> cublasStatus_t; } extern "C" { pub fn cublasLtLoggerSetFile(file: *mut FILE) -> cublasStatus_t; } extern "C" { pub fn cublasLtLoggerOpenFile(logFile: *const ::core::ffi::c_char) -> cublasStatus_t; } extern "C" { pub fn cublasLtLoggerSetLevel(level: ::core::ffi::c_int) -> cublasStatus_t; } extern "C" { pub fn cublasLtLoggerSetMask(mask: ::core::ffi::c_int) -> cublasStatus_t; } extern "C" { pub fn cublasLtLoggerForceDisable() -> cublasStatus_t; }