Files
2025-04-02 21:44:17 -07:00

567 lines
23 KiB
C

/*
* Copyright 2017-2022 NVIDIA Corporation. All rights reserved.
*
* NOTICE TO LICENSEE:
*
* This source code and/or documentation ("Licensed Deliverables") are
* subject to NVIDIA intellectual property rights under U.S. and
* international Copyright laws.
*
* These Licensed Deliverables contained herein is PROPRIETARY and
* CONFIDENTIAL to NVIDIA and is being provided under the terms and
* conditions of a form of NVIDIA software license agreement by and
* between NVIDIA and Licensee ("License Agreement") or electronically
* accepted by Licensee. Notwithstanding any terms or conditions to
* the contrary in the License Agreement, reproduction or disclosure
* of the Licensed Deliverables to any third party without the express
* written consent of NVIDIA is prohibited.
*
* NOTWITHSTANDING ANY TERMS OR CONDITIONS TO THE CONTRARY IN THE
* LICENSE AGREEMENT, NVIDIA MAKES NO REPRESENTATION ABOUT THE
* SUITABILITY OF THESE LICENSED DELIVERABLES FOR ANY PURPOSE. IT IS
* PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY OF ANY KIND.
* NVIDIA DISCLAIMS ALL WARRANTIES WITH REGARD TO THESE LICENSED
* DELIVERABLES, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY,
* NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE.
* NOTWITHSTANDING ANY TERMS OR CONDITIONS TO THE CONTRARY IN THE
* LICENSE AGREEMENT, IN NO EVENT SHALL NVIDIA BE LIABLE FOR ANY
* SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, OR ANY
* DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
* WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
* ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THESE LICENSED DELIVERABLES.
*
* U.S. Government End Users. These Licensed Deliverables are a
* "commercial item" as that term is defined at 48 C.F.R. 2.101 (OCT
* 1995), consisting of "commercial computer software" and "commercial
* computer software documentation" as such terms are used in 48
* C.F.R. 12.212 (SEPT 1995) and is provided to the U.S. Government
* only as a commercial end item. Consistent with 48 C.F.R.12.212 and
* 48 C.F.R. 227.7202-1 through 227.7202-4 (JUNE 1995), all
* U.S. Government End Users acquire the Licensed Deliverables with
* only those rights set forth herein.
*
* Any use of the Licensed Deliverables in individual and commercial
* software must include, in the user documentation and internal
* comments to the code, the above Disclaimer and U.S. Government End
* Users Notice.
*/
#ifndef _CUDNN_BACKEND_H_
#define _CUDNN_BACKEND_H_
/*
* The content in this header file is under development to be included in cudnn.h in the future
* Production code should have all include of this header file remove.
*/
#include "cudnn_ops_infer.h"
#include "cudnn_cnn_infer.h"
/* NOTE: definition in extern "C" to be copied later to public header */
#if defined(__cplusplus)
extern "C" {
#endif
typedef void *cudnnBackendDescriptor_t;
typedef struct cudnnFractionStruct {
int64_t numerator;
int64_t denominator;
} cudnnFraction_t;
typedef enum {
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_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,
} cudnnPointwiseMode_t;
typedef enum {
CUDNN_RESAMPLE_NEAREST = 0,
CUDNN_RESAMPLE_BILINEAR = 1,
CUDNN_RESAMPLE_AVGPOOL = 2,
CUDNN_RESAMPLE_MAXPOOL = 3,
} cudnnResampleMode_t;
typedef enum {
CUDNN_SIGNAL_SET = 0,
CUDNN_SIGNAL_WAIT = 1,
} cudnnSignalMode_t;
typedef enum {
CUDNN_GENSTATS_SUM_SQSUM = 0,
} cudnnGenStatsMode_t;
typedef enum {
CUDNN_BN_FINALIZE_STATISTICS_TRAINING = 0,
CUDNN_BN_FINALIZE_STATISTICS_INFERENCE = 1,
} cudnnBnFinalizeStatsMode_t;
typedef enum {
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_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_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_MATMUL_COMP_TYPE = 1500,
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_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_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,
} cudnnBackendAttributeName_t;
typedef enum {
CUDNN_TYPE_HANDLE = 0,
CUDNN_TYPE_DATA_TYPE,
CUDNN_TYPE_BOOLEAN,
CUDNN_TYPE_INT64,
CUDNN_TYPE_FLOAT,
CUDNN_TYPE_DOUBLE,
CUDNN_TYPE_VOID_PTR,
CUDNN_TYPE_CONVOLUTION_MODE,
CUDNN_TYPE_HEUR_MODE,
CUDNN_TYPE_KNOB_TYPE,
CUDNN_TYPE_NAN_PROPOGATION,
CUDNN_TYPE_NUMERICAL_NOTE,
CUDNN_TYPE_LAYOUT_TYPE,
CUDNN_TYPE_ATTRIB_NAME,
CUDNN_TYPE_POINTWISE_MODE,
CUDNN_TYPE_BACKEND_DESCRIPTOR,
CUDNN_TYPE_GENSTATS_MODE,
CUDNN_TYPE_BN_FINALIZE_STATS_MODE,
CUDNN_TYPE_REDUCTION_OPERATOR_TYPE,
CUDNN_TYPE_BEHAVIOR_NOTE,
CUDNN_TYPE_TENSOR_REORDERING_MODE,
CUDNN_TYPE_RESAMPLE_MODE,
CUDNN_TYPE_PADDING_MODE,
CUDNN_TYPE_INT32,
CUDNN_TYPE_CHAR,
CUDNN_TYPE_SIGNAL_MODE,
CUDNN_TYPE_FRACTION,
CUDNN_TYPE_NORM_MODE,
CUDNN_TYPE_NORM_FWD_PHASE,
} cudnnBackendAttributeType_t;
typedef enum {
CUDNN_BACKEND_POINTWISE_DESCRIPTOR = 0,
CUDNN_BACKEND_CONVOLUTION_DESCRIPTOR,
CUDNN_BACKEND_ENGINE_DESCRIPTOR,
CUDNN_BACKEND_ENGINECFG_DESCRIPTOR,
CUDNN_BACKEND_ENGINEHEUR_DESCRIPTOR,
CUDNN_BACKEND_EXECUTION_PLAN_DESCRIPTOR,
CUDNN_BACKEND_INTERMEDIATE_INFO_DESCRIPTOR,
CUDNN_BACKEND_KNOB_CHOICE_DESCRIPTOR,
CUDNN_BACKEND_KNOB_INFO_DESCRIPTOR,
CUDNN_BACKEND_LAYOUT_INFO_DESCRIPTOR,
CUDNN_BACKEND_OPERATION_CONVOLUTION_FORWARD_DESCRIPTOR,
CUDNN_BACKEND_OPERATION_CONVOLUTION_BACKWARD_FILTER_DESCRIPTOR,
CUDNN_BACKEND_OPERATION_CONVOLUTION_BACKWARD_DATA_DESCRIPTOR,
CUDNN_BACKEND_OPERATION_POINTWISE_DESCRIPTOR,
CUDNN_BACKEND_OPERATION_GEN_STATS_DESCRIPTOR,
CUDNN_BACKEND_OPERATIONGRAPH_DESCRIPTOR,
CUDNN_BACKEND_VARIANT_PACK_DESCRIPTOR,
CUDNN_BACKEND_TENSOR_DESCRIPTOR,
CUDNN_BACKEND_MATMUL_DESCRIPTOR,
CUDNN_BACKEND_OPERATION_MATMUL_DESCRIPTOR,
CUDNN_BACKEND_OPERATION_BN_FINALIZE_STATISTICS_DESCRIPTOR,
CUDNN_BACKEND_REDUCTION_DESCRIPTOR,
CUDNN_BACKEND_OPERATION_REDUCTION_DESCRIPTOR,
CUDNN_BACKEND_OPERATION_BN_BWD_WEIGHTS_DESCRIPTOR,
CUDNN_BACKEND_RESAMPLE_DESCRIPTOR,
CUDNN_BACKEND_OPERATION_RESAMPLE_FWD_DESCRIPTOR,
CUDNN_BACKEND_OPERATION_RESAMPLE_BWD_DESCRIPTOR,
CUDNN_BACKEND_OPERATION_CONCAT_DESCRIPTOR,
CUDNN_BACKEND_OPERATION_SIGNAL_DESCRIPTOR,
CUDNN_BACKEND_OPERATION_NORM_FORWARD_DESCRIPTOR,
CUDNN_BACKEND_OPERATION_NORM_BACKWARD_DESCRIPTOR,
} cudnnBackendDescriptorType_t;
typedef enum {
CUDNN_NUMERICAL_NOTE_TENSOR_CORE = 0,
CUDNN_NUMERICAL_NOTE_DOWN_CONVERT_INPUTS,
CUDNN_NUMERICAL_NOTE_REDUCED_PRECISION_REDUCTION,
CUDNN_NUMERICAL_NOTE_FFT,
CUDNN_NUMERICAL_NOTE_NONDETERMINISTIC,
CUDNN_NUMERICAL_NOTE_WINOGRAD,
CUDNN_NUMERICAL_NOTE_WINOGRAD_TILE_4x4,
CUDNN_NUMERICAL_NOTE_WINOGRAD_TILE_6x6,
CUDNN_NUMERICAL_NOTE_WINOGRAD_TILE_13x13,
CUDNN_NUMERICAL_NOTE_TYPE_COUNT,
} cudnnBackendNumericalNote_t;
typedef enum {
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,
} cudnnBackendBehaviorNote_t;
typedef enum {
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_COUNTS = 26,
} cudnnBackendKnobType_t;
typedef enum {
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,
} cudnnBackendLayoutType_t;
typedef enum {
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,
} cudnnBackendHeurMode_t;
typedef enum {
CUDNN_TENSOR_REORDERING_NONE = 0,
CUDNN_TENSOR_REORDERING_INT8x32 = 1,
} cudnnBackendTensorReordering_t;
typedef enum {
CUDNN_ZERO_PAD = 0,
CUDNN_NEG_INF_PAD = 1,
CUDNN_EDGE_VAL_PAD = 2,
} cudnnPaddingMode_t;
typedef enum {
CUDNN_LAYER_NORM = 0,
CUDNN_INSTANCE_NORM = 1,
CUDNN_BATCH_NORM = 2,
CUDNN_GROUP_NORM = 3,
} cudnnBackendNormMode_t;
typedef enum {
CUDNN_NORM_FWD_INFERENCE = 0,
CUDNN_NORM_FWD_TRAINING = 1,
} cudnnBackendNormFwdPhase_t;
cudnnStatus_t CUDNNWINAPI
cudnnBackendCreateDescriptor(cudnnBackendDescriptorType_t descriptorType, cudnnBackendDescriptor_t *descriptor);
cudnnStatus_t CUDNNWINAPI
cudnnBackendDestroyDescriptor(cudnnBackendDescriptor_t descriptor);
cudnnStatus_t CUDNNWINAPI
cudnnBackendInitialize(cudnnBackendDescriptor_t descriptor);
cudnnStatus_t CUDNNWINAPI
cudnnBackendFinalize(cudnnBackendDescriptor_t descriptor);
cudnnStatus_t CUDNNWINAPI
cudnnBackendSetAttribute(cudnnBackendDescriptor_t descriptor,
cudnnBackendAttributeName_t attributeName,
cudnnBackendAttributeType_t attributeType,
int64_t elementCount,
const void *arrayOfElements);
cudnnStatus_t CUDNNWINAPI
cudnnBackendGetAttribute(cudnnBackendDescriptor_t const descriptor,
cudnnBackendAttributeName_t attributeName,
cudnnBackendAttributeType_t attributeType,
int64_t requestedElementCount,
int64_t *elementCount,
void *arrayOfElements);
cudnnStatus_t CUDNNWINAPI
cudnnBackendExecute(cudnnHandle_t handle, cudnnBackendDescriptor_t executionPlan, cudnnBackendDescriptor_t variantPack);
#if defined(__cplusplus)
}
#endif
#endif /* _CUDNN_BACKEND_H_ */