From 77d7d8c98f68504c91cbf00c5515e315d6558a31 Mon Sep 17 00:00:00 2001 From: Andrzej Janik Date: Sat, 13 Jun 2026 02:16:19 +0000 Subject: [PATCH 1/2] Implement cudnnGetProperty --- zluda_common/src/lib.rs | 3 ++- zluda_dnn/src/impl.rs | 14 ++++++++++++++ zluda_dnn/src/lib.rs | 1 + 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/zluda_common/src/lib.rs b/zluda_common/src/lib.rs index 4568f2ac2..09dd7fce7 100644 --- a/zluda_common/src/lib.rs +++ b/zluda_common/src/lib.rs @@ -256,7 +256,8 @@ from_cuda_nop!( cudnn9::cudnnConvolutionBwdFilterAlgoPerf_t, cublasLtMatmulPreferenceAttributes_t, CUfunc_cache, - CUctxCreateParams + CUctxCreateParams, + cudnn9::libraryPropertyType ); from_cuda_transmute!( CUuuid => hipUUID, diff --git a/zluda_dnn/src/impl.rs b/zluda_dnn/src/impl.rs index 45ec0ed9e..307be5e37 100644 --- a/zluda_dnn/src/impl.rs +++ b/zluda_dnn/src/impl.rs @@ -1323,6 +1323,20 @@ pub(crate) unsafe fn get_convolution_backward_filter_workspace_size( ) } +pub(crate) unsafe fn get_property( + property_type: libraryPropertyType, + value: &mut i32, +) -> miopenStatus_t { + let version = match property_type { + libraryPropertyType::MAJOR_VERSION => CUDNN_MAJOR, + libraryPropertyType::MINOR_VERSION => CUDNN_MINOR, + libraryPropertyType::PATCH_LEVEL => CUDNN_PATCHLEVEL, + _ => return miopenStatus_t::ErrorNotImplemented, + }; + *value = version as i32; + Ok(()) +} + pub mod dnn8 { use cuda_types::cudnn8::*; use static_assertions::assert_eq_size; diff --git a/zluda_dnn/src/lib.rs b/zluda_dnn/src/lib.rs index 21b72fc5b..485f94d81 100644 --- a/zluda_dnn/src/lib.rs +++ b/zluda_dnn/src/lib.rs @@ -107,6 +107,7 @@ dual_function_declarations! { cudnnGetConvolutionBackwardFilterWorkspaceSize, cudnnGetConvolutionForwardWorkspaceSize, cudnnGetFilterNdDescriptor, + cudnnGetProperty, cudnnGetStream, cudnnGetTensorNdDescriptor, cudnnSetConvolution2dDescriptor, From 0362aaece58541eaa74d4f1f850e1669f3356fc4 Mon Sep 17 00:00:00 2001 From: Andrzej Janik Date: Sat, 13 Jun 2026 04:06:43 +0000 Subject: [PATCH 2/2] Create destroy dropout --- zluda_common/src/lib.rs | 1 + zluda_dnn/src/impl.rs | 12 ++++++++++++ zluda_dnn/src/lib.rs | 4 ++++ 3 files changed, 17 insertions(+) diff --git a/zluda_common/src/lib.rs b/zluda_common/src/lib.rs index 09dd7fce7..34d7f02d4 100644 --- a/zluda_common/src/lib.rs +++ b/zluda_common/src/lib.rs @@ -279,6 +279,7 @@ from_cuda_transmute!( cudnn9::cudnnTensorDescriptor_t => miopenTensorDescriptor_t, cudnn9::cudnnFilterDescriptor_t => miopenTensorDescriptor_t, cudnn9::cudnnConvolutionDescriptor_t => miopenConvolutionDescriptor_t, + cudnn9::cudnnDropoutDescriptor_t => miopenDropoutDescriptor_t, cusparseHandle_t => rocsparse_handle, cusparseMatrixType_t => rocsparse_matrix_type, cusparseConstSpMatDescr_t => rocsparse_const_spmat_descr, diff --git a/zluda_dnn/src/impl.rs b/zluda_dnn/src/impl.rs index 307be5e37..9d8f205d3 100644 --- a/zluda_dnn/src/impl.rs +++ b/zluda_dnn/src/impl.rs @@ -1323,6 +1323,18 @@ pub(crate) unsafe fn get_convolution_backward_filter_workspace_size( ) } +pub(crate) unsafe fn create_dropout_descriptor( + dropout_desc: &mut miopenDropoutDescriptor_t, +) -> miopenStatus_t { + miopen()?.miopenCreateDropoutDescriptor(dropout_desc) +} + +pub(crate) unsafe fn destroy_dropout_descriptor( + dropout_desc: miopenDropoutDescriptor_t, +) -> miopenStatus_t { + miopen()?.miopenDestroyDropoutDescriptor(dropout_desc) +} + pub(crate) unsafe fn get_property( property_type: libraryPropertyType, value: &mut i32, diff --git a/zluda_dnn/src/lib.rs b/zluda_dnn/src/lib.rs index 485f94d81..fde716f65 100644 --- a/zluda_dnn/src/lib.rs +++ b/zluda_dnn/src/lib.rs @@ -107,6 +107,8 @@ dual_function_declarations! { cudnnGetConvolutionBackwardFilterWorkspaceSize, cudnnGetConvolutionForwardWorkspaceSize, cudnnGetFilterNdDescriptor, + cudnnCreateDropoutDescriptor, + cudnnDestroyDropoutDescriptor, cudnnGetProperty, cudnnGetStream, cudnnGetTensorNdDescriptor, @@ -193,9 +195,11 @@ cuda_macros::miopen_function_declarations!( miopenCreate, miopenCreateConvolutionDescriptor, miopenCreateConvProblem, + miopenCreateDropoutDescriptor, miopenCreateTensorDescriptor, miopenDestroy, miopenDestroyConvolutionDescriptor, + miopenDestroyDropoutDescriptor, miopenDestroyProblem, miopenDestroyTensorDescriptor, miopenFindSolutions,