#![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);
})
}