From 7538ae61c6610b71a09805c519cd5e40967a6e08 Mon Sep 17 00:00:00 2001 From: Seunghoon Lee Date: Mon, 29 Apr 2024 22:56:19 +0900 Subject: [PATCH] Remove zluda_dnn remains. --- miopen-sys/build.rs | 19 +- miopen-sys/lib/MIOpen.lib | Bin 115328 -> 0 bytes zluda_dnn/src/cudnn_types_v8.rs | 27 --- zluda_dnn/src/cudnn_v8.rs | 57 +---- zluda_dnn/src/lib.rs | 404 +------------------------------- 5 files changed, 13 insertions(+), 494 deletions(-) delete mode 100644 miopen-sys/lib/MIOpen.lib diff --git a/miopen-sys/build.rs b/miopen-sys/build.rs index 1271246..f6c0300 100644 --- a/miopen-sys/build.rs +++ b/miopen-sys/build.rs @@ -1,19 +1,4 @@ -use std::env::VarError; -use std::{env, path::PathBuf}; - -fn main() -> Result<(), VarError> { +fn main() { println!("cargo:rustc-link-lib=dylib=MIOpen"); - if cfg!(windows) { - let env = env::var("CARGO_CFG_TARGET_ENV")?; - if env == "msvc" { - let mut path = PathBuf::from(env::var("CARGO_MANIFEST_DIR")?); - path.push("lib"); - println!("cargo:rustc-link-search=native={}", path.display()); - } else { - println!("cargo:rustc-link-search=native=C:\\Windows\\System32"); - }; - } else { - println!("cargo:rustc-link-search=native=/opt/rocm/lib/"); - } - Ok(()) + println!("cargo:rustc-link-search=native=/opt/rocm/lib/"); } diff --git a/miopen-sys/lib/MIOpen.lib b/miopen-sys/lib/MIOpen.lib deleted file mode 100644 index 610304272c2f412fb326b6fc226f2b3c50423ad0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 115328 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 QsC{XFP{Vx_+63?a0?YS1<^TWy diff --git a/zluda_dnn/src/cudnn_types_v8.rs b/zluda_dnn/src/cudnn_types_v8.rs index c99e039..b6b5ebd 100644 --- a/zluda_dnn/src/cudnn_types_v8.rs +++ b/zluda_dnn/src/cudnn_types_v8.rs @@ -151,33 +151,6 @@ pub struct cudnnTensorTransformStruct { _unused: [u8; 0], } pub type cudnnTensorTransformDescriptor_t = *mut cudnnTensorTransformStruct; -#[repr(C)] -#[derive(Copy, Clone)] -pub struct cudnnEngineHeurStruct { - pub operation_graph: cudnnOperationGraphDescriptor_t, -} -pub type cudnnEngineHeurDescriptor_t = *mut cudnnEngineHeurStruct; -#[repr(C)] -#[derive(Copy, Clone)] -pub struct cudnnOperationConvolutionForwardStruct { - pub x_desc: cudnnTensorDescriptor_t, - pub y_desc: cudnnTensorDescriptor_t, - pub w_desc: cudnnFilterDescriptor_t, - pub conv_desc: cudnnConvolutionDescriptor_t, -} -pub type cudnnOperationConvolutionForwardDescriptor_t = *mut cudnnOperationConvolutionForwardStruct; -#[repr(C)] -#[derive(Copy, Clone)] -pub struct cudnnOperationGraphStruct { - pub handle: cudnnHandle_t, - pub ops: *const cudnnBackendDescriptorType_t, -} -pub type cudnnOperationGraphDescriptor_t = *mut cudnnOperationGraphStruct; -#[repr(C)] -#[derive(Copy, Clone)] -pub struct cudnnVariantPackStruct { -} -pub type cudnnVariantPackDescriptor_t = *mut cudnnVariantPackStruct; impl cudnnDataType_t { pub const CUDNN_DATA_FLOAT: cudnnDataType_t = cudnnDataType_t(0); } diff --git a/zluda_dnn/src/cudnn_v8.rs b/zluda_dnn/src/cudnn_v8.rs index f89d82e..8acde31 100644 --- a/zluda_dnn/src/cudnn_v8.rs +++ b/zluda_dnn/src/cudnn_v8.rs @@ -4,7 +4,7 @@ use crate::types::*; #[no_mangle] pub unsafe extern "system" fn cudnnGetVersion() -> usize { - 8700 as usize + unimplemented!() } #[no_mangle] @@ -65,7 +65,7 @@ pub unsafe extern "system" fn cudnnGetStream( handle: cudnnHandle_t, streamId: *mut cudaStream_t, ) -> cudnnStatus_t { - crate::get_stream(handle, streamId) + crate::unsupported() } #[no_mangle] @@ -2793,18 +2793,7 @@ pub unsafe extern "system" fn cudnnSetConvolution2dDescriptor( mode: cudnnConvolutionMode_t, computeType: cudnnDataType_t, ) -> cudnnStatus_t { - let pad_a = [pad_h, pad_w]; - let filter_stride_a = [u, v]; - let dilation_a = [dilation_h, dilation_w]; - crate::set_convolution_nd_descriptor( - convDesc, - 2, - pad_a.as_ptr(), - filter_stride_a.as_ptr(), - dilation_a.as_ptr(), - mode, - computeType, - ) + crate::unsupported() } #[no_mangle] @@ -3422,27 +3411,14 @@ pub unsafe extern "system" fn cudnnBackendCreateDescriptor( descriptorType: cudnnBackendDescriptorType_t, descriptor: *mut cudnnBackendDescriptor_t, ) -> cudnnStatus_t { - match descriptorType { - cudnnBackendDescriptorType_t::CUDNN_BACKEND_CONVOLUTION_DESCRIPTOR => crate::cudnn_create_convolution_descriptor(descriptor as _), - cudnnBackendDescriptorType_t::CUDNN_BACKEND_ENGINEHEUR_DESCRIPTOR => crate::cudnn_create_engineheur_descriptor(descriptor as _), - cudnnBackendDescriptorType_t::CUDNN_BACKEND_OPERATION_CONVOLUTION_FORWARD_DESCRIPTOR => crate::cudnn_create_operation_convolution_forward_descriptor(descriptor as _), - cudnnBackendDescriptorType_t::CUDNN_BACKEND_OPERATIONGRAPH_DESCRIPTOR => crate::cudnn_create_operationgraph_descriptor(descriptor as _), - cudnnBackendDescriptorType_t::CUDNN_BACKEND_VARIANT_PACK_DESCRIPTOR => cudnnStatus_t::CUDNN_STATUS_SUCCESS, - cudnnBackendDescriptorType_t::CUDNN_BACKEND_TENSOR_DESCRIPTOR => crate::cudnn_create_tensor_descriptor(descriptor as _), - _ => { - println!("[ZLUDA] Unsupported descriptor type: {}", descriptorType.0); - crate::unsupported() - }, - } + crate::unsupported() } #[no_mangle] pub unsafe extern "system" fn cudnnBackendDestroyDescriptor( descriptor: cudnnBackendDescriptor_t, ) -> cudnnStatus_t { - // TODO - // Do not know how to destroy unknown descriptor. - cudnnStatus_t::CUDNN_STATUS_SUCCESS + crate::unsupported() } #[no_mangle] @@ -3456,7 +3432,7 @@ pub unsafe extern "system" fn cudnnBackendInitialize( pub unsafe extern "system" fn cudnnBackendFinalize( descriptor: cudnnBackendDescriptor_t, ) -> cudnnStatus_t { - cudnnStatus_t::CUDNN_STATUS_SUCCESS + crate::unsupported() } #[no_mangle] @@ -3467,18 +3443,7 @@ pub unsafe extern "system" fn cudnnBackendSetAttribute( elementCount: i64, arrayOfElements: *const ::std::os::raw::c_void, ) -> cudnnStatus_t { - match attributeName.0 { - 100..=199 => crate::set_convolution_nd_descriptor_by_attribute(descriptor as _, attributeName, elementCount, arrayOfElements), - 200..=299 => crate::set_engineheur_descriptor_by_attribute(descriptor as _, attributeName, elementCount, arrayOfElements), - 700..=799 => crate::set_operation_convolution_forward_descriptor_by_attribute(descriptor as _, attributeName, elementCount, arrayOfElements as _), - 800..=899 => crate::set_operationgraph_descriptor_by_attribute(descriptor as _, attributeName, elementCount, arrayOfElements as _), - 900..=999 => crate::set_tensor_nd_decriptor_by_attribute(descriptor as _, attributeName, elementCount, arrayOfElements), - 1000..=1099 => cudnnStatus_t::CUDNN_STATUS_SUCCESS, - _ => { - println!("[ZLUDA] Tried to set unsupported attribute: {}", attributeName.0); - crate::unsupported() - }, - } + crate::unsupported() } #[no_mangle] @@ -3490,13 +3455,7 @@ pub unsafe extern "system" fn cudnnBackendGetAttribute( elementCount: *mut i64, arrayOfElements: *mut ::std::os::raw::c_void, ) -> cudnnStatus_t { - match attributeName { - cudnnBackendAttributeName_t::CUDNN_ATTR_ENGINEHEUR_RESULTS => crate::get_engineheur_results(descriptor as _, requestedElementCount, elementCount, arrayOfElements), - _ => { - println!("[ZLUDA] Tried to get unsupported attribute: {}", attributeName.0); - crate::unsupported() - }, - } + crate::unsupported() } #[no_mangle] diff --git a/zluda_dnn/src/lib.rs b/zluda_dnn/src/lib.rs index 41331e6..3f1d19f 100644 --- a/zluda_dnn/src/lib.rs +++ b/zluda_dnn/src/lib.rs @@ -20,7 +20,7 @@ use types::*; use hip_runtime_sys::*; use miopen_sys::*; -use std::{mem, ptr, alloc::{self, Layout}}; +use std::{mem, ptr}; macro_rules! call { ($expr:expr) => {{ @@ -44,10 +44,7 @@ fn unsupported() -> cudnnStatus_t { fn to_cudnn(status: miopen_sys::miopenStatus_t) -> cudnnStatus_t { match status { miopen_sys::miopenStatus_t::miopenStatusSuccess => cudnnStatus_t::CUDNN_STATUS_SUCCESS, - miopen_sys::miopenStatus_t::miopenStatusInvalidValue => cudnnStatus_t::CUDNN_STATUS_INVALID_VALUE, - miopen_sys::miopenStatus_t::miopenStatusBadParm => cudnnStatus_t::CUDNN_STATUS_BAD_PARAM, - miopen_sys::miopenStatus_t::miopenStatusUnknownError => cudnnStatus_t::CUDNN_STATUS_INTERNAL_ERROR, - err => panic!("[ZLUDA] MIOpen failed: {}", err.0), //cudnnStatus_t::CUDNN_STATUS_INTERNAL_ERROR, + err => panic!("{}", err.0), //cudnnStatus_t::CUDNN_STATUS_INTERNAL_ERROR, } } @@ -90,132 +87,7 @@ unsafe fn cudnn_create_lrn_descriptor(norm_desc: *mut cudnnLRNDescriptor_t) -> c unsafe fn cudnn_create_pooling_descriptor( pooling_desc: *mut cudnnPoolingDescriptor_t, ) -> cudnnStatus_t { - to_cudnn(miopen_sys::miopenCreatePoolingDescriptor( - pooling_desc as _, - )) -} - -unsafe fn cudnn_create_engineheur_descriptor( - engineheur_desc: *mut cudnnEngineHeurDescriptor_t, -) -> cudnnStatus_t { - let layout = Layout::new::(); - *engineheur_desc = alloc::alloc(layout) as _; - cudnnStatus_t::CUDNN_STATUS_SUCCESS -} - -unsafe fn cudnn_create_operation_convolution_forward_descriptor( - operation_convolution_forward_desc: *mut cudnnOperationConvolutionForwardDescriptor_t, -) -> cudnnStatus_t { - let layout = Layout::new::(); - *operation_convolution_forward_desc = alloc::alloc(layout) as _; - cudnnStatus_t::CUDNN_STATUS_SUCCESS -} - -unsafe fn cudnn_create_operationgraph_descriptor( - operationgraph_desc: *mut cudnnOperationGraphDescriptor_t, -) -> cudnnStatus_t { - let layout = Layout::new::(); - *operationgraph_desc = alloc::alloc(layout) as _; - cudnnStatus_t::CUDNN_STATUS_SUCCESS -} - -unsafe fn get_tensor_size( - tensor_desc: *mut cudnnTensorStruct, - size: *mut i32, -) -> cudnnStatus_t { - to_cudnn(miopen_sys::miopenGetTensorDescriptorSize( - tensor_desc as _, - size, - )) -} - -unsafe fn set_tensor_nd_decriptor_by_attribute( - tensor_desc: *mut cudnnTensorStruct, - attribute_name: cudnnBackendAttributeName_t, - count: i64, - elements: *const ::std::os::raw::c_void, -) -> cudnnStatus_t { - let mut size = 0; - get_tensor_size( - tensor_desc, - &mut size, - ); - let mut data_type = cudnnDataType_t::CUDNN_DATA_FLOAT; - let mut dim_a = [0; 5]; - let mut stride_a = [0; 5]; - get_tensor_nd_decriptor( - tensor_desc, - &mut data_type, - dim_a.as_mut_ptr(), - stride_a.as_mut_ptr(), - ); - match attribute_name { - cudnnBackendAttributeName_t::CUDNN_ATTR_TENSOR_BYTE_ALIGNMENT => cudnnStatus_t::CUDNN_STATUS_SUCCESS, - cudnnBackendAttributeName_t::CUDNN_ATTR_TENSOR_DATA_TYPE => { - let mut nb_index: usize = 0; - while nb_index < 5 && dim_a[nb_index] != 0 { - nb_index += 1; - } - let parameters = elements as *const cudnnDataType_t; - data_type = *parameters; - if dim_a[0] == 0 { // This tensor is not initialized yet. - dim_a[0] = 1; - } - if stride_a[0] == 0 { // This tensor is not initialized yet. - stride_a[0] = 1; - } - set_tensor_nd_decriptor( - tensor_desc, - data_type, - (nb_index + 1) as _, - dim_a[0..=nb_index].as_ptr(), - stride_a[0..=nb_index].as_ptr(), - ) - }, - cudnnBackendAttributeName_t::CUDNN_ATTR_TENSOR_DIMENSIONS => { - let parameters = elements as *const i64; - let count_u = count as usize; - for i in 0..count_u { - dim_a[i] = *parameters.add(i) as i32; - if stride_a[i] == 0 { - stride_a[i] = 1; // fill invalid value - } - } - set_tensor_nd_decriptor( - tensor_desc, - data_type, - count as _, - dim_a[0..count_u].as_ptr(), - stride_a[0..count_u].as_ptr(), - ) - }, - cudnnBackendAttributeName_t::CUDNN_ATTR_TENSOR_STRIDES => { - let parameters = elements as *const i64; - let count_u = count as usize; - for i in 0..count_u { - stride_a[i] = *parameters.add(i) as i32; - if dim_a[i] == 0 { - dim_a[i] = 1; // fill invalid value - } - } - let mut dim_last_index: usize = 4; - while stride_a[dim_last_index] == 0 { - dim_last_index -= 1; - } - set_tensor_nd_decriptor( - tensor_desc, - data_type, - count as _, - dim_a[0..count_u].as_ptr(), - stride_a[0..count_u].as_ptr(), - ) - }, - cudnnBackendAttributeName_t::CUDNN_ATTR_TENSOR_UNIQUE_ID => cudnnStatus_t::CUDNN_STATUS_SUCCESS, - _ => { - println!("[ZLUDA] Unsupported tensor attribute: {}", attribute_name.0); - crate::unsupported() - }, - } + to_cudnn(miopen_sys::miopenCreatePoolingDescriptor(pooling_desc as _)) } unsafe fn set_tensor_nd_decriptor( @@ -234,39 +106,11 @@ unsafe fn set_tensor_nd_decriptor( )) } -unsafe fn get_tensor_nd_decriptor( - tensor_desc: *mut cudnnTensorStruct, - data_type: *mut cudnnDataType_t, - dim_a: *mut i32, - stride_a: *mut i32, -) -> cudnnStatus_t { - let mut miopen_data_type = from_data_type(*data_type); - let status = miopen_sys::miopenGetTensorDescriptor( - tensor_desc as _, - &mut miopen_data_type, - dim_a as _, - stride_a as _, - ); - *data_type = to_data_type(miopen_data_type); - to_cudnn(status) -} - -fn to_data_type(type_: miopenDataType_t) -> cudnnDataType_t { - match type_ { - miopenDataType_t::miopenFloat => cudnnDataType_t::CUDNN_DATA_FLOAT, - miopenDataType_t::miopenDouble => cudnnDataType_t::CUDNN_DATA_DOUBLE, - miopenDataType_t::miopenHalf => cudnnDataType_t::CUDNN_DATA_HALF, - miopenDataType_t::miopenBFloat16 => cudnnDataType_t::CUDNN_DATA_BFLOAT16, - _ => todo!(), - } -} - fn from_data_type(type_: cudnnDataType_t) -> miopenDataType_t { match type_ { cudnnDataType_t::CUDNN_DATA_FLOAT => miopenDataType_t::miopenFloat, cudnnDataType_t::CUDNN_DATA_DOUBLE => miopenDataType_t::miopenDouble, cudnnDataType_t::CUDNN_DATA_HALF => miopenDataType_t::miopenHalf, - cudnnDataType_t::CUDNN_DATA_BFLOAT16 => miopenDataType_t::miopenBFloat16, _ => todo!(), } } @@ -288,114 +132,6 @@ unsafe fn set_filter_nd_descriptor( )) } -unsafe fn set_convolution_nd_descriptor_by_attribute( - conv_desc: cudnnConvolutionDescriptor_t, - attribute_name: cudnnBackendAttributeName_t, - count: i64, - elements: *const ::std::os::raw::c_void, -) -> cudnnStatus_t { - let mut array_length = 2; - let mut pad_a = [0; 2]; - let mut filter_stride_a = [0; 2]; - let mut dilation_a = [0; 2]; - let mut mode = cudnnConvolutionMode_t::CUDNN_CONVOLUTION; - get_convolution_nd_descriptor( - conv_desc, - &mut array_length, // TODO - pad_a.as_mut_ptr(), - filter_stride_a.as_mut_ptr(), - dilation_a.as_mut_ptr(), - &mut mode, - cudnnDataType_t::CUDNN_DATA_FLOAT, // will be unused - ); - match attribute_name { - cudnnBackendAttributeName_t::CUDNN_ATTR_CONVOLUTION_COMP_TYPE => cudnnStatus_t::CUDNN_STATUS_SUCCESS, - cudnnBackendAttributeName_t::CUDNN_ATTR_CONVOLUTION_CONV_MODE => { - let parameters = elements as *const cudnnConvolutionMode_t; - set_convolution_nd_descriptor( - conv_desc, - array_length, // TODO - pad_a.as_ptr(), - filter_stride_a.as_ptr(), - dilation_a.as_ptr(), - *parameters, - cudnnDataType_t::CUDNN_DATA_FLOAT, // will be unused - ) - }, - cudnnBackendAttributeName_t::CUDNN_ATTR_CONVOLUTION_DILATIONS => { - if count != 2 { - todo!() - } - let parameters = elements as *const i64; - for i in 0..(array_length as usize) { - dilation_a[i] = *parameters.add(i) as i32; - } - set_convolution_nd_descriptor( - conv_desc, - count as i32, // TODO - pad_a.as_ptr(), - filter_stride_a.as_ptr(), - dilation_a.as_ptr(), - mode, - cudnnDataType_t::CUDNN_DATA_FLOAT, // will be unused - ) - }, - cudnnBackendAttributeName_t::CUDNN_ATTR_CONVOLUTION_FILTER_STRIDES => { - if count != 2 { - todo!() - } - let parameters = elements as *const i64; - for i in 0..(array_length as usize) { - filter_stride_a[i] = *parameters.add(i) as i32; - } - set_convolution_nd_descriptor( - conv_desc, - count as i32, // TODO - pad_a.as_ptr(), - filter_stride_a.as_ptr(), - dilation_a.as_ptr(), - mode, - cudnnDataType_t::CUDNN_DATA_FLOAT, // will be unused - ) - }, - cudnnBackendAttributeName_t::CUDNN_ATTR_CONVOLUTION_POST_PADDINGS => cudnnStatus_t::CUDNN_STATUS_SUCCESS, - cudnnBackendAttributeName_t::CUDNN_ATTR_CONVOLUTION_PRE_PADDINGS => { - if count != 2 { - todo!() - } - let parameters = elements as *const i64; - for i in 0..(array_length as usize) { - pad_a[i] = *parameters.add(i) as i32; - } - set_convolution_nd_descriptor( - conv_desc, - count as i32, // TODO - pad_a.as_ptr(), - filter_stride_a.as_ptr(), - dilation_a.as_ptr(), - mode, - cudnnDataType_t::CUDNN_DATA_FLOAT, // will be unused - ) - }, - cudnnBackendAttributeName_t::CUDNN_ATTR_CONVOLUTION_SPATIAL_DIMS => { - let parameters = elements as *const i64; - set_convolution_nd_descriptor( - conv_desc, - (*parameters) as i32, - pad_a.as_ptr(), - filter_stride_a.as_ptr(), - dilation_a.as_ptr(), - mode, - cudnnDataType_t::CUDNN_DATA_FLOAT, // will be unused - ) - }, - _ => { - println!("[ZLUDA] Unsupported convolution attribute: {}", attribute_name.0); - crate::unsupported() - }, - } -} - unsafe fn set_convolution_nd_descriptor( conv_desc: cudnnConvolutionDescriptor_t, array_length: i32, @@ -427,31 +163,6 @@ unsafe fn set_convolution_nd_descriptor( )) } -unsafe fn get_convolution_nd_descriptor( - conv_desc: cudnnConvolutionDescriptor_t, - array_length: *mut i32, - pad_a: *mut i32, - filter_stride_a: *mut i32, - dilation_a: *mut i32, - mode: *mut cudnnConvolutionMode_t, - _compute_type: cudnnDataType_t, -) -> cudnnStatus_t { - *array_length = 2; // TODO - let mut miopen_conv_mode = conv_mode_to_cudnn(*mode); - let status = miopen_sys::miopenGetConvolutionDescriptor( - conv_desc as _, - &mut miopen_conv_mode, - pad_a.add(0), - pad_a.add(1), - filter_stride_a.add(0), - filter_stride_a.add(1), - dilation_a.add(0), - dilation_a.add(1), - ); - *mode = conv_mode_from_cudnn(miopen_conv_mode); - to_cudnn(status) -} - fn conv_mode_to_cudnn(mode: cudnnConvolutionMode_t) -> miopenConvolutionMode_t { match mode { cudnnConvolutionMode_t::CUDNN_CONVOLUTION => miopenConvolutionMode_t::miopenTranspose, @@ -462,16 +173,6 @@ fn conv_mode_to_cudnn(mode: cudnnConvolutionMode_t) -> miopenConvolutionMode_t { } } -fn conv_mode_from_cudnn(mode: miopenConvolutionMode_t) -> cudnnConvolutionMode_t { - match mode { - miopenConvolutionMode_t::miopenTranspose => cudnnConvolutionMode_t::CUDNN_CONVOLUTION, - miopenConvolutionMode_t::miopenConvolution => { - cudnnConvolutionMode_t::CUDNN_CROSS_CORRELATION - } - _ => panic!(), - } -} - unsafe fn get_convolution_nd_forward_output_dim( conv_desc: cudnnConvolutionDescriptor_t, input_tensor_desc: cudnnTensorDescriptor_t, @@ -1398,102 +1099,3 @@ unsafe fn convolution_backward_data( work_space_size_in_bytes, )) } - -unsafe fn set_engineheur_descriptor_by_attribute( - engineheur_desc: *mut cudnnEngineHeurStruct, - attribute_name: cudnnBackendAttributeName_t, - count: i64, - elements: *const ::std::os::raw::c_void, -) -> cudnnStatus_t { - match attribute_name { - cudnnBackendAttributeName_t::CUDNN_ATTR_ENGINEHEUR_MODE => cudnnStatus_t::CUDNN_STATUS_SUCCESS, - cudnnBackendAttributeName_t::CUDNN_ATTR_ENGINEHEUR_OPERATION_GRAPH => { - (*engineheur_desc).operation_graph = *(elements as *const cudnnOperationGraphDescriptor_t); - cudnnStatus_t::CUDNN_STATUS_SUCCESS - }, - _ => panic!(), - } -} - -unsafe fn get_engineheur_results( - engineheur_desc: *mut cudnnEngineHeurStruct, - requested_algo_count: i64, - returned_algo_count: *mut i64, - perf_results: *mut std::ffi::c_void, -) -> cudnnStatus_t { - let operation_graph = *(*engineheur_desc).operation_graph; - let ops = *(operation_graph.ops as cudnnOperationConvolutionForwardDescriptor_t); - let mut req = requested_algo_count as i32; - if requested_algo_count == 0 { // total? - // TODO - req = 10; - } - find_convolution_forward_algorithm( - operation_graph.handle, - ops.x_desc, - ops.w_desc, - ops.conv_desc, - ops.y_desc, - req, - returned_algo_count as _, - perf_results as _, - ) -} - -unsafe fn set_operation_convolution_forward_descriptor_by_attribute( - operation_convolution_forward_desc: *mut cudnnOperationConvolutionForwardStruct, - attribute_name: cudnnBackendAttributeName_t, - count: i64, - elements: *const cudnnBackendDescriptor_t, // *const ::std::os::raw::c_void -) -> cudnnStatus_t { - match attribute_name { - cudnnBackendAttributeName_t::CUDNN_ATTR_OPERATION_CONVOLUTION_FORWARD_ALPHA => cudnnStatus_t::CUDNN_STATUS_SUCCESS, - cudnnBackendAttributeName_t::CUDNN_ATTR_OPERATION_CONVOLUTION_FORWARD_BETA => cudnnStatus_t::CUDNN_STATUS_SUCCESS, - cudnnBackendAttributeName_t::CUDNN_ATTR_OPERATION_CONVOLUTION_FORWARD_CONV_DESC => { - (*operation_convolution_forward_desc).conv_desc = (*elements) as _; - cudnnStatus_t::CUDNN_STATUS_SUCCESS - }, - cudnnBackendAttributeName_t::CUDNN_ATTR_OPERATION_CONVOLUTION_FORWARD_W => { - (*operation_convolution_forward_desc).w_desc = (*elements) as _; - cudnnStatus_t::CUDNN_STATUS_SUCCESS - }, - cudnnBackendAttributeName_t::CUDNN_ATTR_OPERATION_CONVOLUTION_FORWARD_X => { - (*operation_convolution_forward_desc).x_desc = (*elements) as _; - cudnnStatus_t::CUDNN_STATUS_SUCCESS - }, - cudnnBackendAttributeName_t::CUDNN_ATTR_OPERATION_CONVOLUTION_FORWARD_Y => { - (*operation_convolution_forward_desc).y_desc = (*elements) as _; - cudnnStatus_t::CUDNN_STATUS_SUCCESS - }, - _ => panic!(), - } -} - -unsafe fn set_operationgraph_descriptor_by_attribute( - operationgraph_desc: *mut cudnnOperationGraphStruct, - attribute_name: cudnnBackendAttributeName_t, - count: i64, - elements: *const *mut ::std::os::raw::c_void, // *const ::std::os::raw::c_void -) -> cudnnStatus_t { - match attribute_name { - cudnnBackendAttributeName_t::CUDNN_ATTR_OPERATIONGRAPH_HANDLE => { - (*operationgraph_desc).handle = (*elements) as _; - cudnnStatus_t::CUDNN_STATUS_SUCCESS - }, - cudnnBackendAttributeName_t::CUDNN_ATTR_OPERATIONGRAPH_OPS => { - (*operationgraph_desc).ops = (*elements) as _; - cudnnStatus_t::CUDNN_STATUS_SUCCESS - }, - _ => crate::unsupported(), - } -} - -unsafe fn get_stream( - handle: *mut cudnnContext, - stream_id: *mut cudaStream_t, -) -> cudnnStatus_t { - to_cudnn(miopenGetStream( - handle as _, - stream_id as _, - )) -}