#![cfg_attr(feature = "no-std", no_std)]
#![allow(non_camel_case_types)]
#![allow(non_snake_case)]
#![allow(dead_code)]
use std::sync::OnceLock;
#[cfg(feature = "no-std")]
extern crate alloc;
#[cfg(feature = "no-std")]
extern crate no_std_compat as std;
#[cfg(feature = "dynamic-loading")]
fn load<F: Copy>(name: &str) -> F {
    unsafe { *culib().get::<F>(name.as_bytes()).unwrap_or_else(|e| panic!("Missing symbol {name}: {e}")) }
}
pub use self::libraryPropertyType_t as libraryPropertyType;
#[cfg(any(feature = "cudnn-09010", feature = "cudnn-09021"))]
pub type cudaGraph_t = *mut CUgraph_st;
pub type cudaStream_t = *mut CUstream_st;
pub type cudnnActivationDescriptor_t = *mut cudnnActivationStruct;
#[cfg(any(feature = "cudnn-08009"))]
pub type cudnnAlgorithmDescriptor_t = *mut cudnnAlgorithmStruct;
#[cfg(any(feature = "cudnn-08009"))]
pub type cudnnAlgorithmPerformance_t = *mut cudnnAlgorithmPerformanceStruct;
#[cfg(any(feature = "cudnn-08009"))]
pub type cudnnAlgorithm_t = cudnnAlgorithmUnionStruct;
pub type cudnnAttnDescriptor_t = *mut cudnnAttnStruct;
#[cfg(any(feature = "cudnn-08009"))]
pub type cudnnAttnQueryMap_t = ::core::ffi::c_uint;
pub type cudnnBackendDescriptor_t = *mut ::core::ffi::c_void;
pub type cudnnCTCLossDescriptor_t = *mut cudnnCTCLossStruct;
pub type cudnnCallback_t = ::core::option::Option<unsafe extern "C" fn(sev: cudnnSeverity_t, udata: *mut ::core::ffi::c_void, dbg: *const cudnnDebug_t, msg: *const ::core::ffi::c_char)>;
pub type cudnnConvolutionBwdDataAlgoPerf_t = cudnnConvolutionBwdDataAlgoPerfStruct;
pub type cudnnConvolutionBwdFilterAlgoPerf_t = cudnnConvolutionBwdFilterAlgoPerfStruct;
pub type cudnnConvolutionDescriptor_t = *mut cudnnConvolutionStruct;
pub type cudnnConvolutionFwdAlgoPerf_t = cudnnConvolutionFwdAlgoPerfStruct;
pub type cudnnDebug_t = cudnnDebugStruct;
pub type cudnnDropoutDescriptor_t = *mut cudnnDropoutStruct;
pub type cudnnFilterDescriptor_t = *mut cudnnFilterStruct;
pub type cudnnFraction_t = cudnnFractionStruct;
pub type cudnnFusedOpsConstParamPack_t = *mut cudnnFusedOpsConstParamStruct;
pub type cudnnFusedOpsPlan_t = *mut cudnnFusedOpsPlanStruct;
pub type cudnnFusedOpsVariantParamPack_t = *mut cudnnFusedOpsVariantParamStruct;
pub type cudnnHandle_t = *mut cudnnContext;
pub type cudnnLRNDescriptor_t = *mut cudnnLRNStruct;
pub type cudnnOpTensorDescriptor_t = *mut cudnnOpTensorStruct;
#[cfg(any(feature = "cudnn-08009"))]
pub type cudnnPersistentRNNPlan_t = *mut cudnnPersistentRNNPlan;
pub type cudnnPoolingDescriptor_t = *mut cudnnPoolingStruct;
pub type cudnnRNNDataDescriptor_t = *mut cudnnRNNDataStruct;
pub type cudnnRNNDescriptor_t = *mut cudnnRNNStruct;
#[cfg(any(feature = "cudnn-08009"))]
pub type cudnnRNNPaddingMode_t = ::core::ffi::c_uint;
pub type cudnnReduceTensorDescriptor_t = *mut cudnnReduceTensorStruct;
pub type cudnnSeqDataDescriptor_t = *mut cudnnSeqDataStruct;
pub type cudnnSpatialTransformerDescriptor_t = *mut cudnnSpatialTransformerStruct;
pub type cudnnTensorDescriptor_t = *mut cudnnTensorStruct;
pub type cudnnTensorTransformDescriptor_t = *mut cudnnTensorTransformStruct;
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnActivationMode_t {
    CUDNN_ACTIVATION_SIGMOID = 0,
    CUDNN_ACTIVATION_RELU = 1,
    CUDNN_ACTIVATION_TANH = 2,
    CUDNN_ACTIVATION_CLIPPED_RELU = 3,
    CUDNN_ACTIVATION_ELU = 4,
    CUDNN_ACTIVATION_IDENTITY = 5,
    CUDNN_ACTIVATION_SWISH = 6,
}
#[cfg(any(feature = "cudnn-08009"))]
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnBackendAttributeName_t {
    CUDNN_ATTR_POINTWISE_MODE = 0,
    CUDNN_ATTR_POINTWISE_MATH_PREC = 1,
    CUDNN_ATTR_POINTWISE_NAN_PROPAGATION = 2,
    CUDNN_ATTR_POINTWISE_RELU_LOWER_CLIP = 3,
    CUDNN_ATTR_POINTWISE_RELU_UPPER_CLIP = 4,
    CUDNN_ATTR_POINTWISE_RELU_LOWER_CLIP_SLOPE = 5,
    CUDNN_ATTR_POINTWISE_ELU_ALPHA = 6,
    CUDNN_ATTR_POINTWISE_SOFTPLUS_BETA = 7,
    CUDNN_ATTR_POINTWISE_SWISH_BETA = 8,
    CUDNN_ATTR_POINTWISE_AXIS = 9,
    CUDNN_ATTR_CONVOLUTION_COMP_TYPE = 100,
    CUDNN_ATTR_CONVOLUTION_CONV_MODE = 101,
    CUDNN_ATTR_CONVOLUTION_DILATIONS = 102,
    CUDNN_ATTR_CONVOLUTION_FILTER_STRIDES = 103,
    CUDNN_ATTR_CONVOLUTION_POST_PADDINGS = 104,
    CUDNN_ATTR_CONVOLUTION_PRE_PADDINGS = 105,
    CUDNN_ATTR_CONVOLUTION_SPATIAL_DIMS = 106,
    CUDNN_ATTR_ENGINEHEUR_MODE = 200,
    CUDNN_ATTR_ENGINEHEUR_OPERATION_GRAPH = 201,
    CUDNN_ATTR_ENGINEHEUR_RESULTS = 202,
    CUDNN_ATTR_ENGINEHEUR_SM_COUNT_TARGET = 203,
    CUDNN_ATTR_ENGINECFG_ENGINE = 300,
    CUDNN_ATTR_ENGINECFG_INTERMEDIATE_INFO = 301,
    CUDNN_ATTR_ENGINECFG_KNOB_CHOICES = 302,
    CUDNN_ATTR_EXECUTION_PLAN_HANDLE = 400,
    CUDNN_ATTR_EXECUTION_PLAN_ENGINE_CONFIG = 401,
    CUDNN_ATTR_EXECUTION_PLAN_WORKSPACE_SIZE = 402,
    CUDNN_ATTR_EXECUTION_PLAN_COMPUTED_INTERMEDIATE_UIDS = 403,
    CUDNN_ATTR_EXECUTION_PLAN_RUN_ONLY_INTERMEDIATE_UIDS = 404,
    CUDNN_ATTR_EXECUTION_PLAN_JSON_REPRESENTATION = 405,
    CUDNN_ATTR_INTERMEDIATE_INFO_UNIQUE_ID = 500,
    CUDNN_ATTR_INTERMEDIATE_INFO_SIZE = 501,
    CUDNN_ATTR_INTERMEDIATE_INFO_DEPENDENT_DATA_UIDS = 502,
    CUDNN_ATTR_INTERMEDIATE_INFO_DEPENDENT_ATTRIBUTES = 503,
    CUDNN_ATTR_KNOB_CHOICE_KNOB_TYPE = 600,
    CUDNN_ATTR_KNOB_CHOICE_KNOB_VALUE = 601,
    CUDNN_ATTR_OPERATION_CONVOLUTION_FORWARD_ALPHA = 700,
    CUDNN_ATTR_OPERATION_CONVOLUTION_FORWARD_BETA = 701,
    CUDNN_ATTR_OPERATION_CONVOLUTION_FORWARD_CONV_DESC = 702,
    CUDNN_ATTR_OPERATION_CONVOLUTION_FORWARD_W = 703,
    CUDNN_ATTR_OPERATION_CONVOLUTION_FORWARD_X = 704,
    CUDNN_ATTR_OPERATION_CONVOLUTION_FORWARD_Y = 705,
    CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_DATA_ALPHA = 706,
    CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_DATA_BETA = 707,
    CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_DATA_CONV_DESC = 708,
    CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_DATA_W = 709,
    CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_DATA_DX = 710,
    CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_DATA_DY = 711,
    CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_FILTER_ALPHA = 712,
    CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_FILTER_BETA = 713,
    CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_FILTER_CONV_DESC = 714,
    CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_FILTER_DW = 715,
    CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_FILTER_X = 716,
    CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_FILTER_DY = 717,
    CUDNN_ATTR_OPERATION_POINTWISE_PW_DESCRIPTOR = 750,
    CUDNN_ATTR_OPERATION_POINTWISE_XDESC = 751,
    CUDNN_ATTR_OPERATION_POINTWISE_BDESC = 752,
    CUDNN_ATTR_OPERATION_POINTWISE_YDESC = 753,
    CUDNN_ATTR_OPERATION_POINTWISE_ALPHA1 = 754,
    CUDNN_ATTR_OPERATION_POINTWISE_ALPHA2 = 755,
    CUDNN_ATTR_OPERATION_POINTWISE_DXDESC = 756,
    CUDNN_ATTR_OPERATION_POINTWISE_DYDESC = 757,
    CUDNN_ATTR_OPERATION_POINTWISE_TDESC = 758,
    CUDNN_ATTR_OPERATION_GENSTATS_MODE = 770,
    CUDNN_ATTR_OPERATION_GENSTATS_MATH_PREC = 771,
    CUDNN_ATTR_OPERATION_GENSTATS_XDESC = 772,
    CUDNN_ATTR_OPERATION_GENSTATS_SUMDESC = 773,
    CUDNN_ATTR_OPERATION_GENSTATS_SQSUMDESC = 774,
    CUDNN_ATTR_OPERATION_BN_FINALIZE_STATS_MODE = 780,
    CUDNN_ATTR_OPERATION_BN_FINALIZE_MATH_PREC = 781,
    CUDNN_ATTR_OPERATION_BN_FINALIZE_Y_SUM_DESC = 782,
    CUDNN_ATTR_OPERATION_BN_FINALIZE_Y_SQ_SUM_DESC = 783,
    CUDNN_ATTR_OPERATION_BN_FINALIZE_SCALE_DESC = 784,
    CUDNN_ATTR_OPERATION_BN_FINALIZE_BIAS_DESC = 785,
    CUDNN_ATTR_OPERATION_BN_FINALIZE_PREV_RUNNING_MEAN_DESC = 786,
    CUDNN_ATTR_OPERATION_BN_FINALIZE_PREV_RUNNING_VAR_DESC = 787,
    CUDNN_ATTR_OPERATION_BN_FINALIZE_UPDATED_RUNNING_MEAN_DESC = 788,
    CUDNN_ATTR_OPERATION_BN_FINALIZE_UPDATED_RUNNING_VAR_DESC = 789,
    CUDNN_ATTR_OPERATION_BN_FINALIZE_SAVED_MEAN_DESC = 790,
    CUDNN_ATTR_OPERATION_BN_FINALIZE_SAVED_INV_STD_DESC = 791,
    CUDNN_ATTR_OPERATION_BN_FINALIZE_EQ_SCALE_DESC = 792,
    CUDNN_ATTR_OPERATION_BN_FINALIZE_EQ_BIAS_DESC = 793,
    CUDNN_ATTR_OPERATION_BN_FINALIZE_ACCUM_COUNT_DESC = 794,
    CUDNN_ATTR_OPERATION_BN_FINALIZE_EPSILON_DESC = 795,
    CUDNN_ATTR_OPERATION_BN_FINALIZE_EXP_AVERATE_FACTOR_DESC = 796,
    CUDNN_ATTR_OPERATIONGRAPH_HANDLE = 800,
    CUDNN_ATTR_OPERATIONGRAPH_OPS = 801,
    CUDNN_ATTR_OPERATIONGRAPH_ENGINE_GLOBAL_COUNT = 802,
    CUDNN_ATTR_TENSOR_BYTE_ALIGNMENT = 900,
    CUDNN_ATTR_TENSOR_DATA_TYPE = 901,
    CUDNN_ATTR_TENSOR_DIMENSIONS = 902,
    CUDNN_ATTR_TENSOR_STRIDES = 903,
    CUDNN_ATTR_TENSOR_VECTOR_COUNT = 904,
    CUDNN_ATTR_TENSOR_VECTORIZED_DIMENSION = 905,
    CUDNN_ATTR_TENSOR_UNIQUE_ID = 906,
    CUDNN_ATTR_TENSOR_IS_VIRTUAL = 907,
    CUDNN_ATTR_TENSOR_IS_BY_VALUE = 908,
    CUDNN_ATTR_TENSOR_REORDERING_MODE = 909,
    CUDNN_ATTR_TENSOR_RAGGED_OFFSET_DESC = 913,
    CUDNN_ATTR_VARIANT_PACK_UNIQUE_IDS = 1000,
    CUDNN_ATTR_VARIANT_PACK_DATA_POINTERS = 1001,
    CUDNN_ATTR_VARIANT_PACK_INTERMEDIATES = 1002,
    CUDNN_ATTR_VARIANT_PACK_WORKSPACE = 1003,
    CUDNN_ATTR_LAYOUT_INFO_TENSOR_UID = 1100,
    CUDNN_ATTR_LAYOUT_INFO_TYPES = 1101,
    CUDNN_ATTR_KNOB_INFO_TYPE = 1200,
    CUDNN_ATTR_KNOB_INFO_MAXIMUM_VALUE = 1201,
    CUDNN_ATTR_KNOB_INFO_MINIMUM_VALUE = 1202,
    CUDNN_ATTR_KNOB_INFO_STRIDE = 1203,
    CUDNN_ATTR_ENGINE_OPERATION_GRAPH = 1300,
    CUDNN_ATTR_ENGINE_GLOBAL_INDEX = 1301,
    CUDNN_ATTR_ENGINE_KNOB_INFO = 1302,
    CUDNN_ATTR_ENGINE_NUMERICAL_NOTE = 1303,
    CUDNN_ATTR_ENGINE_LAYOUT_INFO = 1304,
    CUDNN_ATTR_ENGINE_BEHAVIOR_NOTE = 1305,
    CUDNN_ATTR_ENGINE_SM_COUNT_TARGET = 1306,
    CUDNN_ATTR_MATMUL_COMP_TYPE = 1500,
    CUDNN_ATTR_MATMUL_PADDING_VALUE = 1503,
    CUDNN_ATTR_OPERATION_MATMUL_ADESC = 1520,
    CUDNN_ATTR_OPERATION_MATMUL_BDESC = 1521,
    CUDNN_ATTR_OPERATION_MATMUL_CDESC = 1522,
    CUDNN_ATTR_OPERATION_MATMUL_DESC = 1523,
    CUDNN_ATTR_OPERATION_MATMUL_IRREGULARLY_STRIDED_BATCH_COUNT = 1524,
    CUDNN_ATTR_OPERATION_MATMUL_GEMM_M_OVERRIDE_DESC = 1525,
    CUDNN_ATTR_OPERATION_MATMUL_GEMM_N_OVERRIDE_DESC = 1526,
    CUDNN_ATTR_OPERATION_MATMUL_GEMM_K_OVERRIDE_DESC = 1527,
    CUDNN_ATTR_REDUCTION_OPERATOR = 1600,
    CUDNN_ATTR_REDUCTION_COMP_TYPE = 1601,
    CUDNN_ATTR_OPERATION_REDUCTION_XDESC = 1610,
    CUDNN_ATTR_OPERATION_REDUCTION_YDESC = 1611,
    CUDNN_ATTR_OPERATION_REDUCTION_DESC = 1612,
    CUDNN_ATTR_OPERATION_BN_BWD_WEIGHTS_MATH_PREC = 1620,
    CUDNN_ATTR_OPERATION_BN_BWD_WEIGHTS_MEAN_DESC = 1621,
    CUDNN_ATTR_OPERATION_BN_BWD_WEIGHTS_INVSTD_DESC = 1622,
    CUDNN_ATTR_OPERATION_BN_BWD_WEIGHTS_BN_SCALE_DESC = 1623,
    CUDNN_ATTR_OPERATION_BN_BWD_WEIGHTS_X_DESC = 1624,
    CUDNN_ATTR_OPERATION_BN_BWD_WEIGHTS_DY_DESC = 1625,
    CUDNN_ATTR_OPERATION_BN_BWD_WEIGHTS_DBN_SCALE_DESC = 1626,
    CUDNN_ATTR_OPERATION_BN_BWD_WEIGHTS_DBN_BIAS_DESC = 1627,
    CUDNN_ATTR_OPERATION_BN_BWD_WEIGHTS_EQ_DY_SCALE_DESC = 1628,
    CUDNN_ATTR_OPERATION_BN_BWD_WEIGHTS_EQ_X_SCALE_DESC = 1629,
    CUDNN_ATTR_OPERATION_BN_BWD_WEIGHTS_EQ_BIAS = 1630,
    CUDNN_ATTR_RESAMPLE_MODE = 1700,
    CUDNN_ATTR_RESAMPLE_COMP_TYPE = 1701,
    CUDNN_ATTR_RESAMPLE_SPATIAL_DIMS = 1702,
    CUDNN_ATTR_RESAMPLE_POST_PADDINGS = 1703,
    CUDNN_ATTR_RESAMPLE_PRE_PADDINGS = 1704,
    CUDNN_ATTR_RESAMPLE_STRIDES = 1705,
    CUDNN_ATTR_RESAMPLE_WINDOW_DIMS = 1706,
    CUDNN_ATTR_RESAMPLE_NAN_PROPAGATION = 1707,
    CUDNN_ATTR_RESAMPLE_PADDING_MODE = 1708,
    CUDNN_ATTR_OPERATION_RESAMPLE_FWD_XDESC = 1710,
    CUDNN_ATTR_OPERATION_RESAMPLE_FWD_YDESC = 1711,
    CUDNN_ATTR_OPERATION_RESAMPLE_FWD_IDXDESC = 1712,
    CUDNN_ATTR_OPERATION_RESAMPLE_FWD_ALPHA = 1713,
    CUDNN_ATTR_OPERATION_RESAMPLE_FWD_BETA = 1714,
    CUDNN_ATTR_OPERATION_RESAMPLE_FWD_DESC = 1716,
    CUDNN_ATTR_OPERATION_RESAMPLE_BWD_DXDESC = 1720,
    CUDNN_ATTR_OPERATION_RESAMPLE_BWD_DYDESC = 1721,
    CUDNN_ATTR_OPERATION_RESAMPLE_BWD_IDXDESC = 1722,
    CUDNN_ATTR_OPERATION_RESAMPLE_BWD_ALPHA = 1723,
    CUDNN_ATTR_OPERATION_RESAMPLE_BWD_BETA = 1724,
    CUDNN_ATTR_OPERATION_RESAMPLE_BWD_DESC = 1725,
    CUDNN_ATTR_OPERATION_RESAMPLE_BWD_XDESC = 1726,
    CUDNN_ATTR_OPERATION_RESAMPLE_BWD_YDESC = 1727,
    CUDNN_ATTR_OPERATION_CONCAT_AXIS = 1800,
    CUDNN_ATTR_OPERATION_CONCAT_INPUT_DESCS = 1801,
    CUDNN_ATTR_OPERATION_CONCAT_INPLACE_INDEX = 1802,
    CUDNN_ATTR_OPERATION_CONCAT_OUTPUT_DESC = 1803,
    CUDNN_ATTR_OPERATION_SIGNAL_MODE = 1900,
    CUDNN_ATTR_OPERATION_SIGNAL_FLAGDESC = 1901,
    CUDNN_ATTR_OPERATION_SIGNAL_VALUE = 1902,
    CUDNN_ATTR_OPERATION_SIGNAL_XDESC = 1903,
    CUDNN_ATTR_OPERATION_SIGNAL_YDESC = 1904,
    CUDNN_ATTR_OPERATION_NORM_FWD_MODE = 2000,
    CUDNN_ATTR_OPERATION_NORM_FWD_PHASE = 2001,
    CUDNN_ATTR_OPERATION_NORM_FWD_XDESC = 2002,
    CUDNN_ATTR_OPERATION_NORM_FWD_MEAN_DESC = 2003,
    CUDNN_ATTR_OPERATION_NORM_FWD_INV_VARIANCE_DESC = 2004,
    CUDNN_ATTR_OPERATION_NORM_FWD_SCALE_DESC = 2005,
    CUDNN_ATTR_OPERATION_NORM_FWD_BIAS_DESC = 2006,
    CUDNN_ATTR_OPERATION_NORM_FWD_EPSILON_DESC = 2007,
    CUDNN_ATTR_OPERATION_NORM_FWD_EXP_AVG_FACTOR_DESC = 2008,
    CUDNN_ATTR_OPERATION_NORM_FWD_INPUT_RUNNING_MEAN_DESC = 2009,
    CUDNN_ATTR_OPERATION_NORM_FWD_INPUT_RUNNING_VAR_DESC = 2010,
    CUDNN_ATTR_OPERATION_NORM_FWD_OUTPUT_RUNNING_MEAN_DESC = 2011,
    CUDNN_ATTR_OPERATION_NORM_FWD_OUTPUT_RUNNING_VAR_DESC = 2012,
    CUDNN_ATTR_OPERATION_NORM_FWD_YDESC = 2013,
    CUDNN_ATTR_OPERATION_NORM_FWD_PEER_STAT_DESCS = 2014,
    CUDNN_ATTR_OPERATION_NORM_BWD_MODE = 2100,
    CUDNN_ATTR_OPERATION_NORM_BWD_XDESC = 2101,
    CUDNN_ATTR_OPERATION_NORM_BWD_MEAN_DESC = 2102,
    CUDNN_ATTR_OPERATION_NORM_BWD_INV_VARIANCE_DESC = 2103,
    CUDNN_ATTR_OPERATION_NORM_BWD_DYDESC = 2104,
    CUDNN_ATTR_OPERATION_NORM_BWD_SCALE_DESC = 2105,
    CUDNN_ATTR_OPERATION_NORM_BWD_EPSILON_DESC = 2106,
    CUDNN_ATTR_OPERATION_NORM_BWD_DSCALE_DESC = 2107,
    CUDNN_ATTR_OPERATION_NORM_BWD_DBIAS_DESC = 2108,
    CUDNN_ATTR_OPERATION_NORM_BWD_DXDESC = 2109,
    CUDNN_ATTR_OPERATION_NORM_BWD_PEER_STAT_DESCS = 2110,
    CUDNN_ATTR_OPERATION_RESHAPE_XDESC = 2200,
    CUDNN_ATTR_OPERATION_RESHAPE_YDESC = 2201,
    CUDNN_ATTR_RNG_DISTRIBUTION = 2300,
    CUDNN_ATTR_RNG_NORMAL_DIST_MEAN = 2301,
    CUDNN_ATTR_RNG_NORMAL_DIST_STANDARD_DEVIATION = 2302,
    CUDNN_ATTR_RNG_UNIFORM_DIST_MAXIMUM = 2303,
    CUDNN_ATTR_RNG_UNIFORM_DIST_MINIMUM = 2304,
    CUDNN_ATTR_RNG_BERNOULLI_DIST_PROBABILITY = 2305,
    CUDNN_ATTR_OPERATION_RNG_YDESC = 2310,
    CUDNN_ATTR_OPERATION_RNG_SEED = 2311,
    CUDNN_ATTR_OPERATION_RNG_DESC = 2312,
    CUDNN_ATTR_OPERATION_RNG_OFFSET_DESC = 2313,
}
#[cfg(any(feature = "cudnn-09010"))]
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnBackendAttributeName_t {
    CUDNN_ATTR_POINTWISE_MODE = 0,
    CUDNN_ATTR_POINTWISE_MATH_PREC = 1,
    CUDNN_ATTR_POINTWISE_NAN_PROPAGATION = 2,
    CUDNN_ATTR_POINTWISE_RELU_LOWER_CLIP = 3,
    CUDNN_ATTR_POINTWISE_RELU_UPPER_CLIP = 4,
    CUDNN_ATTR_POINTWISE_RELU_LOWER_CLIP_SLOPE = 5,
    CUDNN_ATTR_POINTWISE_ELU_ALPHA = 6,
    CUDNN_ATTR_POINTWISE_SOFTPLUS_BETA = 7,
    CUDNN_ATTR_POINTWISE_SWISH_BETA = 8,
    CUDNN_ATTR_POINTWISE_AXIS = 9,
    CUDNN_ATTR_CONVOLUTION_COMP_TYPE = 100,
    CUDNN_ATTR_CONVOLUTION_CONV_MODE = 101,
    CUDNN_ATTR_CONVOLUTION_DILATIONS = 102,
    CUDNN_ATTR_CONVOLUTION_FILTER_STRIDES = 103,
    CUDNN_ATTR_CONVOLUTION_POST_PADDINGS = 104,
    CUDNN_ATTR_CONVOLUTION_PRE_PADDINGS = 105,
    CUDNN_ATTR_CONVOLUTION_SPATIAL_DIMS = 106,
    CUDNN_ATTR_ENGINEHEUR_MODE = 200,
    CUDNN_ATTR_ENGINEHEUR_OPERATION_GRAPH = 201,
    CUDNN_ATTR_ENGINEHEUR_RESULTS = 202,
    CUDNN_ATTR_ENGINEHEUR_SM_COUNT_TARGET = 203,
    CUDNN_ATTR_ENGINEHEUR_DEVICEPROP = 204,
    CUDNN_ATTR_ENGINECFG_ENGINE = 300,
    CUDNN_ATTR_ENGINECFG_INTERMEDIATE_INFO = 301,
    CUDNN_ATTR_ENGINECFG_KNOB_CHOICES = 302,
    CUDNN_ATTR_ENGINECFG_WORKSPACE_SIZE = 303,
    CUDNN_ATTR_ENGINECFG_SHARED_MEMORY_USED = 304,
    CUDNN_ATTR_EXECUTION_PLAN_HANDLE = 400,
    CUDNN_ATTR_EXECUTION_PLAN_ENGINE_CONFIG = 401,
    CUDNN_ATTR_EXECUTION_PLAN_WORKSPACE_SIZE = 402,
    CUDNN_ATTR_EXECUTION_PLAN_COMPUTED_INTERMEDIATE_UIDS = 403,
    CUDNN_ATTR_EXECUTION_PLAN_RUN_ONLY_INTERMEDIATE_UIDS = 404,
    CUDNN_ATTR_EXECUTION_PLAN_JSON_REPRESENTATION = 405,
    CUDNN_ATTR_EXECUTION_PLAN_KERNEL_CACHE = 406,
    CUDNN_ATTR_EXECUTION_PLAN_DEVICEPROP = 407,
    CUDNN_ATTR_INTERMEDIATE_INFO_UNIQUE_ID = 500,
    CUDNN_ATTR_INTERMEDIATE_INFO_SIZE = 501,
    CUDNN_ATTR_INTERMEDIATE_INFO_DEPENDENT_DATA_UIDS = 502,
    CUDNN_ATTR_INTERMEDIATE_INFO_DEPENDENT_ATTRIBUTES = 503,
    CUDNN_ATTR_KNOB_CHOICE_KNOB_TYPE = 600,
    CUDNN_ATTR_KNOB_CHOICE_KNOB_VALUE = 601,
    CUDNN_ATTR_OPERATION_CONVOLUTION_FORWARD_ALPHA = 700,
    CUDNN_ATTR_OPERATION_CONVOLUTION_FORWARD_BETA = 701,
    CUDNN_ATTR_OPERATION_CONVOLUTION_FORWARD_CONV_DESC = 702,
    CUDNN_ATTR_OPERATION_CONVOLUTION_FORWARD_W = 703,
    CUDNN_ATTR_OPERATION_CONVOLUTION_FORWARD_X = 704,
    CUDNN_ATTR_OPERATION_CONVOLUTION_FORWARD_Y = 705,
    CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_DATA_ALPHA = 706,
    CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_DATA_BETA = 707,
    CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_DATA_CONV_DESC = 708,
    CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_DATA_W = 709,
    CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_DATA_DX = 710,
    CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_DATA_DY = 711,
    CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_FILTER_ALPHA = 712,
    CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_FILTER_BETA = 713,
    CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_FILTER_CONV_DESC = 714,
    CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_FILTER_DW = 715,
    CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_FILTER_X = 716,
    CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_FILTER_DY = 717,
    CUDNN_ATTR_OPERATION_POINTWISE_PW_DESCRIPTOR = 750,
    CUDNN_ATTR_OPERATION_POINTWISE_XDESC = 751,
    CUDNN_ATTR_OPERATION_POINTWISE_BDESC = 752,
    CUDNN_ATTR_OPERATION_POINTWISE_YDESC = 753,
    CUDNN_ATTR_OPERATION_POINTWISE_ALPHA1 = 754,
    CUDNN_ATTR_OPERATION_POINTWISE_ALPHA2 = 755,
    CUDNN_ATTR_OPERATION_POINTWISE_DXDESC = 756,
    CUDNN_ATTR_OPERATION_POINTWISE_DYDESC = 757,
    CUDNN_ATTR_OPERATION_POINTWISE_TDESC = 758,
    CUDNN_ATTR_OPERATION_GENSTATS_MODE = 770,
    CUDNN_ATTR_OPERATION_GENSTATS_MATH_PREC = 771,
    CUDNN_ATTR_OPERATION_GENSTATS_XDESC = 772,
    CUDNN_ATTR_OPERATION_GENSTATS_SUMDESC = 773,
    CUDNN_ATTR_OPERATION_GENSTATS_SQSUMDESC = 774,
    CUDNN_ATTR_OPERATION_BN_FINALIZE_STATS_MODE = 780,
    CUDNN_ATTR_OPERATION_BN_FINALIZE_MATH_PREC = 781,
    CUDNN_ATTR_OPERATION_BN_FINALIZE_Y_SUM_DESC = 782,
    CUDNN_ATTR_OPERATION_BN_FINALIZE_Y_SQ_SUM_DESC = 783,
    CUDNN_ATTR_OPERATION_BN_FINALIZE_SCALE_DESC = 784,
    CUDNN_ATTR_OPERATION_BN_FINALIZE_BIAS_DESC = 785,
    CUDNN_ATTR_OPERATION_BN_FINALIZE_PREV_RUNNING_MEAN_DESC = 786,
    CUDNN_ATTR_OPERATION_BN_FINALIZE_PREV_RUNNING_VAR_DESC = 787,
    CUDNN_ATTR_OPERATION_BN_FINALIZE_UPDATED_RUNNING_MEAN_DESC = 788,
    CUDNN_ATTR_OPERATION_BN_FINALIZE_UPDATED_RUNNING_VAR_DESC = 789,
    CUDNN_ATTR_OPERATION_BN_FINALIZE_SAVED_MEAN_DESC = 790,
    CUDNN_ATTR_OPERATION_BN_FINALIZE_SAVED_INV_STD_DESC = 791,
    CUDNN_ATTR_OPERATION_BN_FINALIZE_EQ_SCALE_DESC = 792,
    CUDNN_ATTR_OPERATION_BN_FINALIZE_EQ_BIAS_DESC = 793,
    CUDNN_ATTR_OPERATION_BN_FINALIZE_ACCUM_COUNT_DESC = 794,
    CUDNN_ATTR_OPERATION_BN_FINALIZE_EPSILON_DESC = 795,
    CUDNN_ATTR_OPERATION_BN_FINALIZE_EXP_AVERATE_FACTOR_DESC = 796,
    CUDNN_ATTR_OPERATIONGRAPH_HANDLE = 800,
    CUDNN_ATTR_OPERATIONGRAPH_OPS = 801,
    CUDNN_ATTR_OPERATIONGRAPH_ENGINE_GLOBAL_COUNT = 802,
    CUDNN_ATTR_OPERATIONGRAPH_IS_DYNAMIC_SHAPE_ENABLED = 803,
    CUDNN_ATTR_OPERATIONGRAPH_IS_SAME_TOPOLOGY = 804,
    CUDNN_ATTR_TENSOR_BYTE_ALIGNMENT = 900,
    CUDNN_ATTR_TENSOR_DATA_TYPE = 901,
    CUDNN_ATTR_TENSOR_DIMENSIONS = 902,
    CUDNN_ATTR_TENSOR_STRIDES = 903,
    CUDNN_ATTR_TENSOR_VECTOR_COUNT = 904,
    CUDNN_ATTR_TENSOR_VECTORIZED_DIMENSION = 905,
    CUDNN_ATTR_TENSOR_UNIQUE_ID = 906,
    CUDNN_ATTR_TENSOR_IS_VIRTUAL = 907,
    CUDNN_ATTR_TENSOR_IS_BY_VALUE = 908,
    CUDNN_ATTR_TENSOR_REORDERING_MODE = 909,
    CUDNN_ATTR_TENSOR_RAGGED_OFFSET_DESC = 913,
    CUDNN_ATTR_VARIANT_PACK_UNIQUE_IDS = 1000,
    CUDNN_ATTR_VARIANT_PACK_DATA_POINTERS = 1001,
    CUDNN_ATTR_VARIANT_PACK_INTERMEDIATES = 1002,
    CUDNN_ATTR_VARIANT_PACK_WORKSPACE = 1003,
    CUDNN_ATTR_LAYOUT_INFO_TENSOR_UID = 1100,
    CUDNN_ATTR_LAYOUT_INFO_TYPES = 1101,
    CUDNN_ATTR_KNOB_INFO_TYPE = 1200,
    CUDNN_ATTR_KNOB_INFO_MAXIMUM_VALUE = 1201,
    CUDNN_ATTR_KNOB_INFO_MINIMUM_VALUE = 1202,
    CUDNN_ATTR_KNOB_INFO_STRIDE = 1203,
    CUDNN_ATTR_ENGINE_OPERATION_GRAPH = 1300,
    CUDNN_ATTR_ENGINE_GLOBAL_INDEX = 1301,
    CUDNN_ATTR_ENGINE_KNOB_INFO = 1302,
    CUDNN_ATTR_ENGINE_NUMERICAL_NOTE = 1303,
    CUDNN_ATTR_ENGINE_LAYOUT_INFO = 1304,
    CUDNN_ATTR_ENGINE_BEHAVIOR_NOTE = 1305,
    CUDNN_ATTR_ENGINE_SM_COUNT_TARGET = 1306,
    CUDNN_ATTR_ENGINE_DEVICEPROP = 1307,
    CUDNN_ATTR_MATMUL_COMP_TYPE = 1500,
    CUDNN_ATTR_MATMUL_PADDING_VALUE = 1503,
    CUDNN_ATTR_OPERATION_MATMUL_ADESC = 1520,
    CUDNN_ATTR_OPERATION_MATMUL_BDESC = 1521,
    CUDNN_ATTR_OPERATION_MATMUL_CDESC = 1522,
    CUDNN_ATTR_OPERATION_MATMUL_DESC = 1523,
    CUDNN_ATTR_OPERATION_MATMUL_IRREGULARLY_STRIDED_BATCH_COUNT = 1524,
    CUDNN_ATTR_OPERATION_MATMUL_GEMM_M_OVERRIDE_DESC = 1525,
    CUDNN_ATTR_OPERATION_MATMUL_GEMM_N_OVERRIDE_DESC = 1526,
    CUDNN_ATTR_OPERATION_MATMUL_GEMM_K_OVERRIDE_DESC = 1527,
    CUDNN_ATTR_REDUCTION_OPERATOR = 1600,
    CUDNN_ATTR_REDUCTION_COMP_TYPE = 1601,
    CUDNN_ATTR_OPERATION_REDUCTION_XDESC = 1610,
    CUDNN_ATTR_OPERATION_REDUCTION_YDESC = 1611,
    CUDNN_ATTR_OPERATION_REDUCTION_DESC = 1612,
    CUDNN_ATTR_OPERATION_BN_BWD_WEIGHTS_MATH_PREC = 1620,
    CUDNN_ATTR_OPERATION_BN_BWD_WEIGHTS_MEAN_DESC = 1621,
    CUDNN_ATTR_OPERATION_BN_BWD_WEIGHTS_INVSTD_DESC = 1622,
    CUDNN_ATTR_OPERATION_BN_BWD_WEIGHTS_BN_SCALE_DESC = 1623,
    CUDNN_ATTR_OPERATION_BN_BWD_WEIGHTS_X_DESC = 1624,
    CUDNN_ATTR_OPERATION_BN_BWD_WEIGHTS_DY_DESC = 1625,
    CUDNN_ATTR_OPERATION_BN_BWD_WEIGHTS_DBN_SCALE_DESC = 1626,
    CUDNN_ATTR_OPERATION_BN_BWD_WEIGHTS_DBN_BIAS_DESC = 1627,
    CUDNN_ATTR_OPERATION_BN_BWD_WEIGHTS_EQ_DY_SCALE_DESC = 1628,
    CUDNN_ATTR_OPERATION_BN_BWD_WEIGHTS_EQ_X_SCALE_DESC = 1629,
    CUDNN_ATTR_OPERATION_BN_BWD_WEIGHTS_EQ_BIAS = 1630,
    CUDNN_ATTR_RESAMPLE_MODE = 1700,
    CUDNN_ATTR_RESAMPLE_COMP_TYPE = 1701,
    CUDNN_ATTR_RESAMPLE_SPATIAL_DIMS = 1702,
    CUDNN_ATTR_RESAMPLE_POST_PADDINGS = 1703,
    CUDNN_ATTR_RESAMPLE_PRE_PADDINGS = 1704,
    CUDNN_ATTR_RESAMPLE_STRIDES = 1705,
    CUDNN_ATTR_RESAMPLE_WINDOW_DIMS = 1706,
    CUDNN_ATTR_RESAMPLE_NAN_PROPAGATION = 1707,
    CUDNN_ATTR_RESAMPLE_PADDING_MODE = 1708,
    CUDNN_ATTR_OPERATION_RESAMPLE_FWD_XDESC = 1710,
    CUDNN_ATTR_OPERATION_RESAMPLE_FWD_YDESC = 1711,
    CUDNN_ATTR_OPERATION_RESAMPLE_FWD_IDXDESC = 1712,
    CUDNN_ATTR_OPERATION_RESAMPLE_FWD_ALPHA = 1713,
    CUDNN_ATTR_OPERATION_RESAMPLE_FWD_BETA = 1714,
    CUDNN_ATTR_OPERATION_RESAMPLE_FWD_DESC = 1716,
    CUDNN_ATTR_OPERATION_RESAMPLE_BWD_DXDESC = 1720,
    CUDNN_ATTR_OPERATION_RESAMPLE_BWD_DYDESC = 1721,
    CUDNN_ATTR_OPERATION_RESAMPLE_BWD_IDXDESC = 1722,
    CUDNN_ATTR_OPERATION_RESAMPLE_BWD_ALPHA = 1723,
    CUDNN_ATTR_OPERATION_RESAMPLE_BWD_BETA = 1724,
    CUDNN_ATTR_OPERATION_RESAMPLE_BWD_DESC = 1725,
    CUDNN_ATTR_OPERATION_RESAMPLE_BWD_XDESC = 1726,
    CUDNN_ATTR_OPERATION_RESAMPLE_BWD_YDESC = 1727,
    CUDNN_ATTR_OPERATION_CONCAT_AXIS = 1800,
    CUDNN_ATTR_OPERATION_CONCAT_INPUT_DESCS = 1801,
    CUDNN_ATTR_OPERATION_CONCAT_INPLACE_INDEX = 1802,
    CUDNN_ATTR_OPERATION_CONCAT_OUTPUT_DESC = 1803,
    CUDNN_ATTR_OPERATION_SIGNAL_MODE = 1900,
    CUDNN_ATTR_OPERATION_SIGNAL_FLAGDESC = 1901,
    CUDNN_ATTR_OPERATION_SIGNAL_VALUE = 1902,
    CUDNN_ATTR_OPERATION_SIGNAL_XDESC = 1903,
    CUDNN_ATTR_OPERATION_SIGNAL_YDESC = 1904,
    CUDNN_ATTR_OPERATION_PAGED_CACHE_LOAD_CONTAINER_DESC = 1950,
    CUDNN_ATTR_OPERATION_PAGED_CACHE_LOAD_YDESC = 1951,
    CUDNN_ATTR_OPERATION_PAGED_CACHE_LOAD_SEQUENCE_DESC = 1952,
    CUDNN_ATTR_OPERATION_PAGED_CACHE_LOAD_PAGE_TABLE_DESC = 1953,
    CUDNN_ATTR_OPERATION_NORM_FWD_MODE = 2000,
    CUDNN_ATTR_OPERATION_NORM_FWD_PHASE = 2001,
    CUDNN_ATTR_OPERATION_NORM_FWD_XDESC = 2002,
    CUDNN_ATTR_OPERATION_NORM_FWD_MEAN_DESC = 2003,
    CUDNN_ATTR_OPERATION_NORM_FWD_INV_VARIANCE_DESC = 2004,
    CUDNN_ATTR_OPERATION_NORM_FWD_SCALE_DESC = 2005,
    CUDNN_ATTR_OPERATION_NORM_FWD_BIAS_DESC = 2006,
    CUDNN_ATTR_OPERATION_NORM_FWD_EPSILON_DESC = 2007,
    CUDNN_ATTR_OPERATION_NORM_FWD_EXP_AVG_FACTOR_DESC = 2008,
    CUDNN_ATTR_OPERATION_NORM_FWD_INPUT_RUNNING_MEAN_DESC = 2009,
    CUDNN_ATTR_OPERATION_NORM_FWD_INPUT_RUNNING_VAR_DESC = 2010,
    CUDNN_ATTR_OPERATION_NORM_FWD_OUTPUT_RUNNING_MEAN_DESC = 2011,
    CUDNN_ATTR_OPERATION_NORM_FWD_OUTPUT_RUNNING_VAR_DESC = 2012,
    CUDNN_ATTR_OPERATION_NORM_FWD_YDESC = 2013,
    CUDNN_ATTR_OPERATION_NORM_FWD_PEER_STAT_DESCS = 2014,
    CUDNN_ATTR_OPERATION_NORM_BWD_MODE = 2100,
    CUDNN_ATTR_OPERATION_NORM_BWD_XDESC = 2101,
    CUDNN_ATTR_OPERATION_NORM_BWD_MEAN_DESC = 2102,
    CUDNN_ATTR_OPERATION_NORM_BWD_INV_VARIANCE_DESC = 2103,
    CUDNN_ATTR_OPERATION_NORM_BWD_DYDESC = 2104,
    CUDNN_ATTR_OPERATION_NORM_BWD_SCALE_DESC = 2105,
    CUDNN_ATTR_OPERATION_NORM_BWD_EPSILON_DESC = 2106,
    CUDNN_ATTR_OPERATION_NORM_BWD_DSCALE_DESC = 2107,
    CUDNN_ATTR_OPERATION_NORM_BWD_DBIAS_DESC = 2108,
    CUDNN_ATTR_OPERATION_NORM_BWD_DXDESC = 2109,
    CUDNN_ATTR_OPERATION_NORM_BWD_PEER_STAT_DESCS = 2110,
    CUDNN_ATTR_OPERATION_RESHAPE_XDESC = 2200,
    CUDNN_ATTR_OPERATION_RESHAPE_YDESC = 2201,
    CUDNN_ATTR_OPERATION_EXPAND_BAND_MATRIX_XDESC = 2250,
    CUDNN_ATTR_OPERATION_EXPAND_BAND_MATRIX_YDESC = 2251,
    CUDNN_ATTR_OPERATION_EXPAND_BAND_MATRIX_LOWER_BANDWIDTH = 2252,
    CUDNN_ATTR_OPERATION_EXPAND_BAND_MATRIX_UPPER_BANDWIDTH = 2253,
    CUDNN_ATTR_OPERATION_EXPAND_BAND_MATRIX_AXIS = 2254,
    CUDNN_ATTR_OPERATION_EXPAND_BAND_MATRIX_PAD_VALUE = 2255,
    CUDNN_ATTR_OPERATION_EXPAND_BAND_MATRIX_KV_TOKEN_OFFSET_DESC = 2256,
    CUDNN_ATTR_OPERATION_CONTRACT_BAND_MATRIX_XDESC = 2270,
    CUDNN_ATTR_OPERATION_CONTRACT_BAND_MATRIX_YDESC = 2271,
    CUDNN_ATTR_OPERATION_CONTRACT_BAND_MATRIX_LOWER_BANDWIDTH = 2272,
    CUDNN_ATTR_OPERATION_CONTRACT_BAND_MATRIX_UPPER_BANDWIDTH = 2273,
    CUDNN_ATTR_OPERATION_CONTRACT_BAND_MATRIX_AXIS = 2274,
    CUDNN_ATTR_OPERATION_CONTRACT_BAND_MATRIX_PAD_VALUE = 2275,
    CUDNN_ATTR_OPERATION_CONTRACT_BAND_MAX_TOKEN_VALUE = 2276,
    CUDNN_ATTR_RNG_DISTRIBUTION = 2300,
    CUDNN_ATTR_RNG_NORMAL_DIST_MEAN = 2301,
    CUDNN_ATTR_RNG_NORMAL_DIST_STANDARD_DEVIATION = 2302,
    CUDNN_ATTR_RNG_UNIFORM_DIST_MAXIMUM = 2303,
    CUDNN_ATTR_RNG_UNIFORM_DIST_MINIMUM = 2304,
    CUDNN_ATTR_RNG_BERNOULLI_DIST_PROBABILITY = 2305,
    CUDNN_ATTR_OPERATION_RNG_YDESC = 2310,
    CUDNN_ATTR_OPERATION_RNG_SEED = 2311,
    CUDNN_ATTR_OPERATION_RNG_DESC = 2312,
    CUDNN_ATTR_OPERATION_RNG_OFFSET_DESC = 2313,
    CUDNN_ATTR_KERNEL_CACHE_OPERATION_GRAPH = 2400,
    CUDNN_ATTR_KERNEL_CACHE_IS_ENGINECFG_KERNEL_CACHED = 2401,
    CUDNN_ATTR_KERNEL_CACHE_JSON_REPRESENTATION = 2402,
    CUDNN_ATTR_OPERATION_BLOCK_SCALE_QUANTIZE_XDESC = 2500,
    CUDNN_ATTR_OPERATION_BLOCK_SCALE_QUANTIZE_YDESC = 2501,
    CUDNN_ATTR_OPERATION_BLOCK_SCALE_QUANTIZE_SCALE_DESC = 2502,
    CUDNN_ATTR_OPERATION_BLOCK_SCALE_QUANTIZE_MATH_PREC = 2503,
    CUDNN_ATTR_OPERATION_BLOCK_SCALE_QUANTIZE_BLOCK_SIZE = 2504,
    CUDNN_ATTR_OPERATION_BLOCK_SCALE_DEQUANTIZE_XDESC = 2600,
    CUDNN_ATTR_OPERATION_BLOCK_SCALE_DEQUANTIZE_SCALE_DESC = 2601,
    CUDNN_ATTR_OPERATION_BLOCK_SCALE_DEQUANTIZE_YDESC = 2602,
    CUDNN_ATTR_OPERATION_BLOCK_SCALE_DEQUANTIZE_MATH_PREC = 2603,
    CUDNN_ATTR_OPERATION_BLOCK_SCALE_DEQUANTIZE_BLOCK_SIZE = 2604,
    CUDNN_ATTR_DEVICEPROP_DEVICE_ID = 2700,
    CUDNN_ATTR_DEVICEPROP_HANDLE = 2701,
    CUDNN_ATTR_DEVICEPROP_JSON_REPRESENTATION = 2702,
}
#[cfg(any(feature = "cudnn-09021"))]
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnBackendAttributeName_t {
    CUDNN_ATTR_POINTWISE_MODE = 0,
    CUDNN_ATTR_POINTWISE_MATH_PREC = 1,
    CUDNN_ATTR_POINTWISE_NAN_PROPAGATION = 2,
    CUDNN_ATTR_POINTWISE_RELU_LOWER_CLIP = 3,
    CUDNN_ATTR_POINTWISE_RELU_UPPER_CLIP = 4,
    CUDNN_ATTR_POINTWISE_RELU_LOWER_CLIP_SLOPE = 5,
    CUDNN_ATTR_POINTWISE_ELU_ALPHA = 6,
    CUDNN_ATTR_POINTWISE_SOFTPLUS_BETA = 7,
    CUDNN_ATTR_POINTWISE_SWISH_BETA = 8,
    CUDNN_ATTR_POINTWISE_AXIS = 9,
    CUDNN_ATTR_CONVOLUTION_COMP_TYPE = 100,
    CUDNN_ATTR_CONVOLUTION_CONV_MODE = 101,
    CUDNN_ATTR_CONVOLUTION_DILATIONS = 102,
    CUDNN_ATTR_CONVOLUTION_FILTER_STRIDES = 103,
    CUDNN_ATTR_CONVOLUTION_POST_PADDINGS = 104,
    CUDNN_ATTR_CONVOLUTION_PRE_PADDINGS = 105,
    CUDNN_ATTR_CONVOLUTION_SPATIAL_DIMS = 106,
    CUDNN_ATTR_ENGINEHEUR_MODE = 200,
    CUDNN_ATTR_ENGINEHEUR_OPERATION_GRAPH = 201,
    CUDNN_ATTR_ENGINEHEUR_RESULTS = 202,
    CUDNN_ATTR_ENGINEHEUR_SM_COUNT_TARGET = 203,
    CUDNN_ATTR_ENGINEHEUR_DEVICEPROP = 204,
    CUDNN_ATTR_ENGINECFG_ENGINE = 300,
    CUDNN_ATTR_ENGINECFG_INTERMEDIATE_INFO = 301,
    CUDNN_ATTR_ENGINECFG_KNOB_CHOICES = 302,
    CUDNN_ATTR_ENGINECFG_WORKSPACE_SIZE = 303,
    CUDNN_ATTR_ENGINECFG_SHARED_MEMORY_USED = 304,
    CUDNN_ATTR_EXECUTION_PLAN_HANDLE = 400,
    CUDNN_ATTR_EXECUTION_PLAN_ENGINE_CONFIG = 401,
    CUDNN_ATTR_EXECUTION_PLAN_WORKSPACE_SIZE = 402,
    CUDNN_ATTR_EXECUTION_PLAN_COMPUTED_INTERMEDIATE_UIDS = 403,
    CUDNN_ATTR_EXECUTION_PLAN_RUN_ONLY_INTERMEDIATE_UIDS = 404,
    CUDNN_ATTR_EXECUTION_PLAN_JSON_REPRESENTATION = 405,
    CUDNN_ATTR_EXECUTION_PLAN_KERNEL_CACHE = 406,
    CUDNN_ATTR_EXECUTION_PLAN_DEVICEPROP = 407,
    CUDNN_ATTR_INTERMEDIATE_INFO_UNIQUE_ID = 500,
    CUDNN_ATTR_INTERMEDIATE_INFO_SIZE = 501,
    CUDNN_ATTR_INTERMEDIATE_INFO_DEPENDENT_DATA_UIDS = 502,
    CUDNN_ATTR_INTERMEDIATE_INFO_DEPENDENT_ATTRIBUTES = 503,
    CUDNN_ATTR_KNOB_CHOICE_KNOB_TYPE = 600,
    CUDNN_ATTR_KNOB_CHOICE_KNOB_VALUE = 601,
    CUDNN_ATTR_OPERATION_CONVOLUTION_FORWARD_ALPHA = 700,
    CUDNN_ATTR_OPERATION_CONVOLUTION_FORWARD_BETA = 701,
    CUDNN_ATTR_OPERATION_CONVOLUTION_FORWARD_CONV_DESC = 702,
    CUDNN_ATTR_OPERATION_CONVOLUTION_FORWARD_W = 703,
    CUDNN_ATTR_OPERATION_CONVOLUTION_FORWARD_X = 704,
    CUDNN_ATTR_OPERATION_CONVOLUTION_FORWARD_Y = 705,
    CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_DATA_ALPHA = 706,
    CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_DATA_BETA = 707,
    CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_DATA_CONV_DESC = 708,
    CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_DATA_W = 709,
    CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_DATA_DX = 710,
    CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_DATA_DY = 711,
    CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_FILTER_ALPHA = 712,
    CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_FILTER_BETA = 713,
    CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_FILTER_CONV_DESC = 714,
    CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_FILTER_DW = 715,
    CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_FILTER_X = 716,
    CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_FILTER_DY = 717,
    CUDNN_ATTR_OPERATION_POINTWISE_PW_DESCRIPTOR = 750,
    CUDNN_ATTR_OPERATION_POINTWISE_XDESC = 751,
    CUDNN_ATTR_OPERATION_POINTWISE_BDESC = 752,
    CUDNN_ATTR_OPERATION_POINTWISE_YDESC = 753,
    CUDNN_ATTR_OPERATION_POINTWISE_ALPHA1 = 754,
    CUDNN_ATTR_OPERATION_POINTWISE_ALPHA2 = 755,
    CUDNN_ATTR_OPERATION_POINTWISE_DXDESC = 756,
    CUDNN_ATTR_OPERATION_POINTWISE_DYDESC = 757,
    CUDNN_ATTR_OPERATION_POINTWISE_TDESC = 758,
    CUDNN_ATTR_OPERATION_GENSTATS_MODE = 770,
    CUDNN_ATTR_OPERATION_GENSTATS_MATH_PREC = 771,
    CUDNN_ATTR_OPERATION_GENSTATS_XDESC = 772,
    CUDNN_ATTR_OPERATION_GENSTATS_SUMDESC = 773,
    CUDNN_ATTR_OPERATION_GENSTATS_SQSUMDESC = 774,
    CUDNN_ATTR_OPERATION_BN_FINALIZE_STATS_MODE = 780,
    CUDNN_ATTR_OPERATION_BN_FINALIZE_MATH_PREC = 781,
    CUDNN_ATTR_OPERATION_BN_FINALIZE_Y_SUM_DESC = 782,
    CUDNN_ATTR_OPERATION_BN_FINALIZE_Y_SQ_SUM_DESC = 783,
    CUDNN_ATTR_OPERATION_BN_FINALIZE_SCALE_DESC = 784,
    CUDNN_ATTR_OPERATION_BN_FINALIZE_BIAS_DESC = 785,
    CUDNN_ATTR_OPERATION_BN_FINALIZE_PREV_RUNNING_MEAN_DESC = 786,
    CUDNN_ATTR_OPERATION_BN_FINALIZE_PREV_RUNNING_VAR_DESC = 787,
    CUDNN_ATTR_OPERATION_BN_FINALIZE_UPDATED_RUNNING_MEAN_DESC = 788,
    CUDNN_ATTR_OPERATION_BN_FINALIZE_UPDATED_RUNNING_VAR_DESC = 789,
    CUDNN_ATTR_OPERATION_BN_FINALIZE_SAVED_MEAN_DESC = 790,
    CUDNN_ATTR_OPERATION_BN_FINALIZE_SAVED_INV_STD_DESC = 791,
    CUDNN_ATTR_OPERATION_BN_FINALIZE_EQ_SCALE_DESC = 792,
    CUDNN_ATTR_OPERATION_BN_FINALIZE_EQ_BIAS_DESC = 793,
    CUDNN_ATTR_OPERATION_BN_FINALIZE_ACCUM_COUNT_DESC = 794,
    CUDNN_ATTR_OPERATION_BN_FINALIZE_EPSILON_DESC = 795,
    CUDNN_ATTR_OPERATION_BN_FINALIZE_EXP_AVERATE_FACTOR_DESC = 796,
    CUDNN_ATTR_OPERATIONGRAPH_HANDLE = 800,
    CUDNN_ATTR_OPERATIONGRAPH_OPS = 801,
    CUDNN_ATTR_OPERATIONGRAPH_ENGINE_GLOBAL_COUNT = 802,
    CUDNN_ATTR_OPERATIONGRAPH_IS_DYNAMIC_SHAPE_ENABLED = 803,
    CUDNN_ATTR_OPERATIONGRAPH_IS_SAME_TOPOLOGY = 804,
    CUDNN_ATTR_OPERATIONGRAPH_IS_OVERRIDE_SHAPE_ENABLED = 805,
    CUDNN_ATTR_TENSOR_BYTE_ALIGNMENT = 900,
    CUDNN_ATTR_TENSOR_DATA_TYPE = 901,
    CUDNN_ATTR_TENSOR_DIMENSIONS = 902,
    CUDNN_ATTR_TENSOR_STRIDES = 903,
    CUDNN_ATTR_TENSOR_VECTOR_COUNT = 904,
    CUDNN_ATTR_TENSOR_VECTORIZED_DIMENSION = 905,
    CUDNN_ATTR_TENSOR_UNIQUE_ID = 906,
    CUDNN_ATTR_TENSOR_IS_VIRTUAL = 907,
    CUDNN_ATTR_TENSOR_IS_BY_VALUE = 908,
    CUDNN_ATTR_TENSOR_REORDERING_MODE = 909,
    CUDNN_ATTR_TENSOR_RAGGED_OFFSET_DESC = 913,
    CUDNN_ATTR_VARIANT_PACK_UNIQUE_IDS = 1000,
    CUDNN_ATTR_VARIANT_PACK_DATA_POINTERS = 1001,
    CUDNN_ATTR_VARIANT_PACK_INTERMEDIATES = 1002,
    CUDNN_ATTR_VARIANT_PACK_WORKSPACE = 1003,
    CUDNN_ATTR_VARIANT_PACK_OVERRIDE_UNIQUE_IDS = 1010,
    CUDNN_ATTR_VARIANT_PACK_OVERRIDE_SHAPES = 1011,
    CUDNN_ATTR_VARIANT_PACK_OVERRIDE_STRIDES = 1012,
    CUDNN_ATTR_LAYOUT_INFO_TENSOR_UID = 1100,
    CUDNN_ATTR_LAYOUT_INFO_TYPES = 1101,
    CUDNN_ATTR_KNOB_INFO_TYPE = 1200,
    CUDNN_ATTR_KNOB_INFO_MAXIMUM_VALUE = 1201,
    CUDNN_ATTR_KNOB_INFO_MINIMUM_VALUE = 1202,
    CUDNN_ATTR_KNOB_INFO_STRIDE = 1203,
    CUDNN_ATTR_ENGINE_OPERATION_GRAPH = 1300,
    CUDNN_ATTR_ENGINE_GLOBAL_INDEX = 1301,
    CUDNN_ATTR_ENGINE_KNOB_INFO = 1302,
    CUDNN_ATTR_ENGINE_NUMERICAL_NOTE = 1303,
    CUDNN_ATTR_ENGINE_LAYOUT_INFO = 1304,
    CUDNN_ATTR_ENGINE_BEHAVIOR_NOTE = 1305,
    CUDNN_ATTR_ENGINE_SM_COUNT_TARGET = 1306,
    CUDNN_ATTR_ENGINE_DEVICEPROP = 1307,
    CUDNN_ATTR_ENGINE_DISABLE_CLUSTER_COOPERATIVE = 1308,
    CUDNN_ATTR_MATMUL_COMP_TYPE = 1500,
    CUDNN_ATTR_MATMUL_PADDING_VALUE = 1503,
    CUDNN_ATTR_OPERATION_MATMUL_ADESC = 1520,
    CUDNN_ATTR_OPERATION_MATMUL_BDESC = 1521,
    CUDNN_ATTR_OPERATION_MATMUL_CDESC = 1522,
    CUDNN_ATTR_OPERATION_MATMUL_DESC = 1523,
    CUDNN_ATTR_OPERATION_MATMUL_IRREGULARLY_STRIDED_BATCH_COUNT = 1524,
    CUDNN_ATTR_OPERATION_MATMUL_GEMM_M_OVERRIDE_DESC = 1525,
    CUDNN_ATTR_OPERATION_MATMUL_GEMM_N_OVERRIDE_DESC = 1526,
    CUDNN_ATTR_OPERATION_MATMUL_GEMM_K_OVERRIDE_DESC = 1527,
    CUDNN_ATTR_REDUCTION_OPERATOR = 1600,
    CUDNN_ATTR_REDUCTION_COMP_TYPE = 1601,
    CUDNN_ATTR_REDUCTION_IS_DETERMINISTIC = 1602,
    CUDNN_ATTR_OPERATION_REDUCTION_XDESC = 1610,
    CUDNN_ATTR_OPERATION_REDUCTION_YDESC = 1611,
    CUDNN_ATTR_OPERATION_REDUCTION_DESC = 1612,
    CUDNN_ATTR_OPERATION_BN_BWD_WEIGHTS_MATH_PREC = 1620,
    CUDNN_ATTR_OPERATION_BN_BWD_WEIGHTS_MEAN_DESC = 1621,
    CUDNN_ATTR_OPERATION_BN_BWD_WEIGHTS_INVSTD_DESC = 1622,
    CUDNN_ATTR_OPERATION_BN_BWD_WEIGHTS_BN_SCALE_DESC = 1623,
    CUDNN_ATTR_OPERATION_BN_BWD_WEIGHTS_X_DESC = 1624,
    CUDNN_ATTR_OPERATION_BN_BWD_WEIGHTS_DY_DESC = 1625,
    CUDNN_ATTR_OPERATION_BN_BWD_WEIGHTS_DBN_SCALE_DESC = 1626,
    CUDNN_ATTR_OPERATION_BN_BWD_WEIGHTS_DBN_BIAS_DESC = 1627,
    CUDNN_ATTR_OPERATION_BN_BWD_WEIGHTS_EQ_DY_SCALE_DESC = 1628,
    CUDNN_ATTR_OPERATION_BN_BWD_WEIGHTS_EQ_X_SCALE_DESC = 1629,
    CUDNN_ATTR_OPERATION_BN_BWD_WEIGHTS_EQ_BIAS = 1630,
    CUDNN_ATTR_RESAMPLE_MODE = 1700,
    CUDNN_ATTR_RESAMPLE_COMP_TYPE = 1701,
    CUDNN_ATTR_RESAMPLE_SPATIAL_DIMS = 1702,
    CUDNN_ATTR_RESAMPLE_POST_PADDINGS = 1703,
    CUDNN_ATTR_RESAMPLE_PRE_PADDINGS = 1704,
    CUDNN_ATTR_RESAMPLE_STRIDES = 1705,
    CUDNN_ATTR_RESAMPLE_WINDOW_DIMS = 1706,
    CUDNN_ATTR_RESAMPLE_NAN_PROPAGATION = 1707,
    CUDNN_ATTR_RESAMPLE_PADDING_MODE = 1708,
    CUDNN_ATTR_OPERATION_RESAMPLE_FWD_XDESC = 1710,
    CUDNN_ATTR_OPERATION_RESAMPLE_FWD_YDESC = 1711,
    CUDNN_ATTR_OPERATION_RESAMPLE_FWD_IDXDESC = 1712,
    CUDNN_ATTR_OPERATION_RESAMPLE_FWD_ALPHA = 1713,
    CUDNN_ATTR_OPERATION_RESAMPLE_FWD_BETA = 1714,
    CUDNN_ATTR_OPERATION_RESAMPLE_FWD_DESC = 1716,
    CUDNN_ATTR_OPERATION_RESAMPLE_BWD_DXDESC = 1720,
    CUDNN_ATTR_OPERATION_RESAMPLE_BWD_DYDESC = 1721,
    CUDNN_ATTR_OPERATION_RESAMPLE_BWD_IDXDESC = 1722,
    CUDNN_ATTR_OPERATION_RESAMPLE_BWD_ALPHA = 1723,
    CUDNN_ATTR_OPERATION_RESAMPLE_BWD_BETA = 1724,
    CUDNN_ATTR_OPERATION_RESAMPLE_BWD_DESC = 1725,
    CUDNN_ATTR_OPERATION_RESAMPLE_BWD_XDESC = 1726,
    CUDNN_ATTR_OPERATION_RESAMPLE_BWD_YDESC = 1727,
    CUDNN_ATTR_OPERATION_CONCAT_AXIS = 1800,
    CUDNN_ATTR_OPERATION_CONCAT_INPUT_DESCS = 1801,
    CUDNN_ATTR_OPERATION_CONCAT_INPLACE_INDEX = 1802,
    CUDNN_ATTR_OPERATION_CONCAT_OUTPUT_DESC = 1803,
    CUDNN_ATTR_OPERATION_SIGNAL_MODE = 1900,
    CUDNN_ATTR_OPERATION_SIGNAL_FLAGDESC = 1901,
    CUDNN_ATTR_OPERATION_SIGNAL_VALUE = 1902,
    CUDNN_ATTR_OPERATION_SIGNAL_XDESC = 1903,
    CUDNN_ATTR_OPERATION_SIGNAL_YDESC = 1904,
    CUDNN_ATTR_OPERATION_PAGED_CACHE_LOAD_CONTAINER_DESC = 1950,
    CUDNN_ATTR_OPERATION_PAGED_CACHE_LOAD_YDESC = 1951,
    CUDNN_ATTR_OPERATION_PAGED_CACHE_LOAD_SEQUENCE_DESC = 1952,
    CUDNN_ATTR_OPERATION_PAGED_CACHE_LOAD_PAGE_TABLE_DESC = 1953,
    CUDNN_ATTR_OPERATION_NORM_FWD_MODE = 2000,
    CUDNN_ATTR_OPERATION_NORM_FWD_PHASE = 2001,
    CUDNN_ATTR_OPERATION_NORM_FWD_XDESC = 2002,
    CUDNN_ATTR_OPERATION_NORM_FWD_MEAN_DESC = 2003,
    CUDNN_ATTR_OPERATION_NORM_FWD_INV_VARIANCE_DESC = 2004,
    CUDNN_ATTR_OPERATION_NORM_FWD_SCALE_DESC = 2005,
    CUDNN_ATTR_OPERATION_NORM_FWD_BIAS_DESC = 2006,
    CUDNN_ATTR_OPERATION_NORM_FWD_EPSILON_DESC = 2007,
    CUDNN_ATTR_OPERATION_NORM_FWD_EXP_AVG_FACTOR_DESC = 2008,
    CUDNN_ATTR_OPERATION_NORM_FWD_INPUT_RUNNING_MEAN_DESC = 2009,
    CUDNN_ATTR_OPERATION_NORM_FWD_INPUT_RUNNING_VAR_DESC = 2010,
    CUDNN_ATTR_OPERATION_NORM_FWD_OUTPUT_RUNNING_MEAN_DESC = 2011,
    CUDNN_ATTR_OPERATION_NORM_FWD_OUTPUT_RUNNING_VAR_DESC = 2012,
    CUDNN_ATTR_OPERATION_NORM_FWD_YDESC = 2013,
    CUDNN_ATTR_OPERATION_NORM_FWD_PEER_STAT_DESCS = 2014,
    CUDNN_ATTR_OPERATION_NORM_BWD_MODE = 2100,
    CUDNN_ATTR_OPERATION_NORM_BWD_XDESC = 2101,
    CUDNN_ATTR_OPERATION_NORM_BWD_MEAN_DESC = 2102,
    CUDNN_ATTR_OPERATION_NORM_BWD_INV_VARIANCE_DESC = 2103,
    CUDNN_ATTR_OPERATION_NORM_BWD_DYDESC = 2104,
    CUDNN_ATTR_OPERATION_NORM_BWD_SCALE_DESC = 2105,
    CUDNN_ATTR_OPERATION_NORM_BWD_EPSILON_DESC = 2106,
    CUDNN_ATTR_OPERATION_NORM_BWD_DSCALE_DESC = 2107,
    CUDNN_ATTR_OPERATION_NORM_BWD_DBIAS_DESC = 2108,
    CUDNN_ATTR_OPERATION_NORM_BWD_DXDESC = 2109,
    CUDNN_ATTR_OPERATION_NORM_BWD_PEER_STAT_DESCS = 2110,
    CUDNN_ATTR_OPERATION_RESHAPE_XDESC = 2200,
    CUDNN_ATTR_OPERATION_RESHAPE_YDESC = 2201,
    CUDNN_ATTR_OPERATION_EXPAND_BAND_MATRIX_XDESC = 2250,
    CUDNN_ATTR_OPERATION_EXPAND_BAND_MATRIX_YDESC = 2251,
    CUDNN_ATTR_OPERATION_EXPAND_BAND_MATRIX_LOWER_BANDWIDTH = 2252,
    CUDNN_ATTR_OPERATION_EXPAND_BAND_MATRIX_UPPER_BANDWIDTH = 2253,
    CUDNN_ATTR_OPERATION_EXPAND_BAND_MATRIX_AXIS = 2254,
    CUDNN_ATTR_OPERATION_EXPAND_BAND_MATRIX_PAD_VALUE = 2255,
    CUDNN_ATTR_OPERATION_EXPAND_BAND_MATRIX_KV_TOKEN_OFFSET_DESC = 2256,
    CUDNN_ATTR_OPERATION_EXPAND_BAND_MATRIX_SPECULATIVE_MASK_DESC = 2257,
    CUDNN_ATTR_OPERATION_CONTRACT_BAND_MATRIX_XDESC = 2270,
    CUDNN_ATTR_OPERATION_CONTRACT_BAND_MATRIX_YDESC = 2271,
    CUDNN_ATTR_OPERATION_CONTRACT_BAND_MATRIX_LOWER_BANDWIDTH = 2272,
    CUDNN_ATTR_OPERATION_CONTRACT_BAND_MATRIX_UPPER_BANDWIDTH = 2273,
    CUDNN_ATTR_OPERATION_CONTRACT_BAND_MATRIX_AXIS = 2274,
    CUDNN_ATTR_OPERATION_CONTRACT_BAND_MATRIX_PAD_VALUE = 2275,
    CUDNN_ATTR_OPERATION_CONTRACT_BAND_MAX_TOKEN_VALUE = 2276,
    CUDNN_ATTR_RNG_DISTRIBUTION = 2300,
    CUDNN_ATTR_RNG_NORMAL_DIST_MEAN = 2301,
    CUDNN_ATTR_RNG_NORMAL_DIST_STANDARD_DEVIATION = 2302,
    CUDNN_ATTR_RNG_UNIFORM_DIST_MAXIMUM = 2303,
    CUDNN_ATTR_RNG_UNIFORM_DIST_MINIMUM = 2304,
    CUDNN_ATTR_RNG_BERNOULLI_DIST_PROBABILITY = 2305,
    CUDNN_ATTR_OPERATION_RNG_YDESC = 2310,
    CUDNN_ATTR_OPERATION_RNG_SEED = 2311,
    CUDNN_ATTR_OPERATION_RNG_DESC = 2312,
    CUDNN_ATTR_OPERATION_RNG_OFFSET_DESC = 2313,
    CUDNN_ATTR_KERNEL_CACHE_OPERATION_GRAPH = 2400,
    CUDNN_ATTR_KERNEL_CACHE_IS_ENGINECFG_KERNEL_CACHED = 2401,
    CUDNN_ATTR_KERNEL_CACHE_JSON_REPRESENTATION = 2402,
    CUDNN_ATTR_OPERATION_BLOCK_SCALE_QUANTIZE_XDESC = 2500,
    CUDNN_ATTR_OPERATION_BLOCK_SCALE_QUANTIZE_YDESC = 2501,
    CUDNN_ATTR_OPERATION_BLOCK_SCALE_QUANTIZE_SCALE_DESC = 2502,
    CUDNN_ATTR_OPERATION_BLOCK_SCALE_QUANTIZE_MATH_PREC = 2503,
    CUDNN_ATTR_OPERATION_BLOCK_SCALE_QUANTIZE_BLOCK_SIZE = 2504,
    CUDNN_ATTR_OPERATION_BLOCK_SCALE_DEQUANTIZE_XDESC = 2600,
    CUDNN_ATTR_OPERATION_BLOCK_SCALE_DEQUANTIZE_SCALE_DESC = 2601,
    CUDNN_ATTR_OPERATION_BLOCK_SCALE_DEQUANTIZE_YDESC = 2602,
    CUDNN_ATTR_OPERATION_BLOCK_SCALE_DEQUANTIZE_MATH_PREC = 2603,
    CUDNN_ATTR_OPERATION_BLOCK_SCALE_DEQUANTIZE_BLOCK_SIZE = 2604,
    CUDNN_ATTR_OPERATION_BLOCK_SCALE_DEQUANTIZE_NEG_SCALE = 2605,
    CUDNN_ATTR_DEVICEPROP_DEVICE_ID = 2700,
    CUDNN_ATTR_DEVICEPROP_HANDLE = 2701,
    CUDNN_ATTR_DEVICEPROP_JSON_REPRESENTATION = 2702,
    CUDNN_ATTR_OPERATION_SDPA_FWD_QDESC = 2800,
    CUDNN_ATTR_OPERATION_SDPA_FWD_KDESC = 2801,
    CUDNN_ATTR_OPERATION_SDPA_FWD_VDESC = 2802,
    CUDNN_ATTR_OPERATION_SDPA_FWD_ODESC = 2803,
    CUDNN_ATTR_OPERATION_SDPA_FWD_STATSDESC = 2804,
    CUDNN_ATTR_OPERATION_SDPA_FWD_SCALEDESC = 2805,
    CUDNN_ATTR_OPERATION_SDPA_FWD_BLOCK_MASK_DESC = 2806,
    CUDNN_ATTR_OPERATION_SDPA_FWD_PAGE_TABLE_KDESC = 2807,
    CUDNN_ATTR_OPERATION_SDPA_FWD_PAGE_TABLE_VDESC = 2808,
    CUDNN_ATTR_OPERATION_SDPA_FWD_SEQ_LEN_QDESC = 2809,
    CUDNN_ATTR_OPERATION_SDPA_FWD_SEQ_LEN_KVDESC = 2810,
    CUDNN_ATTR_OPERATION_SDPA_FWD_SUBGRAPH = 2811,
    CUDNN_ATTR_OPERATION_SDPA_FWD_SUBGRAPH_INPUT_UID = 2812,
    CUDNN_ATTR_OPERATION_SDPA_FWD_SUBGRAPH_OUTPUT_UID = 2813,
    CUDNN_ATTR_OPERATION_SDPA_FWD_SOFTMAX_DESC = 2814,
    CUDNN_ATTR_OPERATION_SDPA_FWD_DROPOUT_SEED_DESC = 2815,
    CUDNN_ATTR_OPERATION_SDPA_FWD_DROPOUT_OFFSET_DESC = 2816,
    CUDNN_ATTR_OPERATION_SDPA_FWD_DROPOUT_RNG_DUMP_DESC = 2817,
    CUDNN_ATTR_OPERATION_SDPA_FWD_DROPOUT_PROBABILITY = 2818,
    CUDNN_ATTR_OPERATION_SDPA_FWD_UNFUSE_FMA = 2819,
    CUDNN_ATTR_OPERATION_SDPA_BWD_QDESC = 2851,
    CUDNN_ATTR_OPERATION_SDPA_BWD_KDESC = 2852,
    CUDNN_ATTR_OPERATION_SDPA_BWD_VDESC = 2853,
    CUDNN_ATTR_OPERATION_SDPA_BWD_ODESC = 2854,
    CUDNN_ATTR_OPERATION_SDPA_BWD_STATSDESC = 2855,
    CUDNN_ATTR_OPERATION_SDPA_BWD_SCALEDESC = 2856,
    CUDNN_ATTR_OPERATION_SDPA_BWD_SEQ_LEN_QDESC = 2857,
    CUDNN_ATTR_OPERATION_SDPA_BWD_SEQ_LEN_KVDESC = 2858,
    CUDNN_ATTR_OPERATION_SDPA_BWD_DQDESC = 2859,
    CUDNN_ATTR_OPERATION_SDPA_BWD_DKDESC = 2860,
    CUDNN_ATTR_OPERATION_SDPA_BWD_DVDESC = 2861,
    CUDNN_ATTR_OPERATION_SDPA_BWD_DODDESC = 2862,
    CUDNN_ATTR_OPERATION_SDPA_BWD_SINK_DESC = 2863,
    CUDNN_ATTR_OPERATION_SDPA_BWD_DSINK_DESC = 2864,
    CUDNN_ATTR_OPERATION_SDPA_BWD_MAX_TOTAL_SEQ_LEN_Q = 2865,
    CUDNN_ATTR_OPERATION_SDPA_BWD_MAX_TOTAL_SEQ_LEN_KV = 2866,
    CUDNN_ATTR_OPERATION_SDPA_BWD_SUBGRAPH = 2867,
    CUDNN_ATTR_OPERATION_SDPA_BWD_SUBGRAPH_INPUT_UID = 2868,
    CUDNN_ATTR_OPERATION_SDPA_BWD_SUBGRAPH_OUTPUT_UID = 2869,
    CUDNN_ATTR_OPERATION_MOE_GROUPED_MATMUL_MODE = 2900,
    CUDNN_ATTR_OPERATION_MOE_GROUPED_MATMUL_MATH_PREC = 2901,
    CUDNN_ATTR_OPERATION_MOE_GROUPED_MATMUL_TOKEN_DESC = 2902,
    CUDNN_ATTR_OPERATION_MOE_GROUPED_MATMUL_WEIGHT_DESC = 2903,
    CUDNN_ATTR_OPERATION_MOE_GROUPED_MATMUL_FIRST_TOKEN_OFFSET_DESC = 2904,
    CUDNN_ATTR_OPERATION_MOE_GROUPED_MATMUL_OUTPUT_DESC = 2905,
    CUDNN_ATTR_OPERATION_MOE_GROUPED_MATMUL_TOKEN_INDEX_DESC = 2906,
    CUDNN_ATTR_OPERATION_MOE_GROUPED_MATMUL_TOKEN_KS_DESC = 2907,
    CUDNN_ATTR_OPERATION_MOE_GROUPED_MATMUL_TOP_K = 2908,
    CUDNN_ATTR_OPERATION_DIAGONAL_BAND_MASK_XDESC = 3000,
    CUDNN_ATTR_OPERATION_DIAGONAL_BAND_MASK_SEQ_LEN_KVDESC = 3001,
    CUDNN_ATTR_OPERATION_DIAGONAL_BAND_MASK_SEQ_LEN_QDESC = 3002,
    CUDNN_ATTR_OPERATION_DIAGONAL_BAND_MASK_LEFT_BOUND_DESC = 3003,
    CUDNN_ATTR_OPERATION_DIAGONAL_BAND_MASK_SHIFT_RIGHT_BOUND_DESC = 3004,
    CUDNN_ATTR_OPERATION_DIAGONAL_BAND_MASK_BDESC = 3005,
    CUDNN_ATTR_OPERATION_DIAGONAL_BAND_MASK_YDESC = 3006,
    CUDNN_ATTR_OPERATION_DIAGONAL_BAND_MASK_COMPARISON_MODE = 3007,
    CUDNN_ATTR_OPERATION_SOFTMAX_XDESC = 3100,
    CUDNN_ATTR_OPERATION_SOFTMAX_YDESC = 3101,
    CUDNN_ATTR_OPERATION_SOFTMAX_STATS_DESC = 3102,
    CUDNN_ATTR_OPERATION_SOFTMAX_MAX_DESC = 3103,
    CUDNN_ATTR_OPERATION_SOFTMAX_SUM_EXP_DESC = 3104,
    CUDNN_ATTR_OPERATION_SOFTMAX_SINK_DESC = 3105,
}
#[cfg(any(feature = "cudnn-08009", feature = "cudnn-09010"))]
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnBackendAttributeType_t {
    CUDNN_TYPE_HANDLE = 0,
    CUDNN_TYPE_DATA_TYPE = 1,
    CUDNN_TYPE_BOOLEAN = 2,
    CUDNN_TYPE_INT64 = 3,
    CUDNN_TYPE_FLOAT = 4,
    CUDNN_TYPE_DOUBLE = 5,
    CUDNN_TYPE_VOID_PTR = 6,
    CUDNN_TYPE_CONVOLUTION_MODE = 7,
    CUDNN_TYPE_HEUR_MODE = 8,
    CUDNN_TYPE_KNOB_TYPE = 9,
    CUDNN_TYPE_NAN_PROPOGATION = 10,
    CUDNN_TYPE_NUMERICAL_NOTE = 11,
    CUDNN_TYPE_LAYOUT_TYPE = 12,
    CUDNN_TYPE_ATTRIB_NAME = 13,
    CUDNN_TYPE_POINTWISE_MODE = 14,
    CUDNN_TYPE_BACKEND_DESCRIPTOR = 15,
    CUDNN_TYPE_GENSTATS_MODE = 16,
    CUDNN_TYPE_BN_FINALIZE_STATS_MODE = 17,
    CUDNN_TYPE_REDUCTION_OPERATOR_TYPE = 18,
    CUDNN_TYPE_BEHAVIOR_NOTE = 19,
    CUDNN_TYPE_TENSOR_REORDERING_MODE = 20,
    CUDNN_TYPE_RESAMPLE_MODE = 21,
    CUDNN_TYPE_PADDING_MODE = 22,
    CUDNN_TYPE_INT32 = 23,
    CUDNN_TYPE_CHAR = 24,
    CUDNN_TYPE_SIGNAL_MODE = 25,
    CUDNN_TYPE_FRACTION = 26,
    CUDNN_TYPE_NORM_MODE = 27,
    CUDNN_TYPE_NORM_FWD_PHASE = 28,
    CUDNN_TYPE_RNG_DISTRIBUTION = 29,
}
#[cfg(any(feature = "cudnn-09021"))]
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnBackendAttributeType_t {
    CUDNN_TYPE_HANDLE = 0,
    CUDNN_TYPE_DATA_TYPE = 1,
    CUDNN_TYPE_BOOLEAN = 2,
    CUDNN_TYPE_INT64 = 3,
    CUDNN_TYPE_FLOAT = 4,
    CUDNN_TYPE_DOUBLE = 5,
    CUDNN_TYPE_VOID_PTR = 6,
    CUDNN_TYPE_CONVOLUTION_MODE = 7,
    CUDNN_TYPE_HEUR_MODE = 8,
    CUDNN_TYPE_KNOB_TYPE = 9,
    CUDNN_TYPE_NAN_PROPOGATION = 10,
    CUDNN_TYPE_NUMERICAL_NOTE = 11,
    CUDNN_TYPE_LAYOUT_TYPE = 12,
    CUDNN_TYPE_ATTRIB_NAME = 13,
    CUDNN_TYPE_POINTWISE_MODE = 14,
    CUDNN_TYPE_BACKEND_DESCRIPTOR = 15,
    CUDNN_TYPE_GENSTATS_MODE = 16,
    CUDNN_TYPE_BN_FINALIZE_STATS_MODE = 17,
    CUDNN_TYPE_REDUCTION_OPERATOR_TYPE = 18,
    CUDNN_TYPE_BEHAVIOR_NOTE = 19,
    CUDNN_TYPE_TENSOR_REORDERING_MODE = 20,
    CUDNN_TYPE_RESAMPLE_MODE = 21,
    CUDNN_TYPE_PADDING_MODE = 22,
    CUDNN_TYPE_INT32 = 23,
    CUDNN_TYPE_CHAR = 24,
    CUDNN_TYPE_SIGNAL_MODE = 25,
    CUDNN_TYPE_FRACTION = 26,
    CUDNN_TYPE_NORM_MODE = 27,
    CUDNN_TYPE_NORM_FWD_PHASE = 28,
    CUDNN_TYPE_RNG_DISTRIBUTION = 29,
    CUDNN_TYPE_MOE_GROUPED_MATMUL_MODE = 30,
}
#[cfg(any(feature = "cudnn-08009"))]
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnBackendBehaviorNote_t {
    CUDNN_BEHAVIOR_NOTE_RUNTIME_COMPILATION = 0,
    CUDNN_BEHAVIOR_NOTE_REQUIRES_FILTER_INT8x32_REORDER = 1,
    CUDNN_BEHAVIOR_NOTE_REQUIRES_BIAS_INT8x32_REORDER = 2,
    CUDNN_BEHAVIOR_NOTE_TYPE_COUNT = 3,
}
#[cfg(any(feature = "cudnn-09010"))]
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnBackendBehaviorNote_t {
    CUDNN_BEHAVIOR_NOTE_RUNTIME_COMPILATION = 0,
    CUDNN_BEHAVIOR_NOTE_REQUIRES_FILTER_INT8x32_REORDER = 1,
    CUDNN_BEHAVIOR_NOTE_REQUIRES_BIAS_INT8x32_REORDER = 2,
    CUDNN_BEHAVIOR_NOTE_SUPPORTS_CUDA_GRAPH_NATIVE_API = 3,
    CUDNN_BEHAVIOR_NOTE_TYPE_COUNT = 4,
}
#[cfg(any(feature = "cudnn-09021"))]
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnBackendBehaviorNote_t {
    CUDNN_BEHAVIOR_NOTE_RUNTIME_COMPILATION = 0,
    CUDNN_BEHAVIOR_NOTE_REQUIRES_FILTER_INT8x32_REORDER = 1,
    CUDNN_BEHAVIOR_NOTE_REQUIRES_BIAS_INT8x32_REORDER = 2,
    CUDNN_BEHAVIOR_NOTE_SUPPORTS_CUDA_GRAPH_NATIVE_API = 3,
    CUDNN_BEHAVIOR_NOTE_CUBLASLT_DEPENDENCY = 4,
    CUDNN_BEHAVIOR_NOTE_TYPE_COUNT = 5,
}
#[cfg(any(feature = "cudnn-08009"))]
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnBackendDescriptorType_t {
    CUDNN_BACKEND_POINTWISE_DESCRIPTOR = 0,
    CUDNN_BACKEND_CONVOLUTION_DESCRIPTOR = 1,
    CUDNN_BACKEND_ENGINE_DESCRIPTOR = 2,
    CUDNN_BACKEND_ENGINECFG_DESCRIPTOR = 3,
    CUDNN_BACKEND_ENGINEHEUR_DESCRIPTOR = 4,
    CUDNN_BACKEND_EXECUTION_PLAN_DESCRIPTOR = 5,
    CUDNN_BACKEND_INTERMEDIATE_INFO_DESCRIPTOR = 6,
    CUDNN_BACKEND_KNOB_CHOICE_DESCRIPTOR = 7,
    CUDNN_BACKEND_KNOB_INFO_DESCRIPTOR = 8,
    CUDNN_BACKEND_LAYOUT_INFO_DESCRIPTOR = 9,
    CUDNN_BACKEND_OPERATION_CONVOLUTION_FORWARD_DESCRIPTOR = 10,
    CUDNN_BACKEND_OPERATION_CONVOLUTION_BACKWARD_FILTER_DESCRIPTOR = 11,
    CUDNN_BACKEND_OPERATION_CONVOLUTION_BACKWARD_DATA_DESCRIPTOR = 12,
    CUDNN_BACKEND_OPERATION_POINTWISE_DESCRIPTOR = 13,
    CUDNN_BACKEND_OPERATION_GEN_STATS_DESCRIPTOR = 14,
    CUDNN_BACKEND_OPERATIONGRAPH_DESCRIPTOR = 15,
    CUDNN_BACKEND_VARIANT_PACK_DESCRIPTOR = 16,
    CUDNN_BACKEND_TENSOR_DESCRIPTOR = 17,
    CUDNN_BACKEND_MATMUL_DESCRIPTOR = 18,
    CUDNN_BACKEND_OPERATION_MATMUL_DESCRIPTOR = 19,
    CUDNN_BACKEND_OPERATION_BN_FINALIZE_STATISTICS_DESCRIPTOR = 20,
    CUDNN_BACKEND_REDUCTION_DESCRIPTOR = 21,
    CUDNN_BACKEND_OPERATION_REDUCTION_DESCRIPTOR = 22,
    CUDNN_BACKEND_OPERATION_BN_BWD_WEIGHTS_DESCRIPTOR = 23,
    CUDNN_BACKEND_RESAMPLE_DESCRIPTOR = 24,
    CUDNN_BACKEND_OPERATION_RESAMPLE_FWD_DESCRIPTOR = 25,
    CUDNN_BACKEND_OPERATION_RESAMPLE_BWD_DESCRIPTOR = 26,
    CUDNN_BACKEND_OPERATION_CONCAT_DESCRIPTOR = 27,
    CUDNN_BACKEND_OPERATION_SIGNAL_DESCRIPTOR = 28,
    CUDNN_BACKEND_OPERATION_NORM_FORWARD_DESCRIPTOR = 29,
    CUDNN_BACKEND_OPERATION_NORM_BACKWARD_DESCRIPTOR = 30,
    CUDNN_BACKEND_OPERATION_RESHAPE_DESCRIPTOR = 31,
    CUDNN_BACKEND_RNG_DESCRIPTOR = 32,
    CUDNN_BACKEND_OPERATION_RNG_DESCRIPTOR = 33,
}
#[cfg(any(feature = "cudnn-09010"))]
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnBackendDescriptorType_t {
    CUDNN_BACKEND_POINTWISE_DESCRIPTOR = 0,
    CUDNN_BACKEND_CONVOLUTION_DESCRIPTOR = 1,
    CUDNN_BACKEND_ENGINE_DESCRIPTOR = 2,
    CUDNN_BACKEND_ENGINECFG_DESCRIPTOR = 3,
    CUDNN_BACKEND_ENGINEHEUR_DESCRIPTOR = 4,
    CUDNN_BACKEND_EXECUTION_PLAN_DESCRIPTOR = 5,
    CUDNN_BACKEND_INTERMEDIATE_INFO_DESCRIPTOR = 6,
    CUDNN_BACKEND_KNOB_CHOICE_DESCRIPTOR = 7,
    CUDNN_BACKEND_KNOB_INFO_DESCRIPTOR = 8,
    CUDNN_BACKEND_LAYOUT_INFO_DESCRIPTOR = 9,
    CUDNN_BACKEND_OPERATION_CONVOLUTION_FORWARD_DESCRIPTOR = 10,
    CUDNN_BACKEND_OPERATION_CONVOLUTION_BACKWARD_FILTER_DESCRIPTOR = 11,
    CUDNN_BACKEND_OPERATION_CONVOLUTION_BACKWARD_DATA_DESCRIPTOR = 12,
    CUDNN_BACKEND_OPERATION_POINTWISE_DESCRIPTOR = 13,
    CUDNN_BACKEND_OPERATION_GEN_STATS_DESCRIPTOR = 14,
    CUDNN_BACKEND_OPERATIONGRAPH_DESCRIPTOR = 15,
    CUDNN_BACKEND_VARIANT_PACK_DESCRIPTOR = 16,
    CUDNN_BACKEND_TENSOR_DESCRIPTOR = 17,
    CUDNN_BACKEND_MATMUL_DESCRIPTOR = 18,
    CUDNN_BACKEND_OPERATION_MATMUL_DESCRIPTOR = 19,
    CUDNN_BACKEND_OPERATION_BN_FINALIZE_STATISTICS_DESCRIPTOR = 20,
    CUDNN_BACKEND_REDUCTION_DESCRIPTOR = 21,
    CUDNN_BACKEND_OPERATION_REDUCTION_DESCRIPTOR = 22,
    CUDNN_BACKEND_OPERATION_BN_BWD_WEIGHTS_DESCRIPTOR = 23,
    CUDNN_BACKEND_RESAMPLE_DESCRIPTOR = 24,
    CUDNN_BACKEND_OPERATION_RESAMPLE_FWD_DESCRIPTOR = 25,
    CUDNN_BACKEND_OPERATION_RESAMPLE_BWD_DESCRIPTOR = 26,
    CUDNN_BACKEND_OPERATION_CONCAT_DESCRIPTOR = 27,
    CUDNN_BACKEND_OPERATION_SIGNAL_DESCRIPTOR = 28,
    CUDNN_BACKEND_OPERATION_NORM_FORWARD_DESCRIPTOR = 29,
    CUDNN_BACKEND_OPERATION_NORM_BACKWARD_DESCRIPTOR = 30,
    CUDNN_BACKEND_OPERATION_RESHAPE_DESCRIPTOR = 31,
    CUDNN_BACKEND_RNG_DESCRIPTOR = 32,
    CUDNN_BACKEND_OPERATION_RNG_DESCRIPTOR = 33,
    CUDNN_BACKEND_KERNEL_CACHE_DESCRIPTOR = 34,
    CUDNN_BACKEND_OPERATION_PAGED_CACHE_LOAD_DESCRIPTOR = 35,
    CUDNN_BACKEND_OPERATION_BLOCK_SCALE_QUANTIZE_DESCRIPTOR = 36,
    CUDNN_BACKEND_OPERATION_BLOCK_SCALE_DEQUANTIZE_DESCRIPTOR = 37,
    CUDNN_BACKEND_DEVICEPROP_DESCRIPTOR = 38,
    CUDNN_BACKEND_OPERATION_EXPAND_BAND_MATRIX_DESCRIPTOR = 39,
    CUDNN_BACKEND_OPERATION_CONTRACT_BAND_MATRIX_DESCRIPTOR = 40,
}
#[cfg(any(feature = "cudnn-09021"))]
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnBackendDescriptorType_t {
    CUDNN_BACKEND_POINTWISE_DESCRIPTOR = 0,
    CUDNN_BACKEND_CONVOLUTION_DESCRIPTOR = 1,
    CUDNN_BACKEND_ENGINE_DESCRIPTOR = 2,
    CUDNN_BACKEND_ENGINECFG_DESCRIPTOR = 3,
    CUDNN_BACKEND_ENGINEHEUR_DESCRIPTOR = 4,
    CUDNN_BACKEND_EXECUTION_PLAN_DESCRIPTOR = 5,
    CUDNN_BACKEND_INTERMEDIATE_INFO_DESCRIPTOR = 6,
    CUDNN_BACKEND_KNOB_CHOICE_DESCRIPTOR = 7,
    CUDNN_BACKEND_KNOB_INFO_DESCRIPTOR = 8,
    CUDNN_BACKEND_LAYOUT_INFO_DESCRIPTOR = 9,
    CUDNN_BACKEND_OPERATION_CONVOLUTION_FORWARD_DESCRIPTOR = 10,
    CUDNN_BACKEND_OPERATION_CONVOLUTION_BACKWARD_FILTER_DESCRIPTOR = 11,
    CUDNN_BACKEND_OPERATION_CONVOLUTION_BACKWARD_DATA_DESCRIPTOR = 12,
    CUDNN_BACKEND_OPERATION_POINTWISE_DESCRIPTOR = 13,
    CUDNN_BACKEND_OPERATION_GEN_STATS_DESCRIPTOR = 14,
    CUDNN_BACKEND_OPERATIONGRAPH_DESCRIPTOR = 15,
    CUDNN_BACKEND_VARIANT_PACK_DESCRIPTOR = 16,
    CUDNN_BACKEND_TENSOR_DESCRIPTOR = 17,
    CUDNN_BACKEND_MATMUL_DESCRIPTOR = 18,
    CUDNN_BACKEND_OPERATION_MATMUL_DESCRIPTOR = 19,
    CUDNN_BACKEND_OPERATION_BN_FINALIZE_STATISTICS_DESCRIPTOR = 20,
    CUDNN_BACKEND_REDUCTION_DESCRIPTOR = 21,
    CUDNN_BACKEND_OPERATION_REDUCTION_DESCRIPTOR = 22,
    CUDNN_BACKEND_OPERATION_BN_BWD_WEIGHTS_DESCRIPTOR = 23,
    CUDNN_BACKEND_RESAMPLE_DESCRIPTOR = 24,
    CUDNN_BACKEND_OPERATION_RESAMPLE_FWD_DESCRIPTOR = 25,
    CUDNN_BACKEND_OPERATION_RESAMPLE_BWD_DESCRIPTOR = 26,
    CUDNN_BACKEND_OPERATION_CONCAT_DESCRIPTOR = 27,
    CUDNN_BACKEND_OPERATION_SIGNAL_DESCRIPTOR = 28,
    CUDNN_BACKEND_OPERATION_NORM_FORWARD_DESCRIPTOR = 29,
    CUDNN_BACKEND_OPERATION_NORM_BACKWARD_DESCRIPTOR = 30,
    CUDNN_BACKEND_OPERATION_RESHAPE_DESCRIPTOR = 31,
    CUDNN_BACKEND_RNG_DESCRIPTOR = 32,
    CUDNN_BACKEND_OPERATION_RNG_DESCRIPTOR = 33,
    CUDNN_BACKEND_KERNEL_CACHE_DESCRIPTOR = 34,
    CUDNN_BACKEND_OPERATION_PAGED_CACHE_LOAD_DESCRIPTOR = 35,
    CUDNN_BACKEND_OPERATION_BLOCK_SCALE_QUANTIZE_DESCRIPTOR = 36,
    CUDNN_BACKEND_OPERATION_BLOCK_SCALE_DEQUANTIZE_DESCRIPTOR = 37,
    CUDNN_BACKEND_DEVICEPROP_DESCRIPTOR = 38,
    CUDNN_BACKEND_OPERATION_EXPAND_BAND_MATRIX_DESCRIPTOR = 39,
    CUDNN_BACKEND_OPERATION_CONTRACT_BAND_MATRIX_DESCRIPTOR = 40,
    CUDNN_BACKEND_OPERATION_SDPA_FWD_DESCRIPTOR = 41,
    CUDNN_BACKEND_OPERATION_MOE_GROUPED_MATMUL_DESCRIPTOR = 42,
    CUDNN_BACKEND_OPERATION_SDPA_BWD_DESCRIPTOR = 43,
    CUDNN_BACKEND_OPERATION_DIAGONAL_BAND_MASK_DESCRIPTOR = 44,
    CUDNN_BACKEND_OPERATION_SOFTMAX_DESCRIPTOR = 45,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnBackendHeurMode_t {
    CUDNN_HEUR_MODE_INSTANT = 0,
    CUDNN_HEUR_MODE_B = 1,
    CUDNN_HEUR_MODE_FALLBACK = 2,
    CUDNN_HEUR_MODE_A = 3,
    CUDNN_HEUR_MODES_COUNT = 4,
}
#[cfg(any(feature = "cudnn-08009"))]
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnBackendKnobType_t {
    CUDNN_KNOB_TYPE_SPLIT_K = 0,
    CUDNN_KNOB_TYPE_SWIZZLE = 1,
    CUDNN_KNOB_TYPE_TILE_SIZE = 2,
    CUDNN_KNOB_TYPE_USE_TEX = 3,
    CUDNN_KNOB_TYPE_EDGE = 4,
    CUDNN_KNOB_TYPE_KBLOCK = 5,
    CUDNN_KNOB_TYPE_LDGA = 6,
    CUDNN_KNOB_TYPE_LDGB = 7,
    CUDNN_KNOB_TYPE_CHUNK_K = 8,
    CUDNN_KNOB_TYPE_SPLIT_H = 9,
    CUDNN_KNOB_TYPE_WINO_TILE = 10,
    CUDNN_KNOB_TYPE_MULTIPLY = 11,
    CUDNN_KNOB_TYPE_SPLIT_K_BUF = 12,
    CUDNN_KNOB_TYPE_TILEK = 13,
    CUDNN_KNOB_TYPE_STAGES = 14,
    CUDNN_KNOB_TYPE_REDUCTION_MODE = 15,
    CUDNN_KNOB_TYPE_CTA_SPLIT_K_MODE = 16,
    CUDNN_KNOB_TYPE_SPLIT_K_SLC = 17,
    CUDNN_KNOB_TYPE_IDX_MODE = 18,
    CUDNN_KNOB_TYPE_SLICED = 19,
    CUDNN_KNOB_TYPE_SPLIT_RS = 20,
    CUDNN_KNOB_TYPE_SINGLEBUFFER = 21,
    CUDNN_KNOB_TYPE_LDGC = 22,
    CUDNN_KNOB_TYPE_SPECFILT = 23,
    CUDNN_KNOB_TYPE_KERNEL_CFG = 24,
    CUDNN_KNOB_TYPE_WORKSPACE = 25,
    CUDNN_KNOB_TYPE_TILE_CGA = 26,
    CUDNN_KNOB_TYPE_TILE_CGA_M = 27,
    CUDNN_KNOB_TYPE_TILE_CGA_N = 28,
    CUDNN_KNOB_TYPE_BLOCK_SIZE = 29,
    CUDNN_KNOB_TYPE_OCCUPANCY = 30,
    CUDNN_KNOB_TYPE_ARRAY_SIZE_PER_THREAD = 31,
    CUDNN_KNOB_TYPE_NUM_C_PER_BLOCK = 32,
    CUDNN_KNOB_TYPE_SPLIT_COLS = 33,
    CUDNN_KNOB_TYPE_TILE_ROWS = 34,
    CUDNN_KNOB_TYPE_TILE_COLS = 35,
    CUDNN_KNOB_TYPE_LOAD_SIZE = 36,
    CUDNN_KNOB_TYPE_COUNTS = 37,
}
#[cfg(any(feature = "cudnn-09010"))]
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnBackendKnobType_t {
    CUDNN_KNOB_TYPE_SPLIT_K = 0,
    CUDNN_KNOB_TYPE_SWIZZLE = 1,
    CUDNN_KNOB_TYPE_TILE_SIZE = 2,
    CUDNN_KNOB_TYPE_USE_TEX = 3,
    CUDNN_KNOB_TYPE_EDGE = 4,
    CUDNN_KNOB_TYPE_KBLOCK = 5,
    CUDNN_KNOB_TYPE_LDGA = 6,
    CUDNN_KNOB_TYPE_LDGB = 7,
    CUDNN_KNOB_TYPE_CHUNK_K = 8,
    CUDNN_KNOB_TYPE_SPLIT_H = 9,
    CUDNN_KNOB_TYPE_WINO_TILE = 10,
    CUDNN_KNOB_TYPE_MULTIPLY = 11,
    CUDNN_KNOB_TYPE_SPLIT_K_BUF = 12,
    CUDNN_KNOB_TYPE_TILEK = 13,
    CUDNN_KNOB_TYPE_STAGES = 14,
    CUDNN_KNOB_TYPE_REDUCTION_MODE = 15,
    CUDNN_KNOB_TYPE_CTA_SPLIT_K_MODE = 16,
    CUDNN_KNOB_TYPE_SPLIT_K_SLC = 17,
    CUDNN_KNOB_TYPE_IDX_MODE = 18,
    CUDNN_KNOB_TYPE_SLICED = 19,
    CUDNN_KNOB_TYPE_SPLIT_RS = 20,
    CUDNN_KNOB_TYPE_SINGLEBUFFER = 21,
    CUDNN_KNOB_TYPE_LDGC = 22,
    CUDNN_KNOB_TYPE_SPECFILT = 23,
    CUDNN_KNOB_TYPE_KERNEL_CFG = 24,
    CUDNN_KNOB_TYPE_WORKSPACE = 25,
    CUDNN_KNOB_TYPE_TILE_CGA = 26,
    CUDNN_KNOB_TYPE_TILE_CGA_M = 27,
    CUDNN_KNOB_TYPE_TILE_CGA_N = 28,
    CUDNN_KNOB_TYPE_BLOCK_SIZE = 29,
    CUDNN_KNOB_TYPE_OCCUPANCY = 30,
    CUDNN_KNOB_TYPE_ARRAY_SIZE_PER_THREAD = 31,
    CUDNN_KNOB_TYPE_NUM_C_PER_BLOCK = 32,
    CUDNN_KNOB_TYPE_SPLIT_COLS = 33,
    CUDNN_KNOB_TYPE_TILE_ROWS = 34,
    CUDNN_KNOB_TYPE_TILE_COLS = 35,
    CUDNN_KNOB_TYPE_LOAD_SIZE = 36,
    CUDNN_KNOB_TYPE_CTA_COUNT = 37,
    CUDNN_KNOB_TYPE_STREAM_K = 38,
    CUDNN_KNOB_TYPE_SPLIT_P_SLC = 39,
    CUDNN_KNOB_TYPE_TILE_M = 40,
    CUDNN_KNOB_TYPE_TILE_N = 41,
    CUDNN_KNOB_TYPE_WARP_SPEC_CFG = 42,
    CUDNN_KNOB_TYPE_COUNTS = 43,
}
#[cfg(any(feature = "cudnn-09021"))]
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnBackendKnobType_t {
    CUDNN_KNOB_TYPE_SPLIT_K = 0,
    CUDNN_KNOB_TYPE_SWIZZLE = 1,
    CUDNN_KNOB_TYPE_TILE_SIZE = 2,
    CUDNN_KNOB_TYPE_USE_TEX = 3,
    CUDNN_KNOB_TYPE_EDGE = 4,
    CUDNN_KNOB_TYPE_KBLOCK = 5,
    CUDNN_KNOB_TYPE_LDGA = 6,
    CUDNN_KNOB_TYPE_LDGB = 7,
    CUDNN_KNOB_TYPE_CHUNK_K = 8,
    CUDNN_KNOB_TYPE_SPLIT_H = 9,
    CUDNN_KNOB_TYPE_WINO_TILE = 10,
    CUDNN_KNOB_TYPE_MULTIPLY = 11,
    CUDNN_KNOB_TYPE_SPLIT_K_BUF = 12,
    CUDNN_KNOB_TYPE_TILEK = 13,
    CUDNN_KNOB_TYPE_STAGES = 14,
    CUDNN_KNOB_TYPE_REDUCTION_MODE = 15,
    CUDNN_KNOB_TYPE_CTA_SPLIT_K_MODE = 16,
    CUDNN_KNOB_TYPE_SPLIT_K_SLC = 17,
    CUDNN_KNOB_TYPE_IDX_MODE = 18,
    CUDNN_KNOB_TYPE_SLICED = 19,
    CUDNN_KNOB_TYPE_SPLIT_RS = 20,
    CUDNN_KNOB_TYPE_SINGLEBUFFER = 21,
    CUDNN_KNOB_TYPE_LDGC = 22,
    CUDNN_KNOB_TYPE_SPECFILT = 23,
    CUDNN_KNOB_TYPE_KERNEL_CFG = 24,
    CUDNN_KNOB_TYPE_WORKSPACE = 25,
    CUDNN_KNOB_TYPE_TILE_CGA = 26,
    CUDNN_KNOB_TYPE_TILE_CGA_M = 27,
    CUDNN_KNOB_TYPE_TILE_CGA_N = 28,
    CUDNN_KNOB_TYPE_BLOCK_SIZE = 29,
    CUDNN_KNOB_TYPE_OCCUPANCY = 30,
    CUDNN_KNOB_TYPE_ARRAY_SIZE_PER_THREAD = 31,
    CUDNN_KNOB_TYPE_NUM_C_PER_BLOCK = 32,
    CUDNN_KNOB_TYPE_SPLIT_COLS = 33,
    CUDNN_KNOB_TYPE_TILE_ROWS = 34,
    CUDNN_KNOB_TYPE_TILE_COLS = 35,
    CUDNN_KNOB_TYPE_LOAD_SIZE = 36,
    CUDNN_KNOB_TYPE_CTA_COUNT = 37,
    CUDNN_KNOB_TYPE_STREAM_K = 38,
    CUDNN_KNOB_TYPE_SPLIT_P_SLC = 39,
    CUDNN_KNOB_TYPE_TILE_M = 40,
    CUDNN_KNOB_TYPE_TILE_N = 41,
    CUDNN_KNOB_TYPE_WARP_SPEC_CFG = 42,
    CUDNN_KNOB_TYPE_SWAP_AB = 43,
    CUDNN_KNOB_TYPE_COUNTS = 44,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnBackendLayoutType_t {
    CUDNN_LAYOUT_TYPE_PREFERRED_NCHW = 0,
    CUDNN_LAYOUT_TYPE_PREFERRED_NHWC = 1,
    CUDNN_LAYOUT_TYPE_PREFERRED_PAD4CK = 2,
    CUDNN_LAYOUT_TYPE_PREFERRED_PAD8CK = 3,
    CUDNN_LAYOUT_TYPE_COUNT = 4,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnBackendNormFwdPhase_t {
    CUDNN_NORM_FWD_INFERENCE = 0,
    CUDNN_NORM_FWD_TRAINING = 1,
}
#[cfg(any(feature = "cudnn-08009"))]
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnBackendNormMode_t {
    CUDNN_LAYER_NORM = 0,
    CUDNN_INSTANCE_NORM = 1,
    CUDNN_BATCH_NORM = 2,
    CUDNN_GROUP_NORM = 3,
    CUDNN_RMS_NORM = 4,
}
#[cfg(any(feature = "cudnn-09010", feature = "cudnn-09021"))]
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnBackendNormMode_t {
    CUDNN_LAYER_NORM = 0,
    CUDNN_INSTANCE_NORM = 1,
    CUDNN_BATCH_NORM = 2,
    CUDNN_GROUP_NORM = 3,
    CUDNN_RMS_NORM = 4,
    CUDNN_ADA_LAYER_NORM = 5,
}
#[cfg(any(feature = "cudnn-08009"))]
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnBackendNumericalNote_t {
    CUDNN_NUMERICAL_NOTE_TENSOR_CORE = 0,
    CUDNN_NUMERICAL_NOTE_DOWN_CONVERT_INPUTS = 1,
    CUDNN_NUMERICAL_NOTE_REDUCED_PRECISION_REDUCTION = 2,
    CUDNN_NUMERICAL_NOTE_FFT = 3,
    CUDNN_NUMERICAL_NOTE_NONDETERMINISTIC = 4,
    CUDNN_NUMERICAL_NOTE_WINOGRAD = 5,
    CUDNN_NUMERICAL_NOTE_WINOGRAD_TILE_4x4 = 6,
    CUDNN_NUMERICAL_NOTE_WINOGRAD_TILE_6x6 = 7,
    CUDNN_NUMERICAL_NOTE_WINOGRAD_TILE_13x13 = 8,
    CUDNN_NUMERICAL_NOTE_TYPE_COUNT = 9,
}
#[cfg(any(feature = "cudnn-09010", feature = "cudnn-09021"))]
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnBackendNumericalNote_t {
    CUDNN_NUMERICAL_NOTE_TENSOR_CORE = 0,
    CUDNN_NUMERICAL_NOTE_DOWN_CONVERT_INPUTS = 1,
    CUDNN_NUMERICAL_NOTE_REDUCED_PRECISION_REDUCTION = 2,
    CUDNN_NUMERICAL_NOTE_FFT = 3,
    CUDNN_NUMERICAL_NOTE_NONDETERMINISTIC = 4,
    CUDNN_NUMERICAL_NOTE_WINOGRAD = 5,
    CUDNN_NUMERICAL_NOTE_WINOGRAD_TILE_4x4 = 6,
    CUDNN_NUMERICAL_NOTE_WINOGRAD_TILE_6x6 = 7,
    CUDNN_NUMERICAL_NOTE_WINOGRAD_TILE_13x13 = 8,
    CUDNN_NUMERICAL_NOTE_STRICT_NAN_PROP = 9,
    CUDNN_NUMERICAL_NOTE_TYPE_COUNT = 10,
}
#[cfg(any(feature = "cudnn-08009"))]
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnBackendTensorReordering_t {
    CUDNN_TENSOR_REORDERING_NONE = 0,
    CUDNN_TENSOR_REORDERING_INT8x32 = 1,
    CUDNN_TENSOR_REORDERING_F16x16 = 2,
}
#[cfg(any(feature = "cudnn-09010", feature = "cudnn-09021"))]
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnBackendTensorReordering_t {
    CUDNN_TENSOR_REORDERING_NONE = 0,
    CUDNN_TENSOR_REORDERING_INT8x32 = 1,
    CUDNN_TENSOR_REORDERING_F16x16 = 2,
    CUDNN_TENSOR_REORDERING_F8_128x4 = 3,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnBatchNormMode_t {
    CUDNN_BATCHNORM_PER_ACTIVATION = 0,
    CUDNN_BATCHNORM_SPATIAL = 1,
    CUDNN_BATCHNORM_SPATIAL_PERSISTENT = 2,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnBatchNormOps_t {
    CUDNN_BATCHNORM_OPS_BN = 0,
    CUDNN_BATCHNORM_OPS_BN_ACTIVATION = 1,
    CUDNN_BATCHNORM_OPS_BN_ADD_ACTIVATION = 2,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnBnFinalizeStatsMode_t {
    CUDNN_BN_FINALIZE_STATISTICS_TRAINING = 0,
    CUDNN_BN_FINALIZE_STATISTICS_INFERENCE = 1,
}
#[cfg(any(feature = "cudnn-09010", feature = "cudnn-09021"))]
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnCTCGradMode_t {
    CUDNN_CTC_ZERO_OOB_GRADIENTS = 0,
    CUDNN_CTC_SKIP_OOB_GRADIENTS = 1,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnCTCLossAlgo_t {
    CUDNN_CTC_LOSS_ALGO_DETERMINISTIC = 0,
    CUDNN_CTC_LOSS_ALGO_NON_DETERMINISTIC = 1,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnConvolutionBwdDataAlgo_t {
    CUDNN_CONVOLUTION_BWD_DATA_ALGO_0 = 0,
    CUDNN_CONVOLUTION_BWD_DATA_ALGO_1 = 1,
    CUDNN_CONVOLUTION_BWD_DATA_ALGO_FFT = 2,
    CUDNN_CONVOLUTION_BWD_DATA_ALGO_FFT_TILING = 3,
    CUDNN_CONVOLUTION_BWD_DATA_ALGO_WINOGRAD = 4,
    CUDNN_CONVOLUTION_BWD_DATA_ALGO_WINOGRAD_NONFUSED = 5,
    CUDNN_CONVOLUTION_BWD_DATA_ALGO_COUNT = 6,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnConvolutionBwdFilterAlgo_t {
    CUDNN_CONVOLUTION_BWD_FILTER_ALGO_0 = 0,
    CUDNN_CONVOLUTION_BWD_FILTER_ALGO_1 = 1,
    CUDNN_CONVOLUTION_BWD_FILTER_ALGO_FFT = 2,
    CUDNN_CONVOLUTION_BWD_FILTER_ALGO_3 = 3,
    CUDNN_CONVOLUTION_BWD_FILTER_ALGO_WINOGRAD = 4,
    CUDNN_CONVOLUTION_BWD_FILTER_ALGO_WINOGRAD_NONFUSED = 5,
    CUDNN_CONVOLUTION_BWD_FILTER_ALGO_FFT_TILING = 6,
    CUDNN_CONVOLUTION_BWD_FILTER_ALGO_COUNT = 7,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnConvolutionFwdAlgo_t {
    CUDNN_CONVOLUTION_FWD_ALGO_IMPLICIT_GEMM = 0,
    CUDNN_CONVOLUTION_FWD_ALGO_IMPLICIT_PRECOMP_GEMM = 1,
    CUDNN_CONVOLUTION_FWD_ALGO_GEMM = 2,
    CUDNN_CONVOLUTION_FWD_ALGO_DIRECT = 3,
    CUDNN_CONVOLUTION_FWD_ALGO_FFT = 4,
    CUDNN_CONVOLUTION_FWD_ALGO_FFT_TILING = 5,
    CUDNN_CONVOLUTION_FWD_ALGO_WINOGRAD = 6,
    CUDNN_CONVOLUTION_FWD_ALGO_WINOGRAD_NONFUSED = 7,
    CUDNN_CONVOLUTION_FWD_ALGO_COUNT = 8,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnConvolutionMode_t {
    CUDNN_CONVOLUTION = 0,
    CUDNN_CROSS_CORRELATION = 1,
}
#[cfg(any(feature = "cudnn-08009"))]
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnDataType_t {
    CUDNN_DATA_FLOAT = 0,
    CUDNN_DATA_DOUBLE = 1,
    CUDNN_DATA_HALF = 2,
    CUDNN_DATA_INT8 = 3,
    CUDNN_DATA_INT32 = 4,
    CUDNN_DATA_INT8x4 = 5,
    CUDNN_DATA_UINT8 = 6,
    CUDNN_DATA_UINT8x4 = 7,
    CUDNN_DATA_INT8x32 = 8,
    CUDNN_DATA_BFLOAT16 = 9,
    CUDNN_DATA_INT64 = 10,
    CUDNN_DATA_BOOLEAN = 11,
    CUDNN_DATA_FP8_E4M3 = 12,
    CUDNN_DATA_FP8_E5M2 = 13,
    CUDNN_DATA_FAST_FLOAT_FOR_FP8 = 14,
}
#[cfg(any(feature = "cudnn-09010"))]
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnDataType_t {
    CUDNN_DATA_FLOAT = 0,
    CUDNN_DATA_DOUBLE = 1,
    CUDNN_DATA_HALF = 2,
    CUDNN_DATA_INT8 = 3,
    CUDNN_DATA_INT32 = 4,
    CUDNN_DATA_INT8x4 = 5,
    CUDNN_DATA_UINT8 = 6,
    CUDNN_DATA_UINT8x4 = 7,
    CUDNN_DATA_INT8x32 = 8,
    CUDNN_DATA_BFLOAT16 = 9,
    CUDNN_DATA_INT64 = 10,
    CUDNN_DATA_BOOLEAN = 11,
    CUDNN_DATA_FP8_E4M3 = 12,
    CUDNN_DATA_FP8_E5M2 = 13,
    CUDNN_DATA_FAST_FLOAT_FOR_FP8 = 14,
    CUDNN_DATA_FP8_E8M0 = 15,
    CUDNN_DATA_FP4_E2M1 = 16,
}
#[cfg(any(feature = "cudnn-09021"))]
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnDataType_t {
    CUDNN_DATA_FLOAT = 0,
    CUDNN_DATA_DOUBLE = 1,
    CUDNN_DATA_HALF = 2,
    CUDNN_DATA_INT8 = 3,
    CUDNN_DATA_INT32 = 4,
    CUDNN_DATA_INT8x4 = 5,
    CUDNN_DATA_UINT8 = 6,
    CUDNN_DATA_UINT8x4 = 7,
    CUDNN_DATA_INT8x32 = 8,
    CUDNN_DATA_BFLOAT16 = 9,
    CUDNN_DATA_INT64 = 10,
    CUDNN_DATA_BOOLEAN = 11,
    CUDNN_DATA_FP8_E4M3 = 12,
    CUDNN_DATA_FP8_E5M2 = 13,
    CUDNN_DATA_FAST_FLOAT_FOR_FP8 = 14,
    CUDNN_DATA_FP8_E8M0 = 15,
    CUDNN_DATA_FP4_E2M1 = 16,
    CUDNN_DATA_INT4 = 17,
    CUDNN_DATA_UINT4 = 18,
    CUDNN_DATA_UINT32 = 19,
    CUDNN_DATA_COMPLEX_FP32 = 20,
    CUDNN_DATA_COMPLEX_FP64 = 21,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnDeterminism_t {
    CUDNN_NON_DETERMINISTIC = 0,
    CUDNN_DETERMINISTIC = 1,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnDirectionMode_t {
    CUDNN_UNIDIRECTIONAL = 0,
    CUDNN_BIDIRECTIONAL = 1,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnDivNormMode_t {
    CUDNN_DIVNORM_PRECOMPUTED_MEANS = 0,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnErrQueryMode_t {
    CUDNN_ERRQUERY_RAWCODE = 0,
    CUDNN_ERRQUERY_NONBLOCKING = 1,
    CUDNN_ERRQUERY_BLOCKING = 2,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnFoldingDirection_t {
    CUDNN_TRANSFORM_FOLD = 0,
    CUDNN_TRANSFORM_UNFOLD = 1,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnForwardMode_t {
    CUDNN_FWD_MODE_INFERENCE = 0,
    CUDNN_FWD_MODE_TRAINING = 1,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnFusedOpsConstParamLabel_t {
    CUDNN_PARAM_XDESC = 0,
    CUDNN_PARAM_XDATA_PLACEHOLDER = 1,
    CUDNN_PARAM_BN_MODE = 2,
    CUDNN_PARAM_BN_EQSCALEBIAS_DESC = 3,
    CUDNN_PARAM_BN_EQSCALE_PLACEHOLDER = 4,
    CUDNN_PARAM_BN_EQBIAS_PLACEHOLDER = 5,
    CUDNN_PARAM_ACTIVATION_DESC = 6,
    CUDNN_PARAM_CONV_DESC = 7,
    CUDNN_PARAM_WDESC = 8,
    CUDNN_PARAM_WDATA_PLACEHOLDER = 9,
    CUDNN_PARAM_DWDESC = 10,
    CUDNN_PARAM_DWDATA_PLACEHOLDER = 11,
    CUDNN_PARAM_YDESC = 12,
    CUDNN_PARAM_YDATA_PLACEHOLDER = 13,
    CUDNN_PARAM_DYDESC = 14,
    CUDNN_PARAM_DYDATA_PLACEHOLDER = 15,
    CUDNN_PARAM_YSTATS_DESC = 16,
    CUDNN_PARAM_YSUM_PLACEHOLDER = 17,
    CUDNN_PARAM_YSQSUM_PLACEHOLDER = 18,
    CUDNN_PARAM_BN_SCALEBIAS_MEANVAR_DESC = 19,
    CUDNN_PARAM_BN_SCALE_PLACEHOLDER = 20,
    CUDNN_PARAM_BN_BIAS_PLACEHOLDER = 21,
    CUDNN_PARAM_BN_SAVED_MEAN_PLACEHOLDER = 22,
    CUDNN_PARAM_BN_SAVED_INVSTD_PLACEHOLDER = 23,
    CUDNN_PARAM_BN_RUNNING_MEAN_PLACEHOLDER = 24,
    CUDNN_PARAM_BN_RUNNING_VAR_PLACEHOLDER = 25,
    CUDNN_PARAM_ZDESC = 26,
    CUDNN_PARAM_ZDATA_PLACEHOLDER = 27,
    CUDNN_PARAM_BN_Z_EQSCALEBIAS_DESC = 28,
    CUDNN_PARAM_BN_Z_EQSCALE_PLACEHOLDER = 29,
    CUDNN_PARAM_BN_Z_EQBIAS_PLACEHOLDER = 30,
    CUDNN_PARAM_ACTIVATION_BITMASK_DESC = 31,
    CUDNN_PARAM_ACTIVATION_BITMASK_PLACEHOLDER = 32,
    CUDNN_PARAM_DXDESC = 33,
    CUDNN_PARAM_DXDATA_PLACEHOLDER = 34,
    CUDNN_PARAM_DZDESC = 35,
    CUDNN_PARAM_DZDATA_PLACEHOLDER = 36,
    CUDNN_PARAM_BN_DSCALE_PLACEHOLDER = 37,
    CUDNN_PARAM_BN_DBIAS_PLACEHOLDER = 38,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnFusedOpsPointerPlaceHolder_t {
    CUDNN_PTR_NULL = 0,
    CUDNN_PTR_ELEM_ALIGNED = 1,
    CUDNN_PTR_16B_ALIGNED = 2,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnFusedOpsVariantParamLabel_t {
    CUDNN_PTR_XDATA = 0,
    CUDNN_PTR_BN_EQSCALE = 1,
    CUDNN_PTR_BN_EQBIAS = 2,
    CUDNN_PTR_WDATA = 3,
    CUDNN_PTR_DWDATA = 4,
    CUDNN_PTR_YDATA = 5,
    CUDNN_PTR_DYDATA = 6,
    CUDNN_PTR_YSUM = 7,
    CUDNN_PTR_YSQSUM = 8,
    CUDNN_PTR_WORKSPACE = 9,
    CUDNN_PTR_BN_SCALE = 10,
    CUDNN_PTR_BN_BIAS = 11,
    CUDNN_PTR_BN_SAVED_MEAN = 12,
    CUDNN_PTR_BN_SAVED_INVSTD = 13,
    CUDNN_PTR_BN_RUNNING_MEAN = 14,
    CUDNN_PTR_BN_RUNNING_VAR = 15,
    CUDNN_PTR_ZDATA = 16,
    CUDNN_PTR_BN_Z_EQSCALE = 17,
    CUDNN_PTR_BN_Z_EQBIAS = 18,
    CUDNN_PTR_ACTIVATION_BITMASK = 19,
    CUDNN_PTR_DXDATA = 20,
    CUDNN_PTR_DZDATA = 21,
    CUDNN_PTR_BN_DSCALE = 22,
    CUDNN_PTR_BN_DBIAS = 23,
    CUDNN_SCALAR_SIZE_T_WORKSPACE_SIZE_IN_BYTES = 100,
    CUDNN_SCALAR_INT64_T_BN_ACCUMULATION_COUNT = 101,
    CUDNN_SCALAR_DOUBLE_BN_EXP_AVG_FACTOR = 102,
    CUDNN_SCALAR_DOUBLE_BN_EPSILON = 103,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnFusedOps_t {
    CUDNN_FUSED_SCALE_BIAS_ACTIVATION_CONV_BNSTATS = 0,
    CUDNN_FUSED_SCALE_BIAS_ACTIVATION_WGRAD = 1,
    CUDNN_FUSED_BN_FINALIZE_STATISTICS_TRAINING = 2,
    CUDNN_FUSED_BN_FINALIZE_STATISTICS_INFERENCE = 3,
    CUDNN_FUSED_CONV_SCALE_BIAS_ADD_ACTIVATION = 4,
    CUDNN_FUSED_SCALE_BIAS_ADD_ACTIVATION_GEN_BITMASK = 5,
    CUDNN_FUSED_DACTIVATION_FORK_DBATCHNORM = 6,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnGenStatsMode_t {
    CUDNN_GENSTATS_SUM_SQSUM = 0,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnIndicesType_t {
    CUDNN_32BIT_INDICES = 0,
    CUDNN_64BIT_INDICES = 1,
    CUDNN_16BIT_INDICES = 2,
    CUDNN_8BIT_INDICES = 3,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnLRNMode_t {
    CUDNN_LRN_CROSS_CHANNEL_DIM1 = 0,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnLossNormalizationMode_t {
    CUDNN_LOSS_NORMALIZATION_NONE = 0,
    CUDNN_LOSS_NORMALIZATION_SOFTMAX = 1,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnMathType_t {
    CUDNN_DEFAULT_MATH = 0,
    CUDNN_TENSOR_OP_MATH = 1,
    CUDNN_TENSOR_OP_MATH_ALLOW_CONVERSION = 2,
    CUDNN_FMA_MATH = 3,
}
#[cfg(any(feature = "cudnn-09021"))]
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnMoeGroupedMatmulMode_t {
    CUDNN_MOE_GROUPED_MATMUL_MODE_NONE = 0,
    CUDNN_MOE_GROUPED_MATMUL_MODE_GATHER = 1,
    CUDNN_MOE_GROUPED_MATMUL_MODE_SCATTER = 2,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnMultiHeadAttnWeightKind_t {
    CUDNN_MH_ATTN_Q_WEIGHTS = 0,
    CUDNN_MH_ATTN_K_WEIGHTS = 1,
    CUDNN_MH_ATTN_V_WEIGHTS = 2,
    CUDNN_MH_ATTN_O_WEIGHTS = 3,
    CUDNN_MH_ATTN_Q_BIASES = 4,
    CUDNN_MH_ATTN_K_BIASES = 5,
    CUDNN_MH_ATTN_V_BIASES = 6,
    CUDNN_MH_ATTN_O_BIASES = 7,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnNanPropagation_t {
    CUDNN_NOT_PROPAGATE_NAN = 0,
    CUDNN_PROPAGATE_NAN = 1,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnNormAlgo_t {
    CUDNN_NORM_ALGO_STANDARD = 0,
    CUDNN_NORM_ALGO_PERSIST = 1,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnNormMode_t {
    CUDNN_NORM_PER_ACTIVATION = 0,
    CUDNN_NORM_PER_CHANNEL = 1,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnNormOps_t {
    CUDNN_NORM_OPS_NORM = 0,
    CUDNN_NORM_OPS_NORM_ACTIVATION = 1,
    CUDNN_NORM_OPS_NORM_ADD_ACTIVATION = 2,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnOpTensorOp_t {
    CUDNN_OP_TENSOR_ADD = 0,
    CUDNN_OP_TENSOR_MUL = 1,
    CUDNN_OP_TENSOR_MIN = 2,
    CUDNN_OP_TENSOR_MAX = 3,
    CUDNN_OP_TENSOR_SQRT = 4,
    CUDNN_OP_TENSOR_NOT = 5,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnPaddingMode_t {
    CUDNN_ZERO_PAD = 0,
    CUDNN_NEG_INF_PAD = 1,
    CUDNN_EDGE_VAL_PAD = 2,
}
#[cfg(any(feature = "cudnn-08009"))]
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnPointwiseMode_t {
    CUDNN_POINTWISE_ADD = 0,
    CUDNN_POINTWISE_ADD_SQUARE = 5,
    CUDNN_POINTWISE_DIV = 6,
    CUDNN_POINTWISE_MAX = 3,
    CUDNN_POINTWISE_MIN = 2,
    CUDNN_POINTWISE_MOD = 7,
    CUDNN_POINTWISE_MUL = 1,
    CUDNN_POINTWISE_POW = 8,
    CUDNN_POINTWISE_SUB = 9,
    CUDNN_POINTWISE_ABS = 10,
    CUDNN_POINTWISE_CEIL = 11,
    CUDNN_POINTWISE_COS = 12,
    CUDNN_POINTWISE_EXP = 13,
    CUDNN_POINTWISE_FLOOR = 14,
    CUDNN_POINTWISE_LOG = 15,
    CUDNN_POINTWISE_NEG = 16,
    CUDNN_POINTWISE_RSQRT = 17,
    CUDNN_POINTWISE_SIN = 18,
    CUDNN_POINTWISE_SQRT = 4,
    CUDNN_POINTWISE_TAN = 19,
    CUDNN_POINTWISE_ERF = 20,
    CUDNN_POINTWISE_IDENTITY = 21,
    CUDNN_POINTWISE_RECIPROCAL = 22,
    CUDNN_POINTWISE_RELU_FWD = 100,
    CUDNN_POINTWISE_TANH_FWD = 101,
    CUDNN_POINTWISE_SIGMOID_FWD = 102,
    CUDNN_POINTWISE_ELU_FWD = 103,
    CUDNN_POINTWISE_GELU_FWD = 104,
    CUDNN_POINTWISE_SOFTPLUS_FWD = 105,
    CUDNN_POINTWISE_SWISH_FWD = 106,
    CUDNN_POINTWISE_GELU_APPROX_TANH_FWD = 107,
    CUDNN_POINTWISE_RELU_BWD = 200,
    CUDNN_POINTWISE_TANH_BWD = 201,
    CUDNN_POINTWISE_SIGMOID_BWD = 202,
    CUDNN_POINTWISE_ELU_BWD = 203,
    CUDNN_POINTWISE_GELU_BWD = 204,
    CUDNN_POINTWISE_SOFTPLUS_BWD = 205,
    CUDNN_POINTWISE_SWISH_BWD = 206,
    CUDNN_POINTWISE_GELU_APPROX_TANH_BWD = 207,
    CUDNN_POINTWISE_CMP_EQ = 300,
    CUDNN_POINTWISE_CMP_NEQ = 301,
    CUDNN_POINTWISE_CMP_GT = 302,
    CUDNN_POINTWISE_CMP_GE = 303,
    CUDNN_POINTWISE_CMP_LT = 304,
    CUDNN_POINTWISE_CMP_LE = 305,
    CUDNN_POINTWISE_LOGICAL_AND = 400,
    CUDNN_POINTWISE_LOGICAL_OR = 401,
    CUDNN_POINTWISE_LOGICAL_NOT = 402,
    CUDNN_POINTWISE_GEN_INDEX = 501,
    CUDNN_POINTWISE_BINARY_SELECT = 601,
}
#[cfg(any(feature = "cudnn-09010", feature = "cudnn-09021"))]
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnPointwiseMode_t {
    CUDNN_POINTWISE_ADD = 0,
    CUDNN_POINTWISE_ADD_SQUARE = 5,
    CUDNN_POINTWISE_DIV = 6,
    CUDNN_POINTWISE_MAX = 3,
    CUDNN_POINTWISE_MIN = 2,
    CUDNN_POINTWISE_MOD = 7,
    CUDNN_POINTWISE_MUL = 1,
    CUDNN_POINTWISE_POW = 8,
    CUDNN_POINTWISE_SUB = 9,
    CUDNN_POINTWISE_ABS = 10,
    CUDNN_POINTWISE_CEIL = 11,
    CUDNN_POINTWISE_COS = 12,
    CUDNN_POINTWISE_EXP = 13,
    CUDNN_POINTWISE_FLOOR = 14,
    CUDNN_POINTWISE_LOG = 15,
    CUDNN_POINTWISE_NEG = 16,
    CUDNN_POINTWISE_RSQRT = 17,
    CUDNN_POINTWISE_SIN = 18,
    CUDNN_POINTWISE_SQRT = 4,
    CUDNN_POINTWISE_TAN = 19,
    CUDNN_POINTWISE_ERF = 20,
    CUDNN_POINTWISE_IDENTITY = 21,
    CUDNN_POINTWISE_RECIPROCAL = 22,
    CUDNN_POINTWISE_ATAN2 = 23,
    CUDNN_POINTWISE_RELU_FWD = 100,
    CUDNN_POINTWISE_TANH_FWD = 101,
    CUDNN_POINTWISE_SIGMOID_FWD = 102,
    CUDNN_POINTWISE_ELU_FWD = 103,
    CUDNN_POINTWISE_GELU_FWD = 104,
    CUDNN_POINTWISE_SOFTPLUS_FWD = 105,
    CUDNN_POINTWISE_SWISH_FWD = 106,
    CUDNN_POINTWISE_GELU_APPROX_TANH_FWD = 107,
    CUDNN_POINTWISE_RELU_BWD = 200,
    CUDNN_POINTWISE_TANH_BWD = 201,
    CUDNN_POINTWISE_SIGMOID_BWD = 202,
    CUDNN_POINTWISE_ELU_BWD = 203,
    CUDNN_POINTWISE_GELU_BWD = 204,
    CUDNN_POINTWISE_SOFTPLUS_BWD = 205,
    CUDNN_POINTWISE_SWISH_BWD = 206,
    CUDNN_POINTWISE_GELU_APPROX_TANH_BWD = 207,
    CUDNN_POINTWISE_CMP_EQ = 300,
    CUDNN_POINTWISE_CMP_NEQ = 301,
    CUDNN_POINTWISE_CMP_GT = 302,
    CUDNN_POINTWISE_CMP_GE = 303,
    CUDNN_POINTWISE_CMP_LT = 304,
    CUDNN_POINTWISE_CMP_LE = 305,
    CUDNN_POINTWISE_LOGICAL_AND = 400,
    CUDNN_POINTWISE_LOGICAL_OR = 401,
    CUDNN_POINTWISE_LOGICAL_NOT = 402,
    CUDNN_POINTWISE_GEN_INDEX = 501,
    CUDNN_POINTWISE_BINARY_SELECT = 601,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnPoolingMode_t {
    CUDNN_POOLING_MAX = 0,
    CUDNN_POOLING_AVERAGE_COUNT_INCLUDE_PADDING = 1,
    CUDNN_POOLING_AVERAGE_COUNT_EXCLUDE_PADDING = 2,
    CUDNN_POOLING_MAX_DETERMINISTIC = 3,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnRNNAlgo_t {
    CUDNN_RNN_ALGO_STANDARD = 0,
    CUDNN_RNN_ALGO_PERSIST_STATIC = 1,
    CUDNN_RNN_ALGO_PERSIST_DYNAMIC = 2,
    CUDNN_RNN_ALGO_PERSIST_STATIC_SMALL_H = 3,
    CUDNN_RNN_ALGO_COUNT = 4,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnRNNBiasMode_t {
    CUDNN_RNN_NO_BIAS = 0,
    CUDNN_RNN_SINGLE_INP_BIAS = 1,
    CUDNN_RNN_DOUBLE_BIAS = 2,
    CUDNN_RNN_SINGLE_REC_BIAS = 3,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnRNNClipMode_t {
    CUDNN_RNN_CLIP_NONE = 0,
    CUDNN_RNN_CLIP_MINMAX = 1,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnRNNDataLayout_t {
    CUDNN_RNN_DATA_LAYOUT_SEQ_MAJOR_UNPACKED = 0,
    CUDNN_RNN_DATA_LAYOUT_SEQ_MAJOR_PACKED = 1,
    CUDNN_RNN_DATA_LAYOUT_BATCH_MAJOR_UNPACKED = 2,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnRNNInputMode_t {
    CUDNN_LINEAR_INPUT = 0,
    CUDNN_SKIP_INPUT = 1,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnRNNMode_t {
    CUDNN_RNN_RELU = 0,
    CUDNN_RNN_TANH = 1,
    CUDNN_LSTM = 2,
    CUDNN_GRU = 3,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnReduceTensorIndices_t {
    CUDNN_REDUCE_TENSOR_NO_INDICES = 0,
    CUDNN_REDUCE_TENSOR_FLATTENED_INDICES = 1,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnReduceTensorOp_t {
    CUDNN_REDUCE_TENSOR_ADD = 0,
    CUDNN_REDUCE_TENSOR_MUL = 1,
    CUDNN_REDUCE_TENSOR_MIN = 2,
    CUDNN_REDUCE_TENSOR_MAX = 3,
    CUDNN_REDUCE_TENSOR_AMAX = 4,
    CUDNN_REDUCE_TENSOR_AVG = 5,
    CUDNN_REDUCE_TENSOR_NORM1 = 6,
    CUDNN_REDUCE_TENSOR_NORM2 = 7,
    CUDNN_REDUCE_TENSOR_MUL_NO_ZEROS = 8,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnReorderType_t {
    CUDNN_DEFAULT_REORDER = 0,
    CUDNN_NO_REORDER = 1,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnResampleMode_t {
    CUDNN_RESAMPLE_NEAREST = 0,
    CUDNN_RESAMPLE_BILINEAR = 1,
    CUDNN_RESAMPLE_AVGPOOL = 2,
    CUDNN_RESAMPLE_AVGPOOL_EXCLUDE_PADDING = 4,
    CUDNN_RESAMPLE_MAXPOOL = 3,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnRngDistribution_t {
    CUDNN_RNG_DISTRIBUTION_BERNOULLI = 0,
    CUDNN_RNG_DISTRIBUTION_UNIFORM = 1,
    CUDNN_RNG_DISTRIBUTION_NORMAL = 2,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnSamplerType_t {
    CUDNN_SAMPLER_BILINEAR = 0,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnSeqDataAxis_t {
    CUDNN_SEQDATA_TIME_DIM = 0,
    CUDNN_SEQDATA_BATCH_DIM = 1,
    CUDNN_SEQDATA_BEAM_DIM = 2,
    CUDNN_SEQDATA_VECT_DIM = 3,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnSeverity_t {
    CUDNN_SEV_FATAL = 0,
    CUDNN_SEV_ERROR = 1,
    CUDNN_SEV_WARNING = 2,
    CUDNN_SEV_INFO = 3,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnSignalMode_t {
    CUDNN_SIGNAL_SET = 0,
    CUDNN_SIGNAL_WAIT = 1,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnSoftmaxAlgorithm_t {
    CUDNN_SOFTMAX_FAST = 0,
    CUDNN_SOFTMAX_ACCURATE = 1,
    CUDNN_SOFTMAX_LOG = 2,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnSoftmaxMode_t {
    CUDNN_SOFTMAX_MODE_INSTANCE = 0,
    CUDNN_SOFTMAX_MODE_CHANNEL = 1,
}
#[cfg(any(feature = "cudnn-08009"))]
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnStatus_t {
    CUDNN_STATUS_SUCCESS = 0,
    CUDNN_STATUS_NOT_INITIALIZED = 1,
    CUDNN_STATUS_ALLOC_FAILED = 2,
    CUDNN_STATUS_BAD_PARAM = 3,
    CUDNN_STATUS_INTERNAL_ERROR = 4,
    CUDNN_STATUS_INVALID_VALUE = 5,
    CUDNN_STATUS_ARCH_MISMATCH = 6,
    CUDNN_STATUS_MAPPING_ERROR = 7,
    CUDNN_STATUS_EXECUTION_FAILED = 8,
    CUDNN_STATUS_NOT_SUPPORTED = 9,
    CUDNN_STATUS_LICENSE_ERROR = 10,
    CUDNN_STATUS_RUNTIME_PREREQUISITE_MISSING = 11,
    CUDNN_STATUS_RUNTIME_IN_PROGRESS = 12,
    CUDNN_STATUS_RUNTIME_FP_OVERFLOW = 13,
    CUDNN_STATUS_VERSION_MISMATCH = 14,
}
#[cfg(any(feature = "cudnn-09010"))]
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnStatus_t {
    CUDNN_STATUS_SUCCESS = 0,
    CUDNN_STATUS_NOT_INITIALIZED = 1001,
    CUDNN_STATUS_SUBLIBRARY_VERSION_MISMATCH = 1002,
    CUDNN_STATUS_SERIALIZATION_VERSION_MISMATCH = 1003,
    CUDNN_STATUS_DEPRECATED = 1004,
    CUDNN_STATUS_LICENSE_ERROR = 1005,
    CUDNN_STATUS_RUNTIME_IN_PROGRESS = 1006,
    CUDNN_STATUS_RUNTIME_FP_OVERFLOW = 1007,
    CUDNN_STATUS_SUBLIBRARY_LOADING_FAILED = 1008,
    CUDNN_STATUS_BAD_PARAM = 2000,
    CUDNN_STATUS_BAD_PARAM_NULL_POINTER = 2002,
    CUDNN_STATUS_BAD_PARAM_MISALIGNED_POINTER = 2003,
    CUDNN_STATUS_BAD_PARAM_NOT_FINALIZED = 2004,
    CUDNN_STATUS_BAD_PARAM_OUT_OF_BOUND = 2005,
    CUDNN_STATUS_BAD_PARAM_SIZE_INSUFFICIENT = 2006,
    CUDNN_STATUS_BAD_PARAM_STREAM_MISMATCH = 2007,
    CUDNN_STATUS_BAD_PARAM_SHAPE_MISMATCH = 2008,
    CUDNN_STATUS_BAD_PARAM_DUPLICATED_ENTRIES = 2009,
    CUDNN_STATUS_BAD_PARAM_ATTRIBUTE_TYPE = 2010,
    CUDNN_STATUS_BAD_PARAM_CUDA_GRAPH_MISMATCH = 2011,
    CUDNN_STATUS_BAD_PARAM_DESCRIPTOR_TYPE = 2012,
    CUDNN_STATUS_NOT_SUPPORTED = 3000,
    CUDNN_STATUS_NOT_SUPPORTED_GRAPH_PATTERN = 3001,
    CUDNN_STATUS_NOT_SUPPORTED_SHAPE = 3002,
    CUDNN_STATUS_NOT_SUPPORTED_DATA_TYPE = 3003,
    CUDNN_STATUS_NOT_SUPPORTED_LAYOUT = 3004,
    CUDNN_STATUS_NOT_SUPPORTED_INCOMPATIBLE_CUDA_DRIVER = 3005,
    CUDNN_STATUS_NOT_SUPPORTED_INCOMPATIBLE_CUDART = 3006,
    CUDNN_STATUS_NOT_SUPPORTED_ARCH_MISMATCH = 3007,
    CUDNN_STATUS_NOT_SUPPORTED_RUNTIME_PREREQUISITE_MISSING = 3008,
    CUDNN_STATUS_NOT_SUPPORTED_SUBLIBRARY_UNAVAILABLE = 3009,
    CUDNN_STATUS_NOT_SUPPORTED_SHARED_MEMORY_INSUFFICIENT = 3010,
    CUDNN_STATUS_NOT_SUPPORTED_PADDING = 3011,
    CUDNN_STATUS_NOT_SUPPORTED_BAD_LAUNCH_PARAM = 3012,
    CUDNN_STATUS_NOT_SUPPORTED_CUDA_GRAPH_NATIVE_API = 3013,
    CUDNN_STATUS_INTERNAL_ERROR = 4000,
    CUDNN_STATUS_INTERNAL_ERROR_COMPILATION_FAILED = 4001,
    CUDNN_STATUS_INTERNAL_ERROR_UNEXPECTED_VALUE = 4002,
    CUDNN_STATUS_INTERNAL_ERROR_HOST_ALLOCATION_FAILED = 4003,
    CUDNN_STATUS_INTERNAL_ERROR_DEVICE_ALLOCATION_FAILED = 4004,
    CUDNN_STATUS_INTERNAL_ERROR_BAD_LAUNCH_PARAM = 4005,
    CUDNN_STATUS_INTERNAL_ERROR_TEXTURE_CREATION_FAILED = 4006,
    CUDNN_STATUS_EXECUTION_FAILED = 5000,
    CUDNN_STATUS_EXECUTION_FAILED_CUDA_DRIVER = 5001,
    CUDNN_STATUS_EXECUTION_FAILED_CUBLAS = 5002,
    CUDNN_STATUS_EXECUTION_FAILED_CUDART = 5003,
    CUDNN_STATUS_EXECUTION_FAILED_CURAND = 5004,
    CUDNN_STATUS_INVALID_VALUE = 2001,
}
#[cfg(any(feature = "cudnn-09021"))]
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnStatus_t {
    CUDNN_STATUS_SUCCESS = 0,
    CUDNN_STATUS_NOT_INITIALIZED = 1001,
    CUDNN_STATUS_SUBLIBRARY_VERSION_MISMATCH = 1002,
    CUDNN_STATUS_SERIALIZATION_VERSION_MISMATCH = 1003,
    CUDNN_STATUS_DEPRECATED = 1004,
    CUDNN_STATUS_LICENSE_ERROR = 1005,
    CUDNN_STATUS_RUNTIME_IN_PROGRESS = 1006,
    CUDNN_STATUS_RUNTIME_FP_OVERFLOW = 1007,
    CUDNN_STATUS_SUBLIBRARY_LOADING_FAILED = 1008,
    CUDNN_STATUS_BAD_PARAM = 2000,
    CUDNN_STATUS_BAD_PARAM_NULL_POINTER = 2002,
    CUDNN_STATUS_BAD_PARAM_MISALIGNED_POINTER = 2003,
    CUDNN_STATUS_BAD_PARAM_NOT_FINALIZED = 2004,
    CUDNN_STATUS_BAD_PARAM_OUT_OF_BOUND = 2005,
    CUDNN_STATUS_BAD_PARAM_SIZE_INSUFFICIENT = 2006,
    CUDNN_STATUS_BAD_PARAM_STREAM_MISMATCH = 2007,
    CUDNN_STATUS_BAD_PARAM_SHAPE_MISMATCH = 2008,
    CUDNN_STATUS_BAD_PARAM_DUPLICATED_ENTRIES = 2009,
    CUDNN_STATUS_BAD_PARAM_ATTRIBUTE_TYPE = 2010,
    CUDNN_STATUS_BAD_PARAM_CUDA_GRAPH_MISMATCH = 2011,
    CUDNN_STATUS_BAD_PARAM_DESCRIPTOR_TYPE = 2012,
    CUDNN_STATUS_NOT_SUPPORTED = 3000,
    CUDNN_STATUS_NOT_SUPPORTED_GRAPH_PATTERN = 3001,
    CUDNN_STATUS_NOT_SUPPORTED_SHAPE = 3002,
    CUDNN_STATUS_NOT_SUPPORTED_DATA_TYPE = 3003,
    CUDNN_STATUS_NOT_SUPPORTED_LAYOUT = 3004,
    CUDNN_STATUS_NOT_SUPPORTED_INCOMPATIBLE_CUDA_DRIVER = 3005,
    CUDNN_STATUS_NOT_SUPPORTED_INCOMPATIBLE_CUDART = 3006,
    CUDNN_STATUS_NOT_SUPPORTED_ARCH_MISMATCH = 3007,
    CUDNN_STATUS_NOT_SUPPORTED_RUNTIME_PREREQUISITE_MISSING = 3008,
    CUDNN_STATUS_NOT_SUPPORTED_SUBLIBRARY_UNAVAILABLE = 3009,
    CUDNN_STATUS_NOT_SUPPORTED_SHARED_MEMORY_INSUFFICIENT = 3010,
    CUDNN_STATUS_NOT_SUPPORTED_PADDING = 3011,
    CUDNN_STATUS_NOT_SUPPORTED_BAD_LAUNCH_PARAM = 3012,
    CUDNN_STATUS_NOT_SUPPORTED_CUDA_GRAPH_NATIVE_API = 3013,
    CUDNN_STATUS_NOT_SUPPORTED_INVALID_DYNAMIC_SHAPE = 3014,
    CUDNN_STATUS_INTERNAL_ERROR = 4000,
    CUDNN_STATUS_INTERNAL_ERROR_COMPILATION_FAILED = 4001,
    CUDNN_STATUS_INTERNAL_ERROR_UNEXPECTED_VALUE = 4002,
    CUDNN_STATUS_INTERNAL_ERROR_HOST_ALLOCATION_FAILED = 4003,
    CUDNN_STATUS_INTERNAL_ERROR_DEVICE_ALLOCATION_FAILED = 4004,
    CUDNN_STATUS_INTERNAL_ERROR_BAD_LAUNCH_PARAM = 4005,
    CUDNN_STATUS_INTERNAL_ERROR_TEXTURE_CREATION_FAILED = 4006,
    CUDNN_STATUS_EXECUTION_FAILED = 5000,
    CUDNN_STATUS_EXECUTION_FAILED_CUDA_DRIVER = 5001,
    CUDNN_STATUS_EXECUTION_FAILED_CUBLAS = 5002,
    CUDNN_STATUS_EXECUTION_FAILED_CUDART = 5003,
    CUDNN_STATUS_EXECUTION_FAILED_CURAND = 5004,
    CUDNN_STATUS_INVALID_VALUE = 2001,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnTensorFormat_t {
    CUDNN_TENSOR_NCHW = 0,
    CUDNN_TENSOR_NHWC = 1,
    CUDNN_TENSOR_NCHW_VECT_C = 2,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum cudnnWgradMode_t {
    CUDNN_WGRAD_MODE_ADD = 0,
    CUDNN_WGRAD_MODE_SET = 1,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum libraryPropertyType_t {
    MAJOR_VERSION = 0,
    MINOR_VERSION = 1,
    PATCH_LEVEL = 2,
}
#[cfg(any(feature = "cudnn-09010", feature = "cudnn-09021"))]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct CUgraph_st {
    _unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct CUstream_st {
    _unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct cudnnActivationStruct {
    _unused: [u8; 0],
}
#[cfg(any(feature = "cudnn-08009"))]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct cudnnAlgorithmPerformanceStruct {
    _unused: [u8; 0],
}
#[cfg(any(feature = "cudnn-08009"))]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct cudnnAlgorithmStruct {
    _unused: [u8; 0],
}
#[cfg(any(feature = "cudnn-08009"))]
#[repr(C)]
#[derive(Copy, Clone)]
pub struct cudnnAlgorithmUnionStruct {
    pub algo: cudnnAlgorithmUnionStruct_Algorithm,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct cudnnAttnStruct {
    _unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct cudnnCTCLossStruct {
    _unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct cudnnContext {
    _unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone, PartialOrd, PartialEq)]
pub struct cudnnConvolutionBwdDataAlgoPerfStruct {
    pub algo: cudnnConvolutionBwdDataAlgo_t,
    pub status: cudnnStatus_t,
    pub time: f32,
    pub memory: usize,
    pub determinism: cudnnDeterminism_t,
    pub mathType: cudnnMathType_t,
    pub reserved: [::core::ffi::c_int; 3usize],
}
#[repr(C)]
#[derive(Debug, Copy, Clone, PartialOrd, PartialEq)]
pub struct cudnnConvolutionBwdFilterAlgoPerfStruct {
    pub algo: cudnnConvolutionBwdFilterAlgo_t,
    pub status: cudnnStatus_t,
    pub time: f32,
    pub memory: usize,
    pub determinism: cudnnDeterminism_t,
    pub mathType: cudnnMathType_t,
    pub reserved: [::core::ffi::c_int; 3usize],
}
#[repr(C)]
#[derive(Debug, Copy, Clone, PartialOrd, PartialEq)]
pub struct cudnnConvolutionFwdAlgoPerfStruct {
    pub algo: cudnnConvolutionFwdAlgo_t,
    pub status: cudnnStatus_t,
    pub time: f32,
    pub memory: usize,
    pub determinism: cudnnDeterminism_t,
    pub mathType: cudnnMathType_t,
    pub reserved: [::core::ffi::c_int; 3usize],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct cudnnConvolutionStruct {
    _unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub struct cudnnDebugStruct {
    pub cudnn_version: ::core::ffi::c_uint,
    pub cudnnStatus: cudnnStatus_t,
    pub time_sec: ::core::ffi::c_uint,
    pub time_usec: ::core::ffi::c_uint,
    pub time_delta: ::core::ffi::c_uint,
    pub handle: cudnnHandle_t,
    pub stream: cudaStream_t,
    pub pid: ::core::ffi::c_ulonglong,
    pub tid: ::core::ffi::c_ulonglong,
    pub cudaDeviceId: ::core::ffi::c_int,
    pub reserved: [::core::ffi::c_int; 15usize],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct cudnnDropoutStruct {
    _unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct cudnnFilterStruct {
    _unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub struct cudnnFractionStruct {
    pub numerator: i64,
    pub denominator: i64,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct cudnnFusedOpsConstParamStruct {
    _unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct cudnnFusedOpsPlanStruct {
    _unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct cudnnFusedOpsVariantParamStruct {
    _unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct cudnnLRNStruct {
    _unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct cudnnOpTensorStruct {
    _unused: [u8; 0],
}
#[cfg(any(feature = "cudnn-08009"))]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct cudnnPersistentRNNPlan {
    _unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct cudnnPoolingStruct {
    _unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct cudnnRNNDataStruct {
    _unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct cudnnRNNStruct {
    _unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct cudnnReduceTensorStruct {
    _unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct cudnnRuntimeTag_t {
    _unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct cudnnSeqDataStruct {
    _unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct cudnnSpatialTransformerStruct {
    _unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct cudnnTensorStruct {
    _unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct cudnnTensorTransformStruct {
    _unused: [u8; 0],
}
impl cudnnResampleMode_t {
    pub const CUDNN_RESAMPLE_AVGPOOL_INCLUDE_PADDING: cudnnResampleMode_t = cudnnResampleMode_t::CUDNN_RESAMPLE_AVGPOOL;
}
#[cfg(any(feature = "cudnn-09010", feature = "cudnn-09021"))]
impl cudnnStatus_t {
    pub const CUDNN_STATUS_ALLOC_FAILED: cudnnStatus_t = cudnnStatus_t::CUDNN_STATUS_INTERNAL_ERROR_HOST_ALLOCATION_FAILED;
}
#[cfg(any(feature = "cudnn-09010", feature = "cudnn-09021"))]
impl cudnnStatus_t {
    pub const CUDNN_STATUS_ARCH_MISMATCH: cudnnStatus_t = cudnnStatus_t::CUDNN_STATUS_NOT_SUPPORTED_ARCH_MISMATCH;
}
#[cfg(any(feature = "cudnn-09010", feature = "cudnn-09021"))]
impl cudnnStatus_t {
    pub const CUDNN_STATUS_MAPPING_ERROR: cudnnStatus_t = cudnnStatus_t::CUDNN_STATUS_INTERNAL_ERROR_TEXTURE_CREATION_FAILED;
}
#[cfg(any(feature = "cudnn-09010", feature = "cudnn-09021"))]
impl cudnnStatus_t {
    pub const CUDNN_STATUS_RUNTIME_PREREQUISITE_MISSING: cudnnStatus_t = cudnnStatus_t::CUDNN_STATUS_NOT_SUPPORTED_RUNTIME_PREREQUISITE_MISSING;
}
#[cfg(any(feature = "cudnn-09010", feature = "cudnn-09021"))]
impl cudnnStatus_t {
    pub const CUDNN_STATUS_VERSION_MISMATCH: cudnnStatus_t = cudnnStatus_t::CUDNN_STATUS_SUBLIBRARY_VERSION_MISMATCH;
}
#[cfg(any(feature = "cudnn-08009"))]
#[repr(C)]
#[derive(Copy, Clone)]
pub union cudnnAlgorithmUnionStruct_Algorithm {
    pub convFwdAlgo: cudnnConvolutionFwdAlgo_t,
    pub convBwdFilterAlgo: cudnnConvolutionBwdFilterAlgo_t,
    pub convBwdDataAlgo: cudnnConvolutionBwdDataAlgo_t,
    pub RNNAlgo: cudnnRNNAlgo_t,
    pub CTCLossAlgo: cudnnCTCLossAlgo_t,
}
pub unsafe fn cudnnActivationBackward(handle: cudnnHandle_t, activationDesc: cudnnActivationDescriptor_t, alpha: *const ::core::ffi::c_void, yDesc: cudnnTensorDescriptor_t, y: *const ::core::ffi::c_void, dyDesc: cudnnTensorDescriptor_t, dy: *const ::core::ffi::c_void, xDesc: cudnnTensorDescriptor_t, x: *const ::core::ffi::c_void, beta: *const ::core::ffi::c_void, dxDesc: cudnnTensorDescriptor_t, dx: *mut ::core::ffi::c_void) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnActivationDescriptor_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *mut ::core::ffi::c_void) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnActivationBackward") });
        _f(handle, activationDesc, alpha, yDesc, y, dyDesc, dy, xDesc, x, beta, dxDesc, dx)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnActivationBackward(handle: cudnnHandle_t, activationDesc: cudnnActivationDescriptor_t, alpha: *const ::core::ffi::c_void, yDesc: cudnnTensorDescriptor_t, y: *const ::core::ffi::c_void, dyDesc: cudnnTensorDescriptor_t, dy: *const ::core::ffi::c_void, xDesc: cudnnTensorDescriptor_t, x: *const ::core::ffi::c_void, beta: *const ::core::ffi::c_void, dxDesc: cudnnTensorDescriptor_t, dx: *mut ::core::ffi::c_void) -> cudnnStatus_t;
        }
        cudnnActivationBackward(handle, activationDesc, alpha, yDesc, y, dyDesc, dy, xDesc, x, beta, dxDesc, dx)
    }
}
pub unsafe fn cudnnActivationForward(handle: cudnnHandle_t, activationDesc: cudnnActivationDescriptor_t, alpha: *const ::core::ffi::c_void, xDesc: cudnnTensorDescriptor_t, x: *const ::core::ffi::c_void, beta: *const ::core::ffi::c_void, yDesc: cudnnTensorDescriptor_t, y: *mut ::core::ffi::c_void) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnActivationDescriptor_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *mut ::core::ffi::c_void) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnActivationForward") });
        _f(handle, activationDesc, alpha, xDesc, x, beta, yDesc, y)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnActivationForward(handle: cudnnHandle_t, activationDesc: cudnnActivationDescriptor_t, alpha: *const ::core::ffi::c_void, xDesc: cudnnTensorDescriptor_t, x: *const ::core::ffi::c_void, beta: *const ::core::ffi::c_void, yDesc: cudnnTensorDescriptor_t, y: *mut ::core::ffi::c_void) -> cudnnStatus_t;
        }
        cudnnActivationForward(handle, activationDesc, alpha, xDesc, x, beta, yDesc, y)
    }
}
pub unsafe fn cudnnAddTensor(handle: cudnnHandle_t, alpha: *const ::core::ffi::c_void, aDesc: cudnnTensorDescriptor_t, A: *const ::core::ffi::c_void, beta: *const ::core::ffi::c_void, cDesc: cudnnTensorDescriptor_t, C: *mut ::core::ffi::c_void) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *mut ::core::ffi::c_void) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnAddTensor") });
        _f(handle, alpha, aDesc, A, beta, cDesc, C)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnAddTensor(handle: cudnnHandle_t, alpha: *const ::core::ffi::c_void, aDesc: cudnnTensorDescriptor_t, A: *const ::core::ffi::c_void, beta: *const ::core::ffi::c_void, cDesc: cudnnTensorDescriptor_t, C: *mut ::core::ffi::c_void) -> cudnnStatus_t;
        }
        cudnnAddTensor(handle, alpha, aDesc, A, beta, cDesc, C)
    }
}
#[cfg(any(feature = "cudnn-08009"))]
pub unsafe fn cudnnAdvInferVersionCheck() -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn() -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnAdvInferVersionCheck") });
        _f()
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnAdvInferVersionCheck() -> cudnnStatus_t;
        }
        cudnnAdvInferVersionCheck()
    }
}
#[cfg(any(feature = "cudnn-08009"))]
pub unsafe fn cudnnAdvTrainVersionCheck() -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn() -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnAdvTrainVersionCheck") });
        _f()
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnAdvTrainVersionCheck() -> cudnnStatus_t;
        }
        cudnnAdvTrainVersionCheck()
    }
}
#[cfg(any(feature = "cudnn-09010", feature = "cudnn-09021"))]
pub unsafe fn cudnnAdvVersionCheck() -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn() -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnAdvVersionCheck") });
        _f()
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnAdvVersionCheck() -> cudnnStatus_t;
        }
        cudnnAdvVersionCheck()
    }
}
pub unsafe fn cudnnBackendCreateDescriptor(descriptorType: cudnnBackendDescriptorType_t, descriptor: *mut cudnnBackendDescriptor_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnBackendDescriptorType_t, *mut cudnnBackendDescriptor_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnBackendCreateDescriptor") });
        _f(descriptorType, descriptor)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnBackendCreateDescriptor(descriptorType: cudnnBackendDescriptorType_t, descriptor: *mut cudnnBackendDescriptor_t) -> cudnnStatus_t;
        }
        cudnnBackendCreateDescriptor(descriptorType, descriptor)
    }
}
pub unsafe fn cudnnBackendDestroyDescriptor(descriptor: cudnnBackendDescriptor_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnBackendDescriptor_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnBackendDestroyDescriptor") });
        _f(descriptor)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnBackendDestroyDescriptor(descriptor: cudnnBackendDescriptor_t) -> cudnnStatus_t;
        }
        cudnnBackendDestroyDescriptor(descriptor)
    }
}
pub unsafe fn cudnnBackendExecute(handle: cudnnHandle_t, executionPlan: cudnnBackendDescriptor_t, variantPack: cudnnBackendDescriptor_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnBackendDescriptor_t, cudnnBackendDescriptor_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnBackendExecute") });
        _f(handle, executionPlan, variantPack)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnBackendExecute(handle: cudnnHandle_t, executionPlan: cudnnBackendDescriptor_t, variantPack: cudnnBackendDescriptor_t) -> cudnnStatus_t;
        }
        cudnnBackendExecute(handle, executionPlan, variantPack)
    }
}
pub unsafe fn cudnnBackendFinalize(descriptor: cudnnBackendDescriptor_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnBackendDescriptor_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnBackendFinalize") });
        _f(descriptor)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnBackendFinalize(descriptor: cudnnBackendDescriptor_t) -> cudnnStatus_t;
        }
        cudnnBackendFinalize(descriptor)
    }
}
pub unsafe fn cudnnBackendGetAttribute(descriptor: cudnnBackendDescriptor_t, attributeName: cudnnBackendAttributeName_t, attributeType: cudnnBackendAttributeType_t, requestedElementCount: i64, elementCount: *mut i64, arrayOfElements: *mut ::core::ffi::c_void) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnBackendDescriptor_t, cudnnBackendAttributeName_t, cudnnBackendAttributeType_t, i64, *mut i64, *mut ::core::ffi::c_void) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnBackendGetAttribute") });
        _f(descriptor, attributeName, attributeType, requestedElementCount, elementCount, arrayOfElements)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnBackendGetAttribute(descriptor: cudnnBackendDescriptor_t, attributeName: cudnnBackendAttributeName_t, attributeType: cudnnBackendAttributeType_t, requestedElementCount: i64, elementCount: *mut i64, arrayOfElements: *mut ::core::ffi::c_void) -> cudnnStatus_t;
        }
        cudnnBackendGetAttribute(descriptor, attributeName, attributeType, requestedElementCount, elementCount, arrayOfElements)
    }
}
pub unsafe fn cudnnBackendInitialize(descriptor: cudnnBackendDescriptor_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnBackendDescriptor_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnBackendInitialize") });
        _f(descriptor)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnBackendInitialize(descriptor: cudnnBackendDescriptor_t) -> cudnnStatus_t;
        }
        cudnnBackendInitialize(descriptor)
    }
}
#[cfg(any(feature = "cudnn-09010", feature = "cudnn-09021"))]
pub unsafe fn cudnnBackendPopulateCudaGraph(handle: cudnnHandle_t, executionPlan: cudnnBackendDescriptor_t, variantPack: cudnnBackendDescriptor_t, graph: cudaGraph_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnBackendDescriptor_t, cudnnBackendDescriptor_t, cudaGraph_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnBackendPopulateCudaGraph") });
        _f(handle, executionPlan, variantPack, graph)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnBackendPopulateCudaGraph(handle: cudnnHandle_t, executionPlan: cudnnBackendDescriptor_t, variantPack: cudnnBackendDescriptor_t, graph: cudaGraph_t) -> cudnnStatus_t;
        }
        cudnnBackendPopulateCudaGraph(handle, executionPlan, variantPack, graph)
    }
}
pub unsafe fn cudnnBackendSetAttribute(descriptor: cudnnBackendDescriptor_t, attributeName: cudnnBackendAttributeName_t, attributeType: cudnnBackendAttributeType_t, elementCount: i64, arrayOfElements: *const ::core::ffi::c_void) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnBackendDescriptor_t, cudnnBackendAttributeName_t, cudnnBackendAttributeType_t, i64, *const ::core::ffi::c_void) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnBackendSetAttribute") });
        _f(descriptor, attributeName, attributeType, elementCount, arrayOfElements)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnBackendSetAttribute(descriptor: cudnnBackendDescriptor_t, attributeName: cudnnBackendAttributeName_t, attributeType: cudnnBackendAttributeType_t, elementCount: i64, arrayOfElements: *const ::core::ffi::c_void) -> cudnnStatus_t;
        }
        cudnnBackendSetAttribute(descriptor, attributeName, attributeType, elementCount, arrayOfElements)
    }
}
#[cfg(any(feature = "cudnn-09010", feature = "cudnn-09021"))]
pub unsafe fn cudnnBackendUpdateCudaGraph(handle: cudnnHandle_t, executionPlan: cudnnBackendDescriptor_t, variantPack: cudnnBackendDescriptor_t, graph: cudaGraph_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnBackendDescriptor_t, cudnnBackendDescriptor_t, cudaGraph_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnBackendUpdateCudaGraph") });
        _f(handle, executionPlan, variantPack, graph)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnBackendUpdateCudaGraph(handle: cudnnHandle_t, executionPlan: cudnnBackendDescriptor_t, variantPack: cudnnBackendDescriptor_t, graph: cudaGraph_t) -> cudnnStatus_t;
        }
        cudnnBackendUpdateCudaGraph(handle, executionPlan, variantPack, graph)
    }
}
pub unsafe fn cudnnBatchNormalizationBackward(handle: cudnnHandle_t, mode: cudnnBatchNormMode_t, alphaDataDiff: *const ::core::ffi::c_void, betaDataDiff: *const ::core::ffi::c_void, alphaParamDiff: *const ::core::ffi::c_void, betaParamDiff: *const ::core::ffi::c_void, xDesc: cudnnTensorDescriptor_t, x: *const ::core::ffi::c_void, dyDesc: cudnnTensorDescriptor_t, dy: *const ::core::ffi::c_void, dxDesc: cudnnTensorDescriptor_t, dx: *mut ::core::ffi::c_void, dBnScaleBiasDesc: cudnnTensorDescriptor_t, bnScale: *const ::core::ffi::c_void, dBnScaleResult: *mut ::core::ffi::c_void, dBnBiasResult: *mut ::core::ffi::c_void, epsilon: f64, savedMean: *const ::core::ffi::c_void, savedInvVariance: *const ::core::ffi::c_void) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnBatchNormMode_t, *const ::core::ffi::c_void, *const ::core::ffi::c_void, *const ::core::ffi::c_void, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *mut ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, *mut ::core::ffi::c_void, *mut ::core::ffi::c_void, f64, *const ::core::ffi::c_void, *const ::core::ffi::c_void) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnBatchNormalizationBackward") });
        _f(handle, mode, alphaDataDiff, betaDataDiff, alphaParamDiff, betaParamDiff, xDesc, x, dyDesc, dy, dxDesc, dx, dBnScaleBiasDesc, bnScale, dBnScaleResult, dBnBiasResult, epsilon, savedMean, savedInvVariance)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnBatchNormalizationBackward(handle: cudnnHandle_t, mode: cudnnBatchNormMode_t, alphaDataDiff: *const ::core::ffi::c_void, betaDataDiff: *const ::core::ffi::c_void, alphaParamDiff: *const ::core::ffi::c_void, betaParamDiff: *const ::core::ffi::c_void, xDesc: cudnnTensorDescriptor_t, x: *const ::core::ffi::c_void, dyDesc: cudnnTensorDescriptor_t, dy: *const ::core::ffi::c_void, dxDesc: cudnnTensorDescriptor_t, dx: *mut ::core::ffi::c_void, dBnScaleBiasDesc: cudnnTensorDescriptor_t, bnScale: *const ::core::ffi::c_void, dBnScaleResult: *mut ::core::ffi::c_void, dBnBiasResult: *mut ::core::ffi::c_void, epsilon: f64, savedMean: *const ::core::ffi::c_void, savedInvVariance: *const ::core::ffi::c_void) -> cudnnStatus_t;
        }
        cudnnBatchNormalizationBackward(handle, mode, alphaDataDiff, betaDataDiff, alphaParamDiff, betaParamDiff, xDesc, x, dyDesc, dy, dxDesc, dx, dBnScaleBiasDesc, bnScale, dBnScaleResult, dBnBiasResult, epsilon, savedMean, savedInvVariance)
    }
}
pub unsafe fn cudnnBatchNormalizationBackwardEx(
    handle: cudnnHandle_t, mode: cudnnBatchNormMode_t, bnOps: cudnnBatchNormOps_t, alphaDataDiff: *const ::core::ffi::c_void, betaDataDiff: *const ::core::ffi::c_void, alphaParamDiff: *const ::core::ffi::c_void, betaParamDiff: *const ::core::ffi::c_void, xDesc: cudnnTensorDescriptor_t, xData: *const ::core::ffi::c_void, yDesc: cudnnTensorDescriptor_t, yData: *const ::core::ffi::c_void, dyDesc: cudnnTensorDescriptor_t, dyData: *const ::core::ffi::c_void, dzDesc: cudnnTensorDescriptor_t, dzData: *mut ::core::ffi::c_void, dxDesc: cudnnTensorDescriptor_t, dxData: *mut ::core::ffi::c_void, dBnScaleBiasDesc: cudnnTensorDescriptor_t, bnScaleData: *const ::core::ffi::c_void, bnBiasData: *const ::core::ffi::c_void, dBnScaleData: *mut ::core::ffi::c_void, dBnBiasData: *mut ::core::ffi::c_void, epsilon: f64, savedMean: *const ::core::ffi::c_void, savedInvVariance: *const ::core::ffi::c_void, activationDesc: cudnnActivationDescriptor_t, workSpace: *mut ::core::ffi::c_void,
    workSpaceSizeInBytes: usize, reserveSpace: *mut ::core::ffi::c_void, reserveSpaceSizeInBytes: usize,
) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnBatchNormMode_t, cudnnBatchNormOps_t, *const ::core::ffi::c_void, *const ::core::ffi::c_void, *const ::core::ffi::c_void, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *mut ::core::ffi::c_void, cudnnTensorDescriptor_t, *mut ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, *const ::core::ffi::c_void, *mut ::core::ffi::c_void, *mut ::core::ffi::c_void, f64, *const ::core::ffi::c_void, *const ::core::ffi::c_void, cudnnActivationDescriptor_t, *mut ::core::ffi::c_void, usize, *mut ::core::ffi::c_void, usize) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnBatchNormalizationBackwardEx") });
        _f(handle, mode, bnOps, alphaDataDiff, betaDataDiff, alphaParamDiff, betaParamDiff, xDesc, xData, yDesc, yData, dyDesc, dyData, dzDesc, dzData, dxDesc, dxData, dBnScaleBiasDesc, bnScaleData, bnBiasData, dBnScaleData, dBnBiasData, epsilon, savedMean, savedInvVariance, activationDesc, workSpace, workSpaceSizeInBytes, reserveSpace, reserveSpaceSizeInBytes)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnBatchNormalizationBackwardEx(
                handle: cudnnHandle_t, mode: cudnnBatchNormMode_t, bnOps: cudnnBatchNormOps_t, alphaDataDiff: *const ::core::ffi::c_void, betaDataDiff: *const ::core::ffi::c_void, alphaParamDiff: *const ::core::ffi::c_void, betaParamDiff: *const ::core::ffi::c_void, xDesc: cudnnTensorDescriptor_t, xData: *const ::core::ffi::c_void, yDesc: cudnnTensorDescriptor_t, yData: *const ::core::ffi::c_void, dyDesc: cudnnTensorDescriptor_t, dyData: *const ::core::ffi::c_void, dzDesc: cudnnTensorDescriptor_t, dzData: *mut ::core::ffi::c_void, dxDesc: cudnnTensorDescriptor_t, dxData: *mut ::core::ffi::c_void, dBnScaleBiasDesc: cudnnTensorDescriptor_t, bnScaleData: *const ::core::ffi::c_void, bnBiasData: *const ::core::ffi::c_void, dBnScaleData: *mut ::core::ffi::c_void, dBnBiasData: *mut ::core::ffi::c_void, epsilon: f64, savedMean: *const ::core::ffi::c_void, savedInvVariance: *const ::core::ffi::c_void, activationDesc: cudnnActivationDescriptor_t, workSpace: *mut ::core::ffi::c_void,
                workSpaceSizeInBytes: usize, reserveSpace: *mut ::core::ffi::c_void, reserveSpaceSizeInBytes: usize,
            ) -> cudnnStatus_t;
        }
        cudnnBatchNormalizationBackwardEx(handle, mode, bnOps, alphaDataDiff, betaDataDiff, alphaParamDiff, betaParamDiff, xDesc, xData, yDesc, yData, dyDesc, dyData, dzDesc, dzData, dxDesc, dxData, dBnScaleBiasDesc, bnScaleData, bnBiasData, dBnScaleData, dBnBiasData, epsilon, savedMean, savedInvVariance, activationDesc, workSpace, workSpaceSizeInBytes, reserveSpace, reserveSpaceSizeInBytes)
    }
}
pub unsafe fn cudnnBatchNormalizationForwardInference(handle: cudnnHandle_t, mode: cudnnBatchNormMode_t, alpha: *const ::core::ffi::c_void, beta: *const ::core::ffi::c_void, xDesc: cudnnTensorDescriptor_t, x: *const ::core::ffi::c_void, yDesc: cudnnTensorDescriptor_t, y: *mut ::core::ffi::c_void, bnScaleBiasMeanVarDesc: cudnnTensorDescriptor_t, bnScale: *const ::core::ffi::c_void, bnBias: *const ::core::ffi::c_void, estimatedMean: *const ::core::ffi::c_void, estimatedVariance: *const ::core::ffi::c_void, epsilon: f64) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnBatchNormMode_t, *const ::core::ffi::c_void, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *mut ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, *const ::core::ffi::c_void, *const ::core::ffi::c_void, *const ::core::ffi::c_void, f64) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnBatchNormalizationForwardInference") });
        _f(handle, mode, alpha, beta, xDesc, x, yDesc, y, bnScaleBiasMeanVarDesc, bnScale, bnBias, estimatedMean, estimatedVariance, epsilon)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnBatchNormalizationForwardInference(handle: cudnnHandle_t, mode: cudnnBatchNormMode_t, alpha: *const ::core::ffi::c_void, beta: *const ::core::ffi::c_void, xDesc: cudnnTensorDescriptor_t, x: *const ::core::ffi::c_void, yDesc: cudnnTensorDescriptor_t, y: *mut ::core::ffi::c_void, bnScaleBiasMeanVarDesc: cudnnTensorDescriptor_t, bnScale: *const ::core::ffi::c_void, bnBias: *const ::core::ffi::c_void, estimatedMean: *const ::core::ffi::c_void, estimatedVariance: *const ::core::ffi::c_void, epsilon: f64) -> cudnnStatus_t;
        }
        cudnnBatchNormalizationForwardInference(handle, mode, alpha, beta, xDesc, x, yDesc, y, bnScaleBiasMeanVarDesc, bnScale, bnBias, estimatedMean, estimatedVariance, epsilon)
    }
}
pub unsafe fn cudnnBatchNormalizationForwardTraining(handle: cudnnHandle_t, mode: cudnnBatchNormMode_t, alpha: *const ::core::ffi::c_void, beta: *const ::core::ffi::c_void, xDesc: cudnnTensorDescriptor_t, x: *const ::core::ffi::c_void, yDesc: cudnnTensorDescriptor_t, y: *mut ::core::ffi::c_void, bnScaleBiasMeanVarDesc: cudnnTensorDescriptor_t, bnScale: *const ::core::ffi::c_void, bnBias: *const ::core::ffi::c_void, exponentialAverageFactor: f64, resultRunningMean: *mut ::core::ffi::c_void, resultRunningVariance: *mut ::core::ffi::c_void, epsilon: f64, resultSaveMean: *mut ::core::ffi::c_void, resultSaveInvVariance: *mut ::core::ffi::c_void) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnBatchNormMode_t, *const ::core::ffi::c_void, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *mut ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, *const ::core::ffi::c_void, f64, *mut ::core::ffi::c_void, *mut ::core::ffi::c_void, f64, *mut ::core::ffi::c_void, *mut ::core::ffi::c_void) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnBatchNormalizationForwardTraining") });
        _f(handle, mode, alpha, beta, xDesc, x, yDesc, y, bnScaleBiasMeanVarDesc, bnScale, bnBias, exponentialAverageFactor, resultRunningMean, resultRunningVariance, epsilon, resultSaveMean, resultSaveInvVariance)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnBatchNormalizationForwardTraining(handle: cudnnHandle_t, mode: cudnnBatchNormMode_t, alpha: *const ::core::ffi::c_void, beta: *const ::core::ffi::c_void, xDesc: cudnnTensorDescriptor_t, x: *const ::core::ffi::c_void, yDesc: cudnnTensorDescriptor_t, y: *mut ::core::ffi::c_void, bnScaleBiasMeanVarDesc: cudnnTensorDescriptor_t, bnScale: *const ::core::ffi::c_void, bnBias: *const ::core::ffi::c_void, exponentialAverageFactor: f64, resultRunningMean: *mut ::core::ffi::c_void, resultRunningVariance: *mut ::core::ffi::c_void, epsilon: f64, resultSaveMean: *mut ::core::ffi::c_void, resultSaveInvVariance: *mut ::core::ffi::c_void) -> cudnnStatus_t;
        }
        cudnnBatchNormalizationForwardTraining(handle, mode, alpha, beta, xDesc, x, yDesc, y, bnScaleBiasMeanVarDesc, bnScale, bnBias, exponentialAverageFactor, resultRunningMean, resultRunningVariance, epsilon, resultSaveMean, resultSaveInvVariance)
    }
}
pub unsafe fn cudnnBatchNormalizationForwardTrainingEx(handle: cudnnHandle_t, mode: cudnnBatchNormMode_t, bnOps: cudnnBatchNormOps_t, alpha: *const ::core::ffi::c_void, beta: *const ::core::ffi::c_void, xDesc: cudnnTensorDescriptor_t, xData: *const ::core::ffi::c_void, zDesc: cudnnTensorDescriptor_t, zData: *const ::core::ffi::c_void, yDesc: cudnnTensorDescriptor_t, yData: *mut ::core::ffi::c_void, bnScaleBiasMeanVarDesc: cudnnTensorDescriptor_t, bnScale: *const ::core::ffi::c_void, bnBias: *const ::core::ffi::c_void, exponentialAverageFactor: f64, resultRunningMean: *mut ::core::ffi::c_void, resultRunningVariance: *mut ::core::ffi::c_void, epsilon: f64, resultSaveMean: *mut ::core::ffi::c_void, resultSaveInvVariance: *mut ::core::ffi::c_void, activationDesc: cudnnActivationDescriptor_t, workspace: *mut ::core::ffi::c_void, workSpaceSizeInBytes: usize, reserveSpace: *mut ::core::ffi::c_void, reserveSpaceSizeInBytes: usize) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnBatchNormMode_t, cudnnBatchNormOps_t, *const ::core::ffi::c_void, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *mut ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, *const ::core::ffi::c_void, f64, *mut ::core::ffi::c_void, *mut ::core::ffi::c_void, f64, *mut ::core::ffi::c_void, *mut ::core::ffi::c_void, cudnnActivationDescriptor_t, *mut ::core::ffi::c_void, usize, *mut ::core::ffi::c_void, usize) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnBatchNormalizationForwardTrainingEx") });
        _f(handle, mode, bnOps, alpha, beta, xDesc, xData, zDesc, zData, yDesc, yData, bnScaleBiasMeanVarDesc, bnScale, bnBias, exponentialAverageFactor, resultRunningMean, resultRunningVariance, epsilon, resultSaveMean, resultSaveInvVariance, activationDesc, workspace, workSpaceSizeInBytes, reserveSpace, reserveSpaceSizeInBytes)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnBatchNormalizationForwardTrainingEx(handle: cudnnHandle_t, mode: cudnnBatchNormMode_t, bnOps: cudnnBatchNormOps_t, alpha: *const ::core::ffi::c_void, beta: *const ::core::ffi::c_void, xDesc: cudnnTensorDescriptor_t, xData: *const ::core::ffi::c_void, zDesc: cudnnTensorDescriptor_t, zData: *const ::core::ffi::c_void, yDesc: cudnnTensorDescriptor_t, yData: *mut ::core::ffi::c_void, bnScaleBiasMeanVarDesc: cudnnTensorDescriptor_t, bnScale: *const ::core::ffi::c_void, bnBias: *const ::core::ffi::c_void, exponentialAverageFactor: f64, resultRunningMean: *mut ::core::ffi::c_void, resultRunningVariance: *mut ::core::ffi::c_void, epsilon: f64, resultSaveMean: *mut ::core::ffi::c_void, resultSaveInvVariance: *mut ::core::ffi::c_void, activationDesc: cudnnActivationDescriptor_t, workspace: *mut ::core::ffi::c_void, workSpaceSizeInBytes: usize, reserveSpace: *mut ::core::ffi::c_void, reserveSpaceSizeInBytes: usize) -> cudnnStatus_t;
        }
        cudnnBatchNormalizationForwardTrainingEx(handle, mode, bnOps, alpha, beta, xDesc, xData, zDesc, zData, yDesc, yData, bnScaleBiasMeanVarDesc, bnScale, bnBias, exponentialAverageFactor, resultRunningMean, resultRunningVariance, epsilon, resultSaveMean, resultSaveInvVariance, activationDesc, workspace, workSpaceSizeInBytes, reserveSpace, reserveSpaceSizeInBytes)
    }
}
pub unsafe fn cudnnBuildRNNDynamic(handle: cudnnHandle_t, rnnDesc: cudnnRNNDescriptor_t, miniBatch: ::core::ffi::c_int) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnRNNDescriptor_t, ::core::ffi::c_int) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnBuildRNNDynamic") });
        _f(handle, rnnDesc, miniBatch)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnBuildRNNDynamic(handle: cudnnHandle_t, rnnDesc: cudnnRNNDescriptor_t, miniBatch: ::core::ffi::c_int) -> cudnnStatus_t;
        }
        cudnnBuildRNNDynamic(handle, rnnDesc, miniBatch)
    }
}
pub unsafe fn cudnnCTCLoss(handle: cudnnHandle_t, probsDesc: cudnnTensorDescriptor_t, probs: *const ::core::ffi::c_void, hostLabels: *const ::core::ffi::c_int, hostLabelLengths: *const ::core::ffi::c_int, hostInputLengths: *const ::core::ffi::c_int, costs: *mut ::core::ffi::c_void, gradientsDesc: cudnnTensorDescriptor_t, gradients: *mut ::core::ffi::c_void, algo: cudnnCTCLossAlgo_t, ctcLossDesc: cudnnCTCLossDescriptor_t, workspace: *mut ::core::ffi::c_void, workSpaceSizeInBytes: usize) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, *const ::core::ffi::c_int, *const ::core::ffi::c_int, *const ::core::ffi::c_int, *mut ::core::ffi::c_void, cudnnTensorDescriptor_t, *mut ::core::ffi::c_void, cudnnCTCLossAlgo_t, cudnnCTCLossDescriptor_t, *mut ::core::ffi::c_void, usize) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnCTCLoss") });
        _f(handle, probsDesc, probs, hostLabels, hostLabelLengths, hostInputLengths, costs, gradientsDesc, gradients, algo, ctcLossDesc, workspace, workSpaceSizeInBytes)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnCTCLoss(handle: cudnnHandle_t, probsDesc: cudnnTensorDescriptor_t, probs: *const ::core::ffi::c_void, hostLabels: *const ::core::ffi::c_int, hostLabelLengths: *const ::core::ffi::c_int, hostInputLengths: *const ::core::ffi::c_int, costs: *mut ::core::ffi::c_void, gradientsDesc: cudnnTensorDescriptor_t, gradients: *mut ::core::ffi::c_void, algo: cudnnCTCLossAlgo_t, ctcLossDesc: cudnnCTCLossDescriptor_t, workspace: *mut ::core::ffi::c_void, workSpaceSizeInBytes: usize) -> cudnnStatus_t;
        }
        cudnnCTCLoss(handle, probsDesc, probs, hostLabels, hostLabelLengths, hostInputLengths, costs, gradientsDesc, gradients, algo, ctcLossDesc, workspace, workSpaceSizeInBytes)
    }
}
pub unsafe fn cudnnCTCLoss_v8(handle: cudnnHandle_t, algo: cudnnCTCLossAlgo_t, ctcLossDesc: cudnnCTCLossDescriptor_t, probsDesc: cudnnTensorDescriptor_t, probs: *const ::core::ffi::c_void, labels: *const ::core::ffi::c_int, labelLengths: *const ::core::ffi::c_int, inputLengths: *const ::core::ffi::c_int, costs: *mut ::core::ffi::c_void, gradientsDesc: cudnnTensorDescriptor_t, gradients: *mut ::core::ffi::c_void, workSpaceSizeInBytes: usize, workspace: *mut ::core::ffi::c_void) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnCTCLossAlgo_t, cudnnCTCLossDescriptor_t, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, *const ::core::ffi::c_int, *const ::core::ffi::c_int, *const ::core::ffi::c_int, *mut ::core::ffi::c_void, cudnnTensorDescriptor_t, *mut ::core::ffi::c_void, usize, *mut ::core::ffi::c_void) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnCTCLoss_v8") });
        _f(handle, algo, ctcLossDesc, probsDesc, probs, labels, labelLengths, inputLengths, costs, gradientsDesc, gradients, workSpaceSizeInBytes, workspace)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnCTCLoss_v8(handle: cudnnHandle_t, algo: cudnnCTCLossAlgo_t, ctcLossDesc: cudnnCTCLossDescriptor_t, probsDesc: cudnnTensorDescriptor_t, probs: *const ::core::ffi::c_void, labels: *const ::core::ffi::c_int, labelLengths: *const ::core::ffi::c_int, inputLengths: *const ::core::ffi::c_int, costs: *mut ::core::ffi::c_void, gradientsDesc: cudnnTensorDescriptor_t, gradients: *mut ::core::ffi::c_void, workSpaceSizeInBytes: usize, workspace: *mut ::core::ffi::c_void) -> cudnnStatus_t;
        }
        cudnnCTCLoss_v8(handle, algo, ctcLossDesc, probsDesc, probs, labels, labelLengths, inputLengths, costs, gradientsDesc, gradients, workSpaceSizeInBytes, workspace)
    }
}
#[cfg(any(feature = "cudnn-08009"))]
pub unsafe fn cudnnCnnInferVersionCheck() -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn() -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnCnnInferVersionCheck") });
        _f()
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnCnnInferVersionCheck() -> cudnnStatus_t;
        }
        cudnnCnnInferVersionCheck()
    }
}
#[cfg(any(feature = "cudnn-08009"))]
pub unsafe fn cudnnCnnTrainVersionCheck() -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn() -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnCnnTrainVersionCheck") });
        _f()
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnCnnTrainVersionCheck() -> cudnnStatus_t;
        }
        cudnnCnnTrainVersionCheck()
    }
}
#[cfg(any(feature = "cudnn-09010", feature = "cudnn-09021"))]
pub unsafe fn cudnnCnnVersionCheck() -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn() -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnCnnVersionCheck") });
        _f()
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnCnnVersionCheck() -> cudnnStatus_t;
        }
        cudnnCnnVersionCheck()
    }
}
pub unsafe fn cudnnConvolutionBackwardBias(handle: cudnnHandle_t, alpha: *const ::core::ffi::c_void, dyDesc: cudnnTensorDescriptor_t, dy: *const ::core::ffi::c_void, beta: *const ::core::ffi::c_void, dbDesc: cudnnTensorDescriptor_t, db: *mut ::core::ffi::c_void) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *mut ::core::ffi::c_void) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnConvolutionBackwardBias") });
        _f(handle, alpha, dyDesc, dy, beta, dbDesc, db)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnConvolutionBackwardBias(handle: cudnnHandle_t, alpha: *const ::core::ffi::c_void, dyDesc: cudnnTensorDescriptor_t, dy: *const ::core::ffi::c_void, beta: *const ::core::ffi::c_void, dbDesc: cudnnTensorDescriptor_t, db: *mut ::core::ffi::c_void) -> cudnnStatus_t;
        }
        cudnnConvolutionBackwardBias(handle, alpha, dyDesc, dy, beta, dbDesc, db)
    }
}
pub unsafe fn cudnnConvolutionBackwardData(handle: cudnnHandle_t, alpha: *const ::core::ffi::c_void, wDesc: cudnnFilterDescriptor_t, w: *const ::core::ffi::c_void, dyDesc: cudnnTensorDescriptor_t, dy: *const ::core::ffi::c_void, convDesc: cudnnConvolutionDescriptor_t, algo: cudnnConvolutionBwdDataAlgo_t, workSpace: *mut ::core::ffi::c_void, workSpaceSizeInBytes: usize, beta: *const ::core::ffi::c_void, dxDesc: cudnnTensorDescriptor_t, dx: *mut ::core::ffi::c_void) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, *const ::core::ffi::c_void, cudnnFilterDescriptor_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, cudnnConvolutionDescriptor_t, cudnnConvolutionBwdDataAlgo_t, *mut ::core::ffi::c_void, usize, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *mut ::core::ffi::c_void) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnConvolutionBackwardData") });
        _f(handle, alpha, wDesc, w, dyDesc, dy, convDesc, algo, workSpace, workSpaceSizeInBytes, beta, dxDesc, dx)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnConvolutionBackwardData(handle: cudnnHandle_t, alpha: *const ::core::ffi::c_void, wDesc: cudnnFilterDescriptor_t, w: *const ::core::ffi::c_void, dyDesc: cudnnTensorDescriptor_t, dy: *const ::core::ffi::c_void, convDesc: cudnnConvolutionDescriptor_t, algo: cudnnConvolutionBwdDataAlgo_t, workSpace: *mut ::core::ffi::c_void, workSpaceSizeInBytes: usize, beta: *const ::core::ffi::c_void, dxDesc: cudnnTensorDescriptor_t, dx: *mut ::core::ffi::c_void) -> cudnnStatus_t;
        }
        cudnnConvolutionBackwardData(handle, alpha, wDesc, w, dyDesc, dy, convDesc, algo, workSpace, workSpaceSizeInBytes, beta, dxDesc, dx)
    }
}
pub unsafe fn cudnnConvolutionBackwardFilter(handle: cudnnHandle_t, alpha: *const ::core::ffi::c_void, xDesc: cudnnTensorDescriptor_t, x: *const ::core::ffi::c_void, dyDesc: cudnnTensorDescriptor_t, dy: *const ::core::ffi::c_void, convDesc: cudnnConvolutionDescriptor_t, algo: cudnnConvolutionBwdFilterAlgo_t, workSpace: *mut ::core::ffi::c_void, workSpaceSizeInBytes: usize, beta: *const ::core::ffi::c_void, dwDesc: cudnnFilterDescriptor_t, dw: *mut ::core::ffi::c_void) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, cudnnConvolutionDescriptor_t, cudnnConvolutionBwdFilterAlgo_t, *mut ::core::ffi::c_void, usize, *const ::core::ffi::c_void, cudnnFilterDescriptor_t, *mut ::core::ffi::c_void) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnConvolutionBackwardFilter") });
        _f(handle, alpha, xDesc, x, dyDesc, dy, convDesc, algo, workSpace, workSpaceSizeInBytes, beta, dwDesc, dw)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnConvolutionBackwardFilter(handle: cudnnHandle_t, alpha: *const ::core::ffi::c_void, xDesc: cudnnTensorDescriptor_t, x: *const ::core::ffi::c_void, dyDesc: cudnnTensorDescriptor_t, dy: *const ::core::ffi::c_void, convDesc: cudnnConvolutionDescriptor_t, algo: cudnnConvolutionBwdFilterAlgo_t, workSpace: *mut ::core::ffi::c_void, workSpaceSizeInBytes: usize, beta: *const ::core::ffi::c_void, dwDesc: cudnnFilterDescriptor_t, dw: *mut ::core::ffi::c_void) -> cudnnStatus_t;
        }
        cudnnConvolutionBackwardFilter(handle, alpha, xDesc, x, dyDesc, dy, convDesc, algo, workSpace, workSpaceSizeInBytes, beta, dwDesc, dw)
    }
}
pub unsafe fn cudnnConvolutionBiasActivationForward(handle: cudnnHandle_t, alpha1: *const ::core::ffi::c_void, xDesc: cudnnTensorDescriptor_t, x: *const ::core::ffi::c_void, wDesc: cudnnFilterDescriptor_t, w: *const ::core::ffi::c_void, convDesc: cudnnConvolutionDescriptor_t, algo: cudnnConvolutionFwdAlgo_t, workSpace: *mut ::core::ffi::c_void, workSpaceSizeInBytes: usize, alpha2: *const ::core::ffi::c_void, zDesc: cudnnTensorDescriptor_t, z: *const ::core::ffi::c_void, biasDesc: cudnnTensorDescriptor_t, bias: *const ::core::ffi::c_void, activationDesc: cudnnActivationDescriptor_t, yDesc: cudnnTensorDescriptor_t, y: *mut ::core::ffi::c_void) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, cudnnFilterDescriptor_t, *const ::core::ffi::c_void, cudnnConvolutionDescriptor_t, cudnnConvolutionFwdAlgo_t, *mut ::core::ffi::c_void, usize, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, cudnnActivationDescriptor_t, cudnnTensorDescriptor_t, *mut ::core::ffi::c_void) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnConvolutionBiasActivationForward") });
        _f(handle, alpha1, xDesc, x, wDesc, w, convDesc, algo, workSpace, workSpaceSizeInBytes, alpha2, zDesc, z, biasDesc, bias, activationDesc, yDesc, y)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnConvolutionBiasActivationForward(handle: cudnnHandle_t, alpha1: *const ::core::ffi::c_void, xDesc: cudnnTensorDescriptor_t, x: *const ::core::ffi::c_void, wDesc: cudnnFilterDescriptor_t, w: *const ::core::ffi::c_void, convDesc: cudnnConvolutionDescriptor_t, algo: cudnnConvolutionFwdAlgo_t, workSpace: *mut ::core::ffi::c_void, workSpaceSizeInBytes: usize, alpha2: *const ::core::ffi::c_void, zDesc: cudnnTensorDescriptor_t, z: *const ::core::ffi::c_void, biasDesc: cudnnTensorDescriptor_t, bias: *const ::core::ffi::c_void, activationDesc: cudnnActivationDescriptor_t, yDesc: cudnnTensorDescriptor_t, y: *mut ::core::ffi::c_void) -> cudnnStatus_t;
        }
        cudnnConvolutionBiasActivationForward(handle, alpha1, xDesc, x, wDesc, w, convDesc, algo, workSpace, workSpaceSizeInBytes, alpha2, zDesc, z, biasDesc, bias, activationDesc, yDesc, y)
    }
}
pub unsafe fn cudnnConvolutionForward(handle: cudnnHandle_t, alpha: *const ::core::ffi::c_void, xDesc: cudnnTensorDescriptor_t, x: *const ::core::ffi::c_void, wDesc: cudnnFilterDescriptor_t, w: *const ::core::ffi::c_void, convDesc: cudnnConvolutionDescriptor_t, algo: cudnnConvolutionFwdAlgo_t, workSpace: *mut ::core::ffi::c_void, workSpaceSizeInBytes: usize, beta: *const ::core::ffi::c_void, yDesc: cudnnTensorDescriptor_t, y: *mut ::core::ffi::c_void) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, cudnnFilterDescriptor_t, *const ::core::ffi::c_void, cudnnConvolutionDescriptor_t, cudnnConvolutionFwdAlgo_t, *mut ::core::ffi::c_void, usize, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *mut ::core::ffi::c_void) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnConvolutionForward") });
        _f(handle, alpha, xDesc, x, wDesc, w, convDesc, algo, workSpace, workSpaceSizeInBytes, beta, yDesc, y)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnConvolutionForward(handle: cudnnHandle_t, alpha: *const ::core::ffi::c_void, xDesc: cudnnTensorDescriptor_t, x: *const ::core::ffi::c_void, wDesc: cudnnFilterDescriptor_t, w: *const ::core::ffi::c_void, convDesc: cudnnConvolutionDescriptor_t, algo: cudnnConvolutionFwdAlgo_t, workSpace: *mut ::core::ffi::c_void, workSpaceSizeInBytes: usize, beta: *const ::core::ffi::c_void, yDesc: cudnnTensorDescriptor_t, y: *mut ::core::ffi::c_void) -> cudnnStatus_t;
        }
        cudnnConvolutionForward(handle, alpha, xDesc, x, wDesc, w, convDesc, algo, workSpace, workSpaceSizeInBytes, beta, yDesc, y)
    }
}
#[cfg(any(feature = "cudnn-08009"))]
pub unsafe fn cudnnCopyAlgorithmDescriptor(src: cudnnAlgorithmDescriptor_t, dest: cudnnAlgorithmDescriptor_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnAlgorithmDescriptor_t, cudnnAlgorithmDescriptor_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnCopyAlgorithmDescriptor") });
        _f(src, dest)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnCopyAlgorithmDescriptor(src: cudnnAlgorithmDescriptor_t, dest: cudnnAlgorithmDescriptor_t) -> cudnnStatus_t;
        }
        cudnnCopyAlgorithmDescriptor(src, dest)
    }
}
pub unsafe fn cudnnCreate(handle: *mut cudnnHandle_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(*mut cudnnHandle_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnCreate") });
        _f(handle)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnCreate(handle: *mut cudnnHandle_t) -> cudnnStatus_t;
        }
        cudnnCreate(handle)
    }
}
pub unsafe fn cudnnCreateActivationDescriptor(activationDesc: *mut cudnnActivationDescriptor_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(*mut cudnnActivationDescriptor_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnCreateActivationDescriptor") });
        _f(activationDesc)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnCreateActivationDescriptor(activationDesc: *mut cudnnActivationDescriptor_t) -> cudnnStatus_t;
        }
        cudnnCreateActivationDescriptor(activationDesc)
    }
}
#[cfg(any(feature = "cudnn-08009"))]
pub unsafe fn cudnnCreateAlgorithmDescriptor(algoDesc: *mut cudnnAlgorithmDescriptor_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(*mut cudnnAlgorithmDescriptor_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnCreateAlgorithmDescriptor") });
        _f(algoDesc)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnCreateAlgorithmDescriptor(algoDesc: *mut cudnnAlgorithmDescriptor_t) -> cudnnStatus_t;
        }
        cudnnCreateAlgorithmDescriptor(algoDesc)
    }
}
#[cfg(any(feature = "cudnn-08009"))]
pub unsafe fn cudnnCreateAlgorithmPerformance(algoPerf: *mut cudnnAlgorithmPerformance_t, numberToCreate: ::core::ffi::c_int) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(*mut cudnnAlgorithmPerformance_t, ::core::ffi::c_int) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnCreateAlgorithmPerformance") });
        _f(algoPerf, numberToCreate)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnCreateAlgorithmPerformance(algoPerf: *mut cudnnAlgorithmPerformance_t, numberToCreate: ::core::ffi::c_int) -> cudnnStatus_t;
        }
        cudnnCreateAlgorithmPerformance(algoPerf, numberToCreate)
    }
}
pub unsafe fn cudnnCreateAttnDescriptor(attnDesc: *mut cudnnAttnDescriptor_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(*mut cudnnAttnDescriptor_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnCreateAttnDescriptor") });
        _f(attnDesc)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnCreateAttnDescriptor(attnDesc: *mut cudnnAttnDescriptor_t) -> cudnnStatus_t;
        }
        cudnnCreateAttnDescriptor(attnDesc)
    }
}
pub unsafe fn cudnnCreateCTCLossDescriptor(ctcLossDesc: *mut cudnnCTCLossDescriptor_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(*mut cudnnCTCLossDescriptor_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnCreateCTCLossDescriptor") });
        _f(ctcLossDesc)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnCreateCTCLossDescriptor(ctcLossDesc: *mut cudnnCTCLossDescriptor_t) -> cudnnStatus_t;
        }
        cudnnCreateCTCLossDescriptor(ctcLossDesc)
    }
}
pub unsafe fn cudnnCreateConvolutionDescriptor(convDesc: *mut cudnnConvolutionDescriptor_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(*mut cudnnConvolutionDescriptor_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnCreateConvolutionDescriptor") });
        _f(convDesc)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnCreateConvolutionDescriptor(convDesc: *mut cudnnConvolutionDescriptor_t) -> cudnnStatus_t;
        }
        cudnnCreateConvolutionDescriptor(convDesc)
    }
}
pub unsafe fn cudnnCreateDropoutDescriptor(dropoutDesc: *mut cudnnDropoutDescriptor_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(*mut cudnnDropoutDescriptor_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnCreateDropoutDescriptor") });
        _f(dropoutDesc)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnCreateDropoutDescriptor(dropoutDesc: *mut cudnnDropoutDescriptor_t) -> cudnnStatus_t;
        }
        cudnnCreateDropoutDescriptor(dropoutDesc)
    }
}
pub unsafe fn cudnnCreateFilterDescriptor(filterDesc: *mut cudnnFilterDescriptor_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(*mut cudnnFilterDescriptor_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnCreateFilterDescriptor") });
        _f(filterDesc)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnCreateFilterDescriptor(filterDesc: *mut cudnnFilterDescriptor_t) -> cudnnStatus_t;
        }
        cudnnCreateFilterDescriptor(filterDesc)
    }
}
pub unsafe fn cudnnCreateFusedOpsConstParamPack(constPack: *mut cudnnFusedOpsConstParamPack_t, ops: cudnnFusedOps_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(*mut cudnnFusedOpsConstParamPack_t, cudnnFusedOps_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnCreateFusedOpsConstParamPack") });
        _f(constPack, ops)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnCreateFusedOpsConstParamPack(constPack: *mut cudnnFusedOpsConstParamPack_t, ops: cudnnFusedOps_t) -> cudnnStatus_t;
        }
        cudnnCreateFusedOpsConstParamPack(constPack, ops)
    }
}
pub unsafe fn cudnnCreateFusedOpsPlan(plan: *mut cudnnFusedOpsPlan_t, ops: cudnnFusedOps_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(*mut cudnnFusedOpsPlan_t, cudnnFusedOps_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnCreateFusedOpsPlan") });
        _f(plan, ops)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnCreateFusedOpsPlan(plan: *mut cudnnFusedOpsPlan_t, ops: cudnnFusedOps_t) -> cudnnStatus_t;
        }
        cudnnCreateFusedOpsPlan(plan, ops)
    }
}
pub unsafe fn cudnnCreateFusedOpsVariantParamPack(varPack: *mut cudnnFusedOpsVariantParamPack_t, ops: cudnnFusedOps_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(*mut cudnnFusedOpsVariantParamPack_t, cudnnFusedOps_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnCreateFusedOpsVariantParamPack") });
        _f(varPack, ops)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnCreateFusedOpsVariantParamPack(varPack: *mut cudnnFusedOpsVariantParamPack_t, ops: cudnnFusedOps_t) -> cudnnStatus_t;
        }
        cudnnCreateFusedOpsVariantParamPack(varPack, ops)
    }
}
pub unsafe fn cudnnCreateLRNDescriptor(normDesc: *mut cudnnLRNDescriptor_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(*mut cudnnLRNDescriptor_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnCreateLRNDescriptor") });
        _f(normDesc)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnCreateLRNDescriptor(normDesc: *mut cudnnLRNDescriptor_t) -> cudnnStatus_t;
        }
        cudnnCreateLRNDescriptor(normDesc)
    }
}
pub unsafe fn cudnnCreateOpTensorDescriptor(opTensorDesc: *mut cudnnOpTensorDescriptor_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(*mut cudnnOpTensorDescriptor_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnCreateOpTensorDescriptor") });
        _f(opTensorDesc)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnCreateOpTensorDescriptor(opTensorDesc: *mut cudnnOpTensorDescriptor_t) -> cudnnStatus_t;
        }
        cudnnCreateOpTensorDescriptor(opTensorDesc)
    }
}
#[cfg(any(feature = "cudnn-08009"))]
pub unsafe fn cudnnCreatePersistentRNNPlan(rnnDesc: cudnnRNNDescriptor_t, minibatch: ::core::ffi::c_int, dataType: cudnnDataType_t, plan: *mut cudnnPersistentRNNPlan_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnRNNDescriptor_t, ::core::ffi::c_int, cudnnDataType_t, *mut cudnnPersistentRNNPlan_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnCreatePersistentRNNPlan") });
        _f(rnnDesc, minibatch, dataType, plan)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnCreatePersistentRNNPlan(rnnDesc: cudnnRNNDescriptor_t, minibatch: ::core::ffi::c_int, dataType: cudnnDataType_t, plan: *mut cudnnPersistentRNNPlan_t) -> cudnnStatus_t;
        }
        cudnnCreatePersistentRNNPlan(rnnDesc, minibatch, dataType, plan)
    }
}
pub unsafe fn cudnnCreatePoolingDescriptor(poolingDesc: *mut cudnnPoolingDescriptor_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(*mut cudnnPoolingDescriptor_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnCreatePoolingDescriptor") });
        _f(poolingDesc)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnCreatePoolingDescriptor(poolingDesc: *mut cudnnPoolingDescriptor_t) -> cudnnStatus_t;
        }
        cudnnCreatePoolingDescriptor(poolingDesc)
    }
}
pub unsafe fn cudnnCreateRNNDataDescriptor(rnnDataDesc: *mut cudnnRNNDataDescriptor_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(*mut cudnnRNNDataDescriptor_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnCreateRNNDataDescriptor") });
        _f(rnnDataDesc)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnCreateRNNDataDescriptor(rnnDataDesc: *mut cudnnRNNDataDescriptor_t) -> cudnnStatus_t;
        }
        cudnnCreateRNNDataDescriptor(rnnDataDesc)
    }
}
pub unsafe fn cudnnCreateRNNDescriptor(rnnDesc: *mut cudnnRNNDescriptor_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(*mut cudnnRNNDescriptor_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnCreateRNNDescriptor") });
        _f(rnnDesc)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnCreateRNNDescriptor(rnnDesc: *mut cudnnRNNDescriptor_t) -> cudnnStatus_t;
        }
        cudnnCreateRNNDescriptor(rnnDesc)
    }
}
pub unsafe fn cudnnCreateReduceTensorDescriptor(reduceTensorDesc: *mut cudnnReduceTensorDescriptor_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(*mut cudnnReduceTensorDescriptor_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnCreateReduceTensorDescriptor") });
        _f(reduceTensorDesc)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnCreateReduceTensorDescriptor(reduceTensorDesc: *mut cudnnReduceTensorDescriptor_t) -> cudnnStatus_t;
        }
        cudnnCreateReduceTensorDescriptor(reduceTensorDesc)
    }
}
pub unsafe fn cudnnCreateSeqDataDescriptor(seqDataDesc: *mut cudnnSeqDataDescriptor_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(*mut cudnnSeqDataDescriptor_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnCreateSeqDataDescriptor") });
        _f(seqDataDesc)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnCreateSeqDataDescriptor(seqDataDesc: *mut cudnnSeqDataDescriptor_t) -> cudnnStatus_t;
        }
        cudnnCreateSeqDataDescriptor(seqDataDesc)
    }
}
pub unsafe fn cudnnCreateSpatialTransformerDescriptor(stDesc: *mut cudnnSpatialTransformerDescriptor_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(*mut cudnnSpatialTransformerDescriptor_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnCreateSpatialTransformerDescriptor") });
        _f(stDesc)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnCreateSpatialTransformerDescriptor(stDesc: *mut cudnnSpatialTransformerDescriptor_t) -> cudnnStatus_t;
        }
        cudnnCreateSpatialTransformerDescriptor(stDesc)
    }
}
pub unsafe fn cudnnCreateTensorDescriptor(tensorDesc: *mut cudnnTensorDescriptor_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(*mut cudnnTensorDescriptor_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnCreateTensorDescriptor") });
        _f(tensorDesc)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnCreateTensorDescriptor(tensorDesc: *mut cudnnTensorDescriptor_t) -> cudnnStatus_t;
        }
        cudnnCreateTensorDescriptor(tensorDesc)
    }
}
pub unsafe fn cudnnCreateTensorTransformDescriptor(transformDesc: *mut cudnnTensorTransformDescriptor_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(*mut cudnnTensorTransformDescriptor_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnCreateTensorTransformDescriptor") });
        _f(transformDesc)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnCreateTensorTransformDescriptor(transformDesc: *mut cudnnTensorTransformDescriptor_t) -> cudnnStatus_t;
        }
        cudnnCreateTensorTransformDescriptor(transformDesc)
    }
}
pub unsafe fn cudnnDeriveBNTensorDescriptor(derivedBnDesc: cudnnTensorDescriptor_t, xDesc: cudnnTensorDescriptor_t, mode: cudnnBatchNormMode_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnTensorDescriptor_t, cudnnTensorDescriptor_t, cudnnBatchNormMode_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnDeriveBNTensorDescriptor") });
        _f(derivedBnDesc, xDesc, mode)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnDeriveBNTensorDescriptor(derivedBnDesc: cudnnTensorDescriptor_t, xDesc: cudnnTensorDescriptor_t, mode: cudnnBatchNormMode_t) -> cudnnStatus_t;
        }
        cudnnDeriveBNTensorDescriptor(derivedBnDesc, xDesc, mode)
    }
}
pub unsafe fn cudnnDeriveNormTensorDescriptor(derivedNormScaleBiasDesc: cudnnTensorDescriptor_t, derivedNormMeanVarDesc: cudnnTensorDescriptor_t, xDesc: cudnnTensorDescriptor_t, mode: cudnnNormMode_t, groupCnt: ::core::ffi::c_int) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnTensorDescriptor_t, cudnnTensorDescriptor_t, cudnnTensorDescriptor_t, cudnnNormMode_t, ::core::ffi::c_int) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnDeriveNormTensorDescriptor") });
        _f(derivedNormScaleBiasDesc, derivedNormMeanVarDesc, xDesc, mode, groupCnt)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnDeriveNormTensorDescriptor(derivedNormScaleBiasDesc: cudnnTensorDescriptor_t, derivedNormMeanVarDesc: cudnnTensorDescriptor_t, xDesc: cudnnTensorDescriptor_t, mode: cudnnNormMode_t, groupCnt: ::core::ffi::c_int) -> cudnnStatus_t;
        }
        cudnnDeriveNormTensorDescriptor(derivedNormScaleBiasDesc, derivedNormMeanVarDesc, xDesc, mode, groupCnt)
    }
}
pub unsafe fn cudnnDestroy(handle: cudnnHandle_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnDestroy") });
        _f(handle)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnDestroy(handle: cudnnHandle_t) -> cudnnStatus_t;
        }
        cudnnDestroy(handle)
    }
}
pub unsafe fn cudnnDestroyActivationDescriptor(activationDesc: cudnnActivationDescriptor_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnActivationDescriptor_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnDestroyActivationDescriptor") });
        _f(activationDesc)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnDestroyActivationDescriptor(activationDesc: cudnnActivationDescriptor_t) -> cudnnStatus_t;
        }
        cudnnDestroyActivationDescriptor(activationDesc)
    }
}
#[cfg(any(feature = "cudnn-08009"))]
pub unsafe fn cudnnDestroyAlgorithmDescriptor(algoDesc: cudnnAlgorithmDescriptor_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnAlgorithmDescriptor_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnDestroyAlgorithmDescriptor") });
        _f(algoDesc)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnDestroyAlgorithmDescriptor(algoDesc: cudnnAlgorithmDescriptor_t) -> cudnnStatus_t;
        }
        cudnnDestroyAlgorithmDescriptor(algoDesc)
    }
}
#[cfg(any(feature = "cudnn-08009"))]
pub unsafe fn cudnnDestroyAlgorithmPerformance(algoPerf: *mut cudnnAlgorithmPerformance_t, numberToDestroy: ::core::ffi::c_int) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(*mut cudnnAlgorithmPerformance_t, ::core::ffi::c_int) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnDestroyAlgorithmPerformance") });
        _f(algoPerf, numberToDestroy)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnDestroyAlgorithmPerformance(algoPerf: *mut cudnnAlgorithmPerformance_t, numberToDestroy: ::core::ffi::c_int) -> cudnnStatus_t;
        }
        cudnnDestroyAlgorithmPerformance(algoPerf, numberToDestroy)
    }
}
pub unsafe fn cudnnDestroyAttnDescriptor(attnDesc: cudnnAttnDescriptor_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnAttnDescriptor_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnDestroyAttnDescriptor") });
        _f(attnDesc)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnDestroyAttnDescriptor(attnDesc: cudnnAttnDescriptor_t) -> cudnnStatus_t;
        }
        cudnnDestroyAttnDescriptor(attnDesc)
    }
}
pub unsafe fn cudnnDestroyCTCLossDescriptor(ctcLossDesc: cudnnCTCLossDescriptor_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnCTCLossDescriptor_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnDestroyCTCLossDescriptor") });
        _f(ctcLossDesc)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnDestroyCTCLossDescriptor(ctcLossDesc: cudnnCTCLossDescriptor_t) -> cudnnStatus_t;
        }
        cudnnDestroyCTCLossDescriptor(ctcLossDesc)
    }
}
pub unsafe fn cudnnDestroyConvolutionDescriptor(convDesc: cudnnConvolutionDescriptor_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnConvolutionDescriptor_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnDestroyConvolutionDescriptor") });
        _f(convDesc)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnDestroyConvolutionDescriptor(convDesc: cudnnConvolutionDescriptor_t) -> cudnnStatus_t;
        }
        cudnnDestroyConvolutionDescriptor(convDesc)
    }
}
pub unsafe fn cudnnDestroyDropoutDescriptor(dropoutDesc: cudnnDropoutDescriptor_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnDropoutDescriptor_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnDestroyDropoutDescriptor") });
        _f(dropoutDesc)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnDestroyDropoutDescriptor(dropoutDesc: cudnnDropoutDescriptor_t) -> cudnnStatus_t;
        }
        cudnnDestroyDropoutDescriptor(dropoutDesc)
    }
}
pub unsafe fn cudnnDestroyFilterDescriptor(filterDesc: cudnnFilterDescriptor_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnFilterDescriptor_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnDestroyFilterDescriptor") });
        _f(filterDesc)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnDestroyFilterDescriptor(filterDesc: cudnnFilterDescriptor_t) -> cudnnStatus_t;
        }
        cudnnDestroyFilterDescriptor(filterDesc)
    }
}
pub unsafe fn cudnnDestroyFusedOpsConstParamPack(constPack: cudnnFusedOpsConstParamPack_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnFusedOpsConstParamPack_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnDestroyFusedOpsConstParamPack") });
        _f(constPack)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnDestroyFusedOpsConstParamPack(constPack: cudnnFusedOpsConstParamPack_t) -> cudnnStatus_t;
        }
        cudnnDestroyFusedOpsConstParamPack(constPack)
    }
}
pub unsafe fn cudnnDestroyFusedOpsPlan(plan: cudnnFusedOpsPlan_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnFusedOpsPlan_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnDestroyFusedOpsPlan") });
        _f(plan)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnDestroyFusedOpsPlan(plan: cudnnFusedOpsPlan_t) -> cudnnStatus_t;
        }
        cudnnDestroyFusedOpsPlan(plan)
    }
}
pub unsafe fn cudnnDestroyFusedOpsVariantParamPack(varPack: cudnnFusedOpsVariantParamPack_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnFusedOpsVariantParamPack_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnDestroyFusedOpsVariantParamPack") });
        _f(varPack)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnDestroyFusedOpsVariantParamPack(varPack: cudnnFusedOpsVariantParamPack_t) -> cudnnStatus_t;
        }
        cudnnDestroyFusedOpsVariantParamPack(varPack)
    }
}
pub unsafe fn cudnnDestroyLRNDescriptor(lrnDesc: cudnnLRNDescriptor_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnLRNDescriptor_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnDestroyLRNDescriptor") });
        _f(lrnDesc)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnDestroyLRNDescriptor(lrnDesc: cudnnLRNDescriptor_t) -> cudnnStatus_t;
        }
        cudnnDestroyLRNDescriptor(lrnDesc)
    }
}
pub unsafe fn cudnnDestroyOpTensorDescriptor(opTensorDesc: cudnnOpTensorDescriptor_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnOpTensorDescriptor_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnDestroyOpTensorDescriptor") });
        _f(opTensorDesc)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnDestroyOpTensorDescriptor(opTensorDesc: cudnnOpTensorDescriptor_t) -> cudnnStatus_t;
        }
        cudnnDestroyOpTensorDescriptor(opTensorDesc)
    }
}
#[cfg(any(feature = "cudnn-08009"))]
pub unsafe fn cudnnDestroyPersistentRNNPlan(plan: cudnnPersistentRNNPlan_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnPersistentRNNPlan_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnDestroyPersistentRNNPlan") });
        _f(plan)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnDestroyPersistentRNNPlan(plan: cudnnPersistentRNNPlan_t) -> cudnnStatus_t;
        }
        cudnnDestroyPersistentRNNPlan(plan)
    }
}
pub unsafe fn cudnnDestroyPoolingDescriptor(poolingDesc: cudnnPoolingDescriptor_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnPoolingDescriptor_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnDestroyPoolingDescriptor") });
        _f(poolingDesc)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnDestroyPoolingDescriptor(poolingDesc: cudnnPoolingDescriptor_t) -> cudnnStatus_t;
        }
        cudnnDestroyPoolingDescriptor(poolingDesc)
    }
}
pub unsafe fn cudnnDestroyRNNDataDescriptor(rnnDataDesc: cudnnRNNDataDescriptor_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnRNNDataDescriptor_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnDestroyRNNDataDescriptor") });
        _f(rnnDataDesc)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnDestroyRNNDataDescriptor(rnnDataDesc: cudnnRNNDataDescriptor_t) -> cudnnStatus_t;
        }
        cudnnDestroyRNNDataDescriptor(rnnDataDesc)
    }
}
pub unsafe fn cudnnDestroyRNNDescriptor(rnnDesc: cudnnRNNDescriptor_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnRNNDescriptor_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnDestroyRNNDescriptor") });
        _f(rnnDesc)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnDestroyRNNDescriptor(rnnDesc: cudnnRNNDescriptor_t) -> cudnnStatus_t;
        }
        cudnnDestroyRNNDescriptor(rnnDesc)
    }
}
pub unsafe fn cudnnDestroyReduceTensorDescriptor(reduceTensorDesc: cudnnReduceTensorDescriptor_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnReduceTensorDescriptor_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnDestroyReduceTensorDescriptor") });
        _f(reduceTensorDesc)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnDestroyReduceTensorDescriptor(reduceTensorDesc: cudnnReduceTensorDescriptor_t) -> cudnnStatus_t;
        }
        cudnnDestroyReduceTensorDescriptor(reduceTensorDesc)
    }
}
pub unsafe fn cudnnDestroySeqDataDescriptor(seqDataDesc: cudnnSeqDataDescriptor_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnSeqDataDescriptor_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnDestroySeqDataDescriptor") });
        _f(seqDataDesc)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnDestroySeqDataDescriptor(seqDataDesc: cudnnSeqDataDescriptor_t) -> cudnnStatus_t;
        }
        cudnnDestroySeqDataDescriptor(seqDataDesc)
    }
}
pub unsafe fn cudnnDestroySpatialTransformerDescriptor(stDesc: cudnnSpatialTransformerDescriptor_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnSpatialTransformerDescriptor_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnDestroySpatialTransformerDescriptor") });
        _f(stDesc)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnDestroySpatialTransformerDescriptor(stDesc: cudnnSpatialTransformerDescriptor_t) -> cudnnStatus_t;
        }
        cudnnDestroySpatialTransformerDescriptor(stDesc)
    }
}
pub unsafe fn cudnnDestroyTensorDescriptor(tensorDesc: cudnnTensorDescriptor_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnTensorDescriptor_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnDestroyTensorDescriptor") });
        _f(tensorDesc)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnDestroyTensorDescriptor(tensorDesc: cudnnTensorDescriptor_t) -> cudnnStatus_t;
        }
        cudnnDestroyTensorDescriptor(tensorDesc)
    }
}
pub unsafe fn cudnnDestroyTensorTransformDescriptor(transformDesc: cudnnTensorTransformDescriptor_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnTensorTransformDescriptor_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnDestroyTensorTransformDescriptor") });
        _f(transformDesc)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnDestroyTensorTransformDescriptor(transformDesc: cudnnTensorTransformDescriptor_t) -> cudnnStatus_t;
        }
        cudnnDestroyTensorTransformDescriptor(transformDesc)
    }
}
pub unsafe fn cudnnDivisiveNormalizationBackward(handle: cudnnHandle_t, normDesc: cudnnLRNDescriptor_t, mode: cudnnDivNormMode_t, alpha: *const ::core::ffi::c_void, xDesc: cudnnTensorDescriptor_t, x: *const ::core::ffi::c_void, means: *const ::core::ffi::c_void, dy: *const ::core::ffi::c_void, temp: *mut ::core::ffi::c_void, temp2: *mut ::core::ffi::c_void, beta: *const ::core::ffi::c_void, dXdMeansDesc: cudnnTensorDescriptor_t, dx: *mut ::core::ffi::c_void, dMeans: *mut ::core::ffi::c_void) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnLRNDescriptor_t, cudnnDivNormMode_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, *const ::core::ffi::c_void, *const ::core::ffi::c_void, *mut ::core::ffi::c_void, *mut ::core::ffi::c_void, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *mut ::core::ffi::c_void, *mut ::core::ffi::c_void) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnDivisiveNormalizationBackward") });
        _f(handle, normDesc, mode, alpha, xDesc, x, means, dy, temp, temp2, beta, dXdMeansDesc, dx, dMeans)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnDivisiveNormalizationBackward(handle: cudnnHandle_t, normDesc: cudnnLRNDescriptor_t, mode: cudnnDivNormMode_t, alpha: *const ::core::ffi::c_void, xDesc: cudnnTensorDescriptor_t, x: *const ::core::ffi::c_void, means: *const ::core::ffi::c_void, dy: *const ::core::ffi::c_void, temp: *mut ::core::ffi::c_void, temp2: *mut ::core::ffi::c_void, beta: *const ::core::ffi::c_void, dXdMeansDesc: cudnnTensorDescriptor_t, dx: *mut ::core::ffi::c_void, dMeans: *mut ::core::ffi::c_void) -> cudnnStatus_t;
        }
        cudnnDivisiveNormalizationBackward(handle, normDesc, mode, alpha, xDesc, x, means, dy, temp, temp2, beta, dXdMeansDesc, dx, dMeans)
    }
}
pub unsafe fn cudnnDivisiveNormalizationForward(handle: cudnnHandle_t, normDesc: cudnnLRNDescriptor_t, mode: cudnnDivNormMode_t, alpha: *const ::core::ffi::c_void, xDesc: cudnnTensorDescriptor_t, x: *const ::core::ffi::c_void, means: *const ::core::ffi::c_void, temp: *mut ::core::ffi::c_void, temp2: *mut ::core::ffi::c_void, beta: *const ::core::ffi::c_void, yDesc: cudnnTensorDescriptor_t, y: *mut ::core::ffi::c_void) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnLRNDescriptor_t, cudnnDivNormMode_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, *const ::core::ffi::c_void, *mut ::core::ffi::c_void, *mut ::core::ffi::c_void, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *mut ::core::ffi::c_void) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnDivisiveNormalizationForward") });
        _f(handle, normDesc, mode, alpha, xDesc, x, means, temp, temp2, beta, yDesc, y)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnDivisiveNormalizationForward(handle: cudnnHandle_t, normDesc: cudnnLRNDescriptor_t, mode: cudnnDivNormMode_t, alpha: *const ::core::ffi::c_void, xDesc: cudnnTensorDescriptor_t, x: *const ::core::ffi::c_void, means: *const ::core::ffi::c_void, temp: *mut ::core::ffi::c_void, temp2: *mut ::core::ffi::c_void, beta: *const ::core::ffi::c_void, yDesc: cudnnTensorDescriptor_t, y: *mut ::core::ffi::c_void) -> cudnnStatus_t;
        }
        cudnnDivisiveNormalizationForward(handle, normDesc, mode, alpha, xDesc, x, means, temp, temp2, beta, yDesc, y)
    }
}
pub unsafe fn cudnnDropoutBackward(handle: cudnnHandle_t, dropoutDesc: cudnnDropoutDescriptor_t, dydesc: cudnnTensorDescriptor_t, dy: *const ::core::ffi::c_void, dxdesc: cudnnTensorDescriptor_t, dx: *mut ::core::ffi::c_void, reserveSpace: *mut ::core::ffi::c_void, reserveSpaceSizeInBytes: usize) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnDropoutDescriptor_t, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *mut ::core::ffi::c_void, *mut ::core::ffi::c_void, usize) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnDropoutBackward") });
        _f(handle, dropoutDesc, dydesc, dy, dxdesc, dx, reserveSpace, reserveSpaceSizeInBytes)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnDropoutBackward(handle: cudnnHandle_t, dropoutDesc: cudnnDropoutDescriptor_t, dydesc: cudnnTensorDescriptor_t, dy: *const ::core::ffi::c_void, dxdesc: cudnnTensorDescriptor_t, dx: *mut ::core::ffi::c_void, reserveSpace: *mut ::core::ffi::c_void, reserveSpaceSizeInBytes: usize) -> cudnnStatus_t;
        }
        cudnnDropoutBackward(handle, dropoutDesc, dydesc, dy, dxdesc, dx, reserveSpace, reserveSpaceSizeInBytes)
    }
}
pub unsafe fn cudnnDropoutForward(handle: cudnnHandle_t, dropoutDesc: cudnnDropoutDescriptor_t, xdesc: cudnnTensorDescriptor_t, x: *const ::core::ffi::c_void, ydesc: cudnnTensorDescriptor_t, y: *mut ::core::ffi::c_void, reserveSpace: *mut ::core::ffi::c_void, reserveSpaceSizeInBytes: usize) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnDropoutDescriptor_t, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *mut ::core::ffi::c_void, *mut ::core::ffi::c_void, usize) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnDropoutForward") });
        _f(handle, dropoutDesc, xdesc, x, ydesc, y, reserveSpace, reserveSpaceSizeInBytes)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnDropoutForward(handle: cudnnHandle_t, dropoutDesc: cudnnDropoutDescriptor_t, xdesc: cudnnTensorDescriptor_t, x: *const ::core::ffi::c_void, ydesc: cudnnTensorDescriptor_t, y: *mut ::core::ffi::c_void, reserveSpace: *mut ::core::ffi::c_void, reserveSpaceSizeInBytes: usize) -> cudnnStatus_t;
        }
        cudnnDropoutForward(handle, dropoutDesc, xdesc, x, ydesc, y, reserveSpace, reserveSpaceSizeInBytes)
    }
}
pub unsafe fn cudnnDropoutGetReserveSpaceSize(xdesc: cudnnTensorDescriptor_t, sizeInBytes: *mut usize) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnTensorDescriptor_t, *mut usize) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnDropoutGetReserveSpaceSize") });
        _f(xdesc, sizeInBytes)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnDropoutGetReserveSpaceSize(xdesc: cudnnTensorDescriptor_t, sizeInBytes: *mut usize) -> cudnnStatus_t;
        }
        cudnnDropoutGetReserveSpaceSize(xdesc, sizeInBytes)
    }
}
pub unsafe fn cudnnDropoutGetStatesSize(handle: cudnnHandle_t, sizeInBytes: *mut usize) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, *mut usize) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnDropoutGetStatesSize") });
        _f(handle, sizeInBytes)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnDropoutGetStatesSize(handle: cudnnHandle_t, sizeInBytes: *mut usize) -> cudnnStatus_t;
        }
        cudnnDropoutGetStatesSize(handle, sizeInBytes)
    }
}
pub unsafe fn cudnnFindConvolutionBackwardDataAlgorithm(handle: cudnnHandle_t, wDesc: cudnnFilterDescriptor_t, dyDesc: cudnnTensorDescriptor_t, convDesc: cudnnConvolutionDescriptor_t, dxDesc: cudnnTensorDescriptor_t, requestedAlgoCount: ::core::ffi::c_int, returnedAlgoCount: *mut ::core::ffi::c_int, perfResults: *mut cudnnConvolutionBwdDataAlgoPerf_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnFilterDescriptor_t, cudnnTensorDescriptor_t, cudnnConvolutionDescriptor_t, cudnnTensorDescriptor_t, ::core::ffi::c_int, *mut ::core::ffi::c_int, *mut cudnnConvolutionBwdDataAlgoPerf_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnFindConvolutionBackwardDataAlgorithm") });
        _f(handle, wDesc, dyDesc, convDesc, dxDesc, requestedAlgoCount, returnedAlgoCount, perfResults)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnFindConvolutionBackwardDataAlgorithm(handle: cudnnHandle_t, wDesc: cudnnFilterDescriptor_t, dyDesc: cudnnTensorDescriptor_t, convDesc: cudnnConvolutionDescriptor_t, dxDesc: cudnnTensorDescriptor_t, requestedAlgoCount: ::core::ffi::c_int, returnedAlgoCount: *mut ::core::ffi::c_int, perfResults: *mut cudnnConvolutionBwdDataAlgoPerf_t) -> cudnnStatus_t;
        }
        cudnnFindConvolutionBackwardDataAlgorithm(handle, wDesc, dyDesc, convDesc, dxDesc, requestedAlgoCount, returnedAlgoCount, perfResults)
    }
}
pub unsafe fn cudnnFindConvolutionBackwardDataAlgorithmEx(handle: cudnnHandle_t, wDesc: cudnnFilterDescriptor_t, w: *const ::core::ffi::c_void, dyDesc: cudnnTensorDescriptor_t, dy: *const ::core::ffi::c_void, convDesc: cudnnConvolutionDescriptor_t, dxDesc: cudnnTensorDescriptor_t, dx: *mut ::core::ffi::c_void, requestedAlgoCount: ::core::ffi::c_int, returnedAlgoCount: *mut ::core::ffi::c_int, perfResults: *mut cudnnConvolutionBwdDataAlgoPerf_t, workSpace: *mut ::core::ffi::c_void, workSpaceSizeInBytes: usize) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnFilterDescriptor_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, cudnnConvolutionDescriptor_t, cudnnTensorDescriptor_t, *mut ::core::ffi::c_void, ::core::ffi::c_int, *mut ::core::ffi::c_int, *mut cudnnConvolutionBwdDataAlgoPerf_t, *mut ::core::ffi::c_void, usize) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnFindConvolutionBackwardDataAlgorithmEx") });
        _f(handle, wDesc, w, dyDesc, dy, convDesc, dxDesc, dx, requestedAlgoCount, returnedAlgoCount, perfResults, workSpace, workSpaceSizeInBytes)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnFindConvolutionBackwardDataAlgorithmEx(handle: cudnnHandle_t, wDesc: cudnnFilterDescriptor_t, w: *const ::core::ffi::c_void, dyDesc: cudnnTensorDescriptor_t, dy: *const ::core::ffi::c_void, convDesc: cudnnConvolutionDescriptor_t, dxDesc: cudnnTensorDescriptor_t, dx: *mut ::core::ffi::c_void, requestedAlgoCount: ::core::ffi::c_int, returnedAlgoCount: *mut ::core::ffi::c_int, perfResults: *mut cudnnConvolutionBwdDataAlgoPerf_t, workSpace: *mut ::core::ffi::c_void, workSpaceSizeInBytes: usize) -> cudnnStatus_t;
        }
        cudnnFindConvolutionBackwardDataAlgorithmEx(handle, wDesc, w, dyDesc, dy, convDesc, dxDesc, dx, requestedAlgoCount, returnedAlgoCount, perfResults, workSpace, workSpaceSizeInBytes)
    }
}
pub unsafe fn cudnnFindConvolutionBackwardFilterAlgorithm(handle: cudnnHandle_t, xDesc: cudnnTensorDescriptor_t, dyDesc: cudnnTensorDescriptor_t, convDesc: cudnnConvolutionDescriptor_t, dwDesc: cudnnFilterDescriptor_t, requestedAlgoCount: ::core::ffi::c_int, returnedAlgoCount: *mut ::core::ffi::c_int, perfResults: *mut cudnnConvolutionBwdFilterAlgoPerf_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnTensorDescriptor_t, cudnnTensorDescriptor_t, cudnnConvolutionDescriptor_t, cudnnFilterDescriptor_t, ::core::ffi::c_int, *mut ::core::ffi::c_int, *mut cudnnConvolutionBwdFilterAlgoPerf_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnFindConvolutionBackwardFilterAlgorithm") });
        _f(handle, xDesc, dyDesc, convDesc, dwDesc, requestedAlgoCount, returnedAlgoCount, perfResults)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnFindConvolutionBackwardFilterAlgorithm(handle: cudnnHandle_t, xDesc: cudnnTensorDescriptor_t, dyDesc: cudnnTensorDescriptor_t, convDesc: cudnnConvolutionDescriptor_t, dwDesc: cudnnFilterDescriptor_t, requestedAlgoCount: ::core::ffi::c_int, returnedAlgoCount: *mut ::core::ffi::c_int, perfResults: *mut cudnnConvolutionBwdFilterAlgoPerf_t) -> cudnnStatus_t;
        }
        cudnnFindConvolutionBackwardFilterAlgorithm(handle, xDesc, dyDesc, convDesc, dwDesc, requestedAlgoCount, returnedAlgoCount, perfResults)
    }
}
pub unsafe fn cudnnFindConvolutionBackwardFilterAlgorithmEx(handle: cudnnHandle_t, xDesc: cudnnTensorDescriptor_t, x: *const ::core::ffi::c_void, dyDesc: cudnnTensorDescriptor_t, y: *const ::core::ffi::c_void, convDesc: cudnnConvolutionDescriptor_t, dwDesc: cudnnFilterDescriptor_t, dw: *mut ::core::ffi::c_void, requestedAlgoCount: ::core::ffi::c_int, returnedAlgoCount: *mut ::core::ffi::c_int, perfResults: *mut cudnnConvolutionBwdFilterAlgoPerf_t, workSpace: *mut ::core::ffi::c_void, workSpaceSizeInBytes: usize) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, cudnnConvolutionDescriptor_t, cudnnFilterDescriptor_t, *mut ::core::ffi::c_void, ::core::ffi::c_int, *mut ::core::ffi::c_int, *mut cudnnConvolutionBwdFilterAlgoPerf_t, *mut ::core::ffi::c_void, usize) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnFindConvolutionBackwardFilterAlgorithmEx") });
        _f(handle, xDesc, x, dyDesc, y, convDesc, dwDesc, dw, requestedAlgoCount, returnedAlgoCount, perfResults, workSpace, workSpaceSizeInBytes)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnFindConvolutionBackwardFilterAlgorithmEx(handle: cudnnHandle_t, xDesc: cudnnTensorDescriptor_t, x: *const ::core::ffi::c_void, dyDesc: cudnnTensorDescriptor_t, y: *const ::core::ffi::c_void, convDesc: cudnnConvolutionDescriptor_t, dwDesc: cudnnFilterDescriptor_t, dw: *mut ::core::ffi::c_void, requestedAlgoCount: ::core::ffi::c_int, returnedAlgoCount: *mut ::core::ffi::c_int, perfResults: *mut cudnnConvolutionBwdFilterAlgoPerf_t, workSpace: *mut ::core::ffi::c_void, workSpaceSizeInBytes: usize) -> cudnnStatus_t;
        }
        cudnnFindConvolutionBackwardFilterAlgorithmEx(handle, xDesc, x, dyDesc, y, convDesc, dwDesc, dw, requestedAlgoCount, returnedAlgoCount, perfResults, workSpace, workSpaceSizeInBytes)
    }
}
pub unsafe fn cudnnFindConvolutionForwardAlgorithm(handle: cudnnHandle_t, xDesc: cudnnTensorDescriptor_t, wDesc: cudnnFilterDescriptor_t, convDesc: cudnnConvolutionDescriptor_t, yDesc: cudnnTensorDescriptor_t, requestedAlgoCount: ::core::ffi::c_int, returnedAlgoCount: *mut ::core::ffi::c_int, perfResults: *mut cudnnConvolutionFwdAlgoPerf_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnTensorDescriptor_t, cudnnFilterDescriptor_t, cudnnConvolutionDescriptor_t, cudnnTensorDescriptor_t, ::core::ffi::c_int, *mut ::core::ffi::c_int, *mut cudnnConvolutionFwdAlgoPerf_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnFindConvolutionForwardAlgorithm") });
        _f(handle, xDesc, wDesc, convDesc, yDesc, requestedAlgoCount, returnedAlgoCount, perfResults)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnFindConvolutionForwardAlgorithm(handle: cudnnHandle_t, xDesc: cudnnTensorDescriptor_t, wDesc: cudnnFilterDescriptor_t, convDesc: cudnnConvolutionDescriptor_t, yDesc: cudnnTensorDescriptor_t, requestedAlgoCount: ::core::ffi::c_int, returnedAlgoCount: *mut ::core::ffi::c_int, perfResults: *mut cudnnConvolutionFwdAlgoPerf_t) -> cudnnStatus_t;
        }
        cudnnFindConvolutionForwardAlgorithm(handle, xDesc, wDesc, convDesc, yDesc, requestedAlgoCount, returnedAlgoCount, perfResults)
    }
}
pub unsafe fn cudnnFindConvolutionForwardAlgorithmEx(handle: cudnnHandle_t, xDesc: cudnnTensorDescriptor_t, x: *const ::core::ffi::c_void, wDesc: cudnnFilterDescriptor_t, w: *const ::core::ffi::c_void, convDesc: cudnnConvolutionDescriptor_t, yDesc: cudnnTensorDescriptor_t, y: *mut ::core::ffi::c_void, requestedAlgoCount: ::core::ffi::c_int, returnedAlgoCount: *mut ::core::ffi::c_int, perfResults: *mut cudnnConvolutionFwdAlgoPerf_t, workSpace: *mut ::core::ffi::c_void, workSpaceSizeInBytes: usize) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, cudnnFilterDescriptor_t, *const ::core::ffi::c_void, cudnnConvolutionDescriptor_t, cudnnTensorDescriptor_t, *mut ::core::ffi::c_void, ::core::ffi::c_int, *mut ::core::ffi::c_int, *mut cudnnConvolutionFwdAlgoPerf_t, *mut ::core::ffi::c_void, usize) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnFindConvolutionForwardAlgorithmEx") });
        _f(handle, xDesc, x, wDesc, w, convDesc, yDesc, y, requestedAlgoCount, returnedAlgoCount, perfResults, workSpace, workSpaceSizeInBytes)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnFindConvolutionForwardAlgorithmEx(handle: cudnnHandle_t, xDesc: cudnnTensorDescriptor_t, x: *const ::core::ffi::c_void, wDesc: cudnnFilterDescriptor_t, w: *const ::core::ffi::c_void, convDesc: cudnnConvolutionDescriptor_t, yDesc: cudnnTensorDescriptor_t, y: *mut ::core::ffi::c_void, requestedAlgoCount: ::core::ffi::c_int, returnedAlgoCount: *mut ::core::ffi::c_int, perfResults: *mut cudnnConvolutionFwdAlgoPerf_t, workSpace: *mut ::core::ffi::c_void, workSpaceSizeInBytes: usize) -> cudnnStatus_t;
        }
        cudnnFindConvolutionForwardAlgorithmEx(handle, xDesc, x, wDesc, w, convDesc, yDesc, y, requestedAlgoCount, returnedAlgoCount, perfResults, workSpace, workSpaceSizeInBytes)
    }
}
#[cfg(any(feature = "cudnn-08009"))]
pub unsafe fn cudnnFindRNNBackwardDataAlgorithmEx(
    handle: cudnnHandle_t, rnnDesc: cudnnRNNDescriptor_t, seqLength: ::core::ffi::c_int, yDesc: *const cudnnTensorDescriptor_t, y: *const ::core::ffi::c_void, dyDesc: *const cudnnTensorDescriptor_t, dy: *const ::core::ffi::c_void, dhyDesc: cudnnTensorDescriptor_t, dhy: *const ::core::ffi::c_void, dcyDesc: cudnnTensorDescriptor_t, dcy: *const ::core::ffi::c_void, wDesc: cudnnFilterDescriptor_t, w: *const ::core::ffi::c_void, hxDesc: cudnnTensorDescriptor_t, hx: *const ::core::ffi::c_void, cxDesc: cudnnTensorDescriptor_t, cx: *const ::core::ffi::c_void, dxDesc: *const cudnnTensorDescriptor_t, dx: *mut ::core::ffi::c_void, dhxDesc: cudnnTensorDescriptor_t, dhx: *mut ::core::ffi::c_void, dcxDesc: cudnnTensorDescriptor_t, dcx: *mut ::core::ffi::c_void, findIntensity: f32, requestedAlgoCount: ::core::ffi::c_int, returnedAlgoCount: *mut ::core::ffi::c_int, perfResults: *mut cudnnAlgorithmPerformance_t, workspace: *mut ::core::ffi::c_void, workSpaceSizeInBytes: usize,
    reserveSpace: *mut ::core::ffi::c_void, reserveSpaceSizeInBytes: usize,
) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnRNNDescriptor_t, ::core::ffi::c_int, *const cudnnTensorDescriptor_t, *const ::core::ffi::c_void, *const cudnnTensorDescriptor_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, cudnnFilterDescriptor_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, *const cudnnTensorDescriptor_t, *mut ::core::ffi::c_void, cudnnTensorDescriptor_t, *mut ::core::ffi::c_void, cudnnTensorDescriptor_t, *mut ::core::ffi::c_void, f32, ::core::ffi::c_int, *mut ::core::ffi::c_int, *mut cudnnAlgorithmPerformance_t, *mut ::core::ffi::c_void, usize, *mut ::core::ffi::c_void, usize) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnFindRNNBackwardDataAlgorithmEx") });
        _f(handle, rnnDesc, seqLength, yDesc, y, dyDesc, dy, dhyDesc, dhy, dcyDesc, dcy, wDesc, w, hxDesc, hx, cxDesc, cx, dxDesc, dx, dhxDesc, dhx, dcxDesc, dcx, findIntensity, requestedAlgoCount, returnedAlgoCount, perfResults, workspace, workSpaceSizeInBytes, reserveSpace, reserveSpaceSizeInBytes)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnFindRNNBackwardDataAlgorithmEx(
                handle: cudnnHandle_t, rnnDesc: cudnnRNNDescriptor_t, seqLength: ::core::ffi::c_int, yDesc: *const cudnnTensorDescriptor_t, y: *const ::core::ffi::c_void, dyDesc: *const cudnnTensorDescriptor_t, dy: *const ::core::ffi::c_void, dhyDesc: cudnnTensorDescriptor_t, dhy: *const ::core::ffi::c_void, dcyDesc: cudnnTensorDescriptor_t, dcy: *const ::core::ffi::c_void, wDesc: cudnnFilterDescriptor_t, w: *const ::core::ffi::c_void, hxDesc: cudnnTensorDescriptor_t, hx: *const ::core::ffi::c_void, cxDesc: cudnnTensorDescriptor_t, cx: *const ::core::ffi::c_void, dxDesc: *const cudnnTensorDescriptor_t, dx: *mut ::core::ffi::c_void, dhxDesc: cudnnTensorDescriptor_t, dhx: *mut ::core::ffi::c_void, dcxDesc: cudnnTensorDescriptor_t, dcx: *mut ::core::ffi::c_void, findIntensity: f32, requestedAlgoCount: ::core::ffi::c_int, returnedAlgoCount: *mut ::core::ffi::c_int, perfResults: *mut cudnnAlgorithmPerformance_t, workspace: *mut ::core::ffi::c_void, workSpaceSizeInBytes: usize,
                reserveSpace: *mut ::core::ffi::c_void, reserveSpaceSizeInBytes: usize,
            ) -> cudnnStatus_t;
        }
        cudnnFindRNNBackwardDataAlgorithmEx(handle, rnnDesc, seqLength, yDesc, y, dyDesc, dy, dhyDesc, dhy, dcyDesc, dcy, wDesc, w, hxDesc, hx, cxDesc, cx, dxDesc, dx, dhxDesc, dhx, dcxDesc, dcx, findIntensity, requestedAlgoCount, returnedAlgoCount, perfResults, workspace, workSpaceSizeInBytes, reserveSpace, reserveSpaceSizeInBytes)
    }
}
#[cfg(any(feature = "cudnn-08009"))]
pub unsafe fn cudnnFindRNNBackwardWeightsAlgorithmEx(handle: cudnnHandle_t, rnnDesc: cudnnRNNDescriptor_t, seqLength: ::core::ffi::c_int, xDesc: *const cudnnTensorDescriptor_t, x: *const ::core::ffi::c_void, hxDesc: cudnnTensorDescriptor_t, hx: *const ::core::ffi::c_void, yDesc: *const cudnnTensorDescriptor_t, y: *const ::core::ffi::c_void, findIntensity: f32, requestedAlgoCount: ::core::ffi::c_int, returnedAlgoCount: *mut ::core::ffi::c_int, perfResults: *mut cudnnAlgorithmPerformance_t, workspace: *const ::core::ffi::c_void, workSpaceSizeInBytes: usize, dwDesc: cudnnFilterDescriptor_t, dw: *mut ::core::ffi::c_void, reserveSpace: *const ::core::ffi::c_void, reserveSpaceSizeInBytes: usize) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnRNNDescriptor_t, ::core::ffi::c_int, *const cudnnTensorDescriptor_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, *const cudnnTensorDescriptor_t, *const ::core::ffi::c_void, f32, ::core::ffi::c_int, *mut ::core::ffi::c_int, *mut cudnnAlgorithmPerformance_t, *const ::core::ffi::c_void, usize, cudnnFilterDescriptor_t, *mut ::core::ffi::c_void, *const ::core::ffi::c_void, usize) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnFindRNNBackwardWeightsAlgorithmEx") });
        _f(handle, rnnDesc, seqLength, xDesc, x, hxDesc, hx, yDesc, y, findIntensity, requestedAlgoCount, returnedAlgoCount, perfResults, workspace, workSpaceSizeInBytes, dwDesc, dw, reserveSpace, reserveSpaceSizeInBytes)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnFindRNNBackwardWeightsAlgorithmEx(handle: cudnnHandle_t, rnnDesc: cudnnRNNDescriptor_t, seqLength: ::core::ffi::c_int, xDesc: *const cudnnTensorDescriptor_t, x: *const ::core::ffi::c_void, hxDesc: cudnnTensorDescriptor_t, hx: *const ::core::ffi::c_void, yDesc: *const cudnnTensorDescriptor_t, y: *const ::core::ffi::c_void, findIntensity: f32, requestedAlgoCount: ::core::ffi::c_int, returnedAlgoCount: *mut ::core::ffi::c_int, perfResults: *mut cudnnAlgorithmPerformance_t, workspace: *const ::core::ffi::c_void, workSpaceSizeInBytes: usize, dwDesc: cudnnFilterDescriptor_t, dw: *mut ::core::ffi::c_void, reserveSpace: *const ::core::ffi::c_void, reserveSpaceSizeInBytes: usize) -> cudnnStatus_t;
        }
        cudnnFindRNNBackwardWeightsAlgorithmEx(handle, rnnDesc, seqLength, xDesc, x, hxDesc, hx, yDesc, y, findIntensity, requestedAlgoCount, returnedAlgoCount, perfResults, workspace, workSpaceSizeInBytes, dwDesc, dw, reserveSpace, reserveSpaceSizeInBytes)
    }
}
#[cfg(any(feature = "cudnn-08009"))]
pub unsafe fn cudnnFindRNNForwardInferenceAlgorithmEx(handle: cudnnHandle_t, rnnDesc: cudnnRNNDescriptor_t, seqLength: ::core::ffi::c_int, xDesc: *const cudnnTensorDescriptor_t, x: *const ::core::ffi::c_void, hxDesc: cudnnTensorDescriptor_t, hx: *const ::core::ffi::c_void, cxDesc: cudnnTensorDescriptor_t, cx: *const ::core::ffi::c_void, wDesc: cudnnFilterDescriptor_t, w: *const ::core::ffi::c_void, yDesc: *const cudnnTensorDescriptor_t, y: *mut ::core::ffi::c_void, hyDesc: cudnnTensorDescriptor_t, hy: *mut ::core::ffi::c_void, cyDesc: cudnnTensorDescriptor_t, cy: *mut ::core::ffi::c_void, findIntensity: f32, requestedAlgoCount: ::core::ffi::c_int, returnedAlgoCount: *mut ::core::ffi::c_int, perfResults: *mut cudnnAlgorithmPerformance_t, workspace: *mut ::core::ffi::c_void, workSpaceSizeInBytes: usize) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnRNNDescriptor_t, ::core::ffi::c_int, *const cudnnTensorDescriptor_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, cudnnFilterDescriptor_t, *const ::core::ffi::c_void, *const cudnnTensorDescriptor_t, *mut ::core::ffi::c_void, cudnnTensorDescriptor_t, *mut ::core::ffi::c_void, cudnnTensorDescriptor_t, *mut ::core::ffi::c_void, f32, ::core::ffi::c_int, *mut ::core::ffi::c_int, *mut cudnnAlgorithmPerformance_t, *mut ::core::ffi::c_void, usize) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnFindRNNForwardInferenceAlgorithmEx") });
        _f(handle, rnnDesc, seqLength, xDesc, x, hxDesc, hx, cxDesc, cx, wDesc, w, yDesc, y, hyDesc, hy, cyDesc, cy, findIntensity, requestedAlgoCount, returnedAlgoCount, perfResults, workspace, workSpaceSizeInBytes)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnFindRNNForwardInferenceAlgorithmEx(handle: cudnnHandle_t, rnnDesc: cudnnRNNDescriptor_t, seqLength: ::core::ffi::c_int, xDesc: *const cudnnTensorDescriptor_t, x: *const ::core::ffi::c_void, hxDesc: cudnnTensorDescriptor_t, hx: *const ::core::ffi::c_void, cxDesc: cudnnTensorDescriptor_t, cx: *const ::core::ffi::c_void, wDesc: cudnnFilterDescriptor_t, w: *const ::core::ffi::c_void, yDesc: *const cudnnTensorDescriptor_t, y: *mut ::core::ffi::c_void, hyDesc: cudnnTensorDescriptor_t, hy: *mut ::core::ffi::c_void, cyDesc: cudnnTensorDescriptor_t, cy: *mut ::core::ffi::c_void, findIntensity: f32, requestedAlgoCount: ::core::ffi::c_int, returnedAlgoCount: *mut ::core::ffi::c_int, perfResults: *mut cudnnAlgorithmPerformance_t, workspace: *mut ::core::ffi::c_void, workSpaceSizeInBytes: usize) -> cudnnStatus_t;
        }
        cudnnFindRNNForwardInferenceAlgorithmEx(handle, rnnDesc, seqLength, xDesc, x, hxDesc, hx, cxDesc, cx, wDesc, w, yDesc, y, hyDesc, hy, cyDesc, cy, findIntensity, requestedAlgoCount, returnedAlgoCount, perfResults, workspace, workSpaceSizeInBytes)
    }
}
#[cfg(any(feature = "cudnn-08009"))]
pub unsafe fn cudnnFindRNNForwardTrainingAlgorithmEx(handle: cudnnHandle_t, rnnDesc: cudnnRNNDescriptor_t, seqLength: ::core::ffi::c_int, xDesc: *const cudnnTensorDescriptor_t, x: *const ::core::ffi::c_void, hxDesc: cudnnTensorDescriptor_t, hx: *const ::core::ffi::c_void, cxDesc: cudnnTensorDescriptor_t, cx: *const ::core::ffi::c_void, wDesc: cudnnFilterDescriptor_t, w: *const ::core::ffi::c_void, yDesc: *const cudnnTensorDescriptor_t, y: *mut ::core::ffi::c_void, hyDesc: cudnnTensorDescriptor_t, hy: *mut ::core::ffi::c_void, cyDesc: cudnnTensorDescriptor_t, cy: *mut ::core::ffi::c_void, findIntensity: f32, requestedAlgoCount: ::core::ffi::c_int, returnedAlgoCount: *mut ::core::ffi::c_int, perfResults: *mut cudnnAlgorithmPerformance_t, workspace: *mut ::core::ffi::c_void, workSpaceSizeInBytes: usize, reserveSpace: *mut ::core::ffi::c_void, reserveSpaceSizeInBytes: usize) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnRNNDescriptor_t, ::core::ffi::c_int, *const cudnnTensorDescriptor_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, cudnnFilterDescriptor_t, *const ::core::ffi::c_void, *const cudnnTensorDescriptor_t, *mut ::core::ffi::c_void, cudnnTensorDescriptor_t, *mut ::core::ffi::c_void, cudnnTensorDescriptor_t, *mut ::core::ffi::c_void, f32, ::core::ffi::c_int, *mut ::core::ffi::c_int, *mut cudnnAlgorithmPerformance_t, *mut ::core::ffi::c_void, usize, *mut ::core::ffi::c_void, usize) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnFindRNNForwardTrainingAlgorithmEx") });
        _f(handle, rnnDesc, seqLength, xDesc, x, hxDesc, hx, cxDesc, cx, wDesc, w, yDesc, y, hyDesc, hy, cyDesc, cy, findIntensity, requestedAlgoCount, returnedAlgoCount, perfResults, workspace, workSpaceSizeInBytes, reserveSpace, reserveSpaceSizeInBytes)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnFindRNNForwardTrainingAlgorithmEx(handle: cudnnHandle_t, rnnDesc: cudnnRNNDescriptor_t, seqLength: ::core::ffi::c_int, xDesc: *const cudnnTensorDescriptor_t, x: *const ::core::ffi::c_void, hxDesc: cudnnTensorDescriptor_t, hx: *const ::core::ffi::c_void, cxDesc: cudnnTensorDescriptor_t, cx: *const ::core::ffi::c_void, wDesc: cudnnFilterDescriptor_t, w: *const ::core::ffi::c_void, yDesc: *const cudnnTensorDescriptor_t, y: *mut ::core::ffi::c_void, hyDesc: cudnnTensorDescriptor_t, hy: *mut ::core::ffi::c_void, cyDesc: cudnnTensorDescriptor_t, cy: *mut ::core::ffi::c_void, findIntensity: f32, requestedAlgoCount: ::core::ffi::c_int, returnedAlgoCount: *mut ::core::ffi::c_int, perfResults: *mut cudnnAlgorithmPerformance_t, workspace: *mut ::core::ffi::c_void, workSpaceSizeInBytes: usize, reserveSpace: *mut ::core::ffi::c_void, reserveSpaceSizeInBytes: usize) -> cudnnStatus_t;
        }
        cudnnFindRNNForwardTrainingAlgorithmEx(handle, rnnDesc, seqLength, xDesc, x, hxDesc, hx, cxDesc, cx, wDesc, w, yDesc, y, hyDesc, hy, cyDesc, cy, findIntensity, requestedAlgoCount, returnedAlgoCount, perfResults, workspace, workSpaceSizeInBytes, reserveSpace, reserveSpaceSizeInBytes)
    }
}
pub unsafe fn cudnnFusedOpsExecute(handle: cudnnHandle_t, plan: cudnnFusedOpsPlan_t, varPack: cudnnFusedOpsVariantParamPack_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnFusedOpsPlan_t, cudnnFusedOpsVariantParamPack_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnFusedOpsExecute") });
        _f(handle, plan, varPack)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnFusedOpsExecute(handle: cudnnHandle_t, plan: cudnnFusedOpsPlan_t, varPack: cudnnFusedOpsVariantParamPack_t) -> cudnnStatus_t;
        }
        cudnnFusedOpsExecute(handle, plan, varPack)
    }
}
pub unsafe fn cudnnGetActivationDescriptor(activationDesc: cudnnActivationDescriptor_t, mode: *mut cudnnActivationMode_t, reluNanOpt: *mut cudnnNanPropagation_t, coef: *mut f64) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnActivationDescriptor_t, *mut cudnnActivationMode_t, *mut cudnnNanPropagation_t, *mut f64) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetActivationDescriptor") });
        _f(activationDesc, mode, reluNanOpt, coef)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetActivationDescriptor(activationDesc: cudnnActivationDescriptor_t, mode: *mut cudnnActivationMode_t, reluNanOpt: *mut cudnnNanPropagation_t, coef: *mut f64) -> cudnnStatus_t;
        }
        cudnnGetActivationDescriptor(activationDesc, mode, reluNanOpt, coef)
    }
}
pub unsafe fn cudnnGetActivationDescriptorSwishBeta(activationDesc: cudnnActivationDescriptor_t, swish_beta: *mut f64) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnActivationDescriptor_t, *mut f64) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetActivationDescriptorSwishBeta") });
        _f(activationDesc, swish_beta)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetActivationDescriptorSwishBeta(activationDesc: cudnnActivationDescriptor_t, swish_beta: *mut f64) -> cudnnStatus_t;
        }
        cudnnGetActivationDescriptorSwishBeta(activationDesc, swish_beta)
    }
}
#[cfg(any(feature = "cudnn-08009"))]
pub unsafe fn cudnnGetAlgorithmDescriptor(algoDesc: cudnnAlgorithmDescriptor_t, algorithm: *mut cudnnAlgorithm_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnAlgorithmDescriptor_t, *mut cudnnAlgorithm_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetAlgorithmDescriptor") });
        _f(algoDesc, algorithm)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetAlgorithmDescriptor(algoDesc: cudnnAlgorithmDescriptor_t, algorithm: *mut cudnnAlgorithm_t) -> cudnnStatus_t;
        }
        cudnnGetAlgorithmDescriptor(algoDesc, algorithm)
    }
}
#[cfg(any(feature = "cudnn-08009"))]
pub unsafe fn cudnnGetAlgorithmPerformance(algoPerf: cudnnAlgorithmPerformance_t, algoDesc: *mut cudnnAlgorithmDescriptor_t, status: *mut cudnnStatus_t, time: *mut f32, memory: *mut usize) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnAlgorithmPerformance_t, *mut cudnnAlgorithmDescriptor_t, *mut cudnnStatus_t, *mut f32, *mut usize) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetAlgorithmPerformance") });
        _f(algoPerf, algoDesc, status, time, memory)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetAlgorithmPerformance(algoPerf: cudnnAlgorithmPerformance_t, algoDesc: *mut cudnnAlgorithmDescriptor_t, status: *mut cudnnStatus_t, time: *mut f32, memory: *mut usize) -> cudnnStatus_t;
        }
        cudnnGetAlgorithmPerformance(algoPerf, algoDesc, status, time, memory)
    }
}
#[cfg(any(feature = "cudnn-08009"))]
pub unsafe fn cudnnGetAlgorithmSpaceSize(handle: cudnnHandle_t, algoDesc: cudnnAlgorithmDescriptor_t, algoSpaceSizeInBytes: *mut usize) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnAlgorithmDescriptor_t, *mut usize) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetAlgorithmSpaceSize") });
        _f(handle, algoDesc, algoSpaceSizeInBytes)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetAlgorithmSpaceSize(handle: cudnnHandle_t, algoDesc: cudnnAlgorithmDescriptor_t, algoSpaceSizeInBytes: *mut usize) -> cudnnStatus_t;
        }
        cudnnGetAlgorithmSpaceSize(handle, algoDesc, algoSpaceSizeInBytes)
    }
}
pub unsafe fn cudnnGetAttnDescriptor(attnDesc: cudnnAttnDescriptor_t, attnMode: *mut ::core::ffi::c_uint, nHeads: *mut ::core::ffi::c_int, smScaler: *mut f64, dataType: *mut cudnnDataType_t, computePrec: *mut cudnnDataType_t, mathType: *mut cudnnMathType_t, attnDropoutDesc: *mut cudnnDropoutDescriptor_t, postDropoutDesc: *mut cudnnDropoutDescriptor_t, qSize: *mut ::core::ffi::c_int, kSize: *mut ::core::ffi::c_int, vSize: *mut ::core::ffi::c_int, qProjSize: *mut ::core::ffi::c_int, kProjSize: *mut ::core::ffi::c_int, vProjSize: *mut ::core::ffi::c_int, oProjSize: *mut ::core::ffi::c_int, qoMaxSeqLength: *mut ::core::ffi::c_int, kvMaxSeqLength: *mut ::core::ffi::c_int, maxBatchSize: *mut ::core::ffi::c_int, maxBeamSize: *mut ::core::ffi::c_int) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnAttnDescriptor_t, *mut ::core::ffi::c_uint, *mut ::core::ffi::c_int, *mut f64, *mut cudnnDataType_t, *mut cudnnDataType_t, *mut cudnnMathType_t, *mut cudnnDropoutDescriptor_t, *mut cudnnDropoutDescriptor_t, *mut ::core::ffi::c_int, *mut ::core::ffi::c_int, *mut ::core::ffi::c_int, *mut ::core::ffi::c_int, *mut ::core::ffi::c_int, *mut ::core::ffi::c_int, *mut ::core::ffi::c_int, *mut ::core::ffi::c_int, *mut ::core::ffi::c_int, *mut ::core::ffi::c_int, *mut ::core::ffi::c_int) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetAttnDescriptor") });
        _f(attnDesc, attnMode, nHeads, smScaler, dataType, computePrec, mathType, attnDropoutDesc, postDropoutDesc, qSize, kSize, vSize, qProjSize, kProjSize, vProjSize, oProjSize, qoMaxSeqLength, kvMaxSeqLength, maxBatchSize, maxBeamSize)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetAttnDescriptor(attnDesc: cudnnAttnDescriptor_t, attnMode: *mut ::core::ffi::c_uint, nHeads: *mut ::core::ffi::c_int, smScaler: *mut f64, dataType: *mut cudnnDataType_t, computePrec: *mut cudnnDataType_t, mathType: *mut cudnnMathType_t, attnDropoutDesc: *mut cudnnDropoutDescriptor_t, postDropoutDesc: *mut cudnnDropoutDescriptor_t, qSize: *mut ::core::ffi::c_int, kSize: *mut ::core::ffi::c_int, vSize: *mut ::core::ffi::c_int, qProjSize: *mut ::core::ffi::c_int, kProjSize: *mut ::core::ffi::c_int, vProjSize: *mut ::core::ffi::c_int, oProjSize: *mut ::core::ffi::c_int, qoMaxSeqLength: *mut ::core::ffi::c_int, kvMaxSeqLength: *mut ::core::ffi::c_int, maxBatchSize: *mut ::core::ffi::c_int, maxBeamSize: *mut ::core::ffi::c_int) -> cudnnStatus_t;
        }
        cudnnGetAttnDescriptor(attnDesc, attnMode, nHeads, smScaler, dataType, computePrec, mathType, attnDropoutDesc, postDropoutDesc, qSize, kSize, vSize, qProjSize, kProjSize, vProjSize, oProjSize, qoMaxSeqLength, kvMaxSeqLength, maxBatchSize, maxBeamSize)
    }
}
pub unsafe fn cudnnGetBatchNormalizationBackwardExWorkspaceSize(handle: cudnnHandle_t, mode: cudnnBatchNormMode_t, bnOps: cudnnBatchNormOps_t, xDesc: cudnnTensorDescriptor_t, yDesc: cudnnTensorDescriptor_t, dyDesc: cudnnTensorDescriptor_t, dzDesc: cudnnTensorDescriptor_t, dxDesc: cudnnTensorDescriptor_t, dBnScaleBiasDesc: cudnnTensorDescriptor_t, activationDesc: cudnnActivationDescriptor_t, sizeInBytes: *mut usize) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnBatchNormMode_t, cudnnBatchNormOps_t, cudnnTensorDescriptor_t, cudnnTensorDescriptor_t, cudnnTensorDescriptor_t, cudnnTensorDescriptor_t, cudnnTensorDescriptor_t, cudnnTensorDescriptor_t, cudnnActivationDescriptor_t, *mut usize) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetBatchNormalizationBackwardExWorkspaceSize") });
        _f(handle, mode, bnOps, xDesc, yDesc, dyDesc, dzDesc, dxDesc, dBnScaleBiasDesc, activationDesc, sizeInBytes)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetBatchNormalizationBackwardExWorkspaceSize(handle: cudnnHandle_t, mode: cudnnBatchNormMode_t, bnOps: cudnnBatchNormOps_t, xDesc: cudnnTensorDescriptor_t, yDesc: cudnnTensorDescriptor_t, dyDesc: cudnnTensorDescriptor_t, dzDesc: cudnnTensorDescriptor_t, dxDesc: cudnnTensorDescriptor_t, dBnScaleBiasDesc: cudnnTensorDescriptor_t, activationDesc: cudnnActivationDescriptor_t, sizeInBytes: *mut usize) -> cudnnStatus_t;
        }
        cudnnGetBatchNormalizationBackwardExWorkspaceSize(handle, mode, bnOps, xDesc, yDesc, dyDesc, dzDesc, dxDesc, dBnScaleBiasDesc, activationDesc, sizeInBytes)
    }
}
pub unsafe fn cudnnGetBatchNormalizationForwardTrainingExWorkspaceSize(handle: cudnnHandle_t, mode: cudnnBatchNormMode_t, bnOps: cudnnBatchNormOps_t, xDesc: cudnnTensorDescriptor_t, zDesc: cudnnTensorDescriptor_t, yDesc: cudnnTensorDescriptor_t, bnScaleBiasMeanVarDesc: cudnnTensorDescriptor_t, activationDesc: cudnnActivationDescriptor_t, sizeInBytes: *mut usize) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnBatchNormMode_t, cudnnBatchNormOps_t, cudnnTensorDescriptor_t, cudnnTensorDescriptor_t, cudnnTensorDescriptor_t, cudnnTensorDescriptor_t, cudnnActivationDescriptor_t, *mut usize) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetBatchNormalizationForwardTrainingExWorkspaceSize") });
        _f(handle, mode, bnOps, xDesc, zDesc, yDesc, bnScaleBiasMeanVarDesc, activationDesc, sizeInBytes)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetBatchNormalizationForwardTrainingExWorkspaceSize(handle: cudnnHandle_t, mode: cudnnBatchNormMode_t, bnOps: cudnnBatchNormOps_t, xDesc: cudnnTensorDescriptor_t, zDesc: cudnnTensorDescriptor_t, yDesc: cudnnTensorDescriptor_t, bnScaleBiasMeanVarDesc: cudnnTensorDescriptor_t, activationDesc: cudnnActivationDescriptor_t, sizeInBytes: *mut usize) -> cudnnStatus_t;
        }
        cudnnGetBatchNormalizationForwardTrainingExWorkspaceSize(handle, mode, bnOps, xDesc, zDesc, yDesc, bnScaleBiasMeanVarDesc, activationDesc, sizeInBytes)
    }
}
pub unsafe fn cudnnGetBatchNormalizationTrainingExReserveSpaceSize(handle: cudnnHandle_t, mode: cudnnBatchNormMode_t, bnOps: cudnnBatchNormOps_t, activationDesc: cudnnActivationDescriptor_t, xDesc: cudnnTensorDescriptor_t, sizeInBytes: *mut usize) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnBatchNormMode_t, cudnnBatchNormOps_t, cudnnActivationDescriptor_t, cudnnTensorDescriptor_t, *mut usize) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetBatchNormalizationTrainingExReserveSpaceSize") });
        _f(handle, mode, bnOps, activationDesc, xDesc, sizeInBytes)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetBatchNormalizationTrainingExReserveSpaceSize(handle: cudnnHandle_t, mode: cudnnBatchNormMode_t, bnOps: cudnnBatchNormOps_t, activationDesc: cudnnActivationDescriptor_t, xDesc: cudnnTensorDescriptor_t, sizeInBytes: *mut usize) -> cudnnStatus_t;
        }
        cudnnGetBatchNormalizationTrainingExReserveSpaceSize(handle, mode, bnOps, activationDesc, xDesc, sizeInBytes)
    }
}
pub unsafe fn cudnnGetCTCLossDescriptor(ctcLossDesc: cudnnCTCLossDescriptor_t, compType: *mut cudnnDataType_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnCTCLossDescriptor_t, *mut cudnnDataType_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetCTCLossDescriptor") });
        _f(ctcLossDesc, compType)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetCTCLossDescriptor(ctcLossDesc: cudnnCTCLossDescriptor_t, compType: *mut cudnnDataType_t) -> cudnnStatus_t;
        }
        cudnnGetCTCLossDescriptor(ctcLossDesc, compType)
    }
}
pub unsafe fn cudnnGetCTCLossDescriptorEx(ctcLossDesc: cudnnCTCLossDescriptor_t, compType: *mut cudnnDataType_t, normMode: *mut cudnnLossNormalizationMode_t, gradMode: *mut cudnnNanPropagation_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnCTCLossDescriptor_t, *mut cudnnDataType_t, *mut cudnnLossNormalizationMode_t, *mut cudnnNanPropagation_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetCTCLossDescriptorEx") });
        _f(ctcLossDesc, compType, normMode, gradMode)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetCTCLossDescriptorEx(ctcLossDesc: cudnnCTCLossDescriptor_t, compType: *mut cudnnDataType_t, normMode: *mut cudnnLossNormalizationMode_t, gradMode: *mut cudnnNanPropagation_t) -> cudnnStatus_t;
        }
        cudnnGetCTCLossDescriptorEx(ctcLossDesc, compType, normMode, gradMode)
    }
}
pub unsafe fn cudnnGetCTCLossDescriptor_v8(ctcLossDesc: cudnnCTCLossDescriptor_t, compType: *mut cudnnDataType_t, normMode: *mut cudnnLossNormalizationMode_t, gradMode: *mut cudnnNanPropagation_t, maxLabelLength: *mut ::core::ffi::c_int) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnCTCLossDescriptor_t, *mut cudnnDataType_t, *mut cudnnLossNormalizationMode_t, *mut cudnnNanPropagation_t, *mut ::core::ffi::c_int) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetCTCLossDescriptor_v8") });
        _f(ctcLossDesc, compType, normMode, gradMode, maxLabelLength)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetCTCLossDescriptor_v8(ctcLossDesc: cudnnCTCLossDescriptor_t, compType: *mut cudnnDataType_t, normMode: *mut cudnnLossNormalizationMode_t, gradMode: *mut cudnnNanPropagation_t, maxLabelLength: *mut ::core::ffi::c_int) -> cudnnStatus_t;
        }
        cudnnGetCTCLossDescriptor_v8(ctcLossDesc, compType, normMode, gradMode, maxLabelLength)
    }
}
#[cfg(any(feature = "cudnn-09010", feature = "cudnn-09021"))]
pub unsafe fn cudnnGetCTCLossDescriptor_v9(ctcLossDesc: cudnnCTCLossDescriptor_t, compType: *mut cudnnDataType_t, normMode: *mut cudnnLossNormalizationMode_t, ctcGradMode: *mut cudnnCTCGradMode_t, maxLabelLength: *mut ::core::ffi::c_int) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnCTCLossDescriptor_t, *mut cudnnDataType_t, *mut cudnnLossNormalizationMode_t, *mut cudnnCTCGradMode_t, *mut ::core::ffi::c_int) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetCTCLossDescriptor_v9") });
        _f(ctcLossDesc, compType, normMode, ctcGradMode, maxLabelLength)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetCTCLossDescriptor_v9(ctcLossDesc: cudnnCTCLossDescriptor_t, compType: *mut cudnnDataType_t, normMode: *mut cudnnLossNormalizationMode_t, ctcGradMode: *mut cudnnCTCGradMode_t, maxLabelLength: *mut ::core::ffi::c_int) -> cudnnStatus_t;
        }
        cudnnGetCTCLossDescriptor_v9(ctcLossDesc, compType, normMode, ctcGradMode, maxLabelLength)
    }
}
pub unsafe fn cudnnGetCTCLossWorkspaceSize(handle: cudnnHandle_t, probsDesc: cudnnTensorDescriptor_t, gradientsDesc: cudnnTensorDescriptor_t, labels: *const ::core::ffi::c_int, labelLengths: *const ::core::ffi::c_int, inputLengths: *const ::core::ffi::c_int, algo: cudnnCTCLossAlgo_t, ctcLossDesc: cudnnCTCLossDescriptor_t, sizeInBytes: *mut usize) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnTensorDescriptor_t, cudnnTensorDescriptor_t, *const ::core::ffi::c_int, *const ::core::ffi::c_int, *const ::core::ffi::c_int, cudnnCTCLossAlgo_t, cudnnCTCLossDescriptor_t, *mut usize) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetCTCLossWorkspaceSize") });
        _f(handle, probsDesc, gradientsDesc, labels, labelLengths, inputLengths, algo, ctcLossDesc, sizeInBytes)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetCTCLossWorkspaceSize(handle: cudnnHandle_t, probsDesc: cudnnTensorDescriptor_t, gradientsDesc: cudnnTensorDescriptor_t, labels: *const ::core::ffi::c_int, labelLengths: *const ::core::ffi::c_int, inputLengths: *const ::core::ffi::c_int, algo: cudnnCTCLossAlgo_t, ctcLossDesc: cudnnCTCLossDescriptor_t, sizeInBytes: *mut usize) -> cudnnStatus_t;
        }
        cudnnGetCTCLossWorkspaceSize(handle, probsDesc, gradientsDesc, labels, labelLengths, inputLengths, algo, ctcLossDesc, sizeInBytes)
    }
}
pub unsafe fn cudnnGetCTCLossWorkspaceSize_v8(handle: cudnnHandle_t, algo: cudnnCTCLossAlgo_t, ctcLossDesc: cudnnCTCLossDescriptor_t, probsDesc: cudnnTensorDescriptor_t, gradientsDesc: cudnnTensorDescriptor_t, sizeInBytes: *mut usize) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnCTCLossAlgo_t, cudnnCTCLossDescriptor_t, cudnnTensorDescriptor_t, cudnnTensorDescriptor_t, *mut usize) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetCTCLossWorkspaceSize_v8") });
        _f(handle, algo, ctcLossDesc, probsDesc, gradientsDesc, sizeInBytes)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetCTCLossWorkspaceSize_v8(handle: cudnnHandle_t, algo: cudnnCTCLossAlgo_t, ctcLossDesc: cudnnCTCLossDescriptor_t, probsDesc: cudnnTensorDescriptor_t, gradientsDesc: cudnnTensorDescriptor_t, sizeInBytes: *mut usize) -> cudnnStatus_t;
        }
        cudnnGetCTCLossWorkspaceSize_v8(handle, algo, ctcLossDesc, probsDesc, gradientsDesc, sizeInBytes)
    }
}
pub unsafe fn cudnnGetCallback(mask: *mut ::core::ffi::c_uint, udata: *mut *mut ::core::ffi::c_void, fptr: *mut cudnnCallback_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(*mut ::core::ffi::c_uint, *mut *mut ::core::ffi::c_void, *mut cudnnCallback_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetCallback") });
        _f(mask, udata, fptr)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetCallback(mask: *mut ::core::ffi::c_uint, udata: *mut *mut ::core::ffi::c_void, fptr: *mut cudnnCallback_t) -> cudnnStatus_t;
        }
        cudnnGetCallback(mask, udata, fptr)
    }
}
pub unsafe fn cudnnGetConvolution2dDescriptor(convDesc: cudnnConvolutionDescriptor_t, pad_h: *mut ::core::ffi::c_int, pad_w: *mut ::core::ffi::c_int, u: *mut ::core::ffi::c_int, v: *mut ::core::ffi::c_int, dilation_h: *mut ::core::ffi::c_int, dilation_w: *mut ::core::ffi::c_int, mode: *mut cudnnConvolutionMode_t, computeType: *mut cudnnDataType_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnConvolutionDescriptor_t, *mut ::core::ffi::c_int, *mut ::core::ffi::c_int, *mut ::core::ffi::c_int, *mut ::core::ffi::c_int, *mut ::core::ffi::c_int, *mut ::core::ffi::c_int, *mut cudnnConvolutionMode_t, *mut cudnnDataType_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetConvolution2dDescriptor") });
        _f(convDesc, pad_h, pad_w, u, v, dilation_h, dilation_w, mode, computeType)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetConvolution2dDescriptor(convDesc: cudnnConvolutionDescriptor_t, pad_h: *mut ::core::ffi::c_int, pad_w: *mut ::core::ffi::c_int, u: *mut ::core::ffi::c_int, v: *mut ::core::ffi::c_int, dilation_h: *mut ::core::ffi::c_int, dilation_w: *mut ::core::ffi::c_int, mode: *mut cudnnConvolutionMode_t, computeType: *mut cudnnDataType_t) -> cudnnStatus_t;
        }
        cudnnGetConvolution2dDescriptor(convDesc, pad_h, pad_w, u, v, dilation_h, dilation_w, mode, computeType)
    }
}
pub unsafe fn cudnnGetConvolution2dForwardOutputDim(convDesc: cudnnConvolutionDescriptor_t, inputTensorDesc: cudnnTensorDescriptor_t, filterDesc: cudnnFilterDescriptor_t, n: *mut ::core::ffi::c_int, c: *mut ::core::ffi::c_int, h: *mut ::core::ffi::c_int, w: *mut ::core::ffi::c_int) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnConvolutionDescriptor_t, cudnnTensorDescriptor_t, cudnnFilterDescriptor_t, *mut ::core::ffi::c_int, *mut ::core::ffi::c_int, *mut ::core::ffi::c_int, *mut ::core::ffi::c_int) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetConvolution2dForwardOutputDim") });
        _f(convDesc, inputTensorDesc, filterDesc, n, c, h, w)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetConvolution2dForwardOutputDim(convDesc: cudnnConvolutionDescriptor_t, inputTensorDesc: cudnnTensorDescriptor_t, filterDesc: cudnnFilterDescriptor_t, n: *mut ::core::ffi::c_int, c: *mut ::core::ffi::c_int, h: *mut ::core::ffi::c_int, w: *mut ::core::ffi::c_int) -> cudnnStatus_t;
        }
        cudnnGetConvolution2dForwardOutputDim(convDesc, inputTensorDesc, filterDesc, n, c, h, w)
    }
}
pub unsafe fn cudnnGetConvolutionBackwardDataAlgorithmMaxCount(handle: cudnnHandle_t, count: *mut ::core::ffi::c_int) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, *mut ::core::ffi::c_int) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetConvolutionBackwardDataAlgorithmMaxCount") });
        _f(handle, count)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetConvolutionBackwardDataAlgorithmMaxCount(handle: cudnnHandle_t, count: *mut ::core::ffi::c_int) -> cudnnStatus_t;
        }
        cudnnGetConvolutionBackwardDataAlgorithmMaxCount(handle, count)
    }
}
pub unsafe fn cudnnGetConvolutionBackwardDataAlgorithm_v7(handle: cudnnHandle_t, filterDesc: cudnnFilterDescriptor_t, diffDesc: cudnnTensorDescriptor_t, convDesc: cudnnConvolutionDescriptor_t, gradDesc: cudnnTensorDescriptor_t, requestedAlgoCount: ::core::ffi::c_int, returnedAlgoCount: *mut ::core::ffi::c_int, perfResults: *mut cudnnConvolutionBwdDataAlgoPerf_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnFilterDescriptor_t, cudnnTensorDescriptor_t, cudnnConvolutionDescriptor_t, cudnnTensorDescriptor_t, ::core::ffi::c_int, *mut ::core::ffi::c_int, *mut cudnnConvolutionBwdDataAlgoPerf_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetConvolutionBackwardDataAlgorithm_v7") });
        _f(handle, filterDesc, diffDesc, convDesc, gradDesc, requestedAlgoCount, returnedAlgoCount, perfResults)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetConvolutionBackwardDataAlgorithm_v7(handle: cudnnHandle_t, filterDesc: cudnnFilterDescriptor_t, diffDesc: cudnnTensorDescriptor_t, convDesc: cudnnConvolutionDescriptor_t, gradDesc: cudnnTensorDescriptor_t, requestedAlgoCount: ::core::ffi::c_int, returnedAlgoCount: *mut ::core::ffi::c_int, perfResults: *mut cudnnConvolutionBwdDataAlgoPerf_t) -> cudnnStatus_t;
        }
        cudnnGetConvolutionBackwardDataAlgorithm_v7(handle, filterDesc, diffDesc, convDesc, gradDesc, requestedAlgoCount, returnedAlgoCount, perfResults)
    }
}
pub unsafe fn cudnnGetConvolutionBackwardDataWorkspaceSize(handle: cudnnHandle_t, wDesc: cudnnFilterDescriptor_t, dyDesc: cudnnTensorDescriptor_t, convDesc: cudnnConvolutionDescriptor_t, dxDesc: cudnnTensorDescriptor_t, algo: cudnnConvolutionBwdDataAlgo_t, sizeInBytes: *mut usize) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnFilterDescriptor_t, cudnnTensorDescriptor_t, cudnnConvolutionDescriptor_t, cudnnTensorDescriptor_t, cudnnConvolutionBwdDataAlgo_t, *mut usize) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetConvolutionBackwardDataWorkspaceSize") });
        _f(handle, wDesc, dyDesc, convDesc, dxDesc, algo, sizeInBytes)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetConvolutionBackwardDataWorkspaceSize(handle: cudnnHandle_t, wDesc: cudnnFilterDescriptor_t, dyDesc: cudnnTensorDescriptor_t, convDesc: cudnnConvolutionDescriptor_t, dxDesc: cudnnTensorDescriptor_t, algo: cudnnConvolutionBwdDataAlgo_t, sizeInBytes: *mut usize) -> cudnnStatus_t;
        }
        cudnnGetConvolutionBackwardDataWorkspaceSize(handle, wDesc, dyDesc, convDesc, dxDesc, algo, sizeInBytes)
    }
}
pub unsafe fn cudnnGetConvolutionBackwardFilterAlgorithmMaxCount(handle: cudnnHandle_t, count: *mut ::core::ffi::c_int) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, *mut ::core::ffi::c_int) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetConvolutionBackwardFilterAlgorithmMaxCount") });
        _f(handle, count)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetConvolutionBackwardFilterAlgorithmMaxCount(handle: cudnnHandle_t, count: *mut ::core::ffi::c_int) -> cudnnStatus_t;
        }
        cudnnGetConvolutionBackwardFilterAlgorithmMaxCount(handle, count)
    }
}
pub unsafe fn cudnnGetConvolutionBackwardFilterAlgorithm_v7(handle: cudnnHandle_t, srcDesc: cudnnTensorDescriptor_t, diffDesc: cudnnTensorDescriptor_t, convDesc: cudnnConvolutionDescriptor_t, gradDesc: cudnnFilterDescriptor_t, requestedAlgoCount: ::core::ffi::c_int, returnedAlgoCount: *mut ::core::ffi::c_int, perfResults: *mut cudnnConvolutionBwdFilterAlgoPerf_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnTensorDescriptor_t, cudnnTensorDescriptor_t, cudnnConvolutionDescriptor_t, cudnnFilterDescriptor_t, ::core::ffi::c_int, *mut ::core::ffi::c_int, *mut cudnnConvolutionBwdFilterAlgoPerf_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetConvolutionBackwardFilterAlgorithm_v7") });
        _f(handle, srcDesc, diffDesc, convDesc, gradDesc, requestedAlgoCount, returnedAlgoCount, perfResults)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetConvolutionBackwardFilterAlgorithm_v7(handle: cudnnHandle_t, srcDesc: cudnnTensorDescriptor_t, diffDesc: cudnnTensorDescriptor_t, convDesc: cudnnConvolutionDescriptor_t, gradDesc: cudnnFilterDescriptor_t, requestedAlgoCount: ::core::ffi::c_int, returnedAlgoCount: *mut ::core::ffi::c_int, perfResults: *mut cudnnConvolutionBwdFilterAlgoPerf_t) -> cudnnStatus_t;
        }
        cudnnGetConvolutionBackwardFilterAlgorithm_v7(handle, srcDesc, diffDesc, convDesc, gradDesc, requestedAlgoCount, returnedAlgoCount, perfResults)
    }
}
pub unsafe fn cudnnGetConvolutionBackwardFilterWorkspaceSize(handle: cudnnHandle_t, xDesc: cudnnTensorDescriptor_t, dyDesc: cudnnTensorDescriptor_t, convDesc: cudnnConvolutionDescriptor_t, gradDesc: cudnnFilterDescriptor_t, algo: cudnnConvolutionBwdFilterAlgo_t, sizeInBytes: *mut usize) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnTensorDescriptor_t, cudnnTensorDescriptor_t, cudnnConvolutionDescriptor_t, cudnnFilterDescriptor_t, cudnnConvolutionBwdFilterAlgo_t, *mut usize) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetConvolutionBackwardFilterWorkspaceSize") });
        _f(handle, xDesc, dyDesc, convDesc, gradDesc, algo, sizeInBytes)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetConvolutionBackwardFilterWorkspaceSize(handle: cudnnHandle_t, xDesc: cudnnTensorDescriptor_t, dyDesc: cudnnTensorDescriptor_t, convDesc: cudnnConvolutionDescriptor_t, gradDesc: cudnnFilterDescriptor_t, algo: cudnnConvolutionBwdFilterAlgo_t, sizeInBytes: *mut usize) -> cudnnStatus_t;
        }
        cudnnGetConvolutionBackwardFilterWorkspaceSize(handle, xDesc, dyDesc, convDesc, gradDesc, algo, sizeInBytes)
    }
}
pub unsafe fn cudnnGetConvolutionForwardAlgorithmMaxCount(handle: cudnnHandle_t, count: *mut ::core::ffi::c_int) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, *mut ::core::ffi::c_int) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetConvolutionForwardAlgorithmMaxCount") });
        _f(handle, count)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetConvolutionForwardAlgorithmMaxCount(handle: cudnnHandle_t, count: *mut ::core::ffi::c_int) -> cudnnStatus_t;
        }
        cudnnGetConvolutionForwardAlgorithmMaxCount(handle, count)
    }
}
pub unsafe fn cudnnGetConvolutionForwardAlgorithm_v7(handle: cudnnHandle_t, srcDesc: cudnnTensorDescriptor_t, filterDesc: cudnnFilterDescriptor_t, convDesc: cudnnConvolutionDescriptor_t, destDesc: cudnnTensorDescriptor_t, requestedAlgoCount: ::core::ffi::c_int, returnedAlgoCount: *mut ::core::ffi::c_int, perfResults: *mut cudnnConvolutionFwdAlgoPerf_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnTensorDescriptor_t, cudnnFilterDescriptor_t, cudnnConvolutionDescriptor_t, cudnnTensorDescriptor_t, ::core::ffi::c_int, *mut ::core::ffi::c_int, *mut cudnnConvolutionFwdAlgoPerf_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetConvolutionForwardAlgorithm_v7") });
        _f(handle, srcDesc, filterDesc, convDesc, destDesc, requestedAlgoCount, returnedAlgoCount, perfResults)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetConvolutionForwardAlgorithm_v7(handle: cudnnHandle_t, srcDesc: cudnnTensorDescriptor_t, filterDesc: cudnnFilterDescriptor_t, convDesc: cudnnConvolutionDescriptor_t, destDesc: cudnnTensorDescriptor_t, requestedAlgoCount: ::core::ffi::c_int, returnedAlgoCount: *mut ::core::ffi::c_int, perfResults: *mut cudnnConvolutionFwdAlgoPerf_t) -> cudnnStatus_t;
        }
        cudnnGetConvolutionForwardAlgorithm_v7(handle, srcDesc, filterDesc, convDesc, destDesc, requestedAlgoCount, returnedAlgoCount, perfResults)
    }
}
pub unsafe fn cudnnGetConvolutionForwardWorkspaceSize(handle: cudnnHandle_t, xDesc: cudnnTensorDescriptor_t, wDesc: cudnnFilterDescriptor_t, convDesc: cudnnConvolutionDescriptor_t, yDesc: cudnnTensorDescriptor_t, algo: cudnnConvolutionFwdAlgo_t, sizeInBytes: *mut usize) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnTensorDescriptor_t, cudnnFilterDescriptor_t, cudnnConvolutionDescriptor_t, cudnnTensorDescriptor_t, cudnnConvolutionFwdAlgo_t, *mut usize) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetConvolutionForwardWorkspaceSize") });
        _f(handle, xDesc, wDesc, convDesc, yDesc, algo, sizeInBytes)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetConvolutionForwardWorkspaceSize(handle: cudnnHandle_t, xDesc: cudnnTensorDescriptor_t, wDesc: cudnnFilterDescriptor_t, convDesc: cudnnConvolutionDescriptor_t, yDesc: cudnnTensorDescriptor_t, algo: cudnnConvolutionFwdAlgo_t, sizeInBytes: *mut usize) -> cudnnStatus_t;
        }
        cudnnGetConvolutionForwardWorkspaceSize(handle, xDesc, wDesc, convDesc, yDesc, algo, sizeInBytes)
    }
}
pub unsafe fn cudnnGetConvolutionGroupCount(convDesc: cudnnConvolutionDescriptor_t, groupCount: *mut ::core::ffi::c_int) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnConvolutionDescriptor_t, *mut ::core::ffi::c_int) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetConvolutionGroupCount") });
        _f(convDesc, groupCount)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetConvolutionGroupCount(convDesc: cudnnConvolutionDescriptor_t, groupCount: *mut ::core::ffi::c_int) -> cudnnStatus_t;
        }
        cudnnGetConvolutionGroupCount(convDesc, groupCount)
    }
}
pub unsafe fn cudnnGetConvolutionMathType(convDesc: cudnnConvolutionDescriptor_t, mathType: *mut cudnnMathType_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnConvolutionDescriptor_t, *mut cudnnMathType_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetConvolutionMathType") });
        _f(convDesc, mathType)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetConvolutionMathType(convDesc: cudnnConvolutionDescriptor_t, mathType: *mut cudnnMathType_t) -> cudnnStatus_t;
        }
        cudnnGetConvolutionMathType(convDesc, mathType)
    }
}
pub unsafe fn cudnnGetConvolutionNdDescriptor(convDesc: cudnnConvolutionDescriptor_t, arrayLengthRequested: ::core::ffi::c_int, arrayLength: *mut ::core::ffi::c_int, padA: *mut ::core::ffi::c_int, strideA: *mut ::core::ffi::c_int, dilationA: *mut ::core::ffi::c_int, mode: *mut cudnnConvolutionMode_t, computeType: *mut cudnnDataType_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnConvolutionDescriptor_t, ::core::ffi::c_int, *mut ::core::ffi::c_int, *mut ::core::ffi::c_int, *mut ::core::ffi::c_int, *mut ::core::ffi::c_int, *mut cudnnConvolutionMode_t, *mut cudnnDataType_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetConvolutionNdDescriptor") });
        _f(convDesc, arrayLengthRequested, arrayLength, padA, strideA, dilationA, mode, computeType)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetConvolutionNdDescriptor(convDesc: cudnnConvolutionDescriptor_t, arrayLengthRequested: ::core::ffi::c_int, arrayLength: *mut ::core::ffi::c_int, padA: *mut ::core::ffi::c_int, strideA: *mut ::core::ffi::c_int, dilationA: *mut ::core::ffi::c_int, mode: *mut cudnnConvolutionMode_t, computeType: *mut cudnnDataType_t) -> cudnnStatus_t;
        }
        cudnnGetConvolutionNdDescriptor(convDesc, arrayLengthRequested, arrayLength, padA, strideA, dilationA, mode, computeType)
    }
}
pub unsafe fn cudnnGetConvolutionNdForwardOutputDim(convDesc: cudnnConvolutionDescriptor_t, inputTensorDesc: cudnnTensorDescriptor_t, filterDesc: cudnnFilterDescriptor_t, nbDims: ::core::ffi::c_int, tensorOuputDimA: *mut ::core::ffi::c_int) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnConvolutionDescriptor_t, cudnnTensorDescriptor_t, cudnnFilterDescriptor_t, ::core::ffi::c_int, *mut ::core::ffi::c_int) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetConvolutionNdForwardOutputDim") });
        _f(convDesc, inputTensorDesc, filterDesc, nbDims, tensorOuputDimA)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetConvolutionNdForwardOutputDim(convDesc: cudnnConvolutionDescriptor_t, inputTensorDesc: cudnnTensorDescriptor_t, filterDesc: cudnnFilterDescriptor_t, nbDims: ::core::ffi::c_int, tensorOuputDimA: *mut ::core::ffi::c_int) -> cudnnStatus_t;
        }
        cudnnGetConvolutionNdForwardOutputDim(convDesc, inputTensorDesc, filterDesc, nbDims, tensorOuputDimA)
    }
}
pub unsafe fn cudnnGetConvolutionReorderType(convDesc: cudnnConvolutionDescriptor_t, reorderType: *mut cudnnReorderType_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnConvolutionDescriptor_t, *mut cudnnReorderType_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetConvolutionReorderType") });
        _f(convDesc, reorderType)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetConvolutionReorderType(convDesc: cudnnConvolutionDescriptor_t, reorderType: *mut cudnnReorderType_t) -> cudnnStatus_t;
        }
        cudnnGetConvolutionReorderType(convDesc, reorderType)
    }
}
pub unsafe fn cudnnGetCudartVersion() -> usize {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn() -> usize;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetCudartVersion") });
        _f()
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetCudartVersion() -> usize;
        }
        cudnnGetCudartVersion()
    }
}
pub unsafe fn cudnnGetDropoutDescriptor(dropoutDesc: cudnnDropoutDescriptor_t, handle: cudnnHandle_t, dropout: *mut f32, states: *mut *mut ::core::ffi::c_void, seed: *mut ::core::ffi::c_ulonglong) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnDropoutDescriptor_t, cudnnHandle_t, *mut f32, *mut *mut ::core::ffi::c_void, *mut ::core::ffi::c_ulonglong) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetDropoutDescriptor") });
        _f(dropoutDesc, handle, dropout, states, seed)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetDropoutDescriptor(dropoutDesc: cudnnDropoutDescriptor_t, handle: cudnnHandle_t, dropout: *mut f32, states: *mut *mut ::core::ffi::c_void, seed: *mut ::core::ffi::c_ulonglong) -> cudnnStatus_t;
        }
        cudnnGetDropoutDescriptor(dropoutDesc, handle, dropout, states, seed)
    }
}
pub unsafe fn cudnnGetErrorString(status: cudnnStatus_t) -> *const ::core::ffi::c_char {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnStatus_t) -> *const ::core::ffi::c_char;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetErrorString") });
        _f(status)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetErrorString(status: cudnnStatus_t) -> *const ::core::ffi::c_char;
        }
        cudnnGetErrorString(status)
    }
}
pub unsafe fn cudnnGetFilter4dDescriptor(filterDesc: cudnnFilterDescriptor_t, dataType: *mut cudnnDataType_t, format: *mut cudnnTensorFormat_t, k: *mut ::core::ffi::c_int, c: *mut ::core::ffi::c_int, h: *mut ::core::ffi::c_int, w: *mut ::core::ffi::c_int) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnFilterDescriptor_t, *mut cudnnDataType_t, *mut cudnnTensorFormat_t, *mut ::core::ffi::c_int, *mut ::core::ffi::c_int, *mut ::core::ffi::c_int, *mut ::core::ffi::c_int) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetFilter4dDescriptor") });
        _f(filterDesc, dataType, format, k, c, h, w)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetFilter4dDescriptor(filterDesc: cudnnFilterDescriptor_t, dataType: *mut cudnnDataType_t, format: *mut cudnnTensorFormat_t, k: *mut ::core::ffi::c_int, c: *mut ::core::ffi::c_int, h: *mut ::core::ffi::c_int, w: *mut ::core::ffi::c_int) -> cudnnStatus_t;
        }
        cudnnGetFilter4dDescriptor(filterDesc, dataType, format, k, c, h, w)
    }
}
pub unsafe fn cudnnGetFilterNdDescriptor(filterDesc: cudnnFilterDescriptor_t, nbDimsRequested: ::core::ffi::c_int, dataType: *mut cudnnDataType_t, format: *mut cudnnTensorFormat_t, nbDims: *mut ::core::ffi::c_int, filterDimA: *mut ::core::ffi::c_int) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnFilterDescriptor_t, ::core::ffi::c_int, *mut cudnnDataType_t, *mut cudnnTensorFormat_t, *mut ::core::ffi::c_int, *mut ::core::ffi::c_int) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetFilterNdDescriptor") });
        _f(filterDesc, nbDimsRequested, dataType, format, nbDims, filterDimA)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetFilterNdDescriptor(filterDesc: cudnnFilterDescriptor_t, nbDimsRequested: ::core::ffi::c_int, dataType: *mut cudnnDataType_t, format: *mut cudnnTensorFormat_t, nbDims: *mut ::core::ffi::c_int, filterDimA: *mut ::core::ffi::c_int) -> cudnnStatus_t;
        }
        cudnnGetFilterNdDescriptor(filterDesc, nbDimsRequested, dataType, format, nbDims, filterDimA)
    }
}
pub unsafe fn cudnnGetFilterSizeInBytes(filterDesc: cudnnFilterDescriptor_t, size: *mut usize) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnFilterDescriptor_t, *mut usize) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetFilterSizeInBytes") });
        _f(filterDesc, size)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetFilterSizeInBytes(filterDesc: cudnnFilterDescriptor_t, size: *mut usize) -> cudnnStatus_t;
        }
        cudnnGetFilterSizeInBytes(filterDesc, size)
    }
}
pub unsafe fn cudnnGetFoldedConvBackwardDataDescriptors(handle: cudnnHandle_t, filterDesc: cudnnFilterDescriptor_t, diffDesc: cudnnTensorDescriptor_t, convDesc: cudnnConvolutionDescriptor_t, gradDesc: cudnnTensorDescriptor_t, transformFormat: cudnnTensorFormat_t, foldedFilterDesc: cudnnFilterDescriptor_t, paddedDiffDesc: cudnnTensorDescriptor_t, foldedConvDesc: cudnnConvolutionDescriptor_t, foldedGradDesc: cudnnTensorDescriptor_t, filterFoldTransDesc: cudnnTensorTransformDescriptor_t, diffPadTransDesc: cudnnTensorTransformDescriptor_t, gradFoldTransDesc: cudnnTensorTransformDescriptor_t, gradUnfoldTransDesc: cudnnTensorTransformDescriptor_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnFilterDescriptor_t, cudnnTensorDescriptor_t, cudnnConvolutionDescriptor_t, cudnnTensorDescriptor_t, cudnnTensorFormat_t, cudnnFilterDescriptor_t, cudnnTensorDescriptor_t, cudnnConvolutionDescriptor_t, cudnnTensorDescriptor_t, cudnnTensorTransformDescriptor_t, cudnnTensorTransformDescriptor_t, cudnnTensorTransformDescriptor_t, cudnnTensorTransformDescriptor_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetFoldedConvBackwardDataDescriptors") });
        _f(handle, filterDesc, diffDesc, convDesc, gradDesc, transformFormat, foldedFilterDesc, paddedDiffDesc, foldedConvDesc, foldedGradDesc, filterFoldTransDesc, diffPadTransDesc, gradFoldTransDesc, gradUnfoldTransDesc)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetFoldedConvBackwardDataDescriptors(handle: cudnnHandle_t, filterDesc: cudnnFilterDescriptor_t, diffDesc: cudnnTensorDescriptor_t, convDesc: cudnnConvolutionDescriptor_t, gradDesc: cudnnTensorDescriptor_t, transformFormat: cudnnTensorFormat_t, foldedFilterDesc: cudnnFilterDescriptor_t, paddedDiffDesc: cudnnTensorDescriptor_t, foldedConvDesc: cudnnConvolutionDescriptor_t, foldedGradDesc: cudnnTensorDescriptor_t, filterFoldTransDesc: cudnnTensorTransformDescriptor_t, diffPadTransDesc: cudnnTensorTransformDescriptor_t, gradFoldTransDesc: cudnnTensorTransformDescriptor_t, gradUnfoldTransDesc: cudnnTensorTransformDescriptor_t) -> cudnnStatus_t;
        }
        cudnnGetFoldedConvBackwardDataDescriptors(handle, filterDesc, diffDesc, convDesc, gradDesc, transformFormat, foldedFilterDesc, paddedDiffDesc, foldedConvDesc, foldedGradDesc, filterFoldTransDesc, diffPadTransDesc, gradFoldTransDesc, gradUnfoldTransDesc)
    }
}
pub unsafe fn cudnnGetFusedOpsConstParamPackAttribute(constPack: cudnnFusedOpsConstParamPack_t, paramLabel: cudnnFusedOpsConstParamLabel_t, param: *mut ::core::ffi::c_void, isNULL: *mut ::core::ffi::c_int) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnFusedOpsConstParamPack_t, cudnnFusedOpsConstParamLabel_t, *mut ::core::ffi::c_void, *mut ::core::ffi::c_int) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetFusedOpsConstParamPackAttribute") });
        _f(constPack, paramLabel, param, isNULL)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetFusedOpsConstParamPackAttribute(constPack: cudnnFusedOpsConstParamPack_t, paramLabel: cudnnFusedOpsConstParamLabel_t, param: *mut ::core::ffi::c_void, isNULL: *mut ::core::ffi::c_int) -> cudnnStatus_t;
        }
        cudnnGetFusedOpsConstParamPackAttribute(constPack, paramLabel, param, isNULL)
    }
}
pub unsafe fn cudnnGetFusedOpsVariantParamPackAttribute(varPack: cudnnFusedOpsVariantParamPack_t, paramLabel: cudnnFusedOpsVariantParamLabel_t, ptr: *mut ::core::ffi::c_void) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnFusedOpsVariantParamPack_t, cudnnFusedOpsVariantParamLabel_t, *mut ::core::ffi::c_void) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetFusedOpsVariantParamPackAttribute") });
        _f(varPack, paramLabel, ptr)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetFusedOpsVariantParamPackAttribute(varPack: cudnnFusedOpsVariantParamPack_t, paramLabel: cudnnFusedOpsVariantParamLabel_t, ptr: *mut ::core::ffi::c_void) -> cudnnStatus_t;
        }
        cudnnGetFusedOpsVariantParamPackAttribute(varPack, paramLabel, ptr)
    }
}
pub unsafe fn cudnnGetLRNDescriptor(normDesc: cudnnLRNDescriptor_t, lrnN: *mut ::core::ffi::c_uint, lrnAlpha: *mut f64, lrnBeta: *mut f64, lrnK: *mut f64) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnLRNDescriptor_t, *mut ::core::ffi::c_uint, *mut f64, *mut f64, *mut f64) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetLRNDescriptor") });
        _f(normDesc, lrnN, lrnAlpha, lrnBeta, lrnK)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetLRNDescriptor(normDesc: cudnnLRNDescriptor_t, lrnN: *mut ::core::ffi::c_uint, lrnAlpha: *mut f64, lrnBeta: *mut f64, lrnK: *mut f64) -> cudnnStatus_t;
        }
        cudnnGetLRNDescriptor(normDesc, lrnN, lrnAlpha, lrnBeta, lrnK)
    }
}
#[cfg(any(feature = "cudnn-09010", feature = "cudnn-09021"))]
pub unsafe fn cudnnGetLastErrorString(message: *mut ::core::ffi::c_char, max_size: usize) {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(*mut ::core::ffi::c_char, usize);
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetLastErrorString") });
        _f(message, max_size)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetLastErrorString(message: *mut ::core::ffi::c_char, max_size: usize);
        }
        cudnnGetLastErrorString(message, max_size)
    }
}
pub unsafe fn cudnnGetMaxDeviceVersion() -> usize {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn() -> usize;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetMaxDeviceVersion") });
        _f()
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetMaxDeviceVersion() -> usize;
        }
        cudnnGetMaxDeviceVersion()
    }
}
pub unsafe fn cudnnGetMultiHeadAttnBuffers(handle: cudnnHandle_t, attnDesc: cudnnAttnDescriptor_t, weightSizeInBytes: *mut usize, workSpaceSizeInBytes: *mut usize, reserveSpaceSizeInBytes: *mut usize) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnAttnDescriptor_t, *mut usize, *mut usize, *mut usize) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetMultiHeadAttnBuffers") });
        _f(handle, attnDesc, weightSizeInBytes, workSpaceSizeInBytes, reserveSpaceSizeInBytes)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetMultiHeadAttnBuffers(handle: cudnnHandle_t, attnDesc: cudnnAttnDescriptor_t, weightSizeInBytes: *mut usize, workSpaceSizeInBytes: *mut usize, reserveSpaceSizeInBytes: *mut usize) -> cudnnStatus_t;
        }
        cudnnGetMultiHeadAttnBuffers(handle, attnDesc, weightSizeInBytes, workSpaceSizeInBytes, reserveSpaceSizeInBytes)
    }
}
pub unsafe fn cudnnGetMultiHeadAttnWeights(handle: cudnnHandle_t, attnDesc: cudnnAttnDescriptor_t, wKind: cudnnMultiHeadAttnWeightKind_t, weightSizeInBytes: usize, weights: *const ::core::ffi::c_void, wDesc: cudnnTensorDescriptor_t, wAddr: *mut *mut ::core::ffi::c_void) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnAttnDescriptor_t, cudnnMultiHeadAttnWeightKind_t, usize, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *mut *mut ::core::ffi::c_void) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetMultiHeadAttnWeights") });
        _f(handle, attnDesc, wKind, weightSizeInBytes, weights, wDesc, wAddr)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetMultiHeadAttnWeights(handle: cudnnHandle_t, attnDesc: cudnnAttnDescriptor_t, wKind: cudnnMultiHeadAttnWeightKind_t, weightSizeInBytes: usize, weights: *const ::core::ffi::c_void, wDesc: cudnnTensorDescriptor_t, wAddr: *mut *mut ::core::ffi::c_void) -> cudnnStatus_t;
        }
        cudnnGetMultiHeadAttnWeights(handle, attnDesc, wKind, weightSizeInBytes, weights, wDesc, wAddr)
    }
}
pub unsafe fn cudnnGetNormalizationBackwardWorkspaceSize(handle: cudnnHandle_t, mode: cudnnNormMode_t, normOps: cudnnNormOps_t, algo: cudnnNormAlgo_t, xDesc: cudnnTensorDescriptor_t, yDesc: cudnnTensorDescriptor_t, dyDesc: cudnnTensorDescriptor_t, dzDesc: cudnnTensorDescriptor_t, dxDesc: cudnnTensorDescriptor_t, dNormScaleBiasDesc: cudnnTensorDescriptor_t, activationDesc: cudnnActivationDescriptor_t, normMeanVarDesc: cudnnTensorDescriptor_t, sizeInBytes: *mut usize, groupCnt: ::core::ffi::c_int) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnNormMode_t, cudnnNormOps_t, cudnnNormAlgo_t, cudnnTensorDescriptor_t, cudnnTensorDescriptor_t, cudnnTensorDescriptor_t, cudnnTensorDescriptor_t, cudnnTensorDescriptor_t, cudnnTensorDescriptor_t, cudnnActivationDescriptor_t, cudnnTensorDescriptor_t, *mut usize, ::core::ffi::c_int) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetNormalizationBackwardWorkspaceSize") });
        _f(handle, mode, normOps, algo, xDesc, yDesc, dyDesc, dzDesc, dxDesc, dNormScaleBiasDesc, activationDesc, normMeanVarDesc, sizeInBytes, groupCnt)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetNormalizationBackwardWorkspaceSize(handle: cudnnHandle_t, mode: cudnnNormMode_t, normOps: cudnnNormOps_t, algo: cudnnNormAlgo_t, xDesc: cudnnTensorDescriptor_t, yDesc: cudnnTensorDescriptor_t, dyDesc: cudnnTensorDescriptor_t, dzDesc: cudnnTensorDescriptor_t, dxDesc: cudnnTensorDescriptor_t, dNormScaleBiasDesc: cudnnTensorDescriptor_t, activationDesc: cudnnActivationDescriptor_t, normMeanVarDesc: cudnnTensorDescriptor_t, sizeInBytes: *mut usize, groupCnt: ::core::ffi::c_int) -> cudnnStatus_t;
        }
        cudnnGetNormalizationBackwardWorkspaceSize(handle, mode, normOps, algo, xDesc, yDesc, dyDesc, dzDesc, dxDesc, dNormScaleBiasDesc, activationDesc, normMeanVarDesc, sizeInBytes, groupCnt)
    }
}
pub unsafe fn cudnnGetNormalizationForwardTrainingWorkspaceSize(handle: cudnnHandle_t, mode: cudnnNormMode_t, normOps: cudnnNormOps_t, algo: cudnnNormAlgo_t, xDesc: cudnnTensorDescriptor_t, zDesc: cudnnTensorDescriptor_t, yDesc: cudnnTensorDescriptor_t, normScaleBiasDesc: cudnnTensorDescriptor_t, activationDesc: cudnnActivationDescriptor_t, normMeanVarDesc: cudnnTensorDescriptor_t, sizeInBytes: *mut usize, groupCnt: ::core::ffi::c_int) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnNormMode_t, cudnnNormOps_t, cudnnNormAlgo_t, cudnnTensorDescriptor_t, cudnnTensorDescriptor_t, cudnnTensorDescriptor_t, cudnnTensorDescriptor_t, cudnnActivationDescriptor_t, cudnnTensorDescriptor_t, *mut usize, ::core::ffi::c_int) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetNormalizationForwardTrainingWorkspaceSize") });
        _f(handle, mode, normOps, algo, xDesc, zDesc, yDesc, normScaleBiasDesc, activationDesc, normMeanVarDesc, sizeInBytes, groupCnt)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetNormalizationForwardTrainingWorkspaceSize(handle: cudnnHandle_t, mode: cudnnNormMode_t, normOps: cudnnNormOps_t, algo: cudnnNormAlgo_t, xDesc: cudnnTensorDescriptor_t, zDesc: cudnnTensorDescriptor_t, yDesc: cudnnTensorDescriptor_t, normScaleBiasDesc: cudnnTensorDescriptor_t, activationDesc: cudnnActivationDescriptor_t, normMeanVarDesc: cudnnTensorDescriptor_t, sizeInBytes: *mut usize, groupCnt: ::core::ffi::c_int) -> cudnnStatus_t;
        }
        cudnnGetNormalizationForwardTrainingWorkspaceSize(handle, mode, normOps, algo, xDesc, zDesc, yDesc, normScaleBiasDesc, activationDesc, normMeanVarDesc, sizeInBytes, groupCnt)
    }
}
pub unsafe fn cudnnGetNormalizationTrainingReserveSpaceSize(handle: cudnnHandle_t, mode: cudnnNormMode_t, normOps: cudnnNormOps_t, algo: cudnnNormAlgo_t, activationDesc: cudnnActivationDescriptor_t, xDesc: cudnnTensorDescriptor_t, sizeInBytes: *mut usize, groupCnt: ::core::ffi::c_int) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnNormMode_t, cudnnNormOps_t, cudnnNormAlgo_t, cudnnActivationDescriptor_t, cudnnTensorDescriptor_t, *mut usize, ::core::ffi::c_int) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetNormalizationTrainingReserveSpaceSize") });
        _f(handle, mode, normOps, algo, activationDesc, xDesc, sizeInBytes, groupCnt)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetNormalizationTrainingReserveSpaceSize(handle: cudnnHandle_t, mode: cudnnNormMode_t, normOps: cudnnNormOps_t, algo: cudnnNormAlgo_t, activationDesc: cudnnActivationDescriptor_t, xDesc: cudnnTensorDescriptor_t, sizeInBytes: *mut usize, groupCnt: ::core::ffi::c_int) -> cudnnStatus_t;
        }
        cudnnGetNormalizationTrainingReserveSpaceSize(handle, mode, normOps, algo, activationDesc, xDesc, sizeInBytes, groupCnt)
    }
}
pub unsafe fn cudnnGetOpTensorDescriptor(opTensorDesc: cudnnOpTensorDescriptor_t, opTensorOp: *mut cudnnOpTensorOp_t, opTensorCompType: *mut cudnnDataType_t, opTensorNanOpt: *mut cudnnNanPropagation_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnOpTensorDescriptor_t, *mut cudnnOpTensorOp_t, *mut cudnnDataType_t, *mut cudnnNanPropagation_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetOpTensorDescriptor") });
        _f(opTensorDesc, opTensorOp, opTensorCompType, opTensorNanOpt)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetOpTensorDescriptor(opTensorDesc: cudnnOpTensorDescriptor_t, opTensorOp: *mut cudnnOpTensorOp_t, opTensorCompType: *mut cudnnDataType_t, opTensorNanOpt: *mut cudnnNanPropagation_t) -> cudnnStatus_t;
        }
        cudnnGetOpTensorDescriptor(opTensorDesc, opTensorOp, opTensorCompType, opTensorNanOpt)
    }
}
pub unsafe fn cudnnGetPooling2dDescriptor(poolingDesc: cudnnPoolingDescriptor_t, mode: *mut cudnnPoolingMode_t, maxpoolingNanOpt: *mut cudnnNanPropagation_t, windowHeight: *mut ::core::ffi::c_int, windowWidth: *mut ::core::ffi::c_int, verticalPadding: *mut ::core::ffi::c_int, horizontalPadding: *mut ::core::ffi::c_int, verticalStride: *mut ::core::ffi::c_int, horizontalStride: *mut ::core::ffi::c_int) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnPoolingDescriptor_t, *mut cudnnPoolingMode_t, *mut cudnnNanPropagation_t, *mut ::core::ffi::c_int, *mut ::core::ffi::c_int, *mut ::core::ffi::c_int, *mut ::core::ffi::c_int, *mut ::core::ffi::c_int, *mut ::core::ffi::c_int) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetPooling2dDescriptor") });
        _f(poolingDesc, mode, maxpoolingNanOpt, windowHeight, windowWidth, verticalPadding, horizontalPadding, verticalStride, horizontalStride)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetPooling2dDescriptor(poolingDesc: cudnnPoolingDescriptor_t, mode: *mut cudnnPoolingMode_t, maxpoolingNanOpt: *mut cudnnNanPropagation_t, windowHeight: *mut ::core::ffi::c_int, windowWidth: *mut ::core::ffi::c_int, verticalPadding: *mut ::core::ffi::c_int, horizontalPadding: *mut ::core::ffi::c_int, verticalStride: *mut ::core::ffi::c_int, horizontalStride: *mut ::core::ffi::c_int) -> cudnnStatus_t;
        }
        cudnnGetPooling2dDescriptor(poolingDesc, mode, maxpoolingNanOpt, windowHeight, windowWidth, verticalPadding, horizontalPadding, verticalStride, horizontalStride)
    }
}
pub unsafe fn cudnnGetPooling2dForwardOutputDim(poolingDesc: cudnnPoolingDescriptor_t, inputTensorDesc: cudnnTensorDescriptor_t, n: *mut ::core::ffi::c_int, c: *mut ::core::ffi::c_int, h: *mut ::core::ffi::c_int, w: *mut ::core::ffi::c_int) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnPoolingDescriptor_t, cudnnTensorDescriptor_t, *mut ::core::ffi::c_int, *mut ::core::ffi::c_int, *mut ::core::ffi::c_int, *mut ::core::ffi::c_int) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetPooling2dForwardOutputDim") });
        _f(poolingDesc, inputTensorDesc, n, c, h, w)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetPooling2dForwardOutputDim(poolingDesc: cudnnPoolingDescriptor_t, inputTensorDesc: cudnnTensorDescriptor_t, n: *mut ::core::ffi::c_int, c: *mut ::core::ffi::c_int, h: *mut ::core::ffi::c_int, w: *mut ::core::ffi::c_int) -> cudnnStatus_t;
        }
        cudnnGetPooling2dForwardOutputDim(poolingDesc, inputTensorDesc, n, c, h, w)
    }
}
pub unsafe fn cudnnGetPoolingNdDescriptor(poolingDesc: cudnnPoolingDescriptor_t, nbDimsRequested: ::core::ffi::c_int, mode: *mut cudnnPoolingMode_t, maxpoolingNanOpt: *mut cudnnNanPropagation_t, nbDims: *mut ::core::ffi::c_int, windowDimA: *mut ::core::ffi::c_int, paddingA: *mut ::core::ffi::c_int, strideA: *mut ::core::ffi::c_int) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnPoolingDescriptor_t, ::core::ffi::c_int, *mut cudnnPoolingMode_t, *mut cudnnNanPropagation_t, *mut ::core::ffi::c_int, *mut ::core::ffi::c_int, *mut ::core::ffi::c_int, *mut ::core::ffi::c_int) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetPoolingNdDescriptor") });
        _f(poolingDesc, nbDimsRequested, mode, maxpoolingNanOpt, nbDims, windowDimA, paddingA, strideA)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetPoolingNdDescriptor(poolingDesc: cudnnPoolingDescriptor_t, nbDimsRequested: ::core::ffi::c_int, mode: *mut cudnnPoolingMode_t, maxpoolingNanOpt: *mut cudnnNanPropagation_t, nbDims: *mut ::core::ffi::c_int, windowDimA: *mut ::core::ffi::c_int, paddingA: *mut ::core::ffi::c_int, strideA: *mut ::core::ffi::c_int) -> cudnnStatus_t;
        }
        cudnnGetPoolingNdDescriptor(poolingDesc, nbDimsRequested, mode, maxpoolingNanOpt, nbDims, windowDimA, paddingA, strideA)
    }
}
pub unsafe fn cudnnGetPoolingNdForwardOutputDim(poolingDesc: cudnnPoolingDescriptor_t, inputTensorDesc: cudnnTensorDescriptor_t, nbDims: ::core::ffi::c_int, outputTensorDimA: *mut ::core::ffi::c_int) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnPoolingDescriptor_t, cudnnTensorDescriptor_t, ::core::ffi::c_int, *mut ::core::ffi::c_int) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetPoolingNdForwardOutputDim") });
        _f(poolingDesc, inputTensorDesc, nbDims, outputTensorDimA)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetPoolingNdForwardOutputDim(poolingDesc: cudnnPoolingDescriptor_t, inputTensorDesc: cudnnTensorDescriptor_t, nbDims: ::core::ffi::c_int, outputTensorDimA: *mut ::core::ffi::c_int) -> cudnnStatus_t;
        }
        cudnnGetPoolingNdForwardOutputDim(poolingDesc, inputTensorDesc, nbDims, outputTensorDimA)
    }
}
pub unsafe fn cudnnGetProperty(type_: libraryPropertyType, value: *mut ::core::ffi::c_int) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(libraryPropertyType, *mut ::core::ffi::c_int) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetProperty") });
        _f(type_, value)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetProperty(type_: libraryPropertyType, value: *mut ::core::ffi::c_int) -> cudnnStatus_t;
        }
        cudnnGetProperty(type_, value)
    }
}
#[cfg(any(feature = "cudnn-08009"))]
pub unsafe fn cudnnGetRNNBackwardDataAlgorithmMaxCount(handle: cudnnHandle_t, rnnDesc: cudnnRNNDescriptor_t, count: *mut ::core::ffi::c_int) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnRNNDescriptor_t, *mut ::core::ffi::c_int) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetRNNBackwardDataAlgorithmMaxCount") });
        _f(handle, rnnDesc, count)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetRNNBackwardDataAlgorithmMaxCount(handle: cudnnHandle_t, rnnDesc: cudnnRNNDescriptor_t, count: *mut ::core::ffi::c_int) -> cudnnStatus_t;
        }
        cudnnGetRNNBackwardDataAlgorithmMaxCount(handle, rnnDesc, count)
    }
}
#[cfg(any(feature = "cudnn-08009"))]
pub unsafe fn cudnnGetRNNBackwardWeightsAlgorithmMaxCount(handle: cudnnHandle_t, rnnDesc: cudnnRNNDescriptor_t, count: *mut ::core::ffi::c_int) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnRNNDescriptor_t, *mut ::core::ffi::c_int) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetRNNBackwardWeightsAlgorithmMaxCount") });
        _f(handle, rnnDesc, count)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetRNNBackwardWeightsAlgorithmMaxCount(handle: cudnnHandle_t, rnnDesc: cudnnRNNDescriptor_t, count: *mut ::core::ffi::c_int) -> cudnnStatus_t;
        }
        cudnnGetRNNBackwardWeightsAlgorithmMaxCount(handle, rnnDesc, count)
    }
}
#[cfg(any(feature = "cudnn-08009"))]
pub unsafe fn cudnnGetRNNBiasMode(rnnDesc: cudnnRNNDescriptor_t, biasMode: *mut cudnnRNNBiasMode_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnRNNDescriptor_t, *mut cudnnRNNBiasMode_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetRNNBiasMode") });
        _f(rnnDesc, biasMode)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetRNNBiasMode(rnnDesc: cudnnRNNDescriptor_t, biasMode: *mut cudnnRNNBiasMode_t) -> cudnnStatus_t;
        }
        cudnnGetRNNBiasMode(rnnDesc, biasMode)
    }
}
pub unsafe fn cudnnGetRNNDataDescriptor(rnnDataDesc: cudnnRNNDataDescriptor_t, dataType: *mut cudnnDataType_t, layout: *mut cudnnRNNDataLayout_t, maxSeqLength: *mut ::core::ffi::c_int, batchSize: *mut ::core::ffi::c_int, vectorSize: *mut ::core::ffi::c_int, arrayLengthRequested: ::core::ffi::c_int, seqLengthArray: *mut ::core::ffi::c_int, paddingFill: *mut ::core::ffi::c_void) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnRNNDataDescriptor_t, *mut cudnnDataType_t, *mut cudnnRNNDataLayout_t, *mut ::core::ffi::c_int, *mut ::core::ffi::c_int, *mut ::core::ffi::c_int, ::core::ffi::c_int, *mut ::core::ffi::c_int, *mut ::core::ffi::c_void) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetRNNDataDescriptor") });
        _f(rnnDataDesc, dataType, layout, maxSeqLength, batchSize, vectorSize, arrayLengthRequested, seqLengthArray, paddingFill)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetRNNDataDescriptor(rnnDataDesc: cudnnRNNDataDescriptor_t, dataType: *mut cudnnDataType_t, layout: *mut cudnnRNNDataLayout_t, maxSeqLength: *mut ::core::ffi::c_int, batchSize: *mut ::core::ffi::c_int, vectorSize: *mut ::core::ffi::c_int, arrayLengthRequested: ::core::ffi::c_int, seqLengthArray: *mut ::core::ffi::c_int, paddingFill: *mut ::core::ffi::c_void) -> cudnnStatus_t;
        }
        cudnnGetRNNDataDescriptor(rnnDataDesc, dataType, layout, maxSeqLength, batchSize, vectorSize, arrayLengthRequested, seqLengthArray, paddingFill)
    }
}
#[cfg(any(feature = "cudnn-08009"))]
pub unsafe fn cudnnGetRNNDescriptor_v6(handle: cudnnHandle_t, rnnDesc: cudnnRNNDescriptor_t, hiddenSize: *mut ::core::ffi::c_int, numLayers: *mut ::core::ffi::c_int, dropoutDesc: *mut cudnnDropoutDescriptor_t, inputMode: *mut cudnnRNNInputMode_t, direction: *mut cudnnDirectionMode_t, cellMode: *mut cudnnRNNMode_t, algo: *mut cudnnRNNAlgo_t, mathPrec: *mut cudnnDataType_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnRNNDescriptor_t, *mut ::core::ffi::c_int, *mut ::core::ffi::c_int, *mut cudnnDropoutDescriptor_t, *mut cudnnRNNInputMode_t, *mut cudnnDirectionMode_t, *mut cudnnRNNMode_t, *mut cudnnRNNAlgo_t, *mut cudnnDataType_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetRNNDescriptor_v6") });
        _f(handle, rnnDesc, hiddenSize, numLayers, dropoutDesc, inputMode, direction, cellMode, algo, mathPrec)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetRNNDescriptor_v6(handle: cudnnHandle_t, rnnDesc: cudnnRNNDescriptor_t, hiddenSize: *mut ::core::ffi::c_int, numLayers: *mut ::core::ffi::c_int, dropoutDesc: *mut cudnnDropoutDescriptor_t, inputMode: *mut cudnnRNNInputMode_t, direction: *mut cudnnDirectionMode_t, cellMode: *mut cudnnRNNMode_t, algo: *mut cudnnRNNAlgo_t, mathPrec: *mut cudnnDataType_t) -> cudnnStatus_t;
        }
        cudnnGetRNNDescriptor_v6(handle, rnnDesc, hiddenSize, numLayers, dropoutDesc, inputMode, direction, cellMode, algo, mathPrec)
    }
}
pub unsafe fn cudnnGetRNNDescriptor_v8(rnnDesc: cudnnRNNDescriptor_t, algo: *mut cudnnRNNAlgo_t, cellMode: *mut cudnnRNNMode_t, biasMode: *mut cudnnRNNBiasMode_t, dirMode: *mut cudnnDirectionMode_t, inputMode: *mut cudnnRNNInputMode_t, dataType: *mut cudnnDataType_t, mathPrec: *mut cudnnDataType_t, mathType: *mut cudnnMathType_t, inputSize: *mut i32, hiddenSize: *mut i32, projSize: *mut i32, numLayers: *mut i32, dropoutDesc: *mut cudnnDropoutDescriptor_t, auxFlags: *mut u32) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnRNNDescriptor_t, *mut cudnnRNNAlgo_t, *mut cudnnRNNMode_t, *mut cudnnRNNBiasMode_t, *mut cudnnDirectionMode_t, *mut cudnnRNNInputMode_t, *mut cudnnDataType_t, *mut cudnnDataType_t, *mut cudnnMathType_t, *mut i32, *mut i32, *mut i32, *mut i32, *mut cudnnDropoutDescriptor_t, *mut u32) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetRNNDescriptor_v8") });
        _f(rnnDesc, algo, cellMode, biasMode, dirMode, inputMode, dataType, mathPrec, mathType, inputSize, hiddenSize, projSize, numLayers, dropoutDesc, auxFlags)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetRNNDescriptor_v8(rnnDesc: cudnnRNNDescriptor_t, algo: *mut cudnnRNNAlgo_t, cellMode: *mut cudnnRNNMode_t, biasMode: *mut cudnnRNNBiasMode_t, dirMode: *mut cudnnDirectionMode_t, inputMode: *mut cudnnRNNInputMode_t, dataType: *mut cudnnDataType_t, mathPrec: *mut cudnnDataType_t, mathType: *mut cudnnMathType_t, inputSize: *mut i32, hiddenSize: *mut i32, projSize: *mut i32, numLayers: *mut i32, dropoutDesc: *mut cudnnDropoutDescriptor_t, auxFlags: *mut u32) -> cudnnStatus_t;
        }
        cudnnGetRNNDescriptor_v8(rnnDesc, algo, cellMode, biasMode, dirMode, inputMode, dataType, mathPrec, mathType, inputSize, hiddenSize, projSize, numLayers, dropoutDesc, auxFlags)
    }
}
#[cfg(any(feature = "cudnn-08009"))]
pub unsafe fn cudnnGetRNNForwardInferenceAlgorithmMaxCount(handle: cudnnHandle_t, rnnDesc: cudnnRNNDescriptor_t, count: *mut ::core::ffi::c_int) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnRNNDescriptor_t, *mut ::core::ffi::c_int) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetRNNForwardInferenceAlgorithmMaxCount") });
        _f(handle, rnnDesc, count)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetRNNForwardInferenceAlgorithmMaxCount(handle: cudnnHandle_t, rnnDesc: cudnnRNNDescriptor_t, count: *mut ::core::ffi::c_int) -> cudnnStatus_t;
        }
        cudnnGetRNNForwardInferenceAlgorithmMaxCount(handle, rnnDesc, count)
    }
}
#[cfg(any(feature = "cudnn-08009"))]
pub unsafe fn cudnnGetRNNForwardTrainingAlgorithmMaxCount(handle: cudnnHandle_t, rnnDesc: cudnnRNNDescriptor_t, count: *mut ::core::ffi::c_int) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnRNNDescriptor_t, *mut ::core::ffi::c_int) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetRNNForwardTrainingAlgorithmMaxCount") });
        _f(handle, rnnDesc, count)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetRNNForwardTrainingAlgorithmMaxCount(handle: cudnnHandle_t, rnnDesc: cudnnRNNDescriptor_t, count: *mut ::core::ffi::c_int) -> cudnnStatus_t;
        }
        cudnnGetRNNForwardTrainingAlgorithmMaxCount(handle, rnnDesc, count)
    }
}
#[cfg(any(feature = "cudnn-08009"))]
pub unsafe fn cudnnGetRNNLinLayerBiasParams(handle: cudnnHandle_t, rnnDesc: cudnnRNNDescriptor_t, pseudoLayer: ::core::ffi::c_int, xDesc: cudnnTensorDescriptor_t, wDesc: cudnnFilterDescriptor_t, w: *const ::core::ffi::c_void, linLayerID: ::core::ffi::c_int, linLayerBiasDesc: cudnnFilterDescriptor_t, linLayerBias: *mut *mut ::core::ffi::c_void) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnRNNDescriptor_t, ::core::ffi::c_int, cudnnTensorDescriptor_t, cudnnFilterDescriptor_t, *const ::core::ffi::c_void, ::core::ffi::c_int, cudnnFilterDescriptor_t, *mut *mut ::core::ffi::c_void) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetRNNLinLayerBiasParams") });
        _f(handle, rnnDesc, pseudoLayer, xDesc, wDesc, w, linLayerID, linLayerBiasDesc, linLayerBias)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetRNNLinLayerBiasParams(handle: cudnnHandle_t, rnnDesc: cudnnRNNDescriptor_t, pseudoLayer: ::core::ffi::c_int, xDesc: cudnnTensorDescriptor_t, wDesc: cudnnFilterDescriptor_t, w: *const ::core::ffi::c_void, linLayerID: ::core::ffi::c_int, linLayerBiasDesc: cudnnFilterDescriptor_t, linLayerBias: *mut *mut ::core::ffi::c_void) -> cudnnStatus_t;
        }
        cudnnGetRNNLinLayerBiasParams(handle, rnnDesc, pseudoLayer, xDesc, wDesc, w, linLayerID, linLayerBiasDesc, linLayerBias)
    }
}
#[cfg(any(feature = "cudnn-08009"))]
pub unsafe fn cudnnGetRNNLinLayerMatrixParams(handle: cudnnHandle_t, rnnDesc: cudnnRNNDescriptor_t, pseudoLayer: ::core::ffi::c_int, xDesc: cudnnTensorDescriptor_t, wDesc: cudnnFilterDescriptor_t, w: *const ::core::ffi::c_void, linLayerID: ::core::ffi::c_int, linLayerMatDesc: cudnnFilterDescriptor_t, linLayerMat: *mut *mut ::core::ffi::c_void) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnRNNDescriptor_t, ::core::ffi::c_int, cudnnTensorDescriptor_t, cudnnFilterDescriptor_t, *const ::core::ffi::c_void, ::core::ffi::c_int, cudnnFilterDescriptor_t, *mut *mut ::core::ffi::c_void) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetRNNLinLayerMatrixParams") });
        _f(handle, rnnDesc, pseudoLayer, xDesc, wDesc, w, linLayerID, linLayerMatDesc, linLayerMat)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetRNNLinLayerMatrixParams(handle: cudnnHandle_t, rnnDesc: cudnnRNNDescriptor_t, pseudoLayer: ::core::ffi::c_int, xDesc: cudnnTensorDescriptor_t, wDesc: cudnnFilterDescriptor_t, w: *const ::core::ffi::c_void, linLayerID: ::core::ffi::c_int, linLayerMatDesc: cudnnFilterDescriptor_t, linLayerMat: *mut *mut ::core::ffi::c_void) -> cudnnStatus_t;
        }
        cudnnGetRNNLinLayerMatrixParams(handle, rnnDesc, pseudoLayer, xDesc, wDesc, w, linLayerID, linLayerMatDesc, linLayerMat)
    }
}
#[cfg(any(feature = "cudnn-08009"))]
pub unsafe fn cudnnGetRNNMatrixMathType(rnnDesc: cudnnRNNDescriptor_t, mType: *mut cudnnMathType_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnRNNDescriptor_t, *mut cudnnMathType_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetRNNMatrixMathType") });
        _f(rnnDesc, mType)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetRNNMatrixMathType(rnnDesc: cudnnRNNDescriptor_t, mType: *mut cudnnMathType_t) -> cudnnStatus_t;
        }
        cudnnGetRNNMatrixMathType(rnnDesc, mType)
    }
}
#[cfg(any(feature = "cudnn-08009"))]
pub unsafe fn cudnnGetRNNPaddingMode(rnnDesc: cudnnRNNDescriptor_t, paddingMode: *mut ::core::ffi::c_uint) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnRNNDescriptor_t, *mut ::core::ffi::c_uint) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetRNNPaddingMode") });
        _f(rnnDesc, paddingMode)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetRNNPaddingMode(rnnDesc: cudnnRNNDescriptor_t, paddingMode: *mut ::core::ffi::c_uint) -> cudnnStatus_t;
        }
        cudnnGetRNNPaddingMode(rnnDesc, paddingMode)
    }
}
#[cfg(any(feature = "cudnn-08009"))]
pub unsafe fn cudnnGetRNNParamsSize(handle: cudnnHandle_t, rnnDesc: cudnnRNNDescriptor_t, xDesc: cudnnTensorDescriptor_t, sizeInBytes: *mut usize, dataType: cudnnDataType_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnRNNDescriptor_t, cudnnTensorDescriptor_t, *mut usize, cudnnDataType_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetRNNParamsSize") });
        _f(handle, rnnDesc, xDesc, sizeInBytes, dataType)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetRNNParamsSize(handle: cudnnHandle_t, rnnDesc: cudnnRNNDescriptor_t, xDesc: cudnnTensorDescriptor_t, sizeInBytes: *mut usize, dataType: cudnnDataType_t) -> cudnnStatus_t;
        }
        cudnnGetRNNParamsSize(handle, rnnDesc, xDesc, sizeInBytes, dataType)
    }
}
#[cfg(any(feature = "cudnn-08009"))]
pub unsafe fn cudnnGetRNNProjectionLayers(handle: cudnnHandle_t, rnnDesc: cudnnRNNDescriptor_t, recProjSize: *mut ::core::ffi::c_int, outProjSize: *mut ::core::ffi::c_int) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnRNNDescriptor_t, *mut ::core::ffi::c_int, *mut ::core::ffi::c_int) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetRNNProjectionLayers") });
        _f(handle, rnnDesc, recProjSize, outProjSize)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetRNNProjectionLayers(handle: cudnnHandle_t, rnnDesc: cudnnRNNDescriptor_t, recProjSize: *mut ::core::ffi::c_int, outProjSize: *mut ::core::ffi::c_int) -> cudnnStatus_t;
        }
        cudnnGetRNNProjectionLayers(handle, rnnDesc, recProjSize, outProjSize)
    }
}
pub unsafe fn cudnnGetRNNTempSpaceSizes(handle: cudnnHandle_t, rnnDesc: cudnnRNNDescriptor_t, fwdMode: cudnnForwardMode_t, xDesc: cudnnRNNDataDescriptor_t, workSpaceSize: *mut usize, reserveSpaceSize: *mut usize) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnRNNDescriptor_t, cudnnForwardMode_t, cudnnRNNDataDescriptor_t, *mut usize, *mut usize) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetRNNTempSpaceSizes") });
        _f(handle, rnnDesc, fwdMode, xDesc, workSpaceSize, reserveSpaceSize)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetRNNTempSpaceSizes(handle: cudnnHandle_t, rnnDesc: cudnnRNNDescriptor_t, fwdMode: cudnnForwardMode_t, xDesc: cudnnRNNDataDescriptor_t, workSpaceSize: *mut usize, reserveSpaceSize: *mut usize) -> cudnnStatus_t;
        }
        cudnnGetRNNTempSpaceSizes(handle, rnnDesc, fwdMode, xDesc, workSpaceSize, reserveSpaceSize)
    }
}
#[cfg(any(feature = "cudnn-08009"))]
pub unsafe fn cudnnGetRNNTrainingReserveSize(handle: cudnnHandle_t, rnnDesc: cudnnRNNDescriptor_t, seqLength: ::core::ffi::c_int, xDesc: *const cudnnTensorDescriptor_t, sizeInBytes: *mut usize) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnRNNDescriptor_t, ::core::ffi::c_int, *const cudnnTensorDescriptor_t, *mut usize) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetRNNTrainingReserveSize") });
        _f(handle, rnnDesc, seqLength, xDesc, sizeInBytes)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetRNNTrainingReserveSize(handle: cudnnHandle_t, rnnDesc: cudnnRNNDescriptor_t, seqLength: ::core::ffi::c_int, xDesc: *const cudnnTensorDescriptor_t, sizeInBytes: *mut usize) -> cudnnStatus_t;
        }
        cudnnGetRNNTrainingReserveSize(handle, rnnDesc, seqLength, xDesc, sizeInBytes)
    }
}
pub unsafe fn cudnnGetRNNWeightParams(handle: cudnnHandle_t, rnnDesc: cudnnRNNDescriptor_t, pseudoLayer: i32, weightSpaceSize: usize, weightSpace: *const ::core::ffi::c_void, linLayerID: i32, mDesc: cudnnTensorDescriptor_t, mAddr: *mut *mut ::core::ffi::c_void, bDesc: cudnnTensorDescriptor_t, bAddr: *mut *mut ::core::ffi::c_void) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnRNNDescriptor_t, i32, usize, *const ::core::ffi::c_void, i32, cudnnTensorDescriptor_t, *mut *mut ::core::ffi::c_void, cudnnTensorDescriptor_t, *mut *mut ::core::ffi::c_void) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetRNNWeightParams") });
        _f(handle, rnnDesc, pseudoLayer, weightSpaceSize, weightSpace, linLayerID, mDesc, mAddr, bDesc, bAddr)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetRNNWeightParams(handle: cudnnHandle_t, rnnDesc: cudnnRNNDescriptor_t, pseudoLayer: i32, weightSpaceSize: usize, weightSpace: *const ::core::ffi::c_void, linLayerID: i32, mDesc: cudnnTensorDescriptor_t, mAddr: *mut *mut ::core::ffi::c_void, bDesc: cudnnTensorDescriptor_t, bAddr: *mut *mut ::core::ffi::c_void) -> cudnnStatus_t;
        }
        cudnnGetRNNWeightParams(handle, rnnDesc, pseudoLayer, weightSpaceSize, weightSpace, linLayerID, mDesc, mAddr, bDesc, bAddr)
    }
}
pub unsafe fn cudnnGetRNNWeightSpaceSize(handle: cudnnHandle_t, rnnDesc: cudnnRNNDescriptor_t, weightSpaceSize: *mut usize) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnRNNDescriptor_t, *mut usize) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetRNNWeightSpaceSize") });
        _f(handle, rnnDesc, weightSpaceSize)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetRNNWeightSpaceSize(handle: cudnnHandle_t, rnnDesc: cudnnRNNDescriptor_t, weightSpaceSize: *mut usize) -> cudnnStatus_t;
        }
        cudnnGetRNNWeightSpaceSize(handle, rnnDesc, weightSpaceSize)
    }
}
#[cfg(any(feature = "cudnn-08009"))]
pub unsafe fn cudnnGetRNNWorkspaceSize(handle: cudnnHandle_t, rnnDesc: cudnnRNNDescriptor_t, seqLength: ::core::ffi::c_int, xDesc: *const cudnnTensorDescriptor_t, sizeInBytes: *mut usize) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnRNNDescriptor_t, ::core::ffi::c_int, *const cudnnTensorDescriptor_t, *mut usize) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetRNNWorkspaceSize") });
        _f(handle, rnnDesc, seqLength, xDesc, sizeInBytes)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetRNNWorkspaceSize(handle: cudnnHandle_t, rnnDesc: cudnnRNNDescriptor_t, seqLength: ::core::ffi::c_int, xDesc: *const cudnnTensorDescriptor_t, sizeInBytes: *mut usize) -> cudnnStatus_t;
        }
        cudnnGetRNNWorkspaceSize(handle, rnnDesc, seqLength, xDesc, sizeInBytes)
    }
}
pub unsafe fn cudnnGetReduceTensorDescriptor(reduceTensorDesc: cudnnReduceTensorDescriptor_t, reduceTensorOp: *mut cudnnReduceTensorOp_t, reduceTensorCompType: *mut cudnnDataType_t, reduceTensorNanOpt: *mut cudnnNanPropagation_t, reduceTensorIndices: *mut cudnnReduceTensorIndices_t, reduceTensorIndicesType: *mut cudnnIndicesType_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnReduceTensorDescriptor_t, *mut cudnnReduceTensorOp_t, *mut cudnnDataType_t, *mut cudnnNanPropagation_t, *mut cudnnReduceTensorIndices_t, *mut cudnnIndicesType_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetReduceTensorDescriptor") });
        _f(reduceTensorDesc, reduceTensorOp, reduceTensorCompType, reduceTensorNanOpt, reduceTensorIndices, reduceTensorIndicesType)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetReduceTensorDescriptor(reduceTensorDesc: cudnnReduceTensorDescriptor_t, reduceTensorOp: *mut cudnnReduceTensorOp_t, reduceTensorCompType: *mut cudnnDataType_t, reduceTensorNanOpt: *mut cudnnNanPropagation_t, reduceTensorIndices: *mut cudnnReduceTensorIndices_t, reduceTensorIndicesType: *mut cudnnIndicesType_t) -> cudnnStatus_t;
        }
        cudnnGetReduceTensorDescriptor(reduceTensorDesc, reduceTensorOp, reduceTensorCompType, reduceTensorNanOpt, reduceTensorIndices, reduceTensorIndicesType)
    }
}
pub unsafe fn cudnnGetReductionIndicesSize(handle: cudnnHandle_t, reduceTensorDesc: cudnnReduceTensorDescriptor_t, aDesc: cudnnTensorDescriptor_t, cDesc: cudnnTensorDescriptor_t, sizeInBytes: *mut usize) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnReduceTensorDescriptor_t, cudnnTensorDescriptor_t, cudnnTensorDescriptor_t, *mut usize) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetReductionIndicesSize") });
        _f(handle, reduceTensorDesc, aDesc, cDesc, sizeInBytes)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetReductionIndicesSize(handle: cudnnHandle_t, reduceTensorDesc: cudnnReduceTensorDescriptor_t, aDesc: cudnnTensorDescriptor_t, cDesc: cudnnTensorDescriptor_t, sizeInBytes: *mut usize) -> cudnnStatus_t;
        }
        cudnnGetReductionIndicesSize(handle, reduceTensorDesc, aDesc, cDesc, sizeInBytes)
    }
}
pub unsafe fn cudnnGetReductionWorkspaceSize(handle: cudnnHandle_t, reduceTensorDesc: cudnnReduceTensorDescriptor_t, aDesc: cudnnTensorDescriptor_t, cDesc: cudnnTensorDescriptor_t, sizeInBytes: *mut usize) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnReduceTensorDescriptor_t, cudnnTensorDescriptor_t, cudnnTensorDescriptor_t, *mut usize) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetReductionWorkspaceSize") });
        _f(handle, reduceTensorDesc, aDesc, cDesc, sizeInBytes)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetReductionWorkspaceSize(handle: cudnnHandle_t, reduceTensorDesc: cudnnReduceTensorDescriptor_t, aDesc: cudnnTensorDescriptor_t, cDesc: cudnnTensorDescriptor_t, sizeInBytes: *mut usize) -> cudnnStatus_t;
        }
        cudnnGetReductionWorkspaceSize(handle, reduceTensorDesc, aDesc, cDesc, sizeInBytes)
    }
}
pub unsafe fn cudnnGetSeqDataDescriptor(seqDataDesc: cudnnSeqDataDescriptor_t, dataType: *mut cudnnDataType_t, nbDims: *mut ::core::ffi::c_int, nbDimsRequested: ::core::ffi::c_int, dimA: *mut ::core::ffi::c_int, axes: *mut cudnnSeqDataAxis_t, seqLengthArraySize: *mut usize, seqLengthSizeRequested: usize, seqLengthArray: *mut ::core::ffi::c_int, paddingFill: *mut ::core::ffi::c_void) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnSeqDataDescriptor_t, *mut cudnnDataType_t, *mut ::core::ffi::c_int, ::core::ffi::c_int, *mut ::core::ffi::c_int, *mut cudnnSeqDataAxis_t, *mut usize, usize, *mut ::core::ffi::c_int, *mut ::core::ffi::c_void) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetSeqDataDescriptor") });
        _f(seqDataDesc, dataType, nbDims, nbDimsRequested, dimA, axes, seqLengthArraySize, seqLengthSizeRequested, seqLengthArray, paddingFill)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetSeqDataDescriptor(seqDataDesc: cudnnSeqDataDescriptor_t, dataType: *mut cudnnDataType_t, nbDims: *mut ::core::ffi::c_int, nbDimsRequested: ::core::ffi::c_int, dimA: *mut ::core::ffi::c_int, axes: *mut cudnnSeqDataAxis_t, seqLengthArraySize: *mut usize, seqLengthSizeRequested: usize, seqLengthArray: *mut ::core::ffi::c_int, paddingFill: *mut ::core::ffi::c_void) -> cudnnStatus_t;
        }
        cudnnGetSeqDataDescriptor(seqDataDesc, dataType, nbDims, nbDimsRequested, dimA, axes, seqLengthArraySize, seqLengthSizeRequested, seqLengthArray, paddingFill)
    }
}
pub unsafe fn cudnnGetStream(handle: cudnnHandle_t, streamId: *mut cudaStream_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, *mut cudaStream_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetStream") });
        _f(handle, streamId)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetStream(handle: cudnnHandle_t, streamId: *mut cudaStream_t) -> cudnnStatus_t;
        }
        cudnnGetStream(handle, streamId)
    }
}
pub unsafe fn cudnnGetTensor4dDescriptor(tensorDesc: cudnnTensorDescriptor_t, dataType: *mut cudnnDataType_t, n: *mut ::core::ffi::c_int, c: *mut ::core::ffi::c_int, h: *mut ::core::ffi::c_int, w: *mut ::core::ffi::c_int, nStride: *mut ::core::ffi::c_int, cStride: *mut ::core::ffi::c_int, hStride: *mut ::core::ffi::c_int, wStride: *mut ::core::ffi::c_int) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnTensorDescriptor_t, *mut cudnnDataType_t, *mut ::core::ffi::c_int, *mut ::core::ffi::c_int, *mut ::core::ffi::c_int, *mut ::core::ffi::c_int, *mut ::core::ffi::c_int, *mut ::core::ffi::c_int, *mut ::core::ffi::c_int, *mut ::core::ffi::c_int) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetTensor4dDescriptor") });
        _f(tensorDesc, dataType, n, c, h, w, nStride, cStride, hStride, wStride)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetTensor4dDescriptor(tensorDesc: cudnnTensorDescriptor_t, dataType: *mut cudnnDataType_t, n: *mut ::core::ffi::c_int, c: *mut ::core::ffi::c_int, h: *mut ::core::ffi::c_int, w: *mut ::core::ffi::c_int, nStride: *mut ::core::ffi::c_int, cStride: *mut ::core::ffi::c_int, hStride: *mut ::core::ffi::c_int, wStride: *mut ::core::ffi::c_int) -> cudnnStatus_t;
        }
        cudnnGetTensor4dDescriptor(tensorDesc, dataType, n, c, h, w, nStride, cStride, hStride, wStride)
    }
}
pub unsafe fn cudnnGetTensorNdDescriptor(tensorDesc: cudnnTensorDescriptor_t, nbDimsRequested: ::core::ffi::c_int, dataType: *mut cudnnDataType_t, nbDims: *mut ::core::ffi::c_int, dimA: *mut ::core::ffi::c_int, strideA: *mut ::core::ffi::c_int) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnTensorDescriptor_t, ::core::ffi::c_int, *mut cudnnDataType_t, *mut ::core::ffi::c_int, *mut ::core::ffi::c_int, *mut ::core::ffi::c_int) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetTensorNdDescriptor") });
        _f(tensorDesc, nbDimsRequested, dataType, nbDims, dimA, strideA)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetTensorNdDescriptor(tensorDesc: cudnnTensorDescriptor_t, nbDimsRequested: ::core::ffi::c_int, dataType: *mut cudnnDataType_t, nbDims: *mut ::core::ffi::c_int, dimA: *mut ::core::ffi::c_int, strideA: *mut ::core::ffi::c_int) -> cudnnStatus_t;
        }
        cudnnGetTensorNdDescriptor(tensorDesc, nbDimsRequested, dataType, nbDims, dimA, strideA)
    }
}
pub unsafe fn cudnnGetTensorSizeInBytes(tensorDesc: cudnnTensorDescriptor_t, size: *mut usize) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnTensorDescriptor_t, *mut usize) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetTensorSizeInBytes") });
        _f(tensorDesc, size)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetTensorSizeInBytes(tensorDesc: cudnnTensorDescriptor_t, size: *mut usize) -> cudnnStatus_t;
        }
        cudnnGetTensorSizeInBytes(tensorDesc, size)
    }
}
pub unsafe fn cudnnGetTensorTransformDescriptor(transformDesc: cudnnTensorTransformDescriptor_t, nbDimsRequested: u32, destFormat: *mut cudnnTensorFormat_t, padBeforeA: *mut i32, padAfterA: *mut i32, foldA: *mut u32, direction: *mut cudnnFoldingDirection_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnTensorTransformDescriptor_t, u32, *mut cudnnTensorFormat_t, *mut i32, *mut i32, *mut u32, *mut cudnnFoldingDirection_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetTensorTransformDescriptor") });
        _f(transformDesc, nbDimsRequested, destFormat, padBeforeA, padAfterA, foldA, direction)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetTensorTransformDescriptor(transformDesc: cudnnTensorTransformDescriptor_t, nbDimsRequested: u32, destFormat: *mut cudnnTensorFormat_t, padBeforeA: *mut i32, padAfterA: *mut i32, foldA: *mut u32, direction: *mut cudnnFoldingDirection_t) -> cudnnStatus_t;
        }
        cudnnGetTensorTransformDescriptor(transformDesc, nbDimsRequested, destFormat, padBeforeA, padAfterA, foldA, direction)
    }
}
pub unsafe fn cudnnGetVersion() -> usize {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn() -> usize;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGetVersion") });
        _f()
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGetVersion() -> usize;
        }
        cudnnGetVersion()
    }
}
#[cfg(any(feature = "cudnn-09010", feature = "cudnn-09021"))]
pub unsafe fn cudnnGraphVersionCheck() -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn() -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnGraphVersionCheck") });
        _f()
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnGraphVersionCheck() -> cudnnStatus_t;
        }
        cudnnGraphVersionCheck()
    }
}
pub unsafe fn cudnnIm2Col(handle: cudnnHandle_t, xDesc: cudnnTensorDescriptor_t, x: *const ::core::ffi::c_void, wDesc: cudnnFilterDescriptor_t, convDesc: cudnnConvolutionDescriptor_t, colBuffer: *mut ::core::ffi::c_void) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, cudnnFilterDescriptor_t, cudnnConvolutionDescriptor_t, *mut ::core::ffi::c_void) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnIm2Col") });
        _f(handle, xDesc, x, wDesc, convDesc, colBuffer)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnIm2Col(handle: cudnnHandle_t, xDesc: cudnnTensorDescriptor_t, x: *const ::core::ffi::c_void, wDesc: cudnnFilterDescriptor_t, convDesc: cudnnConvolutionDescriptor_t, colBuffer: *mut ::core::ffi::c_void) -> cudnnStatus_t;
        }
        cudnnIm2Col(handle, xDesc, x, wDesc, convDesc, colBuffer)
    }
}
pub unsafe fn cudnnInitTransformDest(transformDesc: cudnnTensorTransformDescriptor_t, srcDesc: cudnnTensorDescriptor_t, destDesc: cudnnTensorDescriptor_t, destSizeInBytes: *mut usize) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnTensorTransformDescriptor_t, cudnnTensorDescriptor_t, cudnnTensorDescriptor_t, *mut usize) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnInitTransformDest") });
        _f(transformDesc, srcDesc, destDesc, destSizeInBytes)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnInitTransformDest(transformDesc: cudnnTensorTransformDescriptor_t, srcDesc: cudnnTensorDescriptor_t, destDesc: cudnnTensorDescriptor_t, destSizeInBytes: *mut usize) -> cudnnStatus_t;
        }
        cudnnInitTransformDest(transformDesc, srcDesc, destDesc, destSizeInBytes)
    }
}
pub unsafe fn cudnnLRNCrossChannelBackward(handle: cudnnHandle_t, normDesc: cudnnLRNDescriptor_t, lrnMode: cudnnLRNMode_t, alpha: *const ::core::ffi::c_void, yDesc: cudnnTensorDescriptor_t, y: *const ::core::ffi::c_void, dyDesc: cudnnTensorDescriptor_t, dy: *const ::core::ffi::c_void, xDesc: cudnnTensorDescriptor_t, x: *const ::core::ffi::c_void, beta: *const ::core::ffi::c_void, dxDesc: cudnnTensorDescriptor_t, dx: *mut ::core::ffi::c_void) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnLRNDescriptor_t, cudnnLRNMode_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *mut ::core::ffi::c_void) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnLRNCrossChannelBackward") });
        _f(handle, normDesc, lrnMode, alpha, yDesc, y, dyDesc, dy, xDesc, x, beta, dxDesc, dx)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnLRNCrossChannelBackward(handle: cudnnHandle_t, normDesc: cudnnLRNDescriptor_t, lrnMode: cudnnLRNMode_t, alpha: *const ::core::ffi::c_void, yDesc: cudnnTensorDescriptor_t, y: *const ::core::ffi::c_void, dyDesc: cudnnTensorDescriptor_t, dy: *const ::core::ffi::c_void, xDesc: cudnnTensorDescriptor_t, x: *const ::core::ffi::c_void, beta: *const ::core::ffi::c_void, dxDesc: cudnnTensorDescriptor_t, dx: *mut ::core::ffi::c_void) -> cudnnStatus_t;
        }
        cudnnLRNCrossChannelBackward(handle, normDesc, lrnMode, alpha, yDesc, y, dyDesc, dy, xDesc, x, beta, dxDesc, dx)
    }
}
pub unsafe fn cudnnLRNCrossChannelForward(handle: cudnnHandle_t, normDesc: cudnnLRNDescriptor_t, lrnMode: cudnnLRNMode_t, alpha: *const ::core::ffi::c_void, xDesc: cudnnTensorDescriptor_t, x: *const ::core::ffi::c_void, beta: *const ::core::ffi::c_void, yDesc: cudnnTensorDescriptor_t, y: *mut ::core::ffi::c_void) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnLRNDescriptor_t, cudnnLRNMode_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *mut ::core::ffi::c_void) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnLRNCrossChannelForward") });
        _f(handle, normDesc, lrnMode, alpha, xDesc, x, beta, yDesc, y)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnLRNCrossChannelForward(handle: cudnnHandle_t, normDesc: cudnnLRNDescriptor_t, lrnMode: cudnnLRNMode_t, alpha: *const ::core::ffi::c_void, xDesc: cudnnTensorDescriptor_t, x: *const ::core::ffi::c_void, beta: *const ::core::ffi::c_void, yDesc: cudnnTensorDescriptor_t, y: *mut ::core::ffi::c_void) -> cudnnStatus_t;
        }
        cudnnLRNCrossChannelForward(handle, normDesc, lrnMode, alpha, xDesc, x, beta, yDesc, y)
    }
}
pub unsafe fn cudnnMakeFusedOpsPlan(handle: cudnnHandle_t, plan: cudnnFusedOpsPlan_t, constPack: cudnnFusedOpsConstParamPack_t, workspaceSizeInBytes: *mut usize) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnFusedOpsPlan_t, cudnnFusedOpsConstParamPack_t, *mut usize) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnMakeFusedOpsPlan") });
        _f(handle, plan, constPack, workspaceSizeInBytes)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnMakeFusedOpsPlan(handle: cudnnHandle_t, plan: cudnnFusedOpsPlan_t, constPack: cudnnFusedOpsConstParamPack_t, workspaceSizeInBytes: *mut usize) -> cudnnStatus_t;
        }
        cudnnMakeFusedOpsPlan(handle, plan, constPack, workspaceSizeInBytes)
    }
}
pub unsafe fn cudnnMultiHeadAttnBackwardData(handle: cudnnHandle_t, attnDesc: cudnnAttnDescriptor_t, loWinIdx: *const ::core::ffi::c_int, hiWinIdx: *const ::core::ffi::c_int, devSeqLengthsDQDO: *const ::core::ffi::c_int, devSeqLengthsDKDV: *const ::core::ffi::c_int, doDesc: cudnnSeqDataDescriptor_t, dout: *const ::core::ffi::c_void, dqDesc: cudnnSeqDataDescriptor_t, dqueries: *mut ::core::ffi::c_void, queries: *const ::core::ffi::c_void, dkDesc: cudnnSeqDataDescriptor_t, dkeys: *mut ::core::ffi::c_void, keys: *const ::core::ffi::c_void, dvDesc: cudnnSeqDataDescriptor_t, dvalues: *mut ::core::ffi::c_void, values: *const ::core::ffi::c_void, weightSizeInBytes: usize, weights: *const ::core::ffi::c_void, workSpaceSizeInBytes: usize, workSpace: *mut ::core::ffi::c_void, reserveSpaceSizeInBytes: usize, reserveSpace: *mut ::core::ffi::c_void) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnAttnDescriptor_t, *const ::core::ffi::c_int, *const ::core::ffi::c_int, *const ::core::ffi::c_int, *const ::core::ffi::c_int, cudnnSeqDataDescriptor_t, *const ::core::ffi::c_void, cudnnSeqDataDescriptor_t, *mut ::core::ffi::c_void, *const ::core::ffi::c_void, cudnnSeqDataDescriptor_t, *mut ::core::ffi::c_void, *const ::core::ffi::c_void, cudnnSeqDataDescriptor_t, *mut ::core::ffi::c_void, *const ::core::ffi::c_void, usize, *const ::core::ffi::c_void, usize, *mut ::core::ffi::c_void, usize, *mut ::core::ffi::c_void) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnMultiHeadAttnBackwardData") });
        _f(handle, attnDesc, loWinIdx, hiWinIdx, devSeqLengthsDQDO, devSeqLengthsDKDV, doDesc, dout, dqDesc, dqueries, queries, dkDesc, dkeys, keys, dvDesc, dvalues, values, weightSizeInBytes, weights, workSpaceSizeInBytes, workSpace, reserveSpaceSizeInBytes, reserveSpace)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnMultiHeadAttnBackwardData(handle: cudnnHandle_t, attnDesc: cudnnAttnDescriptor_t, loWinIdx: *const ::core::ffi::c_int, hiWinIdx: *const ::core::ffi::c_int, devSeqLengthsDQDO: *const ::core::ffi::c_int, devSeqLengthsDKDV: *const ::core::ffi::c_int, doDesc: cudnnSeqDataDescriptor_t, dout: *const ::core::ffi::c_void, dqDesc: cudnnSeqDataDescriptor_t, dqueries: *mut ::core::ffi::c_void, queries: *const ::core::ffi::c_void, dkDesc: cudnnSeqDataDescriptor_t, dkeys: *mut ::core::ffi::c_void, keys: *const ::core::ffi::c_void, dvDesc: cudnnSeqDataDescriptor_t, dvalues: *mut ::core::ffi::c_void, values: *const ::core::ffi::c_void, weightSizeInBytes: usize, weights: *const ::core::ffi::c_void, workSpaceSizeInBytes: usize, workSpace: *mut ::core::ffi::c_void, reserveSpaceSizeInBytes: usize, reserveSpace: *mut ::core::ffi::c_void) -> cudnnStatus_t;
        }
        cudnnMultiHeadAttnBackwardData(handle, attnDesc, loWinIdx, hiWinIdx, devSeqLengthsDQDO, devSeqLengthsDKDV, doDesc, dout, dqDesc, dqueries, queries, dkDesc, dkeys, keys, dvDesc, dvalues, values, weightSizeInBytes, weights, workSpaceSizeInBytes, workSpace, reserveSpaceSizeInBytes, reserveSpace)
    }
}
pub unsafe fn cudnnMultiHeadAttnBackwardWeights(handle: cudnnHandle_t, attnDesc: cudnnAttnDescriptor_t, addGrad: cudnnWgradMode_t, qDesc: cudnnSeqDataDescriptor_t, queries: *const ::core::ffi::c_void, kDesc: cudnnSeqDataDescriptor_t, keys: *const ::core::ffi::c_void, vDesc: cudnnSeqDataDescriptor_t, values: *const ::core::ffi::c_void, doDesc: cudnnSeqDataDescriptor_t, dout: *const ::core::ffi::c_void, weightSizeInBytes: usize, weights: *const ::core::ffi::c_void, dweights: *mut ::core::ffi::c_void, workSpaceSizeInBytes: usize, workSpace: *mut ::core::ffi::c_void, reserveSpaceSizeInBytes: usize, reserveSpace: *mut ::core::ffi::c_void) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnAttnDescriptor_t, cudnnWgradMode_t, cudnnSeqDataDescriptor_t, *const ::core::ffi::c_void, cudnnSeqDataDescriptor_t, *const ::core::ffi::c_void, cudnnSeqDataDescriptor_t, *const ::core::ffi::c_void, cudnnSeqDataDescriptor_t, *const ::core::ffi::c_void, usize, *const ::core::ffi::c_void, *mut ::core::ffi::c_void, usize, *mut ::core::ffi::c_void, usize, *mut ::core::ffi::c_void) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnMultiHeadAttnBackwardWeights") });
        _f(handle, attnDesc, addGrad, qDesc, queries, kDesc, keys, vDesc, values, doDesc, dout, weightSizeInBytes, weights, dweights, workSpaceSizeInBytes, workSpace, reserveSpaceSizeInBytes, reserveSpace)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnMultiHeadAttnBackwardWeights(handle: cudnnHandle_t, attnDesc: cudnnAttnDescriptor_t, addGrad: cudnnWgradMode_t, qDesc: cudnnSeqDataDescriptor_t, queries: *const ::core::ffi::c_void, kDesc: cudnnSeqDataDescriptor_t, keys: *const ::core::ffi::c_void, vDesc: cudnnSeqDataDescriptor_t, values: *const ::core::ffi::c_void, doDesc: cudnnSeqDataDescriptor_t, dout: *const ::core::ffi::c_void, weightSizeInBytes: usize, weights: *const ::core::ffi::c_void, dweights: *mut ::core::ffi::c_void, workSpaceSizeInBytes: usize, workSpace: *mut ::core::ffi::c_void, reserveSpaceSizeInBytes: usize, reserveSpace: *mut ::core::ffi::c_void) -> cudnnStatus_t;
        }
        cudnnMultiHeadAttnBackwardWeights(handle, attnDesc, addGrad, qDesc, queries, kDesc, keys, vDesc, values, doDesc, dout, weightSizeInBytes, weights, dweights, workSpaceSizeInBytes, workSpace, reserveSpaceSizeInBytes, reserveSpace)
    }
}
pub unsafe fn cudnnMultiHeadAttnForward(handle: cudnnHandle_t, attnDesc: cudnnAttnDescriptor_t, currIdx: ::core::ffi::c_int, loWinIdx: *const ::core::ffi::c_int, hiWinIdx: *const ::core::ffi::c_int, devSeqLengthsQO: *const ::core::ffi::c_int, devSeqLengthsKV: *const ::core::ffi::c_int, qDesc: cudnnSeqDataDescriptor_t, queries: *const ::core::ffi::c_void, residuals: *const ::core::ffi::c_void, kDesc: cudnnSeqDataDescriptor_t, keys: *const ::core::ffi::c_void, vDesc: cudnnSeqDataDescriptor_t, values: *const ::core::ffi::c_void, oDesc: cudnnSeqDataDescriptor_t, out: *mut ::core::ffi::c_void, weightSizeInBytes: usize, weights: *const ::core::ffi::c_void, workSpaceSizeInBytes: usize, workSpace: *mut ::core::ffi::c_void, reserveSpaceSizeInBytes: usize, reserveSpace: *mut ::core::ffi::c_void) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnAttnDescriptor_t, ::core::ffi::c_int, *const ::core::ffi::c_int, *const ::core::ffi::c_int, *const ::core::ffi::c_int, *const ::core::ffi::c_int, cudnnSeqDataDescriptor_t, *const ::core::ffi::c_void, *const ::core::ffi::c_void, cudnnSeqDataDescriptor_t, *const ::core::ffi::c_void, cudnnSeqDataDescriptor_t, *const ::core::ffi::c_void, cudnnSeqDataDescriptor_t, *mut ::core::ffi::c_void, usize, *const ::core::ffi::c_void, usize, *mut ::core::ffi::c_void, usize, *mut ::core::ffi::c_void) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnMultiHeadAttnForward") });
        _f(handle, attnDesc, currIdx, loWinIdx, hiWinIdx, devSeqLengthsQO, devSeqLengthsKV, qDesc, queries, residuals, kDesc, keys, vDesc, values, oDesc, out, weightSizeInBytes, weights, workSpaceSizeInBytes, workSpace, reserveSpaceSizeInBytes, reserveSpace)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnMultiHeadAttnForward(handle: cudnnHandle_t, attnDesc: cudnnAttnDescriptor_t, currIdx: ::core::ffi::c_int, loWinIdx: *const ::core::ffi::c_int, hiWinIdx: *const ::core::ffi::c_int, devSeqLengthsQO: *const ::core::ffi::c_int, devSeqLengthsKV: *const ::core::ffi::c_int, qDesc: cudnnSeqDataDescriptor_t, queries: *const ::core::ffi::c_void, residuals: *const ::core::ffi::c_void, kDesc: cudnnSeqDataDescriptor_t, keys: *const ::core::ffi::c_void, vDesc: cudnnSeqDataDescriptor_t, values: *const ::core::ffi::c_void, oDesc: cudnnSeqDataDescriptor_t, out: *mut ::core::ffi::c_void, weightSizeInBytes: usize, weights: *const ::core::ffi::c_void, workSpaceSizeInBytes: usize, workSpace: *mut ::core::ffi::c_void, reserveSpaceSizeInBytes: usize, reserveSpace: *mut ::core::ffi::c_void) -> cudnnStatus_t;
        }
        cudnnMultiHeadAttnForward(handle, attnDesc, currIdx, loWinIdx, hiWinIdx, devSeqLengthsQO, devSeqLengthsKV, qDesc, queries, residuals, kDesc, keys, vDesc, values, oDesc, out, weightSizeInBytes, weights, workSpaceSizeInBytes, workSpace, reserveSpaceSizeInBytes, reserveSpace)
    }
}
pub unsafe fn cudnnNormalizationBackward(
    handle: cudnnHandle_t, mode: cudnnNormMode_t, normOps: cudnnNormOps_t, algo: cudnnNormAlgo_t, alphaDataDiff: *const ::core::ffi::c_void, betaDataDiff: *const ::core::ffi::c_void, alphaParamDiff: *const ::core::ffi::c_void, betaParamDiff: *const ::core::ffi::c_void, xDesc: cudnnTensorDescriptor_t, xData: *const ::core::ffi::c_void, yDesc: cudnnTensorDescriptor_t, yData: *const ::core::ffi::c_void, dyDesc: cudnnTensorDescriptor_t, dyData: *const ::core::ffi::c_void, dzDesc: cudnnTensorDescriptor_t, dzData: *mut ::core::ffi::c_void, dxDesc: cudnnTensorDescriptor_t, dxData: *mut ::core::ffi::c_void, dNormScaleBiasDesc: cudnnTensorDescriptor_t, normScaleData: *const ::core::ffi::c_void, normBiasData: *const ::core::ffi::c_void, dNormScaleData: *mut ::core::ffi::c_void, dNormBiasData: *mut ::core::ffi::c_void, epsilon: f64, normMeanVarDesc: cudnnTensorDescriptor_t, savedMean: *const ::core::ffi::c_void, savedInvVariance: *const ::core::ffi::c_void,
    activationDesc: cudnnActivationDescriptor_t, workSpace: *mut ::core::ffi::c_void, workSpaceSizeInBytes: usize, reserveSpace: *mut ::core::ffi::c_void, reserveSpaceSizeInBytes: usize, groupCnt: ::core::ffi::c_int,
) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnNormMode_t, cudnnNormOps_t, cudnnNormAlgo_t, *const ::core::ffi::c_void, *const ::core::ffi::c_void, *const ::core::ffi::c_void, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *mut ::core::ffi::c_void, cudnnTensorDescriptor_t, *mut ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, *const ::core::ffi::c_void, *mut ::core::ffi::c_void, *mut ::core::ffi::c_void, f64, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, *const ::core::ffi::c_void, cudnnActivationDescriptor_t, *mut ::core::ffi::c_void, usize, *mut ::core::ffi::c_void, usize, ::core::ffi::c_int) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnNormalizationBackward") });
        _f(handle, mode, normOps, algo, alphaDataDiff, betaDataDiff, alphaParamDiff, betaParamDiff, xDesc, xData, yDesc, yData, dyDesc, dyData, dzDesc, dzData, dxDesc, dxData, dNormScaleBiasDesc, normScaleData, normBiasData, dNormScaleData, dNormBiasData, epsilon, normMeanVarDesc, savedMean, savedInvVariance, activationDesc, workSpace, workSpaceSizeInBytes, reserveSpace, reserveSpaceSizeInBytes, groupCnt)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnNormalizationBackward(
                handle: cudnnHandle_t, mode: cudnnNormMode_t, normOps: cudnnNormOps_t, algo: cudnnNormAlgo_t, alphaDataDiff: *const ::core::ffi::c_void, betaDataDiff: *const ::core::ffi::c_void, alphaParamDiff: *const ::core::ffi::c_void, betaParamDiff: *const ::core::ffi::c_void, xDesc: cudnnTensorDescriptor_t, xData: *const ::core::ffi::c_void, yDesc: cudnnTensorDescriptor_t, yData: *const ::core::ffi::c_void, dyDesc: cudnnTensorDescriptor_t, dyData: *const ::core::ffi::c_void, dzDesc: cudnnTensorDescriptor_t, dzData: *mut ::core::ffi::c_void, dxDesc: cudnnTensorDescriptor_t, dxData: *mut ::core::ffi::c_void, dNormScaleBiasDesc: cudnnTensorDescriptor_t, normScaleData: *const ::core::ffi::c_void, normBiasData: *const ::core::ffi::c_void, dNormScaleData: *mut ::core::ffi::c_void, dNormBiasData: *mut ::core::ffi::c_void, epsilon: f64, normMeanVarDesc: cudnnTensorDescriptor_t, savedMean: *const ::core::ffi::c_void, savedInvVariance: *const ::core::ffi::c_void,
                activationDesc: cudnnActivationDescriptor_t, workSpace: *mut ::core::ffi::c_void, workSpaceSizeInBytes: usize, reserveSpace: *mut ::core::ffi::c_void, reserveSpaceSizeInBytes: usize, groupCnt: ::core::ffi::c_int,
            ) -> cudnnStatus_t;
        }
        cudnnNormalizationBackward(handle, mode, normOps, algo, alphaDataDiff, betaDataDiff, alphaParamDiff, betaParamDiff, xDesc, xData, yDesc, yData, dyDesc, dyData, dzDesc, dzData, dxDesc, dxData, dNormScaleBiasDesc, normScaleData, normBiasData, dNormScaleData, dNormBiasData, epsilon, normMeanVarDesc, savedMean, savedInvVariance, activationDesc, workSpace, workSpaceSizeInBytes, reserveSpace, reserveSpaceSizeInBytes, groupCnt)
    }
}
pub unsafe fn cudnnNormalizationForwardInference(handle: cudnnHandle_t, mode: cudnnNormMode_t, normOps: cudnnNormOps_t, algo: cudnnNormAlgo_t, alpha: *const ::core::ffi::c_void, beta: *const ::core::ffi::c_void, xDesc: cudnnTensorDescriptor_t, x: *const ::core::ffi::c_void, normScaleBiasDesc: cudnnTensorDescriptor_t, normScale: *const ::core::ffi::c_void, normBias: *const ::core::ffi::c_void, normMeanVarDesc: cudnnTensorDescriptor_t, estimatedMean: *const ::core::ffi::c_void, estimatedVariance: *const ::core::ffi::c_void, zDesc: cudnnTensorDescriptor_t, z: *const ::core::ffi::c_void, activationDesc: cudnnActivationDescriptor_t, yDesc: cudnnTensorDescriptor_t, y: *mut ::core::ffi::c_void, epsilon: f64, groupCnt: ::core::ffi::c_int) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnNormMode_t, cudnnNormOps_t, cudnnNormAlgo_t, *const ::core::ffi::c_void, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, cudnnActivationDescriptor_t, cudnnTensorDescriptor_t, *mut ::core::ffi::c_void, f64, ::core::ffi::c_int) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnNormalizationForwardInference") });
        _f(handle, mode, normOps, algo, alpha, beta, xDesc, x, normScaleBiasDesc, normScale, normBias, normMeanVarDesc, estimatedMean, estimatedVariance, zDesc, z, activationDesc, yDesc, y, epsilon, groupCnt)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnNormalizationForwardInference(handle: cudnnHandle_t, mode: cudnnNormMode_t, normOps: cudnnNormOps_t, algo: cudnnNormAlgo_t, alpha: *const ::core::ffi::c_void, beta: *const ::core::ffi::c_void, xDesc: cudnnTensorDescriptor_t, x: *const ::core::ffi::c_void, normScaleBiasDesc: cudnnTensorDescriptor_t, normScale: *const ::core::ffi::c_void, normBias: *const ::core::ffi::c_void, normMeanVarDesc: cudnnTensorDescriptor_t, estimatedMean: *const ::core::ffi::c_void, estimatedVariance: *const ::core::ffi::c_void, zDesc: cudnnTensorDescriptor_t, z: *const ::core::ffi::c_void, activationDesc: cudnnActivationDescriptor_t, yDesc: cudnnTensorDescriptor_t, y: *mut ::core::ffi::c_void, epsilon: f64, groupCnt: ::core::ffi::c_int) -> cudnnStatus_t;
        }
        cudnnNormalizationForwardInference(handle, mode, normOps, algo, alpha, beta, xDesc, x, normScaleBiasDesc, normScale, normBias, normMeanVarDesc, estimatedMean, estimatedVariance, zDesc, z, activationDesc, yDesc, y, epsilon, groupCnt)
    }
}
pub unsafe fn cudnnNormalizationForwardTraining(
    handle: cudnnHandle_t, mode: cudnnNormMode_t, normOps: cudnnNormOps_t, algo: cudnnNormAlgo_t, alpha: *const ::core::ffi::c_void, beta: *const ::core::ffi::c_void, xDesc: cudnnTensorDescriptor_t, xData: *const ::core::ffi::c_void, normScaleBiasDesc: cudnnTensorDescriptor_t, normScale: *const ::core::ffi::c_void, normBias: *const ::core::ffi::c_void, exponentialAverageFactor: f64, normMeanVarDesc: cudnnTensorDescriptor_t, resultRunningMean: *mut ::core::ffi::c_void, resultRunningVariance: *mut ::core::ffi::c_void, epsilon: f64, resultSaveMean: *mut ::core::ffi::c_void, resultSaveInvVariance: *mut ::core::ffi::c_void, activationDesc: cudnnActivationDescriptor_t, zDesc: cudnnTensorDescriptor_t, zData: *const ::core::ffi::c_void, yDesc: cudnnTensorDescriptor_t, yData: *mut ::core::ffi::c_void, workspace: *mut ::core::ffi::c_void, workSpaceSizeInBytes: usize, reserveSpace: *mut ::core::ffi::c_void, reserveSpaceSizeInBytes: usize, groupCnt: ::core::ffi::c_int,
) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnNormMode_t, cudnnNormOps_t, cudnnNormAlgo_t, *const ::core::ffi::c_void, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, *const ::core::ffi::c_void, f64, cudnnTensorDescriptor_t, *mut ::core::ffi::c_void, *mut ::core::ffi::c_void, f64, *mut ::core::ffi::c_void, *mut ::core::ffi::c_void, cudnnActivationDescriptor_t, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *mut ::core::ffi::c_void, *mut ::core::ffi::c_void, usize, *mut ::core::ffi::c_void, usize, ::core::ffi::c_int) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnNormalizationForwardTraining") });
        _f(handle, mode, normOps, algo, alpha, beta, xDesc, xData, normScaleBiasDesc, normScale, normBias, exponentialAverageFactor, normMeanVarDesc, resultRunningMean, resultRunningVariance, epsilon, resultSaveMean, resultSaveInvVariance, activationDesc, zDesc, zData, yDesc, yData, workspace, workSpaceSizeInBytes, reserveSpace, reserveSpaceSizeInBytes, groupCnt)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnNormalizationForwardTraining(
                handle: cudnnHandle_t, mode: cudnnNormMode_t, normOps: cudnnNormOps_t, algo: cudnnNormAlgo_t, alpha: *const ::core::ffi::c_void, beta: *const ::core::ffi::c_void, xDesc: cudnnTensorDescriptor_t, xData: *const ::core::ffi::c_void, normScaleBiasDesc: cudnnTensorDescriptor_t, normScale: *const ::core::ffi::c_void, normBias: *const ::core::ffi::c_void, exponentialAverageFactor: f64, normMeanVarDesc: cudnnTensorDescriptor_t, resultRunningMean: *mut ::core::ffi::c_void, resultRunningVariance: *mut ::core::ffi::c_void, epsilon: f64, resultSaveMean: *mut ::core::ffi::c_void, resultSaveInvVariance: *mut ::core::ffi::c_void, activationDesc: cudnnActivationDescriptor_t, zDesc: cudnnTensorDescriptor_t, zData: *const ::core::ffi::c_void, yDesc: cudnnTensorDescriptor_t, yData: *mut ::core::ffi::c_void, workspace: *mut ::core::ffi::c_void, workSpaceSizeInBytes: usize, reserveSpace: *mut ::core::ffi::c_void, reserveSpaceSizeInBytes: usize, groupCnt: ::core::ffi::c_int,
            ) -> cudnnStatus_t;
        }
        cudnnNormalizationForwardTraining(handle, mode, normOps, algo, alpha, beta, xDesc, xData, normScaleBiasDesc, normScale, normBias, exponentialAverageFactor, normMeanVarDesc, resultRunningMean, resultRunningVariance, epsilon, resultSaveMean, resultSaveInvVariance, activationDesc, zDesc, zData, yDesc, yData, workspace, workSpaceSizeInBytes, reserveSpace, reserveSpaceSizeInBytes, groupCnt)
    }
}
pub unsafe fn cudnnOpTensor(handle: cudnnHandle_t, opTensorDesc: cudnnOpTensorDescriptor_t, alpha1: *const ::core::ffi::c_void, aDesc: cudnnTensorDescriptor_t, A: *const ::core::ffi::c_void, alpha2: *const ::core::ffi::c_void, bDesc: cudnnTensorDescriptor_t, B: *const ::core::ffi::c_void, beta: *const ::core::ffi::c_void, cDesc: cudnnTensorDescriptor_t, C: *mut ::core::ffi::c_void) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnOpTensorDescriptor_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *mut ::core::ffi::c_void) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnOpTensor") });
        _f(handle, opTensorDesc, alpha1, aDesc, A, alpha2, bDesc, B, beta, cDesc, C)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnOpTensor(handle: cudnnHandle_t, opTensorDesc: cudnnOpTensorDescriptor_t, alpha1: *const ::core::ffi::c_void, aDesc: cudnnTensorDescriptor_t, A: *const ::core::ffi::c_void, alpha2: *const ::core::ffi::c_void, bDesc: cudnnTensorDescriptor_t, B: *const ::core::ffi::c_void, beta: *const ::core::ffi::c_void, cDesc: cudnnTensorDescriptor_t, C: *mut ::core::ffi::c_void) -> cudnnStatus_t;
        }
        cudnnOpTensor(handle, opTensorDesc, alpha1, aDesc, A, alpha2, bDesc, B, beta, cDesc, C)
    }
}
#[cfg(any(feature = "cudnn-08009"))]
pub unsafe fn cudnnOpsInferVersionCheck() -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn() -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnOpsInferVersionCheck") });
        _f()
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnOpsInferVersionCheck() -> cudnnStatus_t;
        }
        cudnnOpsInferVersionCheck()
    }
}
#[cfg(any(feature = "cudnn-08009"))]
pub unsafe fn cudnnOpsTrainVersionCheck() -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn() -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnOpsTrainVersionCheck") });
        _f()
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnOpsTrainVersionCheck() -> cudnnStatus_t;
        }
        cudnnOpsTrainVersionCheck()
    }
}
#[cfg(any(feature = "cudnn-09010", feature = "cudnn-09021"))]
pub unsafe fn cudnnOpsVersionCheck() -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn() -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnOpsVersionCheck") });
        _f()
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnOpsVersionCheck() -> cudnnStatus_t;
        }
        cudnnOpsVersionCheck()
    }
}
pub unsafe fn cudnnPoolingBackward(handle: cudnnHandle_t, poolingDesc: cudnnPoolingDescriptor_t, alpha: *const ::core::ffi::c_void, yDesc: cudnnTensorDescriptor_t, y: *const ::core::ffi::c_void, dyDesc: cudnnTensorDescriptor_t, dy: *const ::core::ffi::c_void, xDesc: cudnnTensorDescriptor_t, x: *const ::core::ffi::c_void, beta: *const ::core::ffi::c_void, dxDesc: cudnnTensorDescriptor_t, dx: *mut ::core::ffi::c_void) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnPoolingDescriptor_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *mut ::core::ffi::c_void) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnPoolingBackward") });
        _f(handle, poolingDesc, alpha, yDesc, y, dyDesc, dy, xDesc, x, beta, dxDesc, dx)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnPoolingBackward(handle: cudnnHandle_t, poolingDesc: cudnnPoolingDescriptor_t, alpha: *const ::core::ffi::c_void, yDesc: cudnnTensorDescriptor_t, y: *const ::core::ffi::c_void, dyDesc: cudnnTensorDescriptor_t, dy: *const ::core::ffi::c_void, xDesc: cudnnTensorDescriptor_t, x: *const ::core::ffi::c_void, beta: *const ::core::ffi::c_void, dxDesc: cudnnTensorDescriptor_t, dx: *mut ::core::ffi::c_void) -> cudnnStatus_t;
        }
        cudnnPoolingBackward(handle, poolingDesc, alpha, yDesc, y, dyDesc, dy, xDesc, x, beta, dxDesc, dx)
    }
}
pub unsafe fn cudnnPoolingForward(handle: cudnnHandle_t, poolingDesc: cudnnPoolingDescriptor_t, alpha: *const ::core::ffi::c_void, xDesc: cudnnTensorDescriptor_t, x: *const ::core::ffi::c_void, beta: *const ::core::ffi::c_void, yDesc: cudnnTensorDescriptor_t, y: *mut ::core::ffi::c_void) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnPoolingDescriptor_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *mut ::core::ffi::c_void) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnPoolingForward") });
        _f(handle, poolingDesc, alpha, xDesc, x, beta, yDesc, y)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnPoolingForward(handle: cudnnHandle_t, poolingDesc: cudnnPoolingDescriptor_t, alpha: *const ::core::ffi::c_void, xDesc: cudnnTensorDescriptor_t, x: *const ::core::ffi::c_void, beta: *const ::core::ffi::c_void, yDesc: cudnnTensorDescriptor_t, y: *mut ::core::ffi::c_void) -> cudnnStatus_t;
        }
        cudnnPoolingForward(handle, poolingDesc, alpha, xDesc, x, beta, yDesc, y)
    }
}
pub unsafe fn cudnnQueryRuntimeError(handle: cudnnHandle_t, rstatus: *mut cudnnStatus_t, mode: cudnnErrQueryMode_t, tag: *mut cudnnRuntimeTag_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, *mut cudnnStatus_t, cudnnErrQueryMode_t, *mut cudnnRuntimeTag_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnQueryRuntimeError") });
        _f(handle, rstatus, mode, tag)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnQueryRuntimeError(handle: cudnnHandle_t, rstatus: *mut cudnnStatus_t, mode: cudnnErrQueryMode_t, tag: *mut cudnnRuntimeTag_t) -> cudnnStatus_t;
        }
        cudnnQueryRuntimeError(handle, rstatus, mode, tag)
    }
}
#[cfg(any(feature = "cudnn-08009"))]
pub unsafe fn cudnnRNNBackwardData(handle: cudnnHandle_t, rnnDesc: cudnnRNNDescriptor_t, seqLength: ::core::ffi::c_int, yDesc: *const cudnnTensorDescriptor_t, y: *const ::core::ffi::c_void, dyDesc: *const cudnnTensorDescriptor_t, dy: *const ::core::ffi::c_void, dhyDesc: cudnnTensorDescriptor_t, dhy: *const ::core::ffi::c_void, dcyDesc: cudnnTensorDescriptor_t, dcy: *const ::core::ffi::c_void, wDesc: cudnnFilterDescriptor_t, w: *const ::core::ffi::c_void, hxDesc: cudnnTensorDescriptor_t, hx: *const ::core::ffi::c_void, cxDesc: cudnnTensorDescriptor_t, cx: *const ::core::ffi::c_void, dxDesc: *const cudnnTensorDescriptor_t, dx: *mut ::core::ffi::c_void, dhxDesc: cudnnTensorDescriptor_t, dhx: *mut ::core::ffi::c_void, dcxDesc: cudnnTensorDescriptor_t, dcx: *mut ::core::ffi::c_void, workSpace: *mut ::core::ffi::c_void, workSpaceSizeInBytes: usize, reserveSpace: *mut ::core::ffi::c_void, reserveSpaceSizeInBytes: usize) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnRNNDescriptor_t, ::core::ffi::c_int, *const cudnnTensorDescriptor_t, *const ::core::ffi::c_void, *const cudnnTensorDescriptor_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, cudnnFilterDescriptor_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, *const cudnnTensorDescriptor_t, *mut ::core::ffi::c_void, cudnnTensorDescriptor_t, *mut ::core::ffi::c_void, cudnnTensorDescriptor_t, *mut ::core::ffi::c_void, *mut ::core::ffi::c_void, usize, *mut ::core::ffi::c_void, usize) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnRNNBackwardData") });
        _f(handle, rnnDesc, seqLength, yDesc, y, dyDesc, dy, dhyDesc, dhy, dcyDesc, dcy, wDesc, w, hxDesc, hx, cxDesc, cx, dxDesc, dx, dhxDesc, dhx, dcxDesc, dcx, workSpace, workSpaceSizeInBytes, reserveSpace, reserveSpaceSizeInBytes)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnRNNBackwardData(handle: cudnnHandle_t, rnnDesc: cudnnRNNDescriptor_t, seqLength: ::core::ffi::c_int, yDesc: *const cudnnTensorDescriptor_t, y: *const ::core::ffi::c_void, dyDesc: *const cudnnTensorDescriptor_t, dy: *const ::core::ffi::c_void, dhyDesc: cudnnTensorDescriptor_t, dhy: *const ::core::ffi::c_void, dcyDesc: cudnnTensorDescriptor_t, dcy: *const ::core::ffi::c_void, wDesc: cudnnFilterDescriptor_t, w: *const ::core::ffi::c_void, hxDesc: cudnnTensorDescriptor_t, hx: *const ::core::ffi::c_void, cxDesc: cudnnTensorDescriptor_t, cx: *const ::core::ffi::c_void, dxDesc: *const cudnnTensorDescriptor_t, dx: *mut ::core::ffi::c_void, dhxDesc: cudnnTensorDescriptor_t, dhx: *mut ::core::ffi::c_void, dcxDesc: cudnnTensorDescriptor_t, dcx: *mut ::core::ffi::c_void, workSpace: *mut ::core::ffi::c_void, workSpaceSizeInBytes: usize, reserveSpace: *mut ::core::ffi::c_void, reserveSpaceSizeInBytes: usize) -> cudnnStatus_t;
        }
        cudnnRNNBackwardData(handle, rnnDesc, seqLength, yDesc, y, dyDesc, dy, dhyDesc, dhy, dcyDesc, dcy, wDesc, w, hxDesc, hx, cxDesc, cx, dxDesc, dx, dhxDesc, dhx, dcxDesc, dcx, workSpace, workSpaceSizeInBytes, reserveSpace, reserveSpaceSizeInBytes)
    }
}
#[cfg(any(feature = "cudnn-08009"))]
pub unsafe fn cudnnRNNBackwardDataEx(
    handle: cudnnHandle_t, rnnDesc: cudnnRNNDescriptor_t, yDesc: cudnnRNNDataDescriptor_t, y: *const ::core::ffi::c_void, dyDesc: cudnnRNNDataDescriptor_t, dy: *const ::core::ffi::c_void, dcDesc: cudnnRNNDataDescriptor_t, dcAttn: *const ::core::ffi::c_void, dhyDesc: cudnnTensorDescriptor_t, dhy: *const ::core::ffi::c_void, dcyDesc: cudnnTensorDescriptor_t, dcy: *const ::core::ffi::c_void, wDesc: cudnnFilterDescriptor_t, w: *const ::core::ffi::c_void, hxDesc: cudnnTensorDescriptor_t, hx: *const ::core::ffi::c_void, cxDesc: cudnnTensorDescriptor_t, cx: *const ::core::ffi::c_void, dxDesc: cudnnRNNDataDescriptor_t, dx: *mut ::core::ffi::c_void, dhxDesc: cudnnTensorDescriptor_t, dhx: *mut ::core::ffi::c_void, dcxDesc: cudnnTensorDescriptor_t, dcx: *mut ::core::ffi::c_void, dkDesc: cudnnRNNDataDescriptor_t, dkeys: *mut ::core::ffi::c_void, workSpace: *mut ::core::ffi::c_void, workSpaceSizeInBytes: usize, reserveSpace: *mut ::core::ffi::c_void, reserveSpaceSizeInBytes: usize,
) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnRNNDescriptor_t, cudnnRNNDataDescriptor_t, *const ::core::ffi::c_void, cudnnRNNDataDescriptor_t, *const ::core::ffi::c_void, cudnnRNNDataDescriptor_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, cudnnFilterDescriptor_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, cudnnRNNDataDescriptor_t, *mut ::core::ffi::c_void, cudnnTensorDescriptor_t, *mut ::core::ffi::c_void, cudnnTensorDescriptor_t, *mut ::core::ffi::c_void, cudnnRNNDataDescriptor_t, *mut ::core::ffi::c_void, *mut ::core::ffi::c_void, usize, *mut ::core::ffi::c_void, usize) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnRNNBackwardDataEx") });
        _f(handle, rnnDesc, yDesc, y, dyDesc, dy, dcDesc, dcAttn, dhyDesc, dhy, dcyDesc, dcy, wDesc, w, hxDesc, hx, cxDesc, cx, dxDesc, dx, dhxDesc, dhx, dcxDesc, dcx, dkDesc, dkeys, workSpace, workSpaceSizeInBytes, reserveSpace, reserveSpaceSizeInBytes)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnRNNBackwardDataEx(
                handle: cudnnHandle_t, rnnDesc: cudnnRNNDescriptor_t, yDesc: cudnnRNNDataDescriptor_t, y: *const ::core::ffi::c_void, dyDesc: cudnnRNNDataDescriptor_t, dy: *const ::core::ffi::c_void, dcDesc: cudnnRNNDataDescriptor_t, dcAttn: *const ::core::ffi::c_void, dhyDesc: cudnnTensorDescriptor_t, dhy: *const ::core::ffi::c_void, dcyDesc: cudnnTensorDescriptor_t, dcy: *const ::core::ffi::c_void, wDesc: cudnnFilterDescriptor_t, w: *const ::core::ffi::c_void, hxDesc: cudnnTensorDescriptor_t, hx: *const ::core::ffi::c_void, cxDesc: cudnnTensorDescriptor_t, cx: *const ::core::ffi::c_void, dxDesc: cudnnRNNDataDescriptor_t, dx: *mut ::core::ffi::c_void, dhxDesc: cudnnTensorDescriptor_t, dhx: *mut ::core::ffi::c_void, dcxDesc: cudnnTensorDescriptor_t, dcx: *mut ::core::ffi::c_void, dkDesc: cudnnRNNDataDescriptor_t, dkeys: *mut ::core::ffi::c_void, workSpace: *mut ::core::ffi::c_void, workSpaceSizeInBytes: usize, reserveSpace: *mut ::core::ffi::c_void, reserveSpaceSizeInBytes: usize,
            ) -> cudnnStatus_t;
        }
        cudnnRNNBackwardDataEx(handle, rnnDesc, yDesc, y, dyDesc, dy, dcDesc, dcAttn, dhyDesc, dhy, dcyDesc, dcy, wDesc, w, hxDesc, hx, cxDesc, cx, dxDesc, dx, dhxDesc, dhx, dcxDesc, dcx, dkDesc, dkeys, workSpace, workSpaceSizeInBytes, reserveSpace, reserveSpaceSizeInBytes)
    }
}
pub unsafe fn cudnnRNNBackwardData_v8(handle: cudnnHandle_t, rnnDesc: cudnnRNNDescriptor_t, devSeqLengths: *const i32, yDesc: cudnnRNNDataDescriptor_t, y: *const ::core::ffi::c_void, dy: *const ::core::ffi::c_void, xDesc: cudnnRNNDataDescriptor_t, dx: *mut ::core::ffi::c_void, hDesc: cudnnTensorDescriptor_t, hx: *const ::core::ffi::c_void, dhy: *const ::core::ffi::c_void, dhx: *mut ::core::ffi::c_void, cDesc: cudnnTensorDescriptor_t, cx: *const ::core::ffi::c_void, dcy: *const ::core::ffi::c_void, dcx: *mut ::core::ffi::c_void, weightSpaceSize: usize, weightSpace: *const ::core::ffi::c_void, workSpaceSize: usize, workSpace: *mut ::core::ffi::c_void, reserveSpaceSize: usize, reserveSpace: *mut ::core::ffi::c_void) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnRNNDescriptor_t, *const i32, cudnnRNNDataDescriptor_t, *const ::core::ffi::c_void, *const ::core::ffi::c_void, cudnnRNNDataDescriptor_t, *mut ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, *const ::core::ffi::c_void, *mut ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, *const ::core::ffi::c_void, *mut ::core::ffi::c_void, usize, *const ::core::ffi::c_void, usize, *mut ::core::ffi::c_void, usize, *mut ::core::ffi::c_void) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnRNNBackwardData_v8") });
        _f(handle, rnnDesc, devSeqLengths, yDesc, y, dy, xDesc, dx, hDesc, hx, dhy, dhx, cDesc, cx, dcy, dcx, weightSpaceSize, weightSpace, workSpaceSize, workSpace, reserveSpaceSize, reserveSpace)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnRNNBackwardData_v8(handle: cudnnHandle_t, rnnDesc: cudnnRNNDescriptor_t, devSeqLengths: *const i32, yDesc: cudnnRNNDataDescriptor_t, y: *const ::core::ffi::c_void, dy: *const ::core::ffi::c_void, xDesc: cudnnRNNDataDescriptor_t, dx: *mut ::core::ffi::c_void, hDesc: cudnnTensorDescriptor_t, hx: *const ::core::ffi::c_void, dhy: *const ::core::ffi::c_void, dhx: *mut ::core::ffi::c_void, cDesc: cudnnTensorDescriptor_t, cx: *const ::core::ffi::c_void, dcy: *const ::core::ffi::c_void, dcx: *mut ::core::ffi::c_void, weightSpaceSize: usize, weightSpace: *const ::core::ffi::c_void, workSpaceSize: usize, workSpace: *mut ::core::ffi::c_void, reserveSpaceSize: usize, reserveSpace: *mut ::core::ffi::c_void) -> cudnnStatus_t;
        }
        cudnnRNNBackwardData_v8(handle, rnnDesc, devSeqLengths, yDesc, y, dy, xDesc, dx, hDesc, hx, dhy, dhx, cDesc, cx, dcy, dcx, weightSpaceSize, weightSpace, workSpaceSize, workSpace, reserveSpaceSize, reserveSpace)
    }
}
#[cfg(any(feature = "cudnn-08009"))]
pub unsafe fn cudnnRNNBackwardWeights(handle: cudnnHandle_t, rnnDesc: cudnnRNNDescriptor_t, seqLength: ::core::ffi::c_int, xDesc: *const cudnnTensorDescriptor_t, x: *const ::core::ffi::c_void, hxDesc: cudnnTensorDescriptor_t, hx: *const ::core::ffi::c_void, yDesc: *const cudnnTensorDescriptor_t, y: *const ::core::ffi::c_void, workSpace: *const ::core::ffi::c_void, workSpaceSizeInBytes: usize, dwDesc: cudnnFilterDescriptor_t, dw: *mut ::core::ffi::c_void, reserveSpace: *const ::core::ffi::c_void, reserveSpaceSizeInBytes: usize) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnRNNDescriptor_t, ::core::ffi::c_int, *const cudnnTensorDescriptor_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, *const cudnnTensorDescriptor_t, *const ::core::ffi::c_void, *const ::core::ffi::c_void, usize, cudnnFilterDescriptor_t, *mut ::core::ffi::c_void, *const ::core::ffi::c_void, usize) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnRNNBackwardWeights") });
        _f(handle, rnnDesc, seqLength, xDesc, x, hxDesc, hx, yDesc, y, workSpace, workSpaceSizeInBytes, dwDesc, dw, reserveSpace, reserveSpaceSizeInBytes)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnRNNBackwardWeights(handle: cudnnHandle_t, rnnDesc: cudnnRNNDescriptor_t, seqLength: ::core::ffi::c_int, xDesc: *const cudnnTensorDescriptor_t, x: *const ::core::ffi::c_void, hxDesc: cudnnTensorDescriptor_t, hx: *const ::core::ffi::c_void, yDesc: *const cudnnTensorDescriptor_t, y: *const ::core::ffi::c_void, workSpace: *const ::core::ffi::c_void, workSpaceSizeInBytes: usize, dwDesc: cudnnFilterDescriptor_t, dw: *mut ::core::ffi::c_void, reserveSpace: *const ::core::ffi::c_void, reserveSpaceSizeInBytes: usize) -> cudnnStatus_t;
        }
        cudnnRNNBackwardWeights(handle, rnnDesc, seqLength, xDesc, x, hxDesc, hx, yDesc, y, workSpace, workSpaceSizeInBytes, dwDesc, dw, reserveSpace, reserveSpaceSizeInBytes)
    }
}
#[cfg(any(feature = "cudnn-08009"))]
pub unsafe fn cudnnRNNBackwardWeightsEx(handle: cudnnHandle_t, rnnDesc: cudnnRNNDescriptor_t, xDesc: cudnnRNNDataDescriptor_t, x: *const ::core::ffi::c_void, hxDesc: cudnnTensorDescriptor_t, hx: *const ::core::ffi::c_void, yDesc: cudnnRNNDataDescriptor_t, y: *const ::core::ffi::c_void, workSpace: *mut ::core::ffi::c_void, workSpaceSizeInBytes: usize, dwDesc: cudnnFilterDescriptor_t, dw: *mut ::core::ffi::c_void, reserveSpace: *mut ::core::ffi::c_void, reserveSpaceSizeInBytes: usize) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnRNNDescriptor_t, cudnnRNNDataDescriptor_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, cudnnRNNDataDescriptor_t, *const ::core::ffi::c_void, *mut ::core::ffi::c_void, usize, cudnnFilterDescriptor_t, *mut ::core::ffi::c_void, *mut ::core::ffi::c_void, usize) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnRNNBackwardWeightsEx") });
        _f(handle, rnnDesc, xDesc, x, hxDesc, hx, yDesc, y, workSpace, workSpaceSizeInBytes, dwDesc, dw, reserveSpace, reserveSpaceSizeInBytes)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnRNNBackwardWeightsEx(handle: cudnnHandle_t, rnnDesc: cudnnRNNDescriptor_t, xDesc: cudnnRNNDataDescriptor_t, x: *const ::core::ffi::c_void, hxDesc: cudnnTensorDescriptor_t, hx: *const ::core::ffi::c_void, yDesc: cudnnRNNDataDescriptor_t, y: *const ::core::ffi::c_void, workSpace: *mut ::core::ffi::c_void, workSpaceSizeInBytes: usize, dwDesc: cudnnFilterDescriptor_t, dw: *mut ::core::ffi::c_void, reserveSpace: *mut ::core::ffi::c_void, reserveSpaceSizeInBytes: usize) -> cudnnStatus_t;
        }
        cudnnRNNBackwardWeightsEx(handle, rnnDesc, xDesc, x, hxDesc, hx, yDesc, y, workSpace, workSpaceSizeInBytes, dwDesc, dw, reserveSpace, reserveSpaceSizeInBytes)
    }
}
pub unsafe fn cudnnRNNBackwardWeights_v8(handle: cudnnHandle_t, rnnDesc: cudnnRNNDescriptor_t, addGrad: cudnnWgradMode_t, devSeqLengths: *const i32, xDesc: cudnnRNNDataDescriptor_t, x: *const ::core::ffi::c_void, hDesc: cudnnTensorDescriptor_t, hx: *const ::core::ffi::c_void, yDesc: cudnnRNNDataDescriptor_t, y: *const ::core::ffi::c_void, weightSpaceSize: usize, dweightSpace: *mut ::core::ffi::c_void, workSpaceSize: usize, workSpace: *mut ::core::ffi::c_void, reserveSpaceSize: usize, reserveSpace: *mut ::core::ffi::c_void) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnRNNDescriptor_t, cudnnWgradMode_t, *const i32, cudnnRNNDataDescriptor_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, cudnnRNNDataDescriptor_t, *const ::core::ffi::c_void, usize, *mut ::core::ffi::c_void, usize, *mut ::core::ffi::c_void, usize, *mut ::core::ffi::c_void) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnRNNBackwardWeights_v8") });
        _f(handle, rnnDesc, addGrad, devSeqLengths, xDesc, x, hDesc, hx, yDesc, y, weightSpaceSize, dweightSpace, workSpaceSize, workSpace, reserveSpaceSize, reserveSpace)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnRNNBackwardWeights_v8(handle: cudnnHandle_t, rnnDesc: cudnnRNNDescriptor_t, addGrad: cudnnWgradMode_t, devSeqLengths: *const i32, xDesc: cudnnRNNDataDescriptor_t, x: *const ::core::ffi::c_void, hDesc: cudnnTensorDescriptor_t, hx: *const ::core::ffi::c_void, yDesc: cudnnRNNDataDescriptor_t, y: *const ::core::ffi::c_void, weightSpaceSize: usize, dweightSpace: *mut ::core::ffi::c_void, workSpaceSize: usize, workSpace: *mut ::core::ffi::c_void, reserveSpaceSize: usize, reserveSpace: *mut ::core::ffi::c_void) -> cudnnStatus_t;
        }
        cudnnRNNBackwardWeights_v8(handle, rnnDesc, addGrad, devSeqLengths, xDesc, x, hDesc, hx, yDesc, y, weightSpaceSize, dweightSpace, workSpaceSize, workSpace, reserveSpaceSize, reserveSpace)
    }
}
pub unsafe fn cudnnRNNForward(handle: cudnnHandle_t, rnnDesc: cudnnRNNDescriptor_t, fwdMode: cudnnForwardMode_t, devSeqLengths: *const i32, xDesc: cudnnRNNDataDescriptor_t, x: *const ::core::ffi::c_void, yDesc: cudnnRNNDataDescriptor_t, y: *mut ::core::ffi::c_void, hDesc: cudnnTensorDescriptor_t, hx: *const ::core::ffi::c_void, hy: *mut ::core::ffi::c_void, cDesc: cudnnTensorDescriptor_t, cx: *const ::core::ffi::c_void, cy: *mut ::core::ffi::c_void, weightSpaceSize: usize, weightSpace: *const ::core::ffi::c_void, workSpaceSize: usize, workSpace: *mut ::core::ffi::c_void, reserveSpaceSize: usize, reserveSpace: *mut ::core::ffi::c_void) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnRNNDescriptor_t, cudnnForwardMode_t, *const i32, cudnnRNNDataDescriptor_t, *const ::core::ffi::c_void, cudnnRNNDataDescriptor_t, *mut ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, *mut ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, *mut ::core::ffi::c_void, usize, *const ::core::ffi::c_void, usize, *mut ::core::ffi::c_void, usize, *mut ::core::ffi::c_void) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnRNNForward") });
        _f(handle, rnnDesc, fwdMode, devSeqLengths, xDesc, x, yDesc, y, hDesc, hx, hy, cDesc, cx, cy, weightSpaceSize, weightSpace, workSpaceSize, workSpace, reserveSpaceSize, reserveSpace)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnRNNForward(handle: cudnnHandle_t, rnnDesc: cudnnRNNDescriptor_t, fwdMode: cudnnForwardMode_t, devSeqLengths: *const i32, xDesc: cudnnRNNDataDescriptor_t, x: *const ::core::ffi::c_void, yDesc: cudnnRNNDataDescriptor_t, y: *mut ::core::ffi::c_void, hDesc: cudnnTensorDescriptor_t, hx: *const ::core::ffi::c_void, hy: *mut ::core::ffi::c_void, cDesc: cudnnTensorDescriptor_t, cx: *const ::core::ffi::c_void, cy: *mut ::core::ffi::c_void, weightSpaceSize: usize, weightSpace: *const ::core::ffi::c_void, workSpaceSize: usize, workSpace: *mut ::core::ffi::c_void, reserveSpaceSize: usize, reserveSpace: *mut ::core::ffi::c_void) -> cudnnStatus_t;
        }
        cudnnRNNForward(handle, rnnDesc, fwdMode, devSeqLengths, xDesc, x, yDesc, y, hDesc, hx, hy, cDesc, cx, cy, weightSpaceSize, weightSpace, workSpaceSize, workSpace, reserveSpaceSize, reserveSpace)
    }
}
#[cfg(any(feature = "cudnn-08009"))]
pub unsafe fn cudnnRNNForwardInference(handle: cudnnHandle_t, rnnDesc: cudnnRNNDescriptor_t, seqLength: ::core::ffi::c_int, xDesc: *const cudnnTensorDescriptor_t, x: *const ::core::ffi::c_void, hxDesc: cudnnTensorDescriptor_t, hx: *const ::core::ffi::c_void, cxDesc: cudnnTensorDescriptor_t, cx: *const ::core::ffi::c_void, wDesc: cudnnFilterDescriptor_t, w: *const ::core::ffi::c_void, yDesc: *const cudnnTensorDescriptor_t, y: *mut ::core::ffi::c_void, hyDesc: cudnnTensorDescriptor_t, hy: *mut ::core::ffi::c_void, cyDesc: cudnnTensorDescriptor_t, cy: *mut ::core::ffi::c_void, workSpace: *mut ::core::ffi::c_void, workSpaceSizeInBytes: usize) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnRNNDescriptor_t, ::core::ffi::c_int, *const cudnnTensorDescriptor_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, cudnnFilterDescriptor_t, *const ::core::ffi::c_void, *const cudnnTensorDescriptor_t, *mut ::core::ffi::c_void, cudnnTensorDescriptor_t, *mut ::core::ffi::c_void, cudnnTensorDescriptor_t, *mut ::core::ffi::c_void, *mut ::core::ffi::c_void, usize) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnRNNForwardInference") });
        _f(handle, rnnDesc, seqLength, xDesc, x, hxDesc, hx, cxDesc, cx, wDesc, w, yDesc, y, hyDesc, hy, cyDesc, cy, workSpace, workSpaceSizeInBytes)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnRNNForwardInference(handle: cudnnHandle_t, rnnDesc: cudnnRNNDescriptor_t, seqLength: ::core::ffi::c_int, xDesc: *const cudnnTensorDescriptor_t, x: *const ::core::ffi::c_void, hxDesc: cudnnTensorDescriptor_t, hx: *const ::core::ffi::c_void, cxDesc: cudnnTensorDescriptor_t, cx: *const ::core::ffi::c_void, wDesc: cudnnFilterDescriptor_t, w: *const ::core::ffi::c_void, yDesc: *const cudnnTensorDescriptor_t, y: *mut ::core::ffi::c_void, hyDesc: cudnnTensorDescriptor_t, hy: *mut ::core::ffi::c_void, cyDesc: cudnnTensorDescriptor_t, cy: *mut ::core::ffi::c_void, workSpace: *mut ::core::ffi::c_void, workSpaceSizeInBytes: usize) -> cudnnStatus_t;
        }
        cudnnRNNForwardInference(handle, rnnDesc, seqLength, xDesc, x, hxDesc, hx, cxDesc, cx, wDesc, w, yDesc, y, hyDesc, hy, cyDesc, cy, workSpace, workSpaceSizeInBytes)
    }
}
#[cfg(any(feature = "cudnn-08009"))]
pub unsafe fn cudnnRNNForwardInferenceEx(handle: cudnnHandle_t, rnnDesc: cudnnRNNDescriptor_t, xDesc: cudnnRNNDataDescriptor_t, x: *const ::core::ffi::c_void, hxDesc: cudnnTensorDescriptor_t, hx: *const ::core::ffi::c_void, cxDesc: cudnnTensorDescriptor_t, cx: *const ::core::ffi::c_void, wDesc: cudnnFilterDescriptor_t, w: *const ::core::ffi::c_void, yDesc: cudnnRNNDataDescriptor_t, y: *mut ::core::ffi::c_void, hyDesc: cudnnTensorDescriptor_t, hy: *mut ::core::ffi::c_void, cyDesc: cudnnTensorDescriptor_t, cy: *mut ::core::ffi::c_void, kDesc: cudnnRNNDataDescriptor_t, keys: *const ::core::ffi::c_void, cDesc: cudnnRNNDataDescriptor_t, cAttn: *mut ::core::ffi::c_void, iDesc: cudnnRNNDataDescriptor_t, iAttn: *mut ::core::ffi::c_void, qDesc: cudnnRNNDataDescriptor_t, queries: *mut ::core::ffi::c_void, workSpace: *mut ::core::ffi::c_void, workSpaceSizeInBytes: usize) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnRNNDescriptor_t, cudnnRNNDataDescriptor_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, cudnnFilterDescriptor_t, *const ::core::ffi::c_void, cudnnRNNDataDescriptor_t, *mut ::core::ffi::c_void, cudnnTensorDescriptor_t, *mut ::core::ffi::c_void, cudnnTensorDescriptor_t, *mut ::core::ffi::c_void, cudnnRNNDataDescriptor_t, *const ::core::ffi::c_void, cudnnRNNDataDescriptor_t, *mut ::core::ffi::c_void, cudnnRNNDataDescriptor_t, *mut ::core::ffi::c_void, cudnnRNNDataDescriptor_t, *mut ::core::ffi::c_void, *mut ::core::ffi::c_void, usize) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnRNNForwardInferenceEx") });
        _f(handle, rnnDesc, xDesc, x, hxDesc, hx, cxDesc, cx, wDesc, w, yDesc, y, hyDesc, hy, cyDesc, cy, kDesc, keys, cDesc, cAttn, iDesc, iAttn, qDesc, queries, workSpace, workSpaceSizeInBytes)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnRNNForwardInferenceEx(handle: cudnnHandle_t, rnnDesc: cudnnRNNDescriptor_t, xDesc: cudnnRNNDataDescriptor_t, x: *const ::core::ffi::c_void, hxDesc: cudnnTensorDescriptor_t, hx: *const ::core::ffi::c_void, cxDesc: cudnnTensorDescriptor_t, cx: *const ::core::ffi::c_void, wDesc: cudnnFilterDescriptor_t, w: *const ::core::ffi::c_void, yDesc: cudnnRNNDataDescriptor_t, y: *mut ::core::ffi::c_void, hyDesc: cudnnTensorDescriptor_t, hy: *mut ::core::ffi::c_void, cyDesc: cudnnTensorDescriptor_t, cy: *mut ::core::ffi::c_void, kDesc: cudnnRNNDataDescriptor_t, keys: *const ::core::ffi::c_void, cDesc: cudnnRNNDataDescriptor_t, cAttn: *mut ::core::ffi::c_void, iDesc: cudnnRNNDataDescriptor_t, iAttn: *mut ::core::ffi::c_void, qDesc: cudnnRNNDataDescriptor_t, queries: *mut ::core::ffi::c_void, workSpace: *mut ::core::ffi::c_void, workSpaceSizeInBytes: usize) -> cudnnStatus_t;
        }
        cudnnRNNForwardInferenceEx(handle, rnnDesc, xDesc, x, hxDesc, hx, cxDesc, cx, wDesc, w, yDesc, y, hyDesc, hy, cyDesc, cy, kDesc, keys, cDesc, cAttn, iDesc, iAttn, qDesc, queries, workSpace, workSpaceSizeInBytes)
    }
}
#[cfg(any(feature = "cudnn-08009"))]
pub unsafe fn cudnnRNNForwardTraining(handle: cudnnHandle_t, rnnDesc: cudnnRNNDescriptor_t, seqLength: ::core::ffi::c_int, xDesc: *const cudnnTensorDescriptor_t, x: *const ::core::ffi::c_void, hxDesc: cudnnTensorDescriptor_t, hx: *const ::core::ffi::c_void, cxDesc: cudnnTensorDescriptor_t, cx: *const ::core::ffi::c_void, wDesc: cudnnFilterDescriptor_t, w: *const ::core::ffi::c_void, yDesc: *const cudnnTensorDescriptor_t, y: *mut ::core::ffi::c_void, hyDesc: cudnnTensorDescriptor_t, hy: *mut ::core::ffi::c_void, cyDesc: cudnnTensorDescriptor_t, cy: *mut ::core::ffi::c_void, workSpace: *mut ::core::ffi::c_void, workSpaceSizeInBytes: usize, reserveSpace: *mut ::core::ffi::c_void, reserveSpaceSizeInBytes: usize) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnRNNDescriptor_t, ::core::ffi::c_int, *const cudnnTensorDescriptor_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, cudnnFilterDescriptor_t, *const ::core::ffi::c_void, *const cudnnTensorDescriptor_t, *mut ::core::ffi::c_void, cudnnTensorDescriptor_t, *mut ::core::ffi::c_void, cudnnTensorDescriptor_t, *mut ::core::ffi::c_void, *mut ::core::ffi::c_void, usize, *mut ::core::ffi::c_void, usize) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnRNNForwardTraining") });
        _f(handle, rnnDesc, seqLength, xDesc, x, hxDesc, hx, cxDesc, cx, wDesc, w, yDesc, y, hyDesc, hy, cyDesc, cy, workSpace, workSpaceSizeInBytes, reserveSpace, reserveSpaceSizeInBytes)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnRNNForwardTraining(handle: cudnnHandle_t, rnnDesc: cudnnRNNDescriptor_t, seqLength: ::core::ffi::c_int, xDesc: *const cudnnTensorDescriptor_t, x: *const ::core::ffi::c_void, hxDesc: cudnnTensorDescriptor_t, hx: *const ::core::ffi::c_void, cxDesc: cudnnTensorDescriptor_t, cx: *const ::core::ffi::c_void, wDesc: cudnnFilterDescriptor_t, w: *const ::core::ffi::c_void, yDesc: *const cudnnTensorDescriptor_t, y: *mut ::core::ffi::c_void, hyDesc: cudnnTensorDescriptor_t, hy: *mut ::core::ffi::c_void, cyDesc: cudnnTensorDescriptor_t, cy: *mut ::core::ffi::c_void, workSpace: *mut ::core::ffi::c_void, workSpaceSizeInBytes: usize, reserveSpace: *mut ::core::ffi::c_void, reserveSpaceSizeInBytes: usize) -> cudnnStatus_t;
        }
        cudnnRNNForwardTraining(handle, rnnDesc, seqLength, xDesc, x, hxDesc, hx, cxDesc, cx, wDesc, w, yDesc, y, hyDesc, hy, cyDesc, cy, workSpace, workSpaceSizeInBytes, reserveSpace, reserveSpaceSizeInBytes)
    }
}
#[cfg(any(feature = "cudnn-08009"))]
pub unsafe fn cudnnRNNForwardTrainingEx(handle: cudnnHandle_t, rnnDesc: cudnnRNNDescriptor_t, xDesc: cudnnRNNDataDescriptor_t, x: *const ::core::ffi::c_void, hxDesc: cudnnTensorDescriptor_t, hx: *const ::core::ffi::c_void, cxDesc: cudnnTensorDescriptor_t, cx: *const ::core::ffi::c_void, wDesc: cudnnFilterDescriptor_t, w: *const ::core::ffi::c_void, yDesc: cudnnRNNDataDescriptor_t, y: *mut ::core::ffi::c_void, hyDesc: cudnnTensorDescriptor_t, hy: *mut ::core::ffi::c_void, cyDesc: cudnnTensorDescriptor_t, cy: *mut ::core::ffi::c_void, kDesc: cudnnRNNDataDescriptor_t, keys: *const ::core::ffi::c_void, cDesc: cudnnRNNDataDescriptor_t, cAttn: *mut ::core::ffi::c_void, iDesc: cudnnRNNDataDescriptor_t, iAttn: *mut ::core::ffi::c_void, qDesc: cudnnRNNDataDescriptor_t, queries: *mut ::core::ffi::c_void, workSpace: *mut ::core::ffi::c_void, workSpaceSizeInBytes: usize, reserveSpace: *mut ::core::ffi::c_void, reserveSpaceSizeInBytes: usize) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnRNNDescriptor_t, cudnnRNNDataDescriptor_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, cudnnFilterDescriptor_t, *const ::core::ffi::c_void, cudnnRNNDataDescriptor_t, *mut ::core::ffi::c_void, cudnnTensorDescriptor_t, *mut ::core::ffi::c_void, cudnnTensorDescriptor_t, *mut ::core::ffi::c_void, cudnnRNNDataDescriptor_t, *const ::core::ffi::c_void, cudnnRNNDataDescriptor_t, *mut ::core::ffi::c_void, cudnnRNNDataDescriptor_t, *mut ::core::ffi::c_void, cudnnRNNDataDescriptor_t, *mut ::core::ffi::c_void, *mut ::core::ffi::c_void, usize, *mut ::core::ffi::c_void, usize) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnRNNForwardTrainingEx") });
        _f(handle, rnnDesc, xDesc, x, hxDesc, hx, cxDesc, cx, wDesc, w, yDesc, y, hyDesc, hy, cyDesc, cy, kDesc, keys, cDesc, cAttn, iDesc, iAttn, qDesc, queries, workSpace, workSpaceSizeInBytes, reserveSpace, reserveSpaceSizeInBytes)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnRNNForwardTrainingEx(handle: cudnnHandle_t, rnnDesc: cudnnRNNDescriptor_t, xDesc: cudnnRNNDataDescriptor_t, x: *const ::core::ffi::c_void, hxDesc: cudnnTensorDescriptor_t, hx: *const ::core::ffi::c_void, cxDesc: cudnnTensorDescriptor_t, cx: *const ::core::ffi::c_void, wDesc: cudnnFilterDescriptor_t, w: *const ::core::ffi::c_void, yDesc: cudnnRNNDataDescriptor_t, y: *mut ::core::ffi::c_void, hyDesc: cudnnTensorDescriptor_t, hy: *mut ::core::ffi::c_void, cyDesc: cudnnTensorDescriptor_t, cy: *mut ::core::ffi::c_void, kDesc: cudnnRNNDataDescriptor_t, keys: *const ::core::ffi::c_void, cDesc: cudnnRNNDataDescriptor_t, cAttn: *mut ::core::ffi::c_void, iDesc: cudnnRNNDataDescriptor_t, iAttn: *mut ::core::ffi::c_void, qDesc: cudnnRNNDataDescriptor_t, queries: *mut ::core::ffi::c_void, workSpace: *mut ::core::ffi::c_void, workSpaceSizeInBytes: usize, reserveSpace: *mut ::core::ffi::c_void, reserveSpaceSizeInBytes: usize) -> cudnnStatus_t;
        }
        cudnnRNNForwardTrainingEx(handle, rnnDesc, xDesc, x, hxDesc, hx, cxDesc, cx, wDesc, w, yDesc, y, hyDesc, hy, cyDesc, cy, kDesc, keys, cDesc, cAttn, iDesc, iAttn, qDesc, queries, workSpace, workSpaceSizeInBytes, reserveSpace, reserveSpaceSizeInBytes)
    }
}
#[cfg(any(feature = "cudnn-08009"))]
pub unsafe fn cudnnRNNGetClip(handle: cudnnHandle_t, rnnDesc: cudnnRNNDescriptor_t, clipMode: *mut cudnnRNNClipMode_t, clipNanOpt: *mut cudnnNanPropagation_t, lclip: *mut f64, rclip: *mut f64) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnRNNDescriptor_t, *mut cudnnRNNClipMode_t, *mut cudnnNanPropagation_t, *mut f64, *mut f64) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnRNNGetClip") });
        _f(handle, rnnDesc, clipMode, clipNanOpt, lclip, rclip)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnRNNGetClip(handle: cudnnHandle_t, rnnDesc: cudnnRNNDescriptor_t, clipMode: *mut cudnnRNNClipMode_t, clipNanOpt: *mut cudnnNanPropagation_t, lclip: *mut f64, rclip: *mut f64) -> cudnnStatus_t;
        }
        cudnnRNNGetClip(handle, rnnDesc, clipMode, clipNanOpt, lclip, rclip)
    }
}
pub unsafe fn cudnnRNNGetClip_v8(rnnDesc: cudnnRNNDescriptor_t, clipMode: *mut cudnnRNNClipMode_t, clipNanOpt: *mut cudnnNanPropagation_t, lclip: *mut f64, rclip: *mut f64) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnRNNDescriptor_t, *mut cudnnRNNClipMode_t, *mut cudnnNanPropagation_t, *mut f64, *mut f64) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnRNNGetClip_v8") });
        _f(rnnDesc, clipMode, clipNanOpt, lclip, rclip)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnRNNGetClip_v8(rnnDesc: cudnnRNNDescriptor_t, clipMode: *mut cudnnRNNClipMode_t, clipNanOpt: *mut cudnnNanPropagation_t, lclip: *mut f64, rclip: *mut f64) -> cudnnStatus_t;
        }
        cudnnRNNGetClip_v8(rnnDesc, clipMode, clipNanOpt, lclip, rclip)
    }
}
#[cfg(any(feature = "cudnn-09010", feature = "cudnn-09021"))]
pub unsafe fn cudnnRNNGetClip_v9(rnnDesc: cudnnRNNDescriptor_t, clipMode: *mut cudnnRNNClipMode_t, lclip: *mut f64, rclip: *mut f64) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnRNNDescriptor_t, *mut cudnnRNNClipMode_t, *mut f64, *mut f64) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnRNNGetClip_v9") });
        _f(rnnDesc, clipMode, lclip, rclip)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnRNNGetClip_v9(rnnDesc: cudnnRNNDescriptor_t, clipMode: *mut cudnnRNNClipMode_t, lclip: *mut f64, rclip: *mut f64) -> cudnnStatus_t;
        }
        cudnnRNNGetClip_v9(rnnDesc, clipMode, lclip, rclip)
    }
}
#[cfg(any(feature = "cudnn-08009"))]
pub unsafe fn cudnnRNNSetClip(handle: cudnnHandle_t, rnnDesc: cudnnRNNDescriptor_t, clipMode: cudnnRNNClipMode_t, clipNanOpt: cudnnNanPropagation_t, lclip: f64, rclip: f64) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnRNNDescriptor_t, cudnnRNNClipMode_t, cudnnNanPropagation_t, f64, f64) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnRNNSetClip") });
        _f(handle, rnnDesc, clipMode, clipNanOpt, lclip, rclip)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnRNNSetClip(handle: cudnnHandle_t, rnnDesc: cudnnRNNDescriptor_t, clipMode: cudnnRNNClipMode_t, clipNanOpt: cudnnNanPropagation_t, lclip: f64, rclip: f64) -> cudnnStatus_t;
        }
        cudnnRNNSetClip(handle, rnnDesc, clipMode, clipNanOpt, lclip, rclip)
    }
}
pub unsafe fn cudnnRNNSetClip_v8(rnnDesc: cudnnRNNDescriptor_t, clipMode: cudnnRNNClipMode_t, clipNanOpt: cudnnNanPropagation_t, lclip: f64, rclip: f64) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnRNNDescriptor_t, cudnnRNNClipMode_t, cudnnNanPropagation_t, f64, f64) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnRNNSetClip_v8") });
        _f(rnnDesc, clipMode, clipNanOpt, lclip, rclip)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnRNNSetClip_v8(rnnDesc: cudnnRNNDescriptor_t, clipMode: cudnnRNNClipMode_t, clipNanOpt: cudnnNanPropagation_t, lclip: f64, rclip: f64) -> cudnnStatus_t;
        }
        cudnnRNNSetClip_v8(rnnDesc, clipMode, clipNanOpt, lclip, rclip)
    }
}
#[cfg(any(feature = "cudnn-09010", feature = "cudnn-09021"))]
pub unsafe fn cudnnRNNSetClip_v9(rnnDesc: cudnnRNNDescriptor_t, clipMode: cudnnRNNClipMode_t, lclip: f64, rclip: f64) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnRNNDescriptor_t, cudnnRNNClipMode_t, f64, f64) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnRNNSetClip_v9") });
        _f(rnnDesc, clipMode, lclip, rclip)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnRNNSetClip_v9(rnnDesc: cudnnRNNDescriptor_t, clipMode: cudnnRNNClipMode_t, lclip: f64, rclip: f64) -> cudnnStatus_t;
        }
        cudnnRNNSetClip_v9(rnnDesc, clipMode, lclip, rclip)
    }
}
pub unsafe fn cudnnReduceTensor(handle: cudnnHandle_t, reduceTensorDesc: cudnnReduceTensorDescriptor_t, indices: *mut ::core::ffi::c_void, indicesSizeInBytes: usize, workspace: *mut ::core::ffi::c_void, workspaceSizeInBytes: usize, alpha: *const ::core::ffi::c_void, aDesc: cudnnTensorDescriptor_t, A: *const ::core::ffi::c_void, beta: *const ::core::ffi::c_void, cDesc: cudnnTensorDescriptor_t, C: *mut ::core::ffi::c_void) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnReduceTensorDescriptor_t, *mut ::core::ffi::c_void, usize, *mut ::core::ffi::c_void, usize, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *mut ::core::ffi::c_void) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnReduceTensor") });
        _f(handle, reduceTensorDesc, indices, indicesSizeInBytes, workspace, workspaceSizeInBytes, alpha, aDesc, A, beta, cDesc, C)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnReduceTensor(handle: cudnnHandle_t, reduceTensorDesc: cudnnReduceTensorDescriptor_t, indices: *mut ::core::ffi::c_void, indicesSizeInBytes: usize, workspace: *mut ::core::ffi::c_void, workspaceSizeInBytes: usize, alpha: *const ::core::ffi::c_void, aDesc: cudnnTensorDescriptor_t, A: *const ::core::ffi::c_void, beta: *const ::core::ffi::c_void, cDesc: cudnnTensorDescriptor_t, C: *mut ::core::ffi::c_void) -> cudnnStatus_t;
        }
        cudnnReduceTensor(handle, reduceTensorDesc, indices, indicesSizeInBytes, workspace, workspaceSizeInBytes, alpha, aDesc, A, beta, cDesc, C)
    }
}
pub unsafe fn cudnnReorderFilterAndBias(handle: cudnnHandle_t, filterDesc: cudnnFilterDescriptor_t, reorderType: cudnnReorderType_t, filterData: *const ::core::ffi::c_void, reorderedFilterData: *mut ::core::ffi::c_void, reorderBias: ::core::ffi::c_int, biasData: *const ::core::ffi::c_void, reorderedBiasData: *mut ::core::ffi::c_void) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnFilterDescriptor_t, cudnnReorderType_t, *const ::core::ffi::c_void, *mut ::core::ffi::c_void, ::core::ffi::c_int, *const ::core::ffi::c_void, *mut ::core::ffi::c_void) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnReorderFilterAndBias") });
        _f(handle, filterDesc, reorderType, filterData, reorderedFilterData, reorderBias, biasData, reorderedBiasData)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnReorderFilterAndBias(handle: cudnnHandle_t, filterDesc: cudnnFilterDescriptor_t, reorderType: cudnnReorderType_t, filterData: *const ::core::ffi::c_void, reorderedFilterData: *mut ::core::ffi::c_void, reorderBias: ::core::ffi::c_int, biasData: *const ::core::ffi::c_void, reorderedBiasData: *mut ::core::ffi::c_void) -> cudnnStatus_t;
        }
        cudnnReorderFilterAndBias(handle, filterDesc, reorderType, filterData, reorderedFilterData, reorderBias, biasData, reorderedBiasData)
    }
}
#[cfg(any(feature = "cudnn-08009"))]
pub unsafe fn cudnnRestoreAlgorithm(handle: cudnnHandle_t, algoSpace: *mut ::core::ffi::c_void, algoSpaceSizeInBytes: usize, algoDesc: cudnnAlgorithmDescriptor_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, *mut ::core::ffi::c_void, usize, cudnnAlgorithmDescriptor_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnRestoreAlgorithm") });
        _f(handle, algoSpace, algoSpaceSizeInBytes, algoDesc)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnRestoreAlgorithm(handle: cudnnHandle_t, algoSpace: *mut ::core::ffi::c_void, algoSpaceSizeInBytes: usize, algoDesc: cudnnAlgorithmDescriptor_t) -> cudnnStatus_t;
        }
        cudnnRestoreAlgorithm(handle, algoSpace, algoSpaceSizeInBytes, algoDesc)
    }
}
pub unsafe fn cudnnRestoreDropoutDescriptor(dropoutDesc: cudnnDropoutDescriptor_t, handle: cudnnHandle_t, dropout: f32, states: *mut ::core::ffi::c_void, stateSizeInBytes: usize, seed: ::core::ffi::c_ulonglong) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnDropoutDescriptor_t, cudnnHandle_t, f32, *mut ::core::ffi::c_void, usize, ::core::ffi::c_ulonglong) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnRestoreDropoutDescriptor") });
        _f(dropoutDesc, handle, dropout, states, stateSizeInBytes, seed)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnRestoreDropoutDescriptor(dropoutDesc: cudnnDropoutDescriptor_t, handle: cudnnHandle_t, dropout: f32, states: *mut ::core::ffi::c_void, stateSizeInBytes: usize, seed: ::core::ffi::c_ulonglong) -> cudnnStatus_t;
        }
        cudnnRestoreDropoutDescriptor(dropoutDesc, handle, dropout, states, stateSizeInBytes, seed)
    }
}
#[cfg(any(feature = "cudnn-08009"))]
pub unsafe fn cudnnSaveAlgorithm(handle: cudnnHandle_t, algoDesc: cudnnAlgorithmDescriptor_t, algoSpace: *mut ::core::ffi::c_void, algoSpaceSizeInBytes: usize) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnAlgorithmDescriptor_t, *mut ::core::ffi::c_void, usize) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnSaveAlgorithm") });
        _f(handle, algoDesc, algoSpace, algoSpaceSizeInBytes)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnSaveAlgorithm(handle: cudnnHandle_t, algoDesc: cudnnAlgorithmDescriptor_t, algoSpace: *mut ::core::ffi::c_void, algoSpaceSizeInBytes: usize) -> cudnnStatus_t;
        }
        cudnnSaveAlgorithm(handle, algoDesc, algoSpace, algoSpaceSizeInBytes)
    }
}
pub unsafe fn cudnnScaleTensor(handle: cudnnHandle_t, yDesc: cudnnTensorDescriptor_t, y: *mut ::core::ffi::c_void, alpha: *const ::core::ffi::c_void) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnTensorDescriptor_t, *mut ::core::ffi::c_void, *const ::core::ffi::c_void) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnScaleTensor") });
        _f(handle, yDesc, y, alpha)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnScaleTensor(handle: cudnnHandle_t, yDesc: cudnnTensorDescriptor_t, y: *mut ::core::ffi::c_void, alpha: *const ::core::ffi::c_void) -> cudnnStatus_t;
        }
        cudnnScaleTensor(handle, yDesc, y, alpha)
    }
}
pub unsafe fn cudnnSetActivationDescriptor(activationDesc: cudnnActivationDescriptor_t, mode: cudnnActivationMode_t, reluNanOpt: cudnnNanPropagation_t, coef: f64) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnActivationDescriptor_t, cudnnActivationMode_t, cudnnNanPropagation_t, f64) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnSetActivationDescriptor") });
        _f(activationDesc, mode, reluNanOpt, coef)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnSetActivationDescriptor(activationDesc: cudnnActivationDescriptor_t, mode: cudnnActivationMode_t, reluNanOpt: cudnnNanPropagation_t, coef: f64) -> cudnnStatus_t;
        }
        cudnnSetActivationDescriptor(activationDesc, mode, reluNanOpt, coef)
    }
}
pub unsafe fn cudnnSetActivationDescriptorSwishBeta(activationDesc: cudnnActivationDescriptor_t, swish_beta: f64) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnActivationDescriptor_t, f64) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnSetActivationDescriptorSwishBeta") });
        _f(activationDesc, swish_beta)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnSetActivationDescriptorSwishBeta(activationDesc: cudnnActivationDescriptor_t, swish_beta: f64) -> cudnnStatus_t;
        }
        cudnnSetActivationDescriptorSwishBeta(activationDesc, swish_beta)
    }
}
#[cfg(any(feature = "cudnn-08009"))]
pub unsafe fn cudnnSetAlgorithmDescriptor(algoDesc: cudnnAlgorithmDescriptor_t, algorithm: cudnnAlgorithm_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnAlgorithmDescriptor_t, cudnnAlgorithm_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnSetAlgorithmDescriptor") });
        _f(algoDesc, algorithm)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnSetAlgorithmDescriptor(algoDesc: cudnnAlgorithmDescriptor_t, algorithm: cudnnAlgorithm_t) -> cudnnStatus_t;
        }
        cudnnSetAlgorithmDescriptor(algoDesc, algorithm)
    }
}
#[cfg(any(feature = "cudnn-08009"))]
pub unsafe fn cudnnSetAlgorithmPerformance(algoPerf: cudnnAlgorithmPerformance_t, algoDesc: cudnnAlgorithmDescriptor_t, status: cudnnStatus_t, time: f32, memory: usize) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnAlgorithmPerformance_t, cudnnAlgorithmDescriptor_t, cudnnStatus_t, f32, usize) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnSetAlgorithmPerformance") });
        _f(algoPerf, algoDesc, status, time, memory)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnSetAlgorithmPerformance(algoPerf: cudnnAlgorithmPerformance_t, algoDesc: cudnnAlgorithmDescriptor_t, status: cudnnStatus_t, time: f32, memory: usize) -> cudnnStatus_t;
        }
        cudnnSetAlgorithmPerformance(algoPerf, algoDesc, status, time, memory)
    }
}
pub unsafe fn cudnnSetAttnDescriptor(attnDesc: cudnnAttnDescriptor_t, attnMode: ::core::ffi::c_uint, nHeads: ::core::ffi::c_int, smScaler: f64, dataType: cudnnDataType_t, computePrec: cudnnDataType_t, mathType: cudnnMathType_t, attnDropoutDesc: cudnnDropoutDescriptor_t, postDropoutDesc: cudnnDropoutDescriptor_t, qSize: ::core::ffi::c_int, kSize: ::core::ffi::c_int, vSize: ::core::ffi::c_int, qProjSize: ::core::ffi::c_int, kProjSize: ::core::ffi::c_int, vProjSize: ::core::ffi::c_int, oProjSize: ::core::ffi::c_int, qoMaxSeqLength: ::core::ffi::c_int, kvMaxSeqLength: ::core::ffi::c_int, maxBatchSize: ::core::ffi::c_int, maxBeamSize: ::core::ffi::c_int) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnAttnDescriptor_t, ::core::ffi::c_uint, ::core::ffi::c_int, f64, cudnnDataType_t, cudnnDataType_t, cudnnMathType_t, cudnnDropoutDescriptor_t, cudnnDropoutDescriptor_t, ::core::ffi::c_int, ::core::ffi::c_int, ::core::ffi::c_int, ::core::ffi::c_int, ::core::ffi::c_int, ::core::ffi::c_int, ::core::ffi::c_int, ::core::ffi::c_int, ::core::ffi::c_int, ::core::ffi::c_int, ::core::ffi::c_int) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnSetAttnDescriptor") });
        _f(attnDesc, attnMode, nHeads, smScaler, dataType, computePrec, mathType, attnDropoutDesc, postDropoutDesc, qSize, kSize, vSize, qProjSize, kProjSize, vProjSize, oProjSize, qoMaxSeqLength, kvMaxSeqLength, maxBatchSize, maxBeamSize)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnSetAttnDescriptor(attnDesc: cudnnAttnDescriptor_t, attnMode: ::core::ffi::c_uint, nHeads: ::core::ffi::c_int, smScaler: f64, dataType: cudnnDataType_t, computePrec: cudnnDataType_t, mathType: cudnnMathType_t, attnDropoutDesc: cudnnDropoutDescriptor_t, postDropoutDesc: cudnnDropoutDescriptor_t, qSize: ::core::ffi::c_int, kSize: ::core::ffi::c_int, vSize: ::core::ffi::c_int, qProjSize: ::core::ffi::c_int, kProjSize: ::core::ffi::c_int, vProjSize: ::core::ffi::c_int, oProjSize: ::core::ffi::c_int, qoMaxSeqLength: ::core::ffi::c_int, kvMaxSeqLength: ::core::ffi::c_int, maxBatchSize: ::core::ffi::c_int, maxBeamSize: ::core::ffi::c_int) -> cudnnStatus_t;
        }
        cudnnSetAttnDescriptor(attnDesc, attnMode, nHeads, smScaler, dataType, computePrec, mathType, attnDropoutDesc, postDropoutDesc, qSize, kSize, vSize, qProjSize, kProjSize, vProjSize, oProjSize, qoMaxSeqLength, kvMaxSeqLength, maxBatchSize, maxBeamSize)
    }
}
pub unsafe fn cudnnSetCTCLossDescriptor(ctcLossDesc: cudnnCTCLossDescriptor_t, compType: cudnnDataType_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnCTCLossDescriptor_t, cudnnDataType_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnSetCTCLossDescriptor") });
        _f(ctcLossDesc, compType)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnSetCTCLossDescriptor(ctcLossDesc: cudnnCTCLossDescriptor_t, compType: cudnnDataType_t) -> cudnnStatus_t;
        }
        cudnnSetCTCLossDescriptor(ctcLossDesc, compType)
    }
}
pub unsafe fn cudnnSetCTCLossDescriptorEx(ctcLossDesc: cudnnCTCLossDescriptor_t, compType: cudnnDataType_t, normMode: cudnnLossNormalizationMode_t, gradMode: cudnnNanPropagation_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnCTCLossDescriptor_t, cudnnDataType_t, cudnnLossNormalizationMode_t, cudnnNanPropagation_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnSetCTCLossDescriptorEx") });
        _f(ctcLossDesc, compType, normMode, gradMode)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnSetCTCLossDescriptorEx(ctcLossDesc: cudnnCTCLossDescriptor_t, compType: cudnnDataType_t, normMode: cudnnLossNormalizationMode_t, gradMode: cudnnNanPropagation_t) -> cudnnStatus_t;
        }
        cudnnSetCTCLossDescriptorEx(ctcLossDesc, compType, normMode, gradMode)
    }
}
pub unsafe fn cudnnSetCTCLossDescriptor_v8(ctcLossDesc: cudnnCTCLossDescriptor_t, compType: cudnnDataType_t, normMode: cudnnLossNormalizationMode_t, gradMode: cudnnNanPropagation_t, maxLabelLength: ::core::ffi::c_int) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnCTCLossDescriptor_t, cudnnDataType_t, cudnnLossNormalizationMode_t, cudnnNanPropagation_t, ::core::ffi::c_int) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnSetCTCLossDescriptor_v8") });
        _f(ctcLossDesc, compType, normMode, gradMode, maxLabelLength)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnSetCTCLossDescriptor_v8(ctcLossDesc: cudnnCTCLossDescriptor_t, compType: cudnnDataType_t, normMode: cudnnLossNormalizationMode_t, gradMode: cudnnNanPropagation_t, maxLabelLength: ::core::ffi::c_int) -> cudnnStatus_t;
        }
        cudnnSetCTCLossDescriptor_v8(ctcLossDesc, compType, normMode, gradMode, maxLabelLength)
    }
}
#[cfg(any(feature = "cudnn-09010", feature = "cudnn-09021"))]
pub unsafe fn cudnnSetCTCLossDescriptor_v9(ctcLossDesc: cudnnCTCLossDescriptor_t, compType: cudnnDataType_t, normMode: cudnnLossNormalizationMode_t, ctcGradMode: cudnnCTCGradMode_t, maxLabelLength: ::core::ffi::c_int) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnCTCLossDescriptor_t, cudnnDataType_t, cudnnLossNormalizationMode_t, cudnnCTCGradMode_t, ::core::ffi::c_int) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnSetCTCLossDescriptor_v9") });
        _f(ctcLossDesc, compType, normMode, ctcGradMode, maxLabelLength)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnSetCTCLossDescriptor_v9(ctcLossDesc: cudnnCTCLossDescriptor_t, compType: cudnnDataType_t, normMode: cudnnLossNormalizationMode_t, ctcGradMode: cudnnCTCGradMode_t, maxLabelLength: ::core::ffi::c_int) -> cudnnStatus_t;
        }
        cudnnSetCTCLossDescriptor_v9(ctcLossDesc, compType, normMode, ctcGradMode, maxLabelLength)
    }
}
pub unsafe fn cudnnSetCallback(mask: ::core::ffi::c_uint, udata: *mut ::core::ffi::c_void, fptr: cudnnCallback_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(::core::ffi::c_uint, *mut ::core::ffi::c_void, cudnnCallback_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnSetCallback") });
        _f(mask, udata, fptr)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnSetCallback(mask: ::core::ffi::c_uint, udata: *mut ::core::ffi::c_void, fptr: cudnnCallback_t) -> cudnnStatus_t;
        }
        cudnnSetCallback(mask, udata, fptr)
    }
}
pub unsafe fn cudnnSetConvolution2dDescriptor(convDesc: cudnnConvolutionDescriptor_t, pad_h: ::core::ffi::c_int, pad_w: ::core::ffi::c_int, u: ::core::ffi::c_int, v: ::core::ffi::c_int, dilation_h: ::core::ffi::c_int, dilation_w: ::core::ffi::c_int, mode: cudnnConvolutionMode_t, computeType: cudnnDataType_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnConvolutionDescriptor_t, ::core::ffi::c_int, ::core::ffi::c_int, ::core::ffi::c_int, ::core::ffi::c_int, ::core::ffi::c_int, ::core::ffi::c_int, cudnnConvolutionMode_t, cudnnDataType_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnSetConvolution2dDescriptor") });
        _f(convDesc, pad_h, pad_w, u, v, dilation_h, dilation_w, mode, computeType)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnSetConvolution2dDescriptor(convDesc: cudnnConvolutionDescriptor_t, pad_h: ::core::ffi::c_int, pad_w: ::core::ffi::c_int, u: ::core::ffi::c_int, v: ::core::ffi::c_int, dilation_h: ::core::ffi::c_int, dilation_w: ::core::ffi::c_int, mode: cudnnConvolutionMode_t, computeType: cudnnDataType_t) -> cudnnStatus_t;
        }
        cudnnSetConvolution2dDescriptor(convDesc, pad_h, pad_w, u, v, dilation_h, dilation_w, mode, computeType)
    }
}
pub unsafe fn cudnnSetConvolutionGroupCount(convDesc: cudnnConvolutionDescriptor_t, groupCount: ::core::ffi::c_int) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnConvolutionDescriptor_t, ::core::ffi::c_int) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnSetConvolutionGroupCount") });
        _f(convDesc, groupCount)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnSetConvolutionGroupCount(convDesc: cudnnConvolutionDescriptor_t, groupCount: ::core::ffi::c_int) -> cudnnStatus_t;
        }
        cudnnSetConvolutionGroupCount(convDesc, groupCount)
    }
}
pub unsafe fn cudnnSetConvolutionMathType(convDesc: cudnnConvolutionDescriptor_t, mathType: cudnnMathType_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnConvolutionDescriptor_t, cudnnMathType_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnSetConvolutionMathType") });
        _f(convDesc, mathType)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnSetConvolutionMathType(convDesc: cudnnConvolutionDescriptor_t, mathType: cudnnMathType_t) -> cudnnStatus_t;
        }
        cudnnSetConvolutionMathType(convDesc, mathType)
    }
}
pub unsafe fn cudnnSetConvolutionNdDescriptor(convDesc: cudnnConvolutionDescriptor_t, arrayLength: ::core::ffi::c_int, padA: *const ::core::ffi::c_int, filterStrideA: *const ::core::ffi::c_int, dilationA: *const ::core::ffi::c_int, mode: cudnnConvolutionMode_t, computeType: cudnnDataType_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnConvolutionDescriptor_t, ::core::ffi::c_int, *const ::core::ffi::c_int, *const ::core::ffi::c_int, *const ::core::ffi::c_int, cudnnConvolutionMode_t, cudnnDataType_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnSetConvolutionNdDescriptor") });
        _f(convDesc, arrayLength, padA, filterStrideA, dilationA, mode, computeType)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnSetConvolutionNdDescriptor(convDesc: cudnnConvolutionDescriptor_t, arrayLength: ::core::ffi::c_int, padA: *const ::core::ffi::c_int, filterStrideA: *const ::core::ffi::c_int, dilationA: *const ::core::ffi::c_int, mode: cudnnConvolutionMode_t, computeType: cudnnDataType_t) -> cudnnStatus_t;
        }
        cudnnSetConvolutionNdDescriptor(convDesc, arrayLength, padA, filterStrideA, dilationA, mode, computeType)
    }
}
pub unsafe fn cudnnSetConvolutionReorderType(convDesc: cudnnConvolutionDescriptor_t, reorderType: cudnnReorderType_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnConvolutionDescriptor_t, cudnnReorderType_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnSetConvolutionReorderType") });
        _f(convDesc, reorderType)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnSetConvolutionReorderType(convDesc: cudnnConvolutionDescriptor_t, reorderType: cudnnReorderType_t) -> cudnnStatus_t;
        }
        cudnnSetConvolutionReorderType(convDesc, reorderType)
    }
}
pub unsafe fn cudnnSetDropoutDescriptor(dropoutDesc: cudnnDropoutDescriptor_t, handle: cudnnHandle_t, dropout: f32, states: *mut ::core::ffi::c_void, stateSizeInBytes: usize, seed: ::core::ffi::c_ulonglong) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnDropoutDescriptor_t, cudnnHandle_t, f32, *mut ::core::ffi::c_void, usize, ::core::ffi::c_ulonglong) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnSetDropoutDescriptor") });
        _f(dropoutDesc, handle, dropout, states, stateSizeInBytes, seed)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnSetDropoutDescriptor(dropoutDesc: cudnnDropoutDescriptor_t, handle: cudnnHandle_t, dropout: f32, states: *mut ::core::ffi::c_void, stateSizeInBytes: usize, seed: ::core::ffi::c_ulonglong) -> cudnnStatus_t;
        }
        cudnnSetDropoutDescriptor(dropoutDesc, handle, dropout, states, stateSizeInBytes, seed)
    }
}
pub unsafe fn cudnnSetFilter4dDescriptor(filterDesc: cudnnFilterDescriptor_t, dataType: cudnnDataType_t, format: cudnnTensorFormat_t, k: ::core::ffi::c_int, c: ::core::ffi::c_int, h: ::core::ffi::c_int, w: ::core::ffi::c_int) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnFilterDescriptor_t, cudnnDataType_t, cudnnTensorFormat_t, ::core::ffi::c_int, ::core::ffi::c_int, ::core::ffi::c_int, ::core::ffi::c_int) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnSetFilter4dDescriptor") });
        _f(filterDesc, dataType, format, k, c, h, w)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnSetFilter4dDescriptor(filterDesc: cudnnFilterDescriptor_t, dataType: cudnnDataType_t, format: cudnnTensorFormat_t, k: ::core::ffi::c_int, c: ::core::ffi::c_int, h: ::core::ffi::c_int, w: ::core::ffi::c_int) -> cudnnStatus_t;
        }
        cudnnSetFilter4dDescriptor(filterDesc, dataType, format, k, c, h, w)
    }
}
pub unsafe fn cudnnSetFilterNdDescriptor(filterDesc: cudnnFilterDescriptor_t, dataType: cudnnDataType_t, format: cudnnTensorFormat_t, nbDims: ::core::ffi::c_int, filterDimA: *const ::core::ffi::c_int) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnFilterDescriptor_t, cudnnDataType_t, cudnnTensorFormat_t, ::core::ffi::c_int, *const ::core::ffi::c_int) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnSetFilterNdDescriptor") });
        _f(filterDesc, dataType, format, nbDims, filterDimA)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnSetFilterNdDescriptor(filterDesc: cudnnFilterDescriptor_t, dataType: cudnnDataType_t, format: cudnnTensorFormat_t, nbDims: ::core::ffi::c_int, filterDimA: *const ::core::ffi::c_int) -> cudnnStatus_t;
        }
        cudnnSetFilterNdDescriptor(filterDesc, dataType, format, nbDims, filterDimA)
    }
}
pub unsafe fn cudnnSetFusedOpsConstParamPackAttribute(constPack: cudnnFusedOpsConstParamPack_t, paramLabel: cudnnFusedOpsConstParamLabel_t, param: *const ::core::ffi::c_void) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnFusedOpsConstParamPack_t, cudnnFusedOpsConstParamLabel_t, *const ::core::ffi::c_void) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnSetFusedOpsConstParamPackAttribute") });
        _f(constPack, paramLabel, param)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnSetFusedOpsConstParamPackAttribute(constPack: cudnnFusedOpsConstParamPack_t, paramLabel: cudnnFusedOpsConstParamLabel_t, param: *const ::core::ffi::c_void) -> cudnnStatus_t;
        }
        cudnnSetFusedOpsConstParamPackAttribute(constPack, paramLabel, param)
    }
}
pub unsafe fn cudnnSetFusedOpsVariantParamPackAttribute(varPack: cudnnFusedOpsVariantParamPack_t, paramLabel: cudnnFusedOpsVariantParamLabel_t, ptr: *mut ::core::ffi::c_void) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnFusedOpsVariantParamPack_t, cudnnFusedOpsVariantParamLabel_t, *mut ::core::ffi::c_void) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnSetFusedOpsVariantParamPackAttribute") });
        _f(varPack, paramLabel, ptr)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnSetFusedOpsVariantParamPackAttribute(varPack: cudnnFusedOpsVariantParamPack_t, paramLabel: cudnnFusedOpsVariantParamLabel_t, ptr: *mut ::core::ffi::c_void) -> cudnnStatus_t;
        }
        cudnnSetFusedOpsVariantParamPackAttribute(varPack, paramLabel, ptr)
    }
}
pub unsafe fn cudnnSetLRNDescriptor(normDesc: cudnnLRNDescriptor_t, lrnN: ::core::ffi::c_uint, lrnAlpha: f64, lrnBeta: f64, lrnK: f64) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnLRNDescriptor_t, ::core::ffi::c_uint, f64, f64, f64) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnSetLRNDescriptor") });
        _f(normDesc, lrnN, lrnAlpha, lrnBeta, lrnK)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnSetLRNDescriptor(normDesc: cudnnLRNDescriptor_t, lrnN: ::core::ffi::c_uint, lrnAlpha: f64, lrnBeta: f64, lrnK: f64) -> cudnnStatus_t;
        }
        cudnnSetLRNDescriptor(normDesc, lrnN, lrnAlpha, lrnBeta, lrnK)
    }
}
pub unsafe fn cudnnSetOpTensorDescriptor(opTensorDesc: cudnnOpTensorDescriptor_t, opTensorOp: cudnnOpTensorOp_t, opTensorCompType: cudnnDataType_t, opTensorNanOpt: cudnnNanPropagation_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnOpTensorDescriptor_t, cudnnOpTensorOp_t, cudnnDataType_t, cudnnNanPropagation_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnSetOpTensorDescriptor") });
        _f(opTensorDesc, opTensorOp, opTensorCompType, opTensorNanOpt)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnSetOpTensorDescriptor(opTensorDesc: cudnnOpTensorDescriptor_t, opTensorOp: cudnnOpTensorOp_t, opTensorCompType: cudnnDataType_t, opTensorNanOpt: cudnnNanPropagation_t) -> cudnnStatus_t;
        }
        cudnnSetOpTensorDescriptor(opTensorDesc, opTensorOp, opTensorCompType, opTensorNanOpt)
    }
}
#[cfg(any(feature = "cudnn-08009"))]
pub unsafe fn cudnnSetPersistentRNNPlan(rnnDesc: cudnnRNNDescriptor_t, plan: cudnnPersistentRNNPlan_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnRNNDescriptor_t, cudnnPersistentRNNPlan_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnSetPersistentRNNPlan") });
        _f(rnnDesc, plan)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnSetPersistentRNNPlan(rnnDesc: cudnnRNNDescriptor_t, plan: cudnnPersistentRNNPlan_t) -> cudnnStatus_t;
        }
        cudnnSetPersistentRNNPlan(rnnDesc, plan)
    }
}
pub unsafe fn cudnnSetPooling2dDescriptor(poolingDesc: cudnnPoolingDescriptor_t, mode: cudnnPoolingMode_t, maxpoolingNanOpt: cudnnNanPropagation_t, windowHeight: ::core::ffi::c_int, windowWidth: ::core::ffi::c_int, verticalPadding: ::core::ffi::c_int, horizontalPadding: ::core::ffi::c_int, verticalStride: ::core::ffi::c_int, horizontalStride: ::core::ffi::c_int) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnPoolingDescriptor_t, cudnnPoolingMode_t, cudnnNanPropagation_t, ::core::ffi::c_int, ::core::ffi::c_int, ::core::ffi::c_int, ::core::ffi::c_int, ::core::ffi::c_int, ::core::ffi::c_int) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnSetPooling2dDescriptor") });
        _f(poolingDesc, mode, maxpoolingNanOpt, windowHeight, windowWidth, verticalPadding, horizontalPadding, verticalStride, horizontalStride)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnSetPooling2dDescriptor(poolingDesc: cudnnPoolingDescriptor_t, mode: cudnnPoolingMode_t, maxpoolingNanOpt: cudnnNanPropagation_t, windowHeight: ::core::ffi::c_int, windowWidth: ::core::ffi::c_int, verticalPadding: ::core::ffi::c_int, horizontalPadding: ::core::ffi::c_int, verticalStride: ::core::ffi::c_int, horizontalStride: ::core::ffi::c_int) -> cudnnStatus_t;
        }
        cudnnSetPooling2dDescriptor(poolingDesc, mode, maxpoolingNanOpt, windowHeight, windowWidth, verticalPadding, horizontalPadding, verticalStride, horizontalStride)
    }
}
pub unsafe fn cudnnSetPoolingNdDescriptor(poolingDesc: cudnnPoolingDescriptor_t, mode: cudnnPoolingMode_t, maxpoolingNanOpt: cudnnNanPropagation_t, nbDims: ::core::ffi::c_int, windowDimA: *const ::core::ffi::c_int, paddingA: *const ::core::ffi::c_int, strideA: *const ::core::ffi::c_int) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnPoolingDescriptor_t, cudnnPoolingMode_t, cudnnNanPropagation_t, ::core::ffi::c_int, *const ::core::ffi::c_int, *const ::core::ffi::c_int, *const ::core::ffi::c_int) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnSetPoolingNdDescriptor") });
        _f(poolingDesc, mode, maxpoolingNanOpt, nbDims, windowDimA, paddingA, strideA)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnSetPoolingNdDescriptor(poolingDesc: cudnnPoolingDescriptor_t, mode: cudnnPoolingMode_t, maxpoolingNanOpt: cudnnNanPropagation_t, nbDims: ::core::ffi::c_int, windowDimA: *const ::core::ffi::c_int, paddingA: *const ::core::ffi::c_int, strideA: *const ::core::ffi::c_int) -> cudnnStatus_t;
        }
        cudnnSetPoolingNdDescriptor(poolingDesc, mode, maxpoolingNanOpt, nbDims, windowDimA, paddingA, strideA)
    }
}
#[cfg(any(feature = "cudnn-08009"))]
pub unsafe fn cudnnSetRNNAlgorithmDescriptor(handle: cudnnHandle_t, rnnDesc: cudnnRNNDescriptor_t, algoDesc: cudnnAlgorithmDescriptor_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnRNNDescriptor_t, cudnnAlgorithmDescriptor_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnSetRNNAlgorithmDescriptor") });
        _f(handle, rnnDesc, algoDesc)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnSetRNNAlgorithmDescriptor(handle: cudnnHandle_t, rnnDesc: cudnnRNNDescriptor_t, algoDesc: cudnnAlgorithmDescriptor_t) -> cudnnStatus_t;
        }
        cudnnSetRNNAlgorithmDescriptor(handle, rnnDesc, algoDesc)
    }
}
#[cfg(any(feature = "cudnn-08009"))]
pub unsafe fn cudnnSetRNNBiasMode(rnnDesc: cudnnRNNDescriptor_t, biasMode: cudnnRNNBiasMode_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnRNNDescriptor_t, cudnnRNNBiasMode_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnSetRNNBiasMode") });
        _f(rnnDesc, biasMode)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnSetRNNBiasMode(rnnDesc: cudnnRNNDescriptor_t, biasMode: cudnnRNNBiasMode_t) -> cudnnStatus_t;
        }
        cudnnSetRNNBiasMode(rnnDesc, biasMode)
    }
}
pub unsafe fn cudnnSetRNNDataDescriptor(rnnDataDesc: cudnnRNNDataDescriptor_t, dataType: cudnnDataType_t, layout: cudnnRNNDataLayout_t, maxSeqLength: ::core::ffi::c_int, batchSize: ::core::ffi::c_int, vectorSize: ::core::ffi::c_int, seqLengthArray: *const ::core::ffi::c_int, paddingFill: *mut ::core::ffi::c_void) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnRNNDataDescriptor_t, cudnnDataType_t, cudnnRNNDataLayout_t, ::core::ffi::c_int, ::core::ffi::c_int, ::core::ffi::c_int, *const ::core::ffi::c_int, *mut ::core::ffi::c_void) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnSetRNNDataDescriptor") });
        _f(rnnDataDesc, dataType, layout, maxSeqLength, batchSize, vectorSize, seqLengthArray, paddingFill)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnSetRNNDataDescriptor(rnnDataDesc: cudnnRNNDataDescriptor_t, dataType: cudnnDataType_t, layout: cudnnRNNDataLayout_t, maxSeqLength: ::core::ffi::c_int, batchSize: ::core::ffi::c_int, vectorSize: ::core::ffi::c_int, seqLengthArray: *const ::core::ffi::c_int, paddingFill: *mut ::core::ffi::c_void) -> cudnnStatus_t;
        }
        cudnnSetRNNDataDescriptor(rnnDataDesc, dataType, layout, maxSeqLength, batchSize, vectorSize, seqLengthArray, paddingFill)
    }
}
#[cfg(any(feature = "cudnn-08009"))]
pub unsafe fn cudnnSetRNNDescriptor_v6(handle: cudnnHandle_t, rnnDesc: cudnnRNNDescriptor_t, hiddenSize: ::core::ffi::c_int, numLayers: ::core::ffi::c_int, dropoutDesc: cudnnDropoutDescriptor_t, inputMode: cudnnRNNInputMode_t, direction: cudnnDirectionMode_t, cellMode: cudnnRNNMode_t, algo: cudnnRNNAlgo_t, mathPrec: cudnnDataType_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnRNNDescriptor_t, ::core::ffi::c_int, ::core::ffi::c_int, cudnnDropoutDescriptor_t, cudnnRNNInputMode_t, cudnnDirectionMode_t, cudnnRNNMode_t, cudnnRNNAlgo_t, cudnnDataType_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnSetRNNDescriptor_v6") });
        _f(handle, rnnDesc, hiddenSize, numLayers, dropoutDesc, inputMode, direction, cellMode, algo, mathPrec)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnSetRNNDescriptor_v6(handle: cudnnHandle_t, rnnDesc: cudnnRNNDescriptor_t, hiddenSize: ::core::ffi::c_int, numLayers: ::core::ffi::c_int, dropoutDesc: cudnnDropoutDescriptor_t, inputMode: cudnnRNNInputMode_t, direction: cudnnDirectionMode_t, cellMode: cudnnRNNMode_t, algo: cudnnRNNAlgo_t, mathPrec: cudnnDataType_t) -> cudnnStatus_t;
        }
        cudnnSetRNNDescriptor_v6(handle, rnnDesc, hiddenSize, numLayers, dropoutDesc, inputMode, direction, cellMode, algo, mathPrec)
    }
}
pub unsafe fn cudnnSetRNNDescriptor_v8(rnnDesc: cudnnRNNDescriptor_t, algo: cudnnRNNAlgo_t, cellMode: cudnnRNNMode_t, biasMode: cudnnRNNBiasMode_t, dirMode: cudnnDirectionMode_t, inputMode: cudnnRNNInputMode_t, dataType: cudnnDataType_t, mathPrec: cudnnDataType_t, mathType: cudnnMathType_t, inputSize: i32, hiddenSize: i32, projSize: i32, numLayers: i32, dropoutDesc: cudnnDropoutDescriptor_t, auxFlags: u32) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnRNNDescriptor_t, cudnnRNNAlgo_t, cudnnRNNMode_t, cudnnRNNBiasMode_t, cudnnDirectionMode_t, cudnnRNNInputMode_t, cudnnDataType_t, cudnnDataType_t, cudnnMathType_t, i32, i32, i32, i32, cudnnDropoutDescriptor_t, u32) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnSetRNNDescriptor_v8") });
        _f(rnnDesc, algo, cellMode, biasMode, dirMode, inputMode, dataType, mathPrec, mathType, inputSize, hiddenSize, projSize, numLayers, dropoutDesc, auxFlags)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnSetRNNDescriptor_v8(rnnDesc: cudnnRNNDescriptor_t, algo: cudnnRNNAlgo_t, cellMode: cudnnRNNMode_t, biasMode: cudnnRNNBiasMode_t, dirMode: cudnnDirectionMode_t, inputMode: cudnnRNNInputMode_t, dataType: cudnnDataType_t, mathPrec: cudnnDataType_t, mathType: cudnnMathType_t, inputSize: i32, hiddenSize: i32, projSize: i32, numLayers: i32, dropoutDesc: cudnnDropoutDescriptor_t, auxFlags: u32) -> cudnnStatus_t;
        }
        cudnnSetRNNDescriptor_v8(rnnDesc, algo, cellMode, biasMode, dirMode, inputMode, dataType, mathPrec, mathType, inputSize, hiddenSize, projSize, numLayers, dropoutDesc, auxFlags)
    }
}
#[cfg(any(feature = "cudnn-08009"))]
pub unsafe fn cudnnSetRNNMatrixMathType(rnnDesc: cudnnRNNDescriptor_t, mType: cudnnMathType_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnRNNDescriptor_t, cudnnMathType_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnSetRNNMatrixMathType") });
        _f(rnnDesc, mType)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnSetRNNMatrixMathType(rnnDesc: cudnnRNNDescriptor_t, mType: cudnnMathType_t) -> cudnnStatus_t;
        }
        cudnnSetRNNMatrixMathType(rnnDesc, mType)
    }
}
#[cfg(any(feature = "cudnn-08009"))]
pub unsafe fn cudnnSetRNNPaddingMode(rnnDesc: cudnnRNNDescriptor_t, paddingMode: ::core::ffi::c_uint) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnRNNDescriptor_t, ::core::ffi::c_uint) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnSetRNNPaddingMode") });
        _f(rnnDesc, paddingMode)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnSetRNNPaddingMode(rnnDesc: cudnnRNNDescriptor_t, paddingMode: ::core::ffi::c_uint) -> cudnnStatus_t;
        }
        cudnnSetRNNPaddingMode(rnnDesc, paddingMode)
    }
}
#[cfg(any(feature = "cudnn-08009"))]
pub unsafe fn cudnnSetRNNProjectionLayers(handle: cudnnHandle_t, rnnDesc: cudnnRNNDescriptor_t, recProjSize: ::core::ffi::c_int, outProjSize: ::core::ffi::c_int) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnRNNDescriptor_t, ::core::ffi::c_int, ::core::ffi::c_int) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnSetRNNProjectionLayers") });
        _f(handle, rnnDesc, recProjSize, outProjSize)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnSetRNNProjectionLayers(handle: cudnnHandle_t, rnnDesc: cudnnRNNDescriptor_t, recProjSize: ::core::ffi::c_int, outProjSize: ::core::ffi::c_int) -> cudnnStatus_t;
        }
        cudnnSetRNNProjectionLayers(handle, rnnDesc, recProjSize, outProjSize)
    }
}
pub unsafe fn cudnnSetReduceTensorDescriptor(reduceTensorDesc: cudnnReduceTensorDescriptor_t, reduceTensorOp: cudnnReduceTensorOp_t, reduceTensorCompType: cudnnDataType_t, reduceTensorNanOpt: cudnnNanPropagation_t, reduceTensorIndices: cudnnReduceTensorIndices_t, reduceTensorIndicesType: cudnnIndicesType_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnReduceTensorDescriptor_t, cudnnReduceTensorOp_t, cudnnDataType_t, cudnnNanPropagation_t, cudnnReduceTensorIndices_t, cudnnIndicesType_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnSetReduceTensorDescriptor") });
        _f(reduceTensorDesc, reduceTensorOp, reduceTensorCompType, reduceTensorNanOpt, reduceTensorIndices, reduceTensorIndicesType)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnSetReduceTensorDescriptor(reduceTensorDesc: cudnnReduceTensorDescriptor_t, reduceTensorOp: cudnnReduceTensorOp_t, reduceTensorCompType: cudnnDataType_t, reduceTensorNanOpt: cudnnNanPropagation_t, reduceTensorIndices: cudnnReduceTensorIndices_t, reduceTensorIndicesType: cudnnIndicesType_t) -> cudnnStatus_t;
        }
        cudnnSetReduceTensorDescriptor(reduceTensorDesc, reduceTensorOp, reduceTensorCompType, reduceTensorNanOpt, reduceTensorIndices, reduceTensorIndicesType)
    }
}
pub unsafe fn cudnnSetSeqDataDescriptor(seqDataDesc: cudnnSeqDataDescriptor_t, dataType: cudnnDataType_t, nbDims: ::core::ffi::c_int, dimA: *const ::core::ffi::c_int, axes: *const cudnnSeqDataAxis_t, seqLengthArraySize: usize, seqLengthArray: *const ::core::ffi::c_int, paddingFill: *mut ::core::ffi::c_void) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnSeqDataDescriptor_t, cudnnDataType_t, ::core::ffi::c_int, *const ::core::ffi::c_int, *const cudnnSeqDataAxis_t, usize, *const ::core::ffi::c_int, *mut ::core::ffi::c_void) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnSetSeqDataDescriptor") });
        _f(seqDataDesc, dataType, nbDims, dimA, axes, seqLengthArraySize, seqLengthArray, paddingFill)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnSetSeqDataDescriptor(seqDataDesc: cudnnSeqDataDescriptor_t, dataType: cudnnDataType_t, nbDims: ::core::ffi::c_int, dimA: *const ::core::ffi::c_int, axes: *const cudnnSeqDataAxis_t, seqLengthArraySize: usize, seqLengthArray: *const ::core::ffi::c_int, paddingFill: *mut ::core::ffi::c_void) -> cudnnStatus_t;
        }
        cudnnSetSeqDataDescriptor(seqDataDesc, dataType, nbDims, dimA, axes, seqLengthArraySize, seqLengthArray, paddingFill)
    }
}
pub unsafe fn cudnnSetSpatialTransformerNdDescriptor(stDesc: cudnnSpatialTransformerDescriptor_t, samplerType: cudnnSamplerType_t, dataType: cudnnDataType_t, nbDims: ::core::ffi::c_int, dimA: *const ::core::ffi::c_int) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnSpatialTransformerDescriptor_t, cudnnSamplerType_t, cudnnDataType_t, ::core::ffi::c_int, *const ::core::ffi::c_int) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnSetSpatialTransformerNdDescriptor") });
        _f(stDesc, samplerType, dataType, nbDims, dimA)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnSetSpatialTransformerNdDescriptor(stDesc: cudnnSpatialTransformerDescriptor_t, samplerType: cudnnSamplerType_t, dataType: cudnnDataType_t, nbDims: ::core::ffi::c_int, dimA: *const ::core::ffi::c_int) -> cudnnStatus_t;
        }
        cudnnSetSpatialTransformerNdDescriptor(stDesc, samplerType, dataType, nbDims, dimA)
    }
}
pub unsafe fn cudnnSetStream(handle: cudnnHandle_t, streamId: cudaStream_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudaStream_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnSetStream") });
        _f(handle, streamId)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnSetStream(handle: cudnnHandle_t, streamId: cudaStream_t) -> cudnnStatus_t;
        }
        cudnnSetStream(handle, streamId)
    }
}
pub unsafe fn cudnnSetTensor(handle: cudnnHandle_t, yDesc: cudnnTensorDescriptor_t, y: *mut ::core::ffi::c_void, valuePtr: *const ::core::ffi::c_void) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnTensorDescriptor_t, *mut ::core::ffi::c_void, *const ::core::ffi::c_void) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnSetTensor") });
        _f(handle, yDesc, y, valuePtr)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnSetTensor(handle: cudnnHandle_t, yDesc: cudnnTensorDescriptor_t, y: *mut ::core::ffi::c_void, valuePtr: *const ::core::ffi::c_void) -> cudnnStatus_t;
        }
        cudnnSetTensor(handle, yDesc, y, valuePtr)
    }
}
pub unsafe fn cudnnSetTensor4dDescriptor(tensorDesc: cudnnTensorDescriptor_t, format: cudnnTensorFormat_t, dataType: cudnnDataType_t, n: ::core::ffi::c_int, c: ::core::ffi::c_int, h: ::core::ffi::c_int, w: ::core::ffi::c_int) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnTensorDescriptor_t, cudnnTensorFormat_t, cudnnDataType_t, ::core::ffi::c_int, ::core::ffi::c_int, ::core::ffi::c_int, ::core::ffi::c_int) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnSetTensor4dDescriptor") });
        _f(tensorDesc, format, dataType, n, c, h, w)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnSetTensor4dDescriptor(tensorDesc: cudnnTensorDescriptor_t, format: cudnnTensorFormat_t, dataType: cudnnDataType_t, n: ::core::ffi::c_int, c: ::core::ffi::c_int, h: ::core::ffi::c_int, w: ::core::ffi::c_int) -> cudnnStatus_t;
        }
        cudnnSetTensor4dDescriptor(tensorDesc, format, dataType, n, c, h, w)
    }
}
pub unsafe fn cudnnSetTensor4dDescriptorEx(tensorDesc: cudnnTensorDescriptor_t, dataType: cudnnDataType_t, n: ::core::ffi::c_int, c: ::core::ffi::c_int, h: ::core::ffi::c_int, w: ::core::ffi::c_int, nStride: ::core::ffi::c_int, cStride: ::core::ffi::c_int, hStride: ::core::ffi::c_int, wStride: ::core::ffi::c_int) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnTensorDescriptor_t, cudnnDataType_t, ::core::ffi::c_int, ::core::ffi::c_int, ::core::ffi::c_int, ::core::ffi::c_int, ::core::ffi::c_int, ::core::ffi::c_int, ::core::ffi::c_int, ::core::ffi::c_int) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnSetTensor4dDescriptorEx") });
        _f(tensorDesc, dataType, n, c, h, w, nStride, cStride, hStride, wStride)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnSetTensor4dDescriptorEx(tensorDesc: cudnnTensorDescriptor_t, dataType: cudnnDataType_t, n: ::core::ffi::c_int, c: ::core::ffi::c_int, h: ::core::ffi::c_int, w: ::core::ffi::c_int, nStride: ::core::ffi::c_int, cStride: ::core::ffi::c_int, hStride: ::core::ffi::c_int, wStride: ::core::ffi::c_int) -> cudnnStatus_t;
        }
        cudnnSetTensor4dDescriptorEx(tensorDesc, dataType, n, c, h, w, nStride, cStride, hStride, wStride)
    }
}
pub unsafe fn cudnnSetTensorNdDescriptor(tensorDesc: cudnnTensorDescriptor_t, dataType: cudnnDataType_t, nbDims: ::core::ffi::c_int, dimA: *const ::core::ffi::c_int, strideA: *const ::core::ffi::c_int) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnTensorDescriptor_t, cudnnDataType_t, ::core::ffi::c_int, *const ::core::ffi::c_int, *const ::core::ffi::c_int) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnSetTensorNdDescriptor") });
        _f(tensorDesc, dataType, nbDims, dimA, strideA)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnSetTensorNdDescriptor(tensorDesc: cudnnTensorDescriptor_t, dataType: cudnnDataType_t, nbDims: ::core::ffi::c_int, dimA: *const ::core::ffi::c_int, strideA: *const ::core::ffi::c_int) -> cudnnStatus_t;
        }
        cudnnSetTensorNdDescriptor(tensorDesc, dataType, nbDims, dimA, strideA)
    }
}
pub unsafe fn cudnnSetTensorNdDescriptorEx(tensorDesc: cudnnTensorDescriptor_t, format: cudnnTensorFormat_t, dataType: cudnnDataType_t, nbDims: ::core::ffi::c_int, dimA: *const ::core::ffi::c_int) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnTensorDescriptor_t, cudnnTensorFormat_t, cudnnDataType_t, ::core::ffi::c_int, *const ::core::ffi::c_int) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnSetTensorNdDescriptorEx") });
        _f(tensorDesc, format, dataType, nbDims, dimA)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnSetTensorNdDescriptorEx(tensorDesc: cudnnTensorDescriptor_t, format: cudnnTensorFormat_t, dataType: cudnnDataType_t, nbDims: ::core::ffi::c_int, dimA: *const ::core::ffi::c_int) -> cudnnStatus_t;
        }
        cudnnSetTensorNdDescriptorEx(tensorDesc, format, dataType, nbDims, dimA)
    }
}
pub unsafe fn cudnnSetTensorTransformDescriptor(transformDesc: cudnnTensorTransformDescriptor_t, nbDims: u32, destFormat: cudnnTensorFormat_t, padBeforeA: *const i32, padAfterA: *const i32, foldA: *const u32, direction: cudnnFoldingDirection_t) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnTensorTransformDescriptor_t, u32, cudnnTensorFormat_t, *const i32, *const i32, *const u32, cudnnFoldingDirection_t) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnSetTensorTransformDescriptor") });
        _f(transformDesc, nbDims, destFormat, padBeforeA, padAfterA, foldA, direction)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnSetTensorTransformDescriptor(transformDesc: cudnnTensorTransformDescriptor_t, nbDims: u32, destFormat: cudnnTensorFormat_t, padBeforeA: *const i32, padAfterA: *const i32, foldA: *const u32, direction: cudnnFoldingDirection_t) -> cudnnStatus_t;
        }
        cudnnSetTensorTransformDescriptor(transformDesc, nbDims, destFormat, padBeforeA, padAfterA, foldA, direction)
    }
}
pub unsafe fn cudnnSoftmaxBackward(handle: cudnnHandle_t, algo: cudnnSoftmaxAlgorithm_t, mode: cudnnSoftmaxMode_t, alpha: *const ::core::ffi::c_void, yDesc: cudnnTensorDescriptor_t, y: *const ::core::ffi::c_void, dyDesc: cudnnTensorDescriptor_t, dy: *const ::core::ffi::c_void, beta: *const ::core::ffi::c_void, dxDesc: cudnnTensorDescriptor_t, dx: *mut ::core::ffi::c_void) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnSoftmaxAlgorithm_t, cudnnSoftmaxMode_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *mut ::core::ffi::c_void) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnSoftmaxBackward") });
        _f(handle, algo, mode, alpha, yDesc, y, dyDesc, dy, beta, dxDesc, dx)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnSoftmaxBackward(handle: cudnnHandle_t, algo: cudnnSoftmaxAlgorithm_t, mode: cudnnSoftmaxMode_t, alpha: *const ::core::ffi::c_void, yDesc: cudnnTensorDescriptor_t, y: *const ::core::ffi::c_void, dyDesc: cudnnTensorDescriptor_t, dy: *const ::core::ffi::c_void, beta: *const ::core::ffi::c_void, dxDesc: cudnnTensorDescriptor_t, dx: *mut ::core::ffi::c_void) -> cudnnStatus_t;
        }
        cudnnSoftmaxBackward(handle, algo, mode, alpha, yDesc, y, dyDesc, dy, beta, dxDesc, dx)
    }
}
pub unsafe fn cudnnSoftmaxForward(handle: cudnnHandle_t, algo: cudnnSoftmaxAlgorithm_t, mode: cudnnSoftmaxMode_t, alpha: *const ::core::ffi::c_void, xDesc: cudnnTensorDescriptor_t, x: *const ::core::ffi::c_void, beta: *const ::core::ffi::c_void, yDesc: cudnnTensorDescriptor_t, y: *mut ::core::ffi::c_void) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnSoftmaxAlgorithm_t, cudnnSoftmaxMode_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *mut ::core::ffi::c_void) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnSoftmaxForward") });
        _f(handle, algo, mode, alpha, xDesc, x, beta, yDesc, y)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnSoftmaxForward(handle: cudnnHandle_t, algo: cudnnSoftmaxAlgorithm_t, mode: cudnnSoftmaxMode_t, alpha: *const ::core::ffi::c_void, xDesc: cudnnTensorDescriptor_t, x: *const ::core::ffi::c_void, beta: *const ::core::ffi::c_void, yDesc: cudnnTensorDescriptor_t, y: *mut ::core::ffi::c_void) -> cudnnStatus_t;
        }
        cudnnSoftmaxForward(handle, algo, mode, alpha, xDesc, x, beta, yDesc, y)
    }
}
pub unsafe fn cudnnSpatialTfGridGeneratorBackward(handle: cudnnHandle_t, stDesc: cudnnSpatialTransformerDescriptor_t, dgrid: *const ::core::ffi::c_void, dtheta: *mut ::core::ffi::c_void) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnSpatialTransformerDescriptor_t, *const ::core::ffi::c_void, *mut ::core::ffi::c_void) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnSpatialTfGridGeneratorBackward") });
        _f(handle, stDesc, dgrid, dtheta)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnSpatialTfGridGeneratorBackward(handle: cudnnHandle_t, stDesc: cudnnSpatialTransformerDescriptor_t, dgrid: *const ::core::ffi::c_void, dtheta: *mut ::core::ffi::c_void) -> cudnnStatus_t;
        }
        cudnnSpatialTfGridGeneratorBackward(handle, stDesc, dgrid, dtheta)
    }
}
pub unsafe fn cudnnSpatialTfGridGeneratorForward(handle: cudnnHandle_t, stDesc: cudnnSpatialTransformerDescriptor_t, theta: *const ::core::ffi::c_void, grid: *mut ::core::ffi::c_void) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnSpatialTransformerDescriptor_t, *const ::core::ffi::c_void, *mut ::core::ffi::c_void) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnSpatialTfGridGeneratorForward") });
        _f(handle, stDesc, theta, grid)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnSpatialTfGridGeneratorForward(handle: cudnnHandle_t, stDesc: cudnnSpatialTransformerDescriptor_t, theta: *const ::core::ffi::c_void, grid: *mut ::core::ffi::c_void) -> cudnnStatus_t;
        }
        cudnnSpatialTfGridGeneratorForward(handle, stDesc, theta, grid)
    }
}
pub unsafe fn cudnnSpatialTfSamplerBackward(handle: cudnnHandle_t, stDesc: cudnnSpatialTransformerDescriptor_t, alpha: *const ::core::ffi::c_void, xDesc: cudnnTensorDescriptor_t, x: *const ::core::ffi::c_void, beta: *const ::core::ffi::c_void, dxDesc: cudnnTensorDescriptor_t, dx: *mut ::core::ffi::c_void, alphaDgrid: *const ::core::ffi::c_void, dyDesc: cudnnTensorDescriptor_t, dy: *const ::core::ffi::c_void, grid: *const ::core::ffi::c_void, betaDgrid: *const ::core::ffi::c_void, dgrid: *mut ::core::ffi::c_void) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnSpatialTransformerDescriptor_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *mut ::core::ffi::c_void, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, *const ::core::ffi::c_void, *const ::core::ffi::c_void, *mut ::core::ffi::c_void) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnSpatialTfSamplerBackward") });
        _f(handle, stDesc, alpha, xDesc, x, beta, dxDesc, dx, alphaDgrid, dyDesc, dy, grid, betaDgrid, dgrid)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnSpatialTfSamplerBackward(handle: cudnnHandle_t, stDesc: cudnnSpatialTransformerDescriptor_t, alpha: *const ::core::ffi::c_void, xDesc: cudnnTensorDescriptor_t, x: *const ::core::ffi::c_void, beta: *const ::core::ffi::c_void, dxDesc: cudnnTensorDescriptor_t, dx: *mut ::core::ffi::c_void, alphaDgrid: *const ::core::ffi::c_void, dyDesc: cudnnTensorDescriptor_t, dy: *const ::core::ffi::c_void, grid: *const ::core::ffi::c_void, betaDgrid: *const ::core::ffi::c_void, dgrid: *mut ::core::ffi::c_void) -> cudnnStatus_t;
        }
        cudnnSpatialTfSamplerBackward(handle, stDesc, alpha, xDesc, x, beta, dxDesc, dx, alphaDgrid, dyDesc, dy, grid, betaDgrid, dgrid)
    }
}
pub unsafe fn cudnnSpatialTfSamplerForward(handle: cudnnHandle_t, stDesc: cudnnSpatialTransformerDescriptor_t, alpha: *const ::core::ffi::c_void, xDesc: cudnnTensorDescriptor_t, x: *const ::core::ffi::c_void, grid: *const ::core::ffi::c_void, beta: *const ::core::ffi::c_void, yDesc: cudnnTensorDescriptor_t, y: *mut ::core::ffi::c_void) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnSpatialTransformerDescriptor_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, *const ::core::ffi::c_void, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *mut ::core::ffi::c_void) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnSpatialTfSamplerForward") });
        _f(handle, stDesc, alpha, xDesc, x, grid, beta, yDesc, y)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnSpatialTfSamplerForward(handle: cudnnHandle_t, stDesc: cudnnSpatialTransformerDescriptor_t, alpha: *const ::core::ffi::c_void, xDesc: cudnnTensorDescriptor_t, x: *const ::core::ffi::c_void, grid: *const ::core::ffi::c_void, beta: *const ::core::ffi::c_void, yDesc: cudnnTensorDescriptor_t, y: *mut ::core::ffi::c_void) -> cudnnStatus_t;
        }
        cudnnSpatialTfSamplerForward(handle, stDesc, alpha, xDesc, x, grid, beta, yDesc, y)
    }
}
pub unsafe fn cudnnTransformFilter(handle: cudnnHandle_t, transDesc: cudnnTensorTransformDescriptor_t, alpha: *const ::core::ffi::c_void, srcDesc: cudnnFilterDescriptor_t, srcData: *const ::core::ffi::c_void, beta: *const ::core::ffi::c_void, destDesc: cudnnFilterDescriptor_t, destData: *mut ::core::ffi::c_void) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnTensorTransformDescriptor_t, *const ::core::ffi::c_void, cudnnFilterDescriptor_t, *const ::core::ffi::c_void, *const ::core::ffi::c_void, cudnnFilterDescriptor_t, *mut ::core::ffi::c_void) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnTransformFilter") });
        _f(handle, transDesc, alpha, srcDesc, srcData, beta, destDesc, destData)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnTransformFilter(handle: cudnnHandle_t, transDesc: cudnnTensorTransformDescriptor_t, alpha: *const ::core::ffi::c_void, srcDesc: cudnnFilterDescriptor_t, srcData: *const ::core::ffi::c_void, beta: *const ::core::ffi::c_void, destDesc: cudnnFilterDescriptor_t, destData: *mut ::core::ffi::c_void) -> cudnnStatus_t;
        }
        cudnnTransformFilter(handle, transDesc, alpha, srcDesc, srcData, beta, destDesc, destData)
    }
}
pub unsafe fn cudnnTransformTensor(handle: cudnnHandle_t, alpha: *const ::core::ffi::c_void, xDesc: cudnnTensorDescriptor_t, x: *const ::core::ffi::c_void, beta: *const ::core::ffi::c_void, yDesc: cudnnTensorDescriptor_t, y: *mut ::core::ffi::c_void) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *mut ::core::ffi::c_void) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnTransformTensor") });
        _f(handle, alpha, xDesc, x, beta, yDesc, y)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnTransformTensor(handle: cudnnHandle_t, alpha: *const ::core::ffi::c_void, xDesc: cudnnTensorDescriptor_t, x: *const ::core::ffi::c_void, beta: *const ::core::ffi::c_void, yDesc: cudnnTensorDescriptor_t, y: *mut ::core::ffi::c_void) -> cudnnStatus_t;
        }
        cudnnTransformTensor(handle, alpha, xDesc, x, beta, yDesc, y)
    }
}
pub unsafe fn cudnnTransformTensorEx(handle: cudnnHandle_t, transDesc: cudnnTensorTransformDescriptor_t, alpha: *const ::core::ffi::c_void, srcDesc: cudnnTensorDescriptor_t, srcData: *const ::core::ffi::c_void, beta: *const ::core::ffi::c_void, destDesc: cudnnTensorDescriptor_t, destData: *mut ::core::ffi::c_void) -> cudnnStatus_t {
    #[cfg(feature = "dynamic-loading")]
    {
        type _F = unsafe extern "C" fn(cudnnHandle_t, cudnnTensorTransformDescriptor_t, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *const ::core::ffi::c_void, *const ::core::ffi::c_void, cudnnTensorDescriptor_t, *mut ::core::ffi::c_void) -> cudnnStatus_t;
        static _S: OnceLock<_F> = OnceLock::new();
        let _f = _S.get_or_init(|| unsafe { load::<_F>("cudnnTransformTensorEx") });
        _f(handle, transDesc, alpha, srcDesc, srcData, beta, destDesc, destData)
    }
    #[cfg(not(feature = "dynamic-loading"))]
    {
        extern "C" {
            fn cudnnTransformTensorEx(handle: cudnnHandle_t, transDesc: cudnnTensorTransformDescriptor_t, alpha: *const ::core::ffi::c_void, srcDesc: cudnnTensorDescriptor_t, srcData: *const ::core::ffi::c_void, beta: *const ::core::ffi::c_void, destDesc: cudnnTensorDescriptor_t, destData: *mut ::core::ffi::c_void) -> cudnnStatus_t;
        }
        cudnnTransformTensorEx(handle, transDesc, alpha, srcDesc, srcData, beta, destDesc, destData)
    }
}
#[cfg(feature = "dynamic-loading")]
pub unsafe fn is_culib_present() -> bool {
    let lib_names = ["cudnn"];
    let choices = lib_names.iter().map(|l| crate::get_lib_name_candidates(l)).flatten();
    for choice in choices {
        if ::libloading::Library::new(choice).is_ok() {
            return true;
        }
    }
    false
}
#[cfg(feature = "dynamic-loading")]
pub unsafe fn culib() -> &'static ::libloading::Library {
    static LIB: OnceLock<::libloading::Library> = OnceLock::new();
    LIB.get_or_init(|| {
        let lib_names = std::vec!["cudnn"];
        let choices: std::vec::Vec<_> = lib_names.iter().map(|l| crate::get_lib_name_candidates(l)).flatten().collect();
        for choice in choices.iter() {
            if let Ok(lib) = ::libloading::Library::new(choice) {
                return lib;
            }
        }
        crate::panic_no_lib_found(lib_names[0], &choices);
    })
}
