diff --git a/Doxyfile b/Doxyfile index 67eac3465..022fca957 100644 --- a/Doxyfile +++ b/Doxyfile @@ -32,13 +32,13 @@ DOXYFILE_ENCODING = UTF-8 # title of most generated pages and in a few other places. # The default value is: My Project. -PROJECT_NAME = "CUDNN API" +PROJECT_NAME = "CUDNN Frontend API" # The PROJECT_NUMBER tag can be used to enter a project or revision number. This # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = 8.0.0 +PROJECT_NUMBER = 8.2.0 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a @@ -790,7 +790,7 @@ WARN_LOGFILE = # spaces. See also FILE_PATTERNS and EXTENSION_MAPPING # Note: If this tag is empty the current directory is searched. -INPUT = . +INPUT = ../include/ # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses @@ -1130,7 +1130,7 @@ GENERATE_HTML = YES # The default directory is: html. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_OUTPUT = html +HTML_OUTPUT = . # The HTML_FILE_EXTENSION tag can be used to specify the file extension for each # generated HTML page (for example: .htm, .php, .asp). diff --git a/README.md b/README.md index beedde9bf..61aa5b1da 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,7 @@ Each `cudnnBackendDescriptorType_t` documented in the enum is organized into its - cudnn_frontend_Tensor.h -> CUDNN_BACKEND_TENSOR_DESCRIPTOR - cudnn_frontend_ConvDesc.h -> CUDNN_BACKEND_CONVOLUTION_DESCRIPTOR - cudnn_frontend_PointWiseDesc.h -> CUDNN_BACKEND_POINTWISE_DESCRIPTOR +- cudnn_frontend_MatMulDesc.h -> CUDNN_BACKEND_MATMUL_DESCRIPTOR - cudnn_frontend_Operation.h -> CUDNN_BACKEND_OPERATION_*_DESCRIPTOR - cudnn_frontend_OperationGraph.h -> CUDNN_BACKEND_OPERATIONGRAPH_DESCRIPTOR - cudnn_frontend_Heuristics.h -> CUDNN_BACKEND_ENGINEHEUR_DESCRIPTOR @@ -32,6 +33,7 @@ Each `cudnnBackendDescriptorType_t` documented in the enum is organized into its ## Samples Multiple samples of convolution, dgrad, wgrad and convBiasAct are added in `samples/test_list.cpp` and `samples/conv_sample.cpp`. +Samples of runtime fusion are added in `samples/test_list.cpp` and `samples/fusion_sample.cpp`. Sample tests are written using the [Catch2](https://github.com/catchorg/Catch2) C++ test framework. @@ -56,9 +58,6 @@ The `cudnnFindPlan` in turn The most common `engineConfig` generation is the built-in heuristics of cuDNN V8. Generally, this is appended with the fallback list. An example of usage can be seen in `run_from_cudnn_find(...)` function in `conv_sample.cpp`. -## Documentation -Documentation can be found at https://nvidia.github.io/cudnn-frontend/ - ## Feedback Support, resources, and information about cuDNN can be found online at https://developer.nvidia.com/cudnn. diff --git a/docs/annotated.html b/docs/annotated.html index 948af711a..1a80a4cec 100644 --- a/docs/annotated.html +++ b/docs/annotated.html @@ -5,7 +5,7 @@ -CUDNN API: Class List +CUDNN Frontend API: Class List @@ -28,8 +28,8 @@ -
CUDNN API -  8 +
CUDNN Frontend API +  8.2.0
@@ -104,17 +104,19 @@  CexecutionOption  CExecutionPlan_v8  CExecutionPlanBuilder_v8 - COpaqueBackendPointer - COperation_v8 - COperationBuilder_v8 - COperationGraph_v8 - COperationGraphBuilder_v8 - CPointWiseDesc_v8 - CPointWiseDescBuilder_v8 - CTensor_v8 - CTensorBuilder_v8 - CVariantPack_v8 - CVariantPackBuilder_v8 + CMatMulDesc_v8 + CMatMulDescBuilder_v8 + COpaqueBackendPointer + COperation_v8 + COperationBuilder_v8 + COperationGraph_v8 + COperationGraphBuilder_v8 + CPointWiseDesc_v8 + CPointWiseDescBuilder_v8 + CTensor_v8 + CTensorBuilder_v8 + CVariantPack_v8 + CVariantPackBuilder_v8
diff --git a/docs/classes.html b/docs/classes.html index e4e04794b..43a613681 100644 --- a/docs/classes.html +++ b/docs/classes.html @@ -5,7 +5,7 @@ -CUDNN API: Class Index +CUDNN Frontend API: Class Index @@ -28,8 +28,8 @@ -
CUDNN API -  8 +
CUDNN Frontend API +  8.2.0
@@ -84,30 +84,31 @@
Class Index
-
b | c | e | k | o | p | t | v
+
b | c | e | k | m | o | p | t | v
- + - + - - - - + + + + + - - + + +
  b  
-
EngineBuilder_v8 (cudnn_frontend)   ExecutionPlan_v8 (cudnn_frontend)   OperationBuilder_v8 (cudnn_frontend)   TensorBuilder_v8 (cudnn_frontend)   
EngineConfig_v8 (cudnn_frontend)   ExecutionPlanBuilder_v8 (cudnn_frontend)   OperationGraph_v8 (cudnn_frontend)   
  v  
+
EngineBuilder_v8 (cudnn_frontend)   ExecutionPlanBuilder_v8 (cudnn_frontend)   Operation_v8 (cudnn_frontend)   TensorBuilder_v8 (cudnn_frontend)   
EngineConfig_v8 (cudnn_frontend)   
  k  
+
OperationBuilder_v8 (cudnn_frontend)   
  v  
BackendDescriptor (cudnn_frontend)   EngineConfigBuilder_v8 (cudnn_frontend)   
  k  
-
OperationGraphBuilder_v8 (cudnn_frontend)   
BackendDescriptor (cudnn_frontend)   EngineConfigBuilder_v8 (cudnn_frontend)   OperationGraph_v8 (cudnn_frontend)   
  c  
-
EngineConfigGenerator (cudnn_frontend)   
  p  
-
VariantPack_v8 (cudnn_frontend)   
EngineFallbackList_v8 (cudnn_frontend)   Engine_v8::Knob (cudnn_frontend)   VariantPackBuilder_v8 (cudnn_frontend)   
ConvDesc_v8 (cudnn_frontend)   EngineFallbackListBuilder_v8 (cudnn_frontend)   
  o  
-
PointWiseDesc_v8 (cudnn_frontend)   
ConvDescBuilder_v8 (cudnn_frontend)   EngineHeuristics_v8 (cudnn_frontend)   PointWiseDescBuilder_v8 (cudnn_frontend)   
cudnnException (cudnn_frontend)   EngineHeuristicsBuilder_v8 (cudnn_frontend)   OpaqueBackendPointer (cudnn_frontend)   
  t  
-
EngineConfigGenerator (cudnn_frontend)   Engine_v8::Knob (cudnn_frontend)   OperationGraphBuilder_v8 (cudnn_frontend)   VariantPack_v8 (cudnn_frontend)   
EngineFallbackList_v8 (cudnn_frontend)   
  m  
+
  p  
+
VariantPackBuilder_v8 (cudnn_frontend)   
ConvDesc_v8 (cudnn_frontend)   EngineFallbackListBuilder_v8 (cudnn_frontend)   
ConvDescBuilder_v8 (cudnn_frontend)   EngineHeuristics_v8 (cudnn_frontend)   MatMulDesc_v8 (cudnn_frontend)   PointWiseDesc_v8 (cudnn_frontend)   
cudnnException (cudnn_frontend)   EngineHeuristicsBuilder_v8 (cudnn_frontend)   MatMulDescBuilder_v8 (cudnn_frontend)   PointWiseDescBuilder_v8 (cudnn_frontend)   
  e  
-
executionOption (cudnn_frontend)   Operation_v8 (cudnn_frontend)   
Tensor_v8 (cudnn_frontend)   
Engine_v8 (cudnn_frontend)   
executionOption (cudnn_frontend)   
  o  
+
  t  
+
ExecutionPlan_v8 (cudnn_frontend)   
Engine_v8 (cudnn_frontend)   OpaqueBackendPointer (cudnn_frontend)   Tensor_v8 (cudnn_frontend)   
-
b | c | e | k | o | p | t | v
+
b | c | e | k | m | o | p | t | v
diff --git a/docs/d0/d20/classcudnn__frontend_1_1VariantPack__v8.html b/docs/d0/d20/classcudnn__frontend_1_1VariantPack__v8.html index b403af996..4a8ca06b3 100644 --- a/docs/d0/d20/classcudnn__frontend_1_1VariantPack__v8.html +++ b/docs/d0/d20/classcudnn__frontend_1_1VariantPack__v8.html @@ -5,7 +5,7 @@ -CUDNN API: cudnn_frontend::VariantPack_v8 Class Reference +CUDNN Frontend API: cudnn_frontend::VariantPack_v8 Class Reference @@ -28,8 +28,8 @@ -
CUDNN API -  8 +
CUDNN Frontend API +  8.2.0
diff --git a/docs/d0/d31/cudnn__frontend__utils_8h__dep__incl.map b/docs/d0/d31/cudnn__frontend__utils_8h__dep__incl.map index 10691870f..7cda0cc80 100644 --- a/docs/d0/d31/cudnn__frontend__utils_8h__dep__incl.map +++ b/docs/d0/d31/cudnn__frontend__utils_8h__dep__incl.map @@ -1,16 +1,17 @@ - - - - - - + + + + + + - - - - - - + + + + + + + diff --git a/docs/d0/d31/cudnn__frontend__utils_8h__dep__incl.md5 b/docs/d0/d31/cudnn__frontend__utils_8h__dep__incl.md5 index 25d5c4934..1739e1fbc 100644 --- a/docs/d0/d31/cudnn__frontend__utils_8h__dep__incl.md5 +++ b/docs/d0/d31/cudnn__frontend__utils_8h__dep__incl.md5 @@ -1 +1 @@ -0541f0165892f0398c0a760c537e9e72 \ No newline at end of file +c3ba8a302122dfeac53f8b23613a81e1 \ No newline at end of file diff --git a/docs/d0/d31/cudnn__frontend__utils_8h__dep__incl.png b/docs/d0/d31/cudnn__frontend__utils_8h__dep__incl.png index 9285635fe..a5cbbc2aa 100644 Binary files a/docs/d0/d31/cudnn__frontend__utils_8h__dep__incl.png and b/docs/d0/d31/cudnn__frontend__utils_8h__dep__incl.png differ diff --git a/docs/d0/d45/cudnn__frontend__EngineConfigGenerator_8h__dep__incl.md5 b/docs/d0/d45/cudnn__frontend__EngineConfigGenerator_8h__dep__incl.md5 index d47a677ff..92c043b71 100644 --- a/docs/d0/d45/cudnn__frontend__EngineConfigGenerator_8h__dep__incl.md5 +++ b/docs/d0/d45/cudnn__frontend__EngineConfigGenerator_8h__dep__incl.md5 @@ -1 +1 @@ -846786ab19af27a4648ced5df19fce39 \ No newline at end of file +ed56aaa8593af242ec339a3e1e7672f7 \ No newline at end of file diff --git a/docs/d0/d4e/classcudnn__frontend_1_1EngineConfig__v8-members.html b/docs/d0/d4e/classcudnn__frontend_1_1EngineConfig__v8-members.html index 127329def..21d4d07e4 100644 --- a/docs/d0/d4e/classcudnn__frontend_1_1EngineConfig__v8-members.html +++ b/docs/d0/d4e/classcudnn__frontend_1_1EngineConfig__v8-members.html @@ -5,7 +5,7 @@ -CUDNN API: Member List +CUDNN Frontend API: Member List @@ -28,8 +28,8 @@ -
CUDNN API -  8 +
CUDNN Frontend API +  8.2.0
diff --git a/docs/d0/d70/classcudnn__frontend_1_1EngineBuilder__v8__coll__graph.md5 b/docs/d0/d70/classcudnn__frontend_1_1EngineBuilder__v8__coll__graph.md5 index 642535ac5..a8c5b654f 100644 --- a/docs/d0/d70/classcudnn__frontend_1_1EngineBuilder__v8__coll__graph.md5 +++ b/docs/d0/d70/classcudnn__frontend_1_1EngineBuilder__v8__coll__graph.md5 @@ -1 +1 @@ -95130a260be20f3ea97db2e7fe3931ac \ No newline at end of file +5ab9596ff7cf2af874c1c9e5abc0fed7 \ No newline at end of file diff --git a/docs/d0/d70/classcudnn__frontend_1_1EngineBuilder__v8__coll__graph.png b/docs/d0/d70/classcudnn__frontend_1_1EngineBuilder__v8__coll__graph.png index f503ab94e..140204fb2 100644 Binary files a/docs/d0/d70/classcudnn__frontend_1_1EngineBuilder__v8__coll__graph.png and b/docs/d0/d70/classcudnn__frontend_1_1EngineBuilder__v8__coll__graph.png differ diff --git a/docs/d0/d75/classcudnn__frontend_1_1ExecutionPlan__v8-members.html b/docs/d0/d75/classcudnn__frontend_1_1ExecutionPlan__v8-members.html index 763d273a0..696f25691 100644 --- a/docs/d0/d75/classcudnn__frontend_1_1ExecutionPlan__v8-members.html +++ b/docs/d0/d75/classcudnn__frontend_1_1ExecutionPlan__v8-members.html @@ -5,7 +5,7 @@ -CUDNN API: Member List +CUDNN Frontend API: Member List @@ -28,8 +28,8 @@ -
CUDNN API -  8 +
CUDNN Frontend API +  8.2.0
diff --git a/docs/d0/da5/classcudnn__frontend_1_1OpaqueBackendPointer-members.html b/docs/d0/da5/classcudnn__frontend_1_1OpaqueBackendPointer-members.html index 2b4f781aa..fede83fbf 100644 --- a/docs/d0/da5/classcudnn__frontend_1_1OpaqueBackendPointer-members.html +++ b/docs/d0/da5/classcudnn__frontend_1_1OpaqueBackendPointer-members.html @@ -5,7 +5,7 @@ -CUDNN API: Member List +CUDNN Frontend API: Member List @@ -28,8 +28,8 @@ -
CUDNN API -  8 +
CUDNN Frontend API +  8.2.0
diff --git a/docs/d1/d14/cudnn__frontend__get__plan_8h__incl.map b/docs/d1/d14/cudnn__frontend__get__plan_8h__incl.map index 62c6dbcbc..df01af86d 100644 --- a/docs/d1/d14/cudnn__frontend__get__plan_8h__incl.map +++ b/docs/d1/d14/cudnn__frontend__get__plan_8h__incl.map @@ -1,18 +1,19 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + diff --git a/docs/d1/d14/cudnn__frontend__get__plan_8h__incl.md5 b/docs/d1/d14/cudnn__frontend__get__plan_8h__incl.md5 index 472152246..0a97519db 100644 --- a/docs/d1/d14/cudnn__frontend__get__plan_8h__incl.md5 +++ b/docs/d1/d14/cudnn__frontend__get__plan_8h__incl.md5 @@ -1 +1 @@ -b64673902306cdf5747a95dfb48674ea \ No newline at end of file +69887e225cccfc308f9e81b3cc752a7d \ No newline at end of file diff --git a/docs/d1/d14/cudnn__frontend__get__plan_8h__incl.png b/docs/d1/d14/cudnn__frontend__get__plan_8h__incl.png index 0f1c5a69c..ca700d901 100644 Binary files a/docs/d1/d14/cudnn__frontend__get__plan_8h__incl.png and b/docs/d1/d14/cudnn__frontend__get__plan_8h__incl.png differ diff --git a/docs/d1/d28/classcudnn__frontend_1_1EngineHeuristicsBuilder__v8.html b/docs/d1/d28/classcudnn__frontend_1_1EngineHeuristicsBuilder__v8.html index 7f8856b9c..a8f1e63c2 100644 --- a/docs/d1/d28/classcudnn__frontend_1_1EngineHeuristicsBuilder__v8.html +++ b/docs/d1/d28/classcudnn__frontend_1_1EngineHeuristicsBuilder__v8.html @@ -5,7 +5,7 @@ -CUDNN API: cudnn_frontend::EngineHeuristicsBuilder_v8 Class Reference +CUDNN Frontend API: cudnn_frontend::EngineHeuristicsBuilder_v8 Class Reference @@ -28,8 +28,8 @@ -
CUDNN API -  8 +
CUDNN Frontend API +  8.2.0
diff --git a/docs/d1/d29/classcudnn__frontend_1_1OperationBuilder__v8.html b/docs/d1/d29/classcudnn__frontend_1_1OperationBuilder__v8.html index 5e5a8dff2..977f0a324 100644 --- a/docs/d1/d29/classcudnn__frontend_1_1OperationBuilder__v8.html +++ b/docs/d1/d29/classcudnn__frontend_1_1OperationBuilder__v8.html @@ -5,7 +5,7 @@ -CUDNN API: cudnn_frontend::OperationBuilder_v8 Class Reference +CUDNN Frontend API: cudnn_frontend::OperationBuilder_v8 Class Reference @@ -28,8 +28,8 @@ -
CUDNN API -  8 +
CUDNN Frontend API +  8.2.0
@@ -95,10 +95,10 @@
Collaboration graph
- - - - + + + +
@@ -114,8 +114,24 @@ + + + + + + + + + + + + + + + + @@ -141,11 +157,15 @@ + + + +
 
auto setwDesc (Tensor_v8 const &tensor) -> OperationBuilder_v8 &
 
auto setdyDesc (ManagedOpaqueDescriptor const &raw_tensor) -> OperationBuilder_v8 &
 
auto setdyDesc (Tensor_v8 const &tensor) -> OperationBuilder_v8 &
 
auto setdxDesc (Tensor_v8 const &tensor) -> OperationBuilder_v8 &
 
auto setdwDesc (Tensor_v8 const &tensor) -> OperationBuilder_v8 &
 
auto setcDesc (ConvDesc_v8 const &conv) -> OperationBuilder_v8 &
 
auto setaMatDesc (Tensor_v8 const &tensor) -> OperationBuilder_v8 &
 
auto setbMatDesc (Tensor_v8 const &tensor) -> OperationBuilder_v8 &
 
auto setcMatDesc (Tensor_v8 const &tensor) -> OperationBuilder_v8 &
 
auto setmatmulDesc (MatMulDesc_v8 const &matmulDesc) -> OperationBuilder_v8 &
 
auto setpwDesc (PointWiseDesc_v8 const &pointWiseDesc) -> OperationBuilder_v8 &
 
auto setAlpha (float alpha) -> OperationBuilder_v8 &
 
bool is_convolution_op = false
 
bool is_pointwise_op = false
 
bool is_matmul_op = false
 

Detailed Description

OperationBuilder_v8 Class Helper class used to build Operation_v8 class

-

Definition at line 133 of file cudnn_frontend_Operation.h.

+

Definition at line 168 of file cudnn_frontend_Operation.h.

Member Function Documentation

◆ build()

@@ -171,9 +191,9 @@

constructs the backend Operation_v8 by calling the cudnn API Throws the appropriate error message

-

Definition at line 259 of file cudnn_frontend_Operation.h.

+

Definition at line 389 of file cudnn_frontend_Operation.h.

-

References cudnn_frontend::Operation_v8::alpha2_d, cudnn_frontend::Operation_v8::alpha2_s, cudnn_frontend::Operation_v8::alpha_d, cudnn_frontend::Operation_v8::alpha_s, cudnn_frontend::Operation_v8::alphabetaType, cudnn_frontend::Operation_v8::bdesc, cudnn_frontend::Operation_v8::beta_d, cudnn_frontend::Operation_v8::beta_s, cudnn_frontend::Operation_v8::cdesc, cudnn_frontend::BackendDescriptor::initialize_managed_backend_pointer(), cudnn_frontend::Operation_v8::op_mode, cudnn_frontend::Operation_v8::operationTag, cudnn_frontend::BackendDescriptor::pointer, cudnn_frontend::Operation_v8::pointwise_mode, cudnn_frontend::Operation_v8::pointwise_port_count, cudnn_frontend::Operation_v8::pwdesc, cudnn_frontend::set_error_and_throw_exception(), cudnn_frontend::BackendDescriptor::status, cudnn_frontend::Operation_v8::wdesc, cudnn_frontend::Operation_v8::xdesc, and cudnn_frontend::Operation_v8::ydesc.

+

References cudnn_frontend::Operation_v8::alpha2_d, cudnn_frontend::Operation_v8::alpha2_s, cudnn_frontend::Operation_v8::alpha_d, cudnn_frontend::Operation_v8::alpha_s, cudnn_frontend::Operation_v8::alphabetaType, cudnn_frontend::Operation_v8::amatdesc, cudnn_frontend::Operation_v8::bdesc, cudnn_frontend::Operation_v8::beta_d, cudnn_frontend::Operation_v8::beta_s, cudnn_frontend::Operation_v8::bmatdesc, cudnn_frontend::Operation_v8::cdesc, cudnn_frontend::Operation_v8::cmatdesc, cudnn_frontend::Operation_v8::dwdesc, cudnn_frontend::Operation_v8::dxdesc, cudnn_frontend::Operation_v8::dydesc, cudnn_frontend::BackendDescriptor::initialize_managed_backend_pointer(), cudnn_frontend::Operation_v8::is_pointwise_activation_bwd_op, cudnn_frontend::Operation_v8::is_pointwise_activation_fwd_op, cudnn_frontend::Operation_v8::is_pointwise_math_op, cudnn_frontend::Operation_v8::matmuldesc, cudnn_frontend::Operation_v8::op_mode, cudnn_frontend::Operation_v8::operationTag, cudnn_frontend::BackendDescriptor::pointer, cudnn_frontend::Operation_v8::pointwise_mode, cudnn_frontend::Operation_v8::pointwise_port_count, cudnn_frontend::Operation_v8::pwdesc, cudnn_frontend::set_error_and_throw_exception(), cudnn_frontend::BackendDescriptor::status, cudnn_frontend::Operation_v8::wdesc, cudnn_frontend::Operation_v8::xdesc, and cudnn_frontend::Operation_v8::ydesc.

@@ -198,7 +218,55 @@

-

Definition at line 136 of file cudnn_frontend_Operation.h.

+

Definition at line 171 of file cudnn_frontend_Operation.h.

+ +

+
+ +

◆ is_matmul_op

+ +
+
+ + + + + +
+ + + + +
bool cudnn_frontend::OperationBuilder_v8::is_matmul_op = false
+
+private
+
+ +

Definition at line 173 of file cudnn_frontend_Operation.h.

+ +
+
+ +

◆ is_pointwise_op

+ +
+
+ + + + + +
+ + + + +
bool cudnn_frontend::OperationBuilder_v8::is_pointwise_op = false
+
+private
+
+ +

Definition at line 172 of file cudnn_frontend_Operation.h.

@@ -222,7 +290,7 @@

-

Definition at line 135 of file cudnn_frontend_Operation.h.

+

Definition at line 170 of file cudnn_frontend_Operation.h.

diff --git a/docs/d1/d29/classcudnn__frontend_1_1OperationBuilder__v8.js b/docs/d1/d29/classcudnn__frontend_1_1OperationBuilder__v8.js index d30960d03..39595d87d 100644 --- a/docs/d1/d29/classcudnn__frontend_1_1OperationBuilder__v8.js +++ b/docs/d1/d29/classcudnn__frontend_1_1OperationBuilder__v8.js @@ -6,15 +6,25 @@ var classcudnn__frontend_1_1OperationBuilder__v8 = [ "setAlpha", "d3/d92/group__OperationBuilder__v8.html#ga3c63744504f65383ce0b847bea804e3f", null ], [ "setAlpha2", "d3/d92/group__OperationBuilder__v8.html#ga06cdcfeda1b702412be41addd73bb947", null ], [ "setAlpha2", "d3/d92/group__OperationBuilder__v8.html#ga459671e9d26640528fcf683aaeef05df", null ], + [ "setaMatDesc", "d3/d92/group__OperationBuilder__v8.html#ga095c52c8f1b01ebb224265f9000195c0", null ], [ "setbDesc", "d3/d92/group__OperationBuilder__v8.html#ga17475846760b10ffdfa536cd92a5b135", null ], [ "setBeta", "d3/d92/group__OperationBuilder__v8.html#ga65a9ad73912ff46becc93ee451da6af5", null ], [ "setBeta", "d3/d92/group__OperationBuilder__v8.html#ga29752062b7308c8da0e625eb35431652", null ], + [ "setbMatDesc", "d3/d92/group__OperationBuilder__v8.html#gaa8eed29a0181e044ea0263ba655127ec", null ], [ "setcDesc", "d3/d92/group__OperationBuilder__v8.html#gaa82e018b6a9d514ad912b922f43adad2", null ], + [ "setcMatDesc", "d3/d92/group__OperationBuilder__v8.html#gaaf9d7cbc65c7c7526a6f15d4ad2952fa", null ], + [ "setdwDesc", "d3/d92/group__OperationBuilder__v8.html#ga5e5d463d5531a9378280fa4b1aee6f63", null ], + [ "setdxDesc", "d3/d92/group__OperationBuilder__v8.html#ga35fa5c453a6cd989f35e47c29e6ec665", null ], + [ "setdyDesc", "d3/d92/group__OperationBuilder__v8.html#ga08f3d4cb5138174127d0f6899f7bc53b", null ], + [ "setdyDesc", "d3/d92/group__OperationBuilder__v8.html#ga9e4a1e9a233b44cca5b65f0af172b001", null ], + [ "setmatmulDesc", "d3/d92/group__OperationBuilder__v8.html#ga3ca1f62832f998566c1b07b4b3c71db4", null ], [ "setpwDesc", "d3/d92/group__OperationBuilder__v8.html#gae6b06877b2e675b2a390f0b122100669", null ], [ "setwDesc", "d3/d92/group__OperationBuilder__v8.html#ga80466e517e980ba4953e085b3d4e3498", null ], [ "setxDesc", "d3/d92/group__OperationBuilder__v8.html#gaefa06fdaae3b28c6ef08a0189e2a3d3a", null ], [ "setxDesc", "d3/d92/group__OperationBuilder__v8.html#ga04c2492a5376f1a74a57fb49fa7b3599", null ], [ "setyDesc", "d3/d92/group__OperationBuilder__v8.html#ga5910bc2209e1b648c1aa0edce7f11e01", null ], [ "is_convolution_op", "d1/d29/classcudnn__frontend_1_1OperationBuilder__v8.html#ad82e287889be2ebef348a00479ce3bc0", null ], + [ "is_matmul_op", "d1/d29/classcudnn__frontend_1_1OperationBuilder__v8.html#ac806a488b58cc78e338ba96eccee70fd", null ], + [ "is_pointwise_op", "d1/d29/classcudnn__frontend_1_1OperationBuilder__v8.html#a98044359c005b796e35fba1a5b689f3d", null ], [ "m_operation", "d1/d29/classcudnn__frontend_1_1OperationBuilder__v8.html#a8724628060c71b17e7458c01338b234a", null ] ]; \ No newline at end of file diff --git a/docs/d1/d6c/classcudnn__frontend_1_1PointWiseDesc__v8__inherit__graph.md5 b/docs/d1/d6c/classcudnn__frontend_1_1PointWiseDesc__v8__inherit__graph.md5 index c06437a79..e64ad58d0 100644 --- a/docs/d1/d6c/classcudnn__frontend_1_1PointWiseDesc__v8__inherit__graph.md5 +++ b/docs/d1/d6c/classcudnn__frontend_1_1PointWiseDesc__v8__inherit__graph.md5 @@ -1 +1 @@ -1a0c7d1d76aa144db95914c6ed6ae718 \ No newline at end of file +f2de2aa4707616725a3448eb7dec152e \ No newline at end of file diff --git a/docs/d1/d6c/classcudnn__frontend_1_1PointWiseDesc__v8__inherit__graph.png b/docs/d1/d6c/classcudnn__frontend_1_1PointWiseDesc__v8__inherit__graph.png index a7666866d..cfbe673d5 100644 Binary files a/docs/d1/d6c/classcudnn__frontend_1_1PointWiseDesc__v8__inherit__graph.png and b/docs/d1/d6c/classcudnn__frontend_1_1PointWiseDesc__v8__inherit__graph.png differ diff --git a/docs/d1/d6d/classcudnn__frontend_1_1EngineHeuristics__v8-members.html b/docs/d1/d6d/classcudnn__frontend_1_1EngineHeuristics__v8-members.html index fc1245818..de19ebec7 100644 --- a/docs/d1/d6d/classcudnn__frontend_1_1EngineHeuristics__v8-members.html +++ b/docs/d1/d6d/classcudnn__frontend_1_1EngineHeuristics__v8-members.html @@ -5,7 +5,7 @@ -CUDNN API: Member List +CUDNN Frontend API: Member List @@ -28,8 +28,8 @@ -
CUDNN API -  8 +
CUDNN Frontend API +  8.2.0
diff --git a/docs/d1/d74/classcudnn__frontend_1_1ExecutionPlanBuilder__v8.html b/docs/d1/d74/classcudnn__frontend_1_1ExecutionPlanBuilder__v8.html index 8e87c6e3b..0739c8ae5 100644 --- a/docs/d1/d74/classcudnn__frontend_1_1ExecutionPlanBuilder__v8.html +++ b/docs/d1/d74/classcudnn__frontend_1_1ExecutionPlanBuilder__v8.html @@ -5,7 +5,7 @@ -CUDNN API: cudnn_frontend::ExecutionPlanBuilder_v8 Class Reference +CUDNN Frontend API: cudnn_frontend::ExecutionPlanBuilder_v8 Class Reference @@ -28,8 +28,8 @@ -
CUDNN API -  8 +
CUDNN Frontend API +  8.2.0
@@ -110,8 +110,6 @@ auto setEngineConfig (EngineConfig_v8 const &engine_config_) -> ExecutionPlanBuilder_v8 &  Set engine Config for the Plan. More...
  -auto setEngineConfig (cudnnBackendDescriptor_t &desc, std::string const &opGraphTag_="") -> ExecutionPlanBuilder_v8 & -  auto setEngineConfig (ManagedOpaqueDescriptor &desc, std::string const &opGraphTag_="") -> ExecutionPlanBuilder_v8 &  Set engine Config for the Plan. More...
  diff --git a/docs/d1/d74/classcudnn__frontend_1_1ExecutionPlanBuilder__v8.js b/docs/d1/d74/classcudnn__frontend_1_1ExecutionPlanBuilder__v8.js index a159f7559..c257adcbe 100644 --- a/docs/d1/d74/classcudnn__frontend_1_1ExecutionPlanBuilder__v8.js +++ b/docs/d1/d74/classcudnn__frontend_1_1ExecutionPlanBuilder__v8.js @@ -7,7 +7,6 @@ var classcudnn__frontend_1_1ExecutionPlanBuilder__v8 = [ "build", "d7/d0d/group__ExecutionPlanQuery.html#ga5ff39f2019a5a3fe8062bf887707877c", null ], [ "operator=", "d7/d0d/group__ExecutionPlanQuery.html#ga5f757c2da8c90645c34637dde4aed8f8", null ], [ "setEngineConfig", "d4/de1/group__ExecutionPlanBuilder__v8.html#gac5c23cff8c1424f71ef2cee2dc66cd3c", null ], - [ "setEngineConfig", "d4/de1/group__ExecutionPlanBuilder__v8.html#gaf7010781cc8c0583a2d841ac6d9ed521", null ], [ "setEngineConfig", "d4/de1/group__ExecutionPlanBuilder__v8.html#gae0f92d5445da53253ff3460ac6aefffa", null ], [ "setHandle", "d4/de1/group__ExecutionPlanBuilder__v8.html#ga4166679391fc2df54e25964c03ae6e8e", null ], [ "m_execution_plan", "d7/d0d/group__ExecutionPlanQuery.html#gae1a2e3dd89dbe455e7067531ec5b5562", null ] diff --git a/docs/d1/de7/cudnn__frontend__ConvDesc_8h.html b/docs/d1/de7/cudnn__frontend__ConvDesc_8h.html index 6ac7198b1..ff8ecdaf5 100644 --- a/docs/d1/de7/cudnn__frontend__ConvDesc_8h.html +++ b/docs/d1/de7/cudnn__frontend__ConvDesc_8h.html @@ -5,7 +5,7 @@ -CUDNN API: cudnn_frontend_ConvDesc.h File Reference +CUDNN Frontend API: cudnn_frontend_ConvDesc.h File Reference @@ -28,8 +28,8 @@ -
CUDNN API -  8 +
CUDNN Frontend API +  8.2.0
diff --git a/docs/d1/de7/cudnn__frontend__ConvDesc_8h_source.html b/docs/d1/de7/cudnn__frontend__ConvDesc_8h_source.html index 200333279..c0fed4106 100644 --- a/docs/d1/de7/cudnn__frontend__ConvDesc_8h_source.html +++ b/docs/d1/de7/cudnn__frontend__ConvDesc_8h_source.html @@ -5,7 +5,7 @@ -CUDNN API: cudnn_frontend_ConvDesc.h Source File +CUDNN Frontend API: cudnn_frontend_ConvDesc.h Source File @@ -28,8 +28,8 @@ -
CUDNN API -  8 +
CUDNN Frontend API +  8.2.0
diff --git a/docs/d1/df7/group__OperationGraphQuery.html b/docs/d1/df7/group__OperationGraphQuery.html index d47a16901..b8849a6c6 100644 --- a/docs/d1/df7/group__OperationGraphQuery.html +++ b/docs/d1/df7/group__OperationGraphQuery.html @@ -5,7 +5,7 @@ -CUDNN API: OperationGraphQuery +CUDNN Frontend API: OperationGraphQuery @@ -28,8 +28,8 @@ -
CUDNN API -  8 +
CUDNN Frontend API +  8.2.0
diff --git a/docs/d2/d3b/cudnn__frontend__get__plan_8h.html b/docs/d2/d3b/cudnn__frontend__get__plan_8h.html index e6ca25f08..925cb6720 100644 --- a/docs/d2/d3b/cudnn__frontend__get__plan_8h.html +++ b/docs/d2/d3b/cudnn__frontend__get__plan_8h.html @@ -5,7 +5,7 @@ -CUDNN API: cudnn_frontend_get_plan.h File Reference +CUDNN Frontend API: cudnn_frontend_get_plan.h File Reference @@ -28,8 +28,8 @@ -
CUDNN API -  8 +
CUDNN Frontend API +  8.2.0
@@ -92,22 +92,23 @@
- - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + +
diff --git a/docs/d2/d3b/cudnn__frontend__get__plan_8h_source.html b/docs/d2/d3b/cudnn__frontend__get__plan_8h_source.html index d52a3c2eb..075d0437c 100644 --- a/docs/d2/d3b/cudnn__frontend__get__plan_8h_source.html +++ b/docs/d2/d3b/cudnn__frontend__get__plan_8h_source.html @@ -5,7 +5,7 @@ -CUDNN API: cudnn_frontend_get_plan.h Source File +CUDNN Frontend API: cudnn_frontend_get_plan.h Source File @@ -28,8 +28,8 @@ -
CUDNN API -  8 +
CUDNN Frontend API +  8.2.0
@@ -91,7 +91,7 @@
auto cudnnGetPlan(cudnnHandle_t handle, cudnn_frontend::OperationGraph &&opGraph, Predicate pred) -> executionPlans_t
Returns the concatenated plan in the order of heuristic results.
auto filter(Predicate pred, executionPlans_t &plans) -> executionPlans_t
-
ExecutionPlanBuilder_v8 ExecutionPlanBuilder
+
ExecutionPlanBuilder_v8 ExecutionPlanBuilder
diff --git a/docs/d2/d47/classcudnn__frontend_1_1VariantPack__v8-members.html b/docs/d2/d47/classcudnn__frontend_1_1VariantPack__v8-members.html index 7fbfa319d..10976acb5 100644 --- a/docs/d2/d47/classcudnn__frontend_1_1VariantPack__v8-members.html +++ b/docs/d2/d47/classcudnn__frontend_1_1VariantPack__v8-members.html @@ -5,7 +5,7 @@ -CUDNN API: Member List +CUDNN Frontend API: Member List @@ -28,8 +28,8 @@ -
CUDNN API -  8 +
CUDNN Frontend API +  8.2.0
diff --git a/docs/d2/db5/group__PointWiseDescBuilder__v8.html b/docs/d2/db5/group__PointWiseDescBuilder__v8.html index 0e53c856c..e43f3228b 100644 --- a/docs/d2/db5/group__PointWiseDescBuilder__v8.html +++ b/docs/d2/db5/group__PointWiseDescBuilder__v8.html @@ -5,7 +5,7 @@ -CUDNN API: PointWiseDescBuilder_v8 +CUDNN Frontend API: PointWiseDescBuilder_v8 @@ -28,8 +28,8 @@ -
CUDNN API -  8 +
CUDNN Frontend API +  8.2.0
@@ -141,7 +141,7 @@

Definition at line 127 of file cudnn_frontend_PointWiseDesc.h.

+

Definition at line 148 of file cudnn_frontend_PointWiseDesc.h.

@@ -171,7 +171,7 @@

Definition at line 121 of file cudnn_frontend_PointWiseDesc.h.

+

Definition at line 142 of file cudnn_frontend_PointWiseDesc.h.

@@ -201,7 +201,7 @@

Definition at line 134 of file cudnn_frontend_PointWiseDesc.h.

+

Definition at line 155 of file cudnn_frontend_PointWiseDesc.h.

@@ -231,7 +231,7 @@

Definition at line 140 of file cudnn_frontend_PointWiseDesc.h.

+

Definition at line 161 of file cudnn_frontend_PointWiseDesc.h.

diff --git a/docs/d2/dbb/group__EngineConfigBuilder__v8.html b/docs/d2/dbb/group__EngineConfigBuilder__v8.html index a1b58279f..6fe6862fd 100644 --- a/docs/d2/dbb/group__EngineConfigBuilder__v8.html +++ b/docs/d2/dbb/group__EngineConfigBuilder__v8.html @@ -5,7 +5,7 @@ -CUDNN API: EngineConfigBuilder_v8 +CUDNN Frontend API: EngineConfigBuilder_v8 @@ -28,8 +28,8 @@ -
CUDNN API -  8 +
CUDNN Frontend API +  8.2.0
diff --git a/docs/d2/dc8/classcudnn__frontend_1_1Operation__v8-members.html b/docs/d2/dc8/classcudnn__frontend_1_1Operation__v8-members.html index fa6f0f7f8..0658a888c 100644 --- a/docs/d2/dc8/classcudnn__frontend_1_1Operation__v8-members.html +++ b/docs/d2/dc8/classcudnn__frontend_1_1Operation__v8-members.html @@ -5,7 +5,7 @@ -CUDNN API: Member List +CUDNN Frontend API: Member List @@ -28,8 +28,8 @@ -
CUDNN API -  8 +
CUDNN Frontend API +  8.2.0
@@ -92,13 +92,19 @@ alpha_dcudnn_frontend::Operation_v8private alpha_scudnn_frontend::Operation_v8private alphabetaTypecudnn_frontend::Operation_v8private - BackendDescriptor(ManagedOpaqueDescriptor pointer_, cudnnStatus_t status_, std::string err_msg_)cudnn_frontend::BackendDescriptorinlineprotected - BackendDescriptor()=defaultcudnn_frontend::BackendDescriptorprotected - bdesccudnn_frontend::Operation_v8private - beta_dcudnn_frontend::Operation_v8private - beta_scudnn_frontend::Operation_v8private + amatdesccudnn_frontend::Operation_v8private + BackendDescriptor(ManagedOpaqueDescriptor pointer_, cudnnStatus_t status_, std::string err_msg_)cudnn_frontend::BackendDescriptorinlineprotected + BackendDescriptor()=defaultcudnn_frontend::BackendDescriptorprotected + bdesccudnn_frontend::Operation_v8private + beta_dcudnn_frontend::Operation_v8private + beta_scudnn_frontend::Operation_v8private + bmatdesccudnn_frontend::Operation_v8private cdesccudnn_frontend::Operation_v8private - describe() const overridecudnn_frontend::Operation_v8inlinevirtual + cmatdesccudnn_frontend::Operation_v8private + describe() const overridecudnn_frontend::Operation_v8inlinevirtual + dwdesccudnn_frontend::Operation_v8private + dxdesccudnn_frontend::Operation_v8private + dydesccudnn_frontend::Operation_v8private err_msgcudnn_frontend::BackendDescriptormutableprotected get_desc() constcudnn_frontend::BackendDescriptorinline get_error() constcudnn_frontend::BackendDescriptorinline @@ -107,6 +113,10 @@ getOutputTensor()cudnn_frontend::Operation_v8inline getTag() constcudnn_frontend::Operation_v8inline initialize_managed_backend_pointer(cudnnBackendDescriptorType_t type)cudnn_frontend::BackendDescriptorinline + is_pointwise_activation_bwd_opcudnn_frontend::Operation_v8private + is_pointwise_activation_fwd_opcudnn_frontend::Operation_v8private + is_pointwise_math_opcudnn_frontend::Operation_v8private + matmuldesccudnn_frontend::Operation_v8private op_modecudnn_frontend::Operation_v8private Operation_v8(Operation_v8 &&from)cudnn_frontend::Operation_v8inline Operation_v8()=defaultcudnn_frontend::Operation_v8private diff --git a/docs/d2/de7/classcudnn__frontend_1_1PointWiseDescBuilder__v8-members.html b/docs/d2/de7/classcudnn__frontend_1_1PointWiseDescBuilder__v8-members.html index 44bc01f32..233cd0aeb 100644 --- a/docs/d2/de7/classcudnn__frontend_1_1PointWiseDescBuilder__v8-members.html +++ b/docs/d2/de7/classcudnn__frontend_1_1PointWiseDescBuilder__v8-members.html @@ -5,7 +5,7 @@ -CUDNN API: Member List +CUDNN Frontend API: Member List @@ -28,8 +28,8 @@ -
CUDNN API -  8 +
CUDNN Frontend API +  8.2.0
@@ -94,9 +94,15 @@ PointWiseDescBuilder_v8(PointWiseDescBuilder_v8 &&)=deletecudnn_frontend::PointWiseDescBuilder_v8 PointWiseDescBuilder_v8(PointWiseDescBuilder_v8 const &)=deletecudnn_frontend::PointWiseDescBuilder_v8 setClipping(double l, double u) -> PointWiseDescBuilder_v8 &cudnn_frontend::PointWiseDescBuilder_v8inline - setMathPrecision(cudnnDataType_t data_type_) -> PointWiseDescBuilder_v8 &cudnn_frontend::PointWiseDescBuilder_v8inline - setMode(cudnnPointwiseMode_t mode_) -> PointWiseDescBuilder_v8 &cudnn_frontend::PointWiseDescBuilder_v8inline - setMode(cudnnNanPropagation_t nan_mode_) -> PointWiseDescBuilder_v8 &cudnn_frontend::PointWiseDescBuilder_v8inline + setEluAlpha(double elu_alpha_) -> PointWiseDescBuilder_v8 &cudnn_frontend::PointWiseDescBuilder_v8inline + setMathPrecision(cudnnDataType_t data_type_) -> PointWiseDescBuilder_v8 &cudnn_frontend::PointWiseDescBuilder_v8inline + setMode(cudnnPointwiseMode_t mode_) -> PointWiseDescBuilder_v8 &cudnn_frontend::PointWiseDescBuilder_v8inline + setMode(cudnnNanPropagation_t nan_mode_) -> PointWiseDescBuilder_v8 &cudnn_frontend::PointWiseDescBuilder_v8inline + setReluLowerClip(double lower_clip_) -> PointWiseDescBuilder_v8 &cudnn_frontend::PointWiseDescBuilder_v8inline + setReluLowerClipSlope(double lower_clip_slope_) -> PointWiseDescBuilder_v8 &cudnn_frontend::PointWiseDescBuilder_v8inline + setReluUpperClip(double upper_clip_) -> PointWiseDescBuilder_v8 &cudnn_frontend::PointWiseDescBuilder_v8inline + setSoftplusBeta(double softplus_beta_) -> PointWiseDescBuilder_v8 &cudnn_frontend::PointWiseDescBuilder_v8inline + setSwishBeta(double swish_beta_) -> PointWiseDescBuilder_v8 &cudnn_frontend::PointWiseDescBuilder_v8inline ~PointWiseDescBuilder_v8()=defaultcudnn_frontend::PointWiseDescBuilder_v8
diff --git a/docs/d2/df5/group__OperationGraphBuilder__v8.html b/docs/d2/df5/group__OperationGraphBuilder__v8.html index 707aca6c6..0bb757752 100644 --- a/docs/d2/df5/group__OperationGraphBuilder__v8.html +++ b/docs/d2/df5/group__OperationGraphBuilder__v8.html @@ -5,7 +5,7 @@ -CUDNN API: OperationGraphBuilder_v8 +CUDNN Frontend API: OperationGraphBuilder_v8 @@ -28,8 +28,8 @@ -
CUDNN API -  8 +
CUDNN Frontend API +  8.2.0
diff --git a/docs/d3/d06/classcudnn__frontend_1_1OperationGraph__v8-members.html b/docs/d3/d06/classcudnn__frontend_1_1OperationGraph__v8-members.html index b0e08c0f7..14c8966b1 100644 --- a/docs/d3/d06/classcudnn__frontend_1_1OperationGraph__v8-members.html +++ b/docs/d3/d06/classcudnn__frontend_1_1OperationGraph__v8-members.html @@ -5,7 +5,7 @@ -CUDNN API: Member List +CUDNN Frontend API: Member List @@ -28,8 +28,8 @@ -
CUDNN API -  8 +
CUDNN Frontend API +  8.2.0
diff --git a/docs/d3/d09/group__EngineBuilder__v8.html b/docs/d3/d09/group__EngineBuilder__v8.html index fcc31d370..cd6c2e77d 100644 --- a/docs/d3/d09/group__EngineBuilder__v8.html +++ b/docs/d3/d09/group__EngineBuilder__v8.html @@ -5,7 +5,7 @@ -CUDNN API: EngineBuilder_v8 +CUDNN Frontend API: EngineBuilder_v8 @@ -28,8 +28,8 @@ -
CUDNN API -  8 +
CUDNN Frontend API +  8.2.0
@@ -92,9 +92,6 @@ auto cudnn_frontend::EngineBuilder_v8::setOperationGraph (OperationGraph_v8 const &opGraph_) -> EngineBuilder_v8 &  Set operationGraph for the engine. More...
  -auto cudnn_frontend::EngineBuilder_v8::setOperationGraph (cudnnBackendDescriptor_t desc_) -> EngineBuilder_v8 & - Set operationGraph for the engine. More...
-  auto cudnn_frontend::EngineBuilder_v8::setOperationGraph (ManagedOpaqueDescriptor desc_) -> EngineBuilder_v8 &  Set operationGraph for the engine. More...
  @@ -131,14 +128,14 @@

Definition at line 258 of file cudnn_frontend_Engine.h.

+

Definition at line 253 of file cudnn_frontend_Engine.h.

Referenced by cudnn_frontend::EngineFallbackListBuilder_v8::build().

-

◆ setOperationGraph() [1/3]

+

◆ setOperationGraph() [1/2]

@@ -165,40 +162,10 @@

Definition at line 239 of file cudnn_frontend_Engine.h.

-

-
- -

◆ setOperationGraph() [2/3]

- -
-
- - - - - -
- - - - - - - - -
auto cudnn_frontend::EngineBuilder_v8::setOperationGraph (cudnnBackendDescriptor_t desc_) -> EngineBuilder_v8 &
-
-inline
-
- -

Set operationGraph for the engine.

- -

Definition at line 246 of file cudnn_frontend_Engine.h.

-
-

◆ setOperationGraph() [3/3]

+

◆ setOperationGraph() [2/2]

@@ -223,7 +190,7 @@

Definition at line 252 of file cudnn_frontend_Engine.h.

+

Definition at line 247 of file cudnn_frontend_Engine.h.

diff --git a/docs/d3/d09/group__EngineBuilder__v8.js b/docs/d3/d09/group__EngineBuilder__v8.js index 728168810..e9c920b8a 100644 --- a/docs/d3/d09/group__EngineBuilder__v8.js +++ b/docs/d3/d09/group__EngineBuilder__v8.js @@ -2,6 +2,5 @@ var group__EngineBuilder__v8 = [ [ "setGlobalEngineIdx", "d3/d09/group__EngineBuilder__v8.html#ga2b171d44da46865d536236bb01103005", null ], [ "setOperationGraph", "d3/d09/group__EngineBuilder__v8.html#ga0ceef322363405504dbdc4d1f3c9949a", null ], - [ "setOperationGraph", "d3/d09/group__EngineBuilder__v8.html#ga27466cecb45496d001cfbe4de4b5c5a9", null ], [ "setOperationGraph", "d3/d09/group__EngineBuilder__v8.html#ga7220dab88f9fed1704c9d78d9771be5f", null ] ]; \ No newline at end of file diff --git a/docs/d3/d3c/group__TensorBuilder__v8.html b/docs/d3/d3c/group__TensorBuilder__v8.html index 4a5fa950a..d77f7f779 100644 --- a/docs/d3/d3c/group__TensorBuilder__v8.html +++ b/docs/d3/d3c/group__TensorBuilder__v8.html @@ -5,7 +5,7 @@ -CUDNN API: TensorBuilder_v8 +CUDNN Frontend API: TensorBuilder_v8 @@ -28,8 +28,8 @@ -
CUDNN API -  8 +
CUDNN Frontend API +  8.2.0
diff --git a/docs/d3/d58/classcudnn__frontend_1_1EngineHeuristicsBuilder__v8-members.html b/docs/d3/d58/classcudnn__frontend_1_1EngineHeuristicsBuilder__v8-members.html index 946b2a196..e6aa691bc 100644 --- a/docs/d3/d58/classcudnn__frontend_1_1EngineHeuristicsBuilder__v8-members.html +++ b/docs/d3/d58/classcudnn__frontend_1_1EngineHeuristicsBuilder__v8-members.html @@ -5,7 +5,7 @@ -CUDNN API: Member List +CUDNN Frontend API: Member List @@ -28,8 +28,8 @@ -
CUDNN API -  8 +
CUDNN Frontend API +  8.2.0
diff --git a/docs/d3/d5a/cudnn__frontend_8h__incl.map b/docs/d3/d5a/cudnn__frontend_8h__incl.map index ca1869fab..2ac608a91 100644 --- a/docs/d3/d5a/cudnn__frontend_8h__incl.map +++ b/docs/d3/d5a/cudnn__frontend_8h__incl.map @@ -1,16 +1,17 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + + diff --git a/docs/d3/d5a/cudnn__frontend_8h__incl.md5 b/docs/d3/d5a/cudnn__frontend_8h__incl.md5 index b927ef50e..43124ee4d 100644 --- a/docs/d3/d5a/cudnn__frontend_8h__incl.md5 +++ b/docs/d3/d5a/cudnn__frontend_8h__incl.md5 @@ -1 +1 @@ -6d2e5eca478b512f1c9c09531032c8f1 \ No newline at end of file +a0f6e935ea1d0d73b14a3119eee0790f \ No newline at end of file diff --git a/docs/d3/d5a/cudnn__frontend_8h__incl.png b/docs/d3/d5a/cudnn__frontend_8h__incl.png index f74be5520..fc057f233 100644 Binary files a/docs/d3/d5a/cudnn__frontend_8h__incl.png and b/docs/d3/d5a/cudnn__frontend_8h__incl.png differ diff --git a/docs/d3/d6b/cudnn__frontend__find__plan_8h.html b/docs/d3/d6b/cudnn__frontend__find__plan_8h.html index 04e2b3ab5..a8d72bd78 100644 --- a/docs/d3/d6b/cudnn__frontend__find__plan_8h.html +++ b/docs/d3/d6b/cudnn__frontend__find__plan_8h.html @@ -5,7 +5,7 @@ -CUDNN API: cudnn_frontend_find_plan.h File Reference +CUDNN Frontend API: cudnn_frontend_find_plan.h File Reference @@ -28,8 +28,8 @@ -
CUDNN API -  8 +
CUDNN Frontend API +  8.2.0
@@ -94,22 +94,23 @@
- - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + +
diff --git a/docs/d3/d6b/cudnn__frontend__find__plan_8h_source.html b/docs/d3/d6b/cudnn__frontend__find__plan_8h_source.html index 3c6db9ee4..8777f5394 100644 --- a/docs/d3/d6b/cudnn__frontend__find__plan_8h_source.html +++ b/docs/d3/d6b/cudnn__frontend__find__plan_8h_source.html @@ -5,7 +5,7 @@ -CUDNN API: cudnn_frontend_find_plan.h Source File +CUDNN Frontend API: cudnn_frontend_find_plan.h Source File @@ -28,8 +28,8 @@ -
CUDNN API -  8 +
CUDNN Frontend API +  8.2.0
diff --git a/docs/d3/d6c/classcudnn__frontend_1_1PointWiseDesc__v8-members.html b/docs/d3/d6c/classcudnn__frontend_1_1PointWiseDesc__v8-members.html index 5615c5e96..668eb1642 100644 --- a/docs/d3/d6c/classcudnn__frontend_1_1PointWiseDesc__v8-members.html +++ b/docs/d3/d6c/classcudnn__frontend_1_1PointWiseDesc__v8-members.html @@ -5,7 +5,7 @@ -CUDNN API: Member List +CUDNN Frontend API: Member List @@ -28,8 +28,8 @@ -
CUDNN API -  8 +
CUDNN Frontend API +  8.2.0
@@ -90,15 +90,17 @@ BackendDescriptor(ManagedOpaqueDescriptor pointer_, cudnnStatus_t status_, std::string err_msg_)cudnn_frontend::BackendDescriptorinlineprotected BackendDescriptor()=defaultcudnn_frontend::BackendDescriptorprotected describe() const overridecudnn_frontend::PointWiseDesc_v8inlinevirtual - err_msgcudnn_frontend::BackendDescriptormutableprotected - get_desc() constcudnn_frontend::BackendDescriptorinline - get_error() constcudnn_frontend::BackendDescriptorinline - get_raw_desc() constcudnn_frontend::BackendDescriptorinline - get_status() constcudnn_frontend::BackendDescriptorinline - getPointWiseMode() constcudnn_frontend::PointWiseDesc_v8inline - getPortCount() constcudnn_frontend::PointWiseDesc_v8inline - initialize_managed_backend_pointer(cudnnBackendDescriptorType_t type)cudnn_frontend::BackendDescriptorinline - lower_clipcudnn_frontend::PointWiseDesc_v8private + elu_alphacudnn_frontend::PointWiseDesc_v8private + err_msgcudnn_frontend::BackendDescriptormutableprotected + get_desc() constcudnn_frontend::BackendDescriptorinline + get_error() constcudnn_frontend::BackendDescriptorinline + get_raw_desc() constcudnn_frontend::BackendDescriptorinline + get_status() constcudnn_frontend::BackendDescriptorinline + getPointWiseMode() constcudnn_frontend::PointWiseDesc_v8inline + getPortCount() constcudnn_frontend::PointWiseDesc_v8inline + initialize_managed_backend_pointer(cudnnBackendDescriptorType_t type)cudnn_frontend::BackendDescriptorinline + lower_clipcudnn_frontend::PointWiseDesc_v8private + lower_clip_slopecudnn_frontend::PointWiseDesc_v8private math_precisioncudnn_frontend::PointWiseDesc_v8private modecudnn_frontend::PointWiseDesc_v8private nan_propagationcudnn_frontend::PointWiseDesc_v8private @@ -110,7 +112,9 @@ PointWiseDescBuilder_v8 classcudnn_frontend::PointWiseDesc_v8friend set_error(const char *message) constcudnn_frontend::BackendDescriptorinline set_status(cudnnStatus_t const status_) constcudnn_frontend::BackendDescriptorinline - statuscudnn_frontend::BackendDescriptormutableprotected + softplus_betacudnn_frontend::PointWiseDesc_v8private + statuscudnn_frontend::BackendDescriptormutableprotected + swish_betacudnn_frontend::PointWiseDesc_v8private upper_clipcudnn_frontend::PointWiseDesc_v8private ~PointWiseDesc_v8()=defaultcudnn_frontend::PointWiseDesc_v8
diff --git a/docs/d3/d8e/classcudnn__frontend_1_1EngineBuilder__v8-members.html b/docs/d3/d8e/classcudnn__frontend_1_1EngineBuilder__v8-members.html index 6c6df320a..cd17b1c46 100644 --- a/docs/d3/d8e/classcudnn__frontend_1_1EngineBuilder__v8-members.html +++ b/docs/d3/d8e/classcudnn__frontend_1_1EngineBuilder__v8-members.html @@ -5,7 +5,7 @@ -CUDNN API: Member List +CUDNN Frontend API: Member List @@ -28,8 +28,8 @@ -
CUDNN API -  8 +
CUDNN Frontend API +  8.2.0
@@ -95,9 +95,8 @@ operator=(EngineBuilder_v8 const &)=deletecudnn_frontend::EngineBuilder_v8 setGlobalEngineIdx(int64_t idx_) -> EngineBuilder_v8 &cudnn_frontend::EngineBuilder_v8inline setOperationGraph(OperationGraph_v8 const &opGraph_) -> EngineBuilder_v8 &cudnn_frontend::EngineBuilder_v8inline - setOperationGraph(cudnnBackendDescriptor_t desc_) -> EngineBuilder_v8 &cudnn_frontend::EngineBuilder_v8inline - setOperationGraph(ManagedOpaqueDescriptor desc_) -> EngineBuilder_v8 &cudnn_frontend::EngineBuilder_v8inline - ~EngineBuilder_v8()=defaultcudnn_frontend::EngineBuilder_v8 + setOperationGraph(ManagedOpaqueDescriptor desc_) -> EngineBuilder_v8 &cudnn_frontend::EngineBuilder_v8inline + ~EngineBuilder_v8()=defaultcudnn_frontend::EngineBuilder_v8
diff --git a/docs/d3/d90/classcudnn__frontend_1_1ConvDesc__v8-members.html b/docs/d3/d90/classcudnn__frontend_1_1ConvDesc__v8-members.html index 1f9358f54..82f169faf 100644 --- a/docs/d3/d90/classcudnn__frontend_1_1ConvDesc__v8-members.html +++ b/docs/d3/d90/classcudnn__frontend_1_1ConvDesc__v8-members.html @@ -5,7 +5,7 @@ -CUDNN API: Member List +CUDNN Frontend API: Member List @@ -28,8 +28,8 @@ -
CUDNN API -  8 +
CUDNN Frontend API +  8.2.0
diff --git a/docs/d3/d92/group__OperationBuilder__v8.html b/docs/d3/d92/group__OperationBuilder__v8.html index 7c2cc6074..52fde7a29 100644 --- a/docs/d3/d92/group__OperationBuilder__v8.html +++ b/docs/d3/d92/group__OperationBuilder__v8.html @@ -5,7 +5,7 @@ -CUDNN API: OperationBuilder_v8 +CUDNN Frontend API: OperationBuilder_v8 @@ -28,8 +28,8 @@ -
CUDNN API -  8 +
CUDNN Frontend API +  8.2.0
@@ -99,8 +99,24 @@   auto cudnn_frontend::OperationBuilder_v8::setwDesc (Tensor_v8 const &tensor) -> OperationBuilder_v8 &   +auto cudnn_frontend::OperationBuilder_v8::setdyDesc (ManagedOpaqueDescriptor const &raw_tensor) -> OperationBuilder_v8 & +  +auto cudnn_frontend::OperationBuilder_v8::setdyDesc (Tensor_v8 const &tensor) -> OperationBuilder_v8 & +  +auto cudnn_frontend::OperationBuilder_v8::setdxDesc (Tensor_v8 const &tensor) -> OperationBuilder_v8 & +  +auto cudnn_frontend::OperationBuilder_v8::setdwDesc (Tensor_v8 const &tensor) -> OperationBuilder_v8 & +  auto cudnn_frontend::OperationBuilder_v8::setcDesc (ConvDesc_v8 const &conv) -> OperationBuilder_v8 &   +auto cudnn_frontend::OperationBuilder_v8::setaMatDesc (Tensor_v8 const &tensor) -> OperationBuilder_v8 & +  +auto cudnn_frontend::OperationBuilder_v8::setbMatDesc (Tensor_v8 const &tensor) -> OperationBuilder_v8 & +  +auto cudnn_frontend::OperationBuilder_v8::setcMatDesc (Tensor_v8 const &tensor) -> OperationBuilder_v8 & +  +auto cudnn_frontend::OperationBuilder_v8::setmatmulDesc (MatMulDesc_v8 const &matmulDesc) -> OperationBuilder_v8 & +  auto cudnn_frontend::OperationBuilder_v8::setpwDesc (PointWiseDesc_v8 const &pointWiseDesc) -> OperationBuilder_v8 &   auto cudnn_frontend::OperationBuilder_v8::setAlpha (float alpha) -> OperationBuilder_v8 & @@ -145,9 +161,9 @@

-

Definition at line 248 of file cudnn_frontend_Operation.h.

+

Definition at line 375 of file cudnn_frontend_Operation.h.

-

References cudnn_frontend::Operation_v8::op_mode.

+

References cudnn_frontend::Operation_v8::op_mode.

@@ -175,9 +191,9 @@

-

Definition at line 206 of file cudnn_frontend_Operation.h.

+

Definition at line 333 of file cudnn_frontend_Operation.h.

-

References cudnn_frontend::Operation_v8::alpha_d, cudnn_frontend::Operation_v8::alpha_s, and cudnn_frontend::Operation_v8::alphabetaType.

+

References cudnn_frontend::Operation_v8::alpha_d, cudnn_frontend::Operation_v8::alpha_s, and cudnn_frontend::Operation_v8::alphabetaType.

@@ -205,9 +221,9 @@

-

Definition at line 213 of file cudnn_frontend_Operation.h.

+

Definition at line 340 of file cudnn_frontend_Operation.h.

-

References cudnn_frontend::Operation_v8::alpha_d, cudnn_frontend::Operation_v8::alpha_s, and cudnn_frontend::Operation_v8::alphabetaType.

+

References cudnn_frontend::Operation_v8::alpha_d, cudnn_frontend::Operation_v8::alpha_s, and cudnn_frontend::Operation_v8::alphabetaType.

@@ -235,9 +251,9 @@

-

Definition at line 220 of file cudnn_frontend_Operation.h.

+

Definition at line 347 of file cudnn_frontend_Operation.h.

-

References cudnn_frontend::Operation_v8::alpha2_d, cudnn_frontend::Operation_v8::alpha2_s, and cudnn_frontend::Operation_v8::alphabetaType.

+

References cudnn_frontend::Operation_v8::alpha2_d, cudnn_frontend::Operation_v8::alpha2_s, and cudnn_frontend::Operation_v8::alphabetaType.

@@ -265,9 +281,39 @@

-

Definition at line 227 of file cudnn_frontend_Operation.h.

+

Definition at line 354 of file cudnn_frontend_Operation.h.

+ +

References cudnn_frontend::Operation_v8::alpha2_d, cudnn_frontend::Operation_v8::alpha2_s, and cudnn_frontend::Operation_v8::alphabetaType.

+ + + + +

◆ setaMatDesc()

+ +
+
+ + + + + +
+ + + + + + + + +
auto cudnn_frontend::OperationBuilder_v8::setaMatDesc (Tensor_v8 const & tensor) -> OperationBuilder_v8 &
+
+inline
+
@@ -295,9 +341,9 @@

-

Definition at line 155 of file cudnn_frontend_Operation.h.

+

Definition at line 192 of file cudnn_frontend_Operation.h.

-

References cudnn_frontend::Operation_v8::bdesc, and cudnn_frontend::set_error_and_throw_exception().

+

References cudnn_frontend::Operation_v8::bdesc, and cudnn_frontend::set_error_and_throw_exception().

@@ -325,9 +371,9 @@

-

Definition at line 234 of file cudnn_frontend_Operation.h.

+

Definition at line 361 of file cudnn_frontend_Operation.h.

-

References cudnn_frontend::Operation_v8::alphabetaType, cudnn_frontend::Operation_v8::beta_d, and cudnn_frontend::Operation_v8::beta_s.

+

References cudnn_frontend::Operation_v8::alphabetaType, cudnn_frontend::Operation_v8::beta_d, and cudnn_frontend::Operation_v8::beta_s.

@@ -355,9 +401,39 @@

-

Definition at line 241 of file cudnn_frontend_Operation.h.

+

Definition at line 368 of file cudnn_frontend_Operation.h.

-

References cudnn_frontend::Operation_v8::alphabetaType, cudnn_frontend::Operation_v8::beta_d, and cudnn_frontend::Operation_v8::beta_s.

+

References cudnn_frontend::Operation_v8::alphabetaType, cudnn_frontend::Operation_v8::beta_d, and cudnn_frontend::Operation_v8::beta_s.

+ + + + +

◆ setbMatDesc()

+ +
+
+ + + + + +
+ + + + + + + + +
auto cudnn_frontend::OperationBuilder_v8::setbMatDesc (Tensor_v8 const & tensor) -> OperationBuilder_v8 &
+
+inline
+
@@ -385,9 +461,189 @@

-

Definition at line 182 of file cudnn_frontend_Operation.h.

+

Definition at line 241 of file cudnn_frontend_Operation.h.

+ +

References cudnn_frontend::Operation_v8::cdesc, and cudnn_frontend::set_error_and_throw_exception().

+ + + + +

◆ setcMatDesc()

+ +
+
+ + + + + +
+ + + + + + + + +
auto cudnn_frontend::OperationBuilder_v8::setcMatDesc (Tensor_v8 const & tensor) -> OperationBuilder_v8 &
+
+inline
+
+
+ +

◆ setdwDesc()

+ +
+
+ + + + + +
+ + + + + + + + +
auto cudnn_frontend::OperationBuilder_v8::setdwDesc (Tensor_v8 const & tensor) -> OperationBuilder_v8 &
+
+inline
+
+ +

Definition at line 235 of file cudnn_frontend_Operation.h.

+ +

References cudnn_frontend::Operation_v8::dwdesc.

+ +
+
+ +

◆ setdxDesc()

+ +
+
+ + + + + +
+ + + + + + + + +
auto cudnn_frontend::OperationBuilder_v8::setdxDesc (Tensor_v8 const & tensor) -> OperationBuilder_v8 &
+
+inline
+
+ +

Definition at line 230 of file cudnn_frontend_Operation.h.

+ +

References cudnn_frontend::Operation_v8::dxdesc.

+ +
+
+ +

◆ setdyDesc() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
auto cudnn_frontend::OperationBuilder_v8::setdyDesc (ManagedOpaqueDescriptor const & raw_tensor) -> OperationBuilder_v8 &
+
+inline
+
+ +

Definition at line 220 of file cudnn_frontend_Operation.h.

+ +

References cudnn_frontend::Operation_v8::dydesc.

+ +
+
+ +

◆ setdyDesc() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
auto cudnn_frontend::OperationBuilder_v8::setdyDesc (Tensor_v8 const & tensor) -> OperationBuilder_v8 &
+
+inline
+
+ +

Definition at line 225 of file cudnn_frontend_Operation.h.

+ +

References cudnn_frontend::Operation_v8::dydesc.

+ +
+
+ +

◆ setmatmulDesc()

+ +
+
+ + + + + +
+ + + + + + + + +
auto cudnn_frontend::OperationBuilder_v8::setmatmulDesc (MatMulDesc_v8 const & matmulDesc) -> OperationBuilder_v8 &
+
+inline
+
@@ -415,9 +671,9 @@

-

Definition at line 193 of file cudnn_frontend_Operation.h.

+

Definition at line 296 of file cudnn_frontend_Operation.h.

-

References cudnn_frontend::Operation_v8::pointwise_mode, cudnn_frontend::Operation_v8::pointwise_port_count, cudnn_frontend::Operation_v8::pwdesc, and cudnn_frontend::set_error_and_throw_exception().

+

References cudnn_frontend::Operation_v8::is_pointwise_activation_bwd_op, cudnn_frontend::Operation_v8::is_pointwise_activation_fwd_op, cudnn_frontend::Operation_v8::is_pointwise_math_op, cudnn_frontend::Operation_v8::pointwise_mode, cudnn_frontend::Operation_v8::pointwise_port_count, cudnn_frontend::Operation_v8::pwdesc, and cudnn_frontend::set_error_and_throw_exception().

@@ -445,9 +701,9 @@

-

Definition at line 171 of file cudnn_frontend_Operation.h.

+

Definition at line 208 of file cudnn_frontend_Operation.h.

-

References cudnn_frontend::set_error_and_throw_exception(), and cudnn_frontend::Operation_v8::wdesc.

+

References cudnn_frontend::set_error_and_throw_exception(), and cudnn_frontend::Operation_v8::wdesc.

@@ -475,9 +731,9 @@

-

Definition at line 144 of file cudnn_frontend_Operation.h.

+

Definition at line 181 of file cudnn_frontend_Operation.h.

-

References cudnn_frontend::Operation_v8::xdesc.

+

References cudnn_frontend::Operation_v8::xdesc.

@@ -505,9 +761,9 @@

-

Definition at line 150 of file cudnn_frontend_Operation.h.

+

Definition at line 187 of file cudnn_frontend_Operation.h.

-

References cudnn_frontend::Operation_v8::xdesc.

+

References cudnn_frontend::Operation_v8::xdesc.

@@ -535,9 +791,9 @@

-

Definition at line 166 of file cudnn_frontend_Operation.h.

+

Definition at line 203 of file cudnn_frontend_Operation.h.

-

References cudnn_frontend::Operation_v8::ydesc.

+

References cudnn_frontend::Operation_v8::ydesc.

diff --git a/docs/d3/d92/group__OperationBuilder__v8.js b/docs/d3/d92/group__OperationBuilder__v8.js index a81b7b42d..7ea6f7e29 100644 --- a/docs/d3/d92/group__OperationBuilder__v8.js +++ b/docs/d3/d92/group__OperationBuilder__v8.js @@ -5,10 +5,18 @@ var group__OperationBuilder__v8 = [ "setAlpha", "d3/d92/group__OperationBuilder__v8.html#ga3c63744504f65383ce0b847bea804e3f", null ], [ "setAlpha2", "d3/d92/group__OperationBuilder__v8.html#ga06cdcfeda1b702412be41addd73bb947", null ], [ "setAlpha2", "d3/d92/group__OperationBuilder__v8.html#ga459671e9d26640528fcf683aaeef05df", null ], + [ "setaMatDesc", "d3/d92/group__OperationBuilder__v8.html#ga095c52c8f1b01ebb224265f9000195c0", null ], [ "setbDesc", "d3/d92/group__OperationBuilder__v8.html#ga17475846760b10ffdfa536cd92a5b135", null ], [ "setBeta", "d3/d92/group__OperationBuilder__v8.html#ga65a9ad73912ff46becc93ee451da6af5", null ], [ "setBeta", "d3/d92/group__OperationBuilder__v8.html#ga29752062b7308c8da0e625eb35431652", null ], + [ "setbMatDesc", "d3/d92/group__OperationBuilder__v8.html#gaa8eed29a0181e044ea0263ba655127ec", null ], [ "setcDesc", "d3/d92/group__OperationBuilder__v8.html#gaa82e018b6a9d514ad912b922f43adad2", null ], + [ "setcMatDesc", "d3/d92/group__OperationBuilder__v8.html#gaaf9d7cbc65c7c7526a6f15d4ad2952fa", null ], + [ "setdwDesc", "d3/d92/group__OperationBuilder__v8.html#ga5e5d463d5531a9378280fa4b1aee6f63", null ], + [ "setdxDesc", "d3/d92/group__OperationBuilder__v8.html#ga35fa5c453a6cd989f35e47c29e6ec665", null ], + [ "setdyDesc", "d3/d92/group__OperationBuilder__v8.html#ga08f3d4cb5138174127d0f6899f7bc53b", null ], + [ "setdyDesc", "d3/d92/group__OperationBuilder__v8.html#ga9e4a1e9a233b44cca5b65f0af172b001", null ], + [ "setmatmulDesc", "d3/d92/group__OperationBuilder__v8.html#ga3ca1f62832f998566c1b07b4b3c71db4", null ], [ "setpwDesc", "d3/d92/group__OperationBuilder__v8.html#gae6b06877b2e675b2a390f0b122100669", null ], [ "setwDesc", "d3/d92/group__OperationBuilder__v8.html#ga80466e517e980ba4953e085b3d4e3498", null ], [ "setxDesc", "d3/d92/group__OperationBuilder__v8.html#gaefa06fdaae3b28c6ef08a0189e2a3d3a", null ], diff --git a/docs/d3/d98/cudnn__frontend__Tensor_8h.html b/docs/d3/d98/cudnn__frontend__Tensor_8h.html index c90fb4240..5d584f98d 100644 --- a/docs/d3/d98/cudnn__frontend__Tensor_8h.html +++ b/docs/d3/d98/cudnn__frontend__Tensor_8h.html @@ -5,7 +5,7 @@ -CUDNN API: cudnn_frontend_Tensor.h File Reference +CUDNN Frontend API: cudnn_frontend_Tensor.h File Reference @@ -28,8 +28,8 @@ -
CUDNN API -  8 +
CUDNN Frontend API +  8.2.0
diff --git a/docs/d3/d98/cudnn__frontend__Tensor_8h_source.html b/docs/d3/d98/cudnn__frontend__Tensor_8h_source.html index b1337cd79..d5bbfb14d 100644 --- a/docs/d3/d98/cudnn__frontend__Tensor_8h_source.html +++ b/docs/d3/d98/cudnn__frontend__Tensor_8h_source.html @@ -5,7 +5,7 @@ -CUDNN API: cudnn_frontend_Tensor.h Source File +CUDNN Frontend API: cudnn_frontend_Tensor.h Source File @@ -28,8 +28,8 @@ -
CUDNN API -  8 +
CUDNN Frontend API +  8.2.0
diff --git a/docs/d3/ddd/group__ConvDescBuilder__v8.html b/docs/d3/ddd/group__ConvDescBuilder__v8.html index 0a3891bae..2ed932324 100644 --- a/docs/d3/ddd/group__ConvDescBuilder__v8.html +++ b/docs/d3/ddd/group__ConvDescBuilder__v8.html @@ -5,7 +5,7 @@ -CUDNN API: ConvDescBuilder_v8 +CUDNN Frontend API: ConvDescBuilder_v8 @@ -28,8 +28,8 @@ -
CUDNN API -  8 +
CUDNN Frontend API +  8.2.0
diff --git a/docs/d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html b/docs/d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html index 04543960c..4e2da94c1 100644 --- a/docs/d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html +++ b/docs/d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html @@ -5,7 +5,7 @@ -CUDNN API: cudnn_frontend::PointWiseDesc_v8 Class Reference +CUDNN Frontend API: cudnn_frontend::PointWiseDesc_v8 Class Reference @@ -28,8 +28,8 @@ -
CUDNN API -  8 +
CUDNN Frontend API +  8.2.0
@@ -165,8 +165,16 @@   double upper_clip = std::numeric_limits<double>::max()   -double lower_clip = std::numeric_limits<double>::min() +double lower_clip = 0.0   +double lower_clip_slope = 0.0 +  +double elu_alpha = 1.0 +  +double softplus_beta = 1.0 +  +double swish_beta = 1.0 +  @@ -197,10 +205,14 @@
  • nan_propagation
  • upper_clip
  • lower_clip
  • +
  • lower_clip_slope
  • +
  • elu_alpha
  • +
  • softplus_beta
  • +
  • swish_beta
  • Use PointWiseDesc_v8 to build this class. Describe returns a string describing the PointWise operation

    -

    Definition at line 51 of file cudnn_frontend_PointWiseDesc.h.

    +

    Definition at line 55 of file cudnn_frontend_PointWiseDesc.h.

    Constructor & Destructor Documentation

    ◆ PointWiseDesc_v8() [1/3]

    @@ -226,7 +238,7 @@

    -

    Definition at line 87 of file cudnn_frontend_PointWiseDesc.h.

    +

    Definition at line 100 of file cudnn_frontend_PointWiseDesc.h.

    References operator=(), PointWiseDesc_v8(), and ~PointWiseDesc_v8().

    @@ -255,7 +267,7 @@

    -

    Referenced by PointWiseDesc_v8().

    +

    Referenced by PointWiseDesc_v8().

    @@ -282,7 +294,7 @@

    -

    Referenced by PointWiseDesc_v8().

    +

    Referenced by PointWiseDesc_v8().

    @@ -340,9 +352,9 @@

    cudnn_frontend::BackendDescriptor.

    -

    Definition at line 55 of file cudnn_frontend_PointWiseDesc.h.

    +

    Definition at line 59 of file cudnn_frontend_PointWiseDesc.h.

    -

    References math_precision, and mode.

    +

    References math_precision, and mode.

    @@ -369,9 +381,9 @@

    -

    Definition at line 83 of file cudnn_frontend_PointWiseDesc.h.

    +

    Definition at line 96 of file cudnn_frontend_PointWiseDesc.h.

    -

    References mode.

    +

    References mode.

    @@ -398,9 +410,9 @@

    -

    Definition at line 64 of file cudnn_frontend_PointWiseDesc.h.

    +

    Definition at line 67 of file cudnn_frontend_PointWiseDesc.h.

    -

    References mode.

    +

    References mode.

    @@ -428,7 +440,7 @@

    -

    Referenced by cudnn_frontend::PointWiseDescBuilder_v8::build(), and PointWiseDesc_v8().

    +

    Referenced by cudnn_frontend::PointWiseDescBuilder_v8::build(), and PointWiseDesc_v8().

    @@ -453,13 +465,37 @@

    -

    Definition at line 53 of file cudnn_frontend_PointWiseDesc.h.

    +

    Definition at line 57 of file cudnn_frontend_PointWiseDesc.h.

    -

    Referenced by cudnn_frontend::PointWiseDescBuilder_v8::build().

    +

    Referenced by cudnn_frontend::PointWiseDescBuilder_v8::build().

    Member Data Documentation

    + +

    ◆ elu_alpha

    + +
    +
    +

    Friends

    + + + + +
    + + + + +
    double cudnn_frontend::PointWiseDesc_v8::elu_alpha = 1.0
    +
    +private
    +
    + +

    Definition at line 126 of file cudnn_frontend_PointWiseDesc.h.

    + +
    +

    ◆ lower_clip

    @@ -470,7 +506,31 @@

    - + + +
    double cudnn_frontend::PointWiseDesc_v8::lower_clip = std::numeric_limits<double>::min()double cudnn_frontend::PointWiseDesc_v8::lower_clip = 0.0
    + + +private + + +

    +
    + +

    ◆ lower_clip_slope

    + +
    +
    + + + @@ -480,7 +540,7 @@

    -

    Definition at line 107 of file cudnn_frontend_PointWiseDesc.h.

    +

    Definition at line 125 of file cudnn_frontend_PointWiseDesc.h.

    @@ -504,9 +564,9 @@

    -

    Definition at line 103 of file cudnn_frontend_PointWiseDesc.h.

    +

    Definition at line 120 of file cudnn_frontend_PointWiseDesc.h.

    -

    Referenced by describe().

    +

    Referenced by describe().

    @@ -530,9 +590,9 @@

    -

    Definition at line 104 of file cudnn_frontend_PointWiseDesc.h.

    +

    Definition at line 121 of file cudnn_frontend_PointWiseDesc.h.

    -

    Referenced by describe(), getPointWiseMode(), and getPortCount().

    +

    Referenced by describe(), getPointWiseMode(), and getPortCount().

    @@ -556,7 +616,55 @@

    -

    Definition at line 105 of file cudnn_frontend_PointWiseDesc.h.

    +

    Definition at line 122 of file cudnn_frontend_PointWiseDesc.h.

    + + + + +

    ◆ softplus_beta

    + +
    +
    +

    + + +
    double cudnn_frontend::PointWiseDesc_v8::lower_clip_slope = 0.0
    + + + + +
    + + + + +
    double cudnn_frontend::PointWiseDesc_v8::softplus_beta = 1.0
    +
    +private
    +
    + +

    Definition at line 127 of file cudnn_frontend_PointWiseDesc.h.

    + +
    +
    + +

    ◆ swish_beta

    + +
    +
    + + + + + +
    + + + + +
    double cudnn_frontend::PointWiseDesc_v8::swish_beta = 1.0
    +
    +private
    +
    + +

    Definition at line 128 of file cudnn_frontend_PointWiseDesc.h.

    @@ -580,7 +688,7 @@

    -

    Definition at line 106 of file cudnn_frontend_PointWiseDesc.h.

    +

    Definition at line 123 of file cudnn_frontend_PointWiseDesc.h.

    diff --git a/docs/d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.js b/docs/d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.js index d665e2915..2433d1a4b 100644 --- a/docs/d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.js +++ b/docs/d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.js @@ -9,9 +9,13 @@ var classcudnn__frontend_1_1PointWiseDesc__v8 = [ "getPortCount", "d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#a81b0fa4b9ff8bfd2c23ae704f7211962", null ], [ "operator=", "d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#ae3cd0c0051c7e29a9ad86b80308429f3", null ], [ "PointWiseDescBuilder_v8", "d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#a1407b6ad40df9af7b191fdf636c2c508", null ], + [ "elu_alpha", "d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#a246795e9bc43f846f701ae4214953412", null ], [ "lower_clip", "d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#a26f1b0f84dc331ca9f1330cf6f425d36", null ], + [ "lower_clip_slope", "d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#ad8731460bbcf7cb2804dd3a9840f276e", null ], [ "math_precision", "d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#a7f1bee44a57b6dad1ce493cd18ffbc18", null ], [ "mode", "d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#ad6d99d57f2a5b345fe5af5bc777b8d1c", null ], [ "nan_propagation", "d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#a740aed43da4ed8ab351d926cee6bfc6a", null ], + [ "softplus_beta", "d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#a346bf4a4ca5e45b0f19dc8f2fb6b6148", null ], + [ "swish_beta", "d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#aff19ca9077ac2dca8a9f78df586e11db", null ], [ "upper_clip", "d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#afcb75336d3b99afcec3bb947c1f1a0e8", null ] ]; \ No newline at end of file diff --git a/docs/d4/d30/classcudnn__frontend_1_1Operation__v8.html b/docs/d4/d30/classcudnn__frontend_1_1Operation__v8.html index ee57643a0..ebe65e016 100644 --- a/docs/d4/d30/classcudnn__frontend_1_1Operation__v8.html +++ b/docs/d4/d30/classcudnn__frontend_1_1Operation__v8.html @@ -5,7 +5,7 @@ -CUDNN API: cudnn_frontend::Operation_v8 Class Reference +CUDNN Frontend API: cudnn_frontend::Operation_v8 Class Reference @@ -28,8 +28,8 @@ -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    @@ -105,9 +105,9 @@
    Collaboration graph
    - - - + + +
    @@ -167,10 +167,24 @@ + + + + + + + + + + + + + + @@ -189,6 +203,12 @@ + + + + + +
     
    ManagedOpaqueDescriptor bdesc = nullptr
     
    ManagedOpaqueDescriptor dydesc = nullptr
     
    ManagedOpaqueDescriptor dxdesc = nullptr
     
    ManagedOpaqueDescriptor dwdesc = nullptr
     
    ManagedOpaqueDescriptor cdesc = nullptr
     
    ManagedOpaqueDescriptor amatdesc = nullptr
     
    ManagedOpaqueDescriptor bmatdesc = nullptr
     
    ManagedOpaqueDescriptor cmatdesc = nullptr
     
    ManagedOpaqueDescriptor pwdesc = nullptr
     
    ManagedOpaqueDescriptor matmuldesc = nullptr
     
    cudnnBackendAttributeType_t alphabetaType = CUDNN_TYPE_FLOAT
     
    float alpha_s = 1.0f
     
    cudnnPointwiseMode_t pointwise_mode
     
    bool is_pointwise_activation_fwd_op = false
     
    bool is_pointwise_activation_bwd_op = false
     
    bool is_pointwise_math_op = false
     
    std::string operationTag
     
    @@ -219,13 +239,22 @@
  • xDesc
  • yDesc
  • wdesc
  • +
  • bdesc
  • +
  • dydesc
  • +
  • dxdesc
  • cdesc
  • +
  • amatdesc
  • +
  • bmatdesc
  • +
  • cmatdesc
  • +
  • pwdesc
  • +
  • matmuldesc
  • alpha
  • beta
  • +
  • alpha2
  • Use OperationBuilder_v8 to build this class. Describe returns a string describing the convolution operation

    -

    Definition at line 56 of file cudnn_frontend_Operation.h.

    +

    Definition at line 65 of file cudnn_frontend_Operation.h.

    Constructor & Destructor Documentation

    ◆ Operation_v8() [1/3]

    @@ -251,7 +280,7 @@

    -

    Definition at line 76 of file cudnn_frontend_Operation.h.

    +

    Definition at line 92 of file cudnn_frontend_Operation.h.

    @@ -278,7 +307,7 @@

    -

    Referenced by getTag().

    +

    Referenced by getTag().

    @@ -305,7 +334,7 @@

    -

    Referenced by getTag().

    +

    Referenced by getTag().

    @@ -363,9 +392,9 @@

    cudnn_frontend::BackendDescriptor.

    -

    Definition at line 60 of file cudnn_frontend_Operation.h.

    +

    Definition at line 69 of file cudnn_frontend_Operation.h.

    -

    References alpha2_d, alpha2_s, alpha_d, alpha_s, alphabetaType, bdesc, beta_d, beta_s, cdesc, op_mode, pwdesc, wdesc, xdesc, and ydesc.

    +

    References alpha2_d, alpha2_s, alpha_d, alpha_s, alphabetaType, amatdesc, bdesc, beta_d, beta_s, bmatdesc, cdesc, cmatdesc, dwdesc, dxdesc, dydesc, matmuldesc, op_mode, pwdesc, wdesc, xdesc, and ydesc.

    @@ -392,9 +421,9 @@

    -

    Definition at line 95 of file cudnn_frontend_Operation.h.

    +

    Definition at line 120 of file cudnn_frontend_Operation.h.

    -

    References ydesc.

    +

    References cmatdesc, op_mode, and ydesc.

    @@ -421,9 +450,9 @@

    -

    Definition at line 100 of file cudnn_frontend_Operation.h.

    +

    Definition at line 125 of file cudnn_frontend_Operation.h.

    -

    References Operation_v8(), operationTag, operator=(), and ~Operation_v8().

    +

    References Operation_v8(), operationTag, operator=(), and ~Operation_v8().

    @@ -451,7 +480,7 @@

    -

    Referenced by getTag().

    +

    Referenced by getTag().

    @@ -476,7 +505,7 @@

    -

    Definition at line 58 of file cudnn_frontend_Operation.h.

    +

    Definition at line 67 of file cudnn_frontend_Operation.h.

    @@ -501,9 +530,9 @@

    -

    Definition at line 123 of file cudnn_frontend_Operation.h.

    +

    Definition at line 155 of file cudnn_frontend_Operation.h.

    -

    Referenced by cudnn_frontend::OperationBuilder_v8::build(), describe(), and cudnn_frontend::OperationBuilder_v8::setAlpha2().

    +

    Referenced by cudnn_frontend::OperationBuilder_v8::build(), describe(), and cudnn_frontend::OperationBuilder_v8::setAlpha2().

    @@ -527,9 +556,9 @@

    -

    Definition at line 122 of file cudnn_frontend_Operation.h.

    +

    Definition at line 154 of file cudnn_frontend_Operation.h.

    -

    Referenced by cudnn_frontend::OperationBuilder_v8::build(), describe(), and cudnn_frontend::OperationBuilder_v8::setAlpha2().

    +

    Referenced by cudnn_frontend::OperationBuilder_v8::build(), describe(), and cudnn_frontend::OperationBuilder_v8::setAlpha2().

    @@ -553,9 +582,9 @@

    -

    Definition at line 123 of file cudnn_frontend_Operation.h.

    +

    Definition at line 155 of file cudnn_frontend_Operation.h.

    -

    Referenced by cudnn_frontend::OperationBuilder_v8::build(), describe(), and cudnn_frontend::OperationBuilder_v8::setAlpha().

    +

    Referenced by cudnn_frontend::OperationBuilder_v8::build(), describe(), and cudnn_frontend::OperationBuilder_v8::setAlpha().

    @@ -579,9 +608,9 @@

    -

    Definition at line 122 of file cudnn_frontend_Operation.h.

    +

    Definition at line 154 of file cudnn_frontend_Operation.h.

    -

    Referenced by cudnn_frontend::OperationBuilder_v8::build(), describe(), and cudnn_frontend::OperationBuilder_v8::setAlpha().

    +

    Referenced by cudnn_frontend::OperationBuilder_v8::build(), describe(), and cudnn_frontend::OperationBuilder_v8::setAlpha().

    @@ -605,9 +634,35 @@

    -

    Definition at line 121 of file cudnn_frontend_Operation.h.

    +

    Definition at line 153 of file cudnn_frontend_Operation.h.

    -

    Referenced by cudnn_frontend::OperationBuilder_v8::build(), describe(), cudnn_frontend::OperationBuilder_v8::setAlpha(), cudnn_frontend::OperationBuilder_v8::setAlpha2(), and cudnn_frontend::OperationBuilder_v8::setBeta().

    +

    Referenced by cudnn_frontend::OperationBuilder_v8::build(), describe(), cudnn_frontend::OperationBuilder_v8::setAlpha(), cudnn_frontend::OperationBuilder_v8::setAlpha2(), and cudnn_frontend::OperationBuilder_v8::setBeta().

    + + + + +

    ◆ amatdesc

    + +
    +
    +

    + + + + +
    + + + + +
    ManagedOpaqueDescriptor cudnn_frontend::Operation_v8::amatdesc = nullptr
    +
    +private
    +
    @@ -631,9 +686,9 @@

    -

    Definition at line 117 of file cudnn_frontend_Operation.h.

    +

    Definition at line 142 of file cudnn_frontend_Operation.h.

    -

    Referenced by cudnn_frontend::OperationBuilder_v8::build(), describe(), and cudnn_frontend::OperationBuilder_v8::setbDesc().

    +

    Referenced by cudnn_frontend::OperationBuilder_v8::build(), describe(), and cudnn_frontend::OperationBuilder_v8::setbDesc().

    @@ -657,9 +712,9 @@

    -

    Definition at line 123 of file cudnn_frontend_Operation.h.

    +

    Definition at line 155 of file cudnn_frontend_Operation.h.

    -

    Referenced by cudnn_frontend::OperationBuilder_v8::build(), describe(), and cudnn_frontend::OperationBuilder_v8::setBeta().

    +

    Referenced by cudnn_frontend::OperationBuilder_v8::build(), describe(), and cudnn_frontend::OperationBuilder_v8::setBeta().

    @@ -683,9 +738,35 @@

    -

    Definition at line 122 of file cudnn_frontend_Operation.h.

    +

    Definition at line 154 of file cudnn_frontend_Operation.h.

    -

    Referenced by cudnn_frontend::OperationBuilder_v8::build(), describe(), and cudnn_frontend::OperationBuilder_v8::setBeta().

    +

    Referenced by cudnn_frontend::OperationBuilder_v8::build(), describe(), and cudnn_frontend::OperationBuilder_v8::setBeta().

    + + + + +

    ◆ bmatdesc

    + +
    +
    + + + + + +
    + + + + +
    ManagedOpaqueDescriptor cudnn_frontend::Operation_v8::bmatdesc = nullptr
    +
    +private
    +
    @@ -709,9 +790,217 @@

    -

    Definition at line 118 of file cudnn_frontend_Operation.h.

    +

    Definition at line 146 of file cudnn_frontend_Operation.h.

    + +

    Referenced by cudnn_frontend::OperationBuilder_v8::build(), describe(), and cudnn_frontend::OperationBuilder_v8::setcDesc().

    + + + + +

    ◆ cmatdesc

    + +
    +
    + + + + + +
    + + + + +
    ManagedOpaqueDescriptor cudnn_frontend::Operation_v8::cmatdesc = nullptr
    +
    +private
    +
    +
    + +

    ◆ dwdesc

    + +
    +
    + + + + + +
    + + + + +
    ManagedOpaqueDescriptor cudnn_frontend::Operation_v8::dwdesc = nullptr
    +
    +private
    +
    +
    + +

    ◆ dxdesc

    + +
    +
    + + + + + +
    + + + + +
    ManagedOpaqueDescriptor cudnn_frontend::Operation_v8::dxdesc = nullptr
    +
    +private
    +
    +
    + +

    ◆ dydesc

    + +
    +
    + + + + + +
    + + + + +
    ManagedOpaqueDescriptor cudnn_frontend::Operation_v8::dydesc = nullptr
    +
    +private
    +
    +
    + +

    ◆ is_pointwise_activation_bwd_op

    + +
    +
    + + + + + +
    + + + + +
    bool cudnn_frontend::Operation_v8::is_pointwise_activation_bwd_op = false
    +
    +private
    +
    +
    + +

    ◆ is_pointwise_activation_fwd_op

    + +
    +
    + + + + + +
    + + + + +
    bool cudnn_frontend::Operation_v8::is_pointwise_activation_fwd_op = false
    +
    +private
    +
    +
    + +

    ◆ is_pointwise_math_op

    + +
    +
    + + + + + +
    + + + + +
    bool cudnn_frontend::Operation_v8::is_pointwise_math_op = false
    +
    +private
    +
    +
    + +

    ◆ matmuldesc

    + +
    +
    + + + + + +
    + + + + +
    ManagedOpaqueDescriptor cudnn_frontend::Operation_v8::matmuldesc = nullptr
    +
    +private
    +
    @@ -735,9 +1024,9 @@

    -

    Definition at line 112 of file cudnn_frontend_Operation.h.

    +

    Definition at line 137 of file cudnn_frontend_Operation.h.

    -

    Referenced by cudnn_frontend::OperationBuilder_v8::build(), describe(), and cudnn_frontend::OperationBuilder_v8::OperationBuilder_v8().

    +

    Referenced by cudnn_frontend::OperationBuilder_v8::build(), describe(), getOutputTensor(), and cudnn_frontend::OperationBuilder_v8::OperationBuilder_v8().

    @@ -761,9 +1050,9 @@

    -

    Definition at line 126 of file cudnn_frontend_Operation.h.

    +

    Definition at line 161 of file cudnn_frontend_Operation.h.

    -

    Referenced by cudnn_frontend::OperationBuilder_v8::build(), and getTag().

    +

    Referenced by cudnn_frontend::OperationBuilder_v8::build(), and getTag().

    @@ -787,9 +1076,9 @@

    -

    Definition at line 125 of file cudnn_frontend_Operation.h.

    +

    Definition at line 157 of file cudnn_frontend_Operation.h.

    -

    Referenced by cudnn_frontend::OperationBuilder_v8::build(), and cudnn_frontend::OperationBuilder_v8::setpwDesc().

    +

    Referenced by cudnn_frontend::OperationBuilder_v8::build(), and cudnn_frontend::OperationBuilder_v8::setpwDesc().

    @@ -813,9 +1102,9 @@

    -

    Definition at line 124 of file cudnn_frontend_Operation.h.

    +

    Definition at line 156 of file cudnn_frontend_Operation.h.

    -

    Referenced by cudnn_frontend::OperationBuilder_v8::build(), and cudnn_frontend::OperationBuilder_v8::setpwDesc().

    +

    Referenced by cudnn_frontend::OperationBuilder_v8::build(), and cudnn_frontend::OperationBuilder_v8::setpwDesc().

    @@ -839,9 +1128,9 @@

    -

    Definition at line 119 of file cudnn_frontend_Operation.h.

    +

    Definition at line 150 of file cudnn_frontend_Operation.h.

    -

    Referenced by cudnn_frontend::OperationBuilder_v8::build(), describe(), and cudnn_frontend::OperationBuilder_v8::setpwDesc().

    +

    Referenced by cudnn_frontend::OperationBuilder_v8::build(), describe(), and cudnn_frontend::OperationBuilder_v8::setpwDesc().

    @@ -865,9 +1154,9 @@

    -

    Definition at line 116 of file cudnn_frontend_Operation.h.

    +

    Definition at line 141 of file cudnn_frontend_Operation.h.

    -

    Referenced by cudnn_frontend::OperationBuilder_v8::build(), describe(), and cudnn_frontend::OperationBuilder_v8::setwDesc().

    +

    Referenced by cudnn_frontend::OperationBuilder_v8::build(), describe(), and cudnn_frontend::OperationBuilder_v8::setwDesc().

    @@ -891,9 +1180,9 @@

    -

    Definition at line 114 of file cudnn_frontend_Operation.h.

    +

    Definition at line 139 of file cudnn_frontend_Operation.h.

    -

    Referenced by cudnn_frontend::OperationBuilder_v8::build(), describe(), and cudnn_frontend::OperationBuilder_v8::setxDesc().

    +

    Referenced by cudnn_frontend::OperationBuilder_v8::build(), describe(), and cudnn_frontend::OperationBuilder_v8::setxDesc().

    @@ -917,9 +1206,9 @@

    -

    Definition at line 115 of file cudnn_frontend_Operation.h.

    +

    Definition at line 140 of file cudnn_frontend_Operation.h.

    -

    Referenced by cudnn_frontend::OperationBuilder_v8::build(), describe(), getOutputTensor(), and cudnn_frontend::OperationBuilder_v8::setyDesc().

    +

    Referenced by cudnn_frontend::OperationBuilder_v8::build(), describe(), getOutputTensor(), and cudnn_frontend::OperationBuilder_v8::setyDesc().

    diff --git a/docs/d4/d30/classcudnn__frontend_1_1Operation__v8.js b/docs/d4/d30/classcudnn__frontend_1_1Operation__v8.js index 8c1be4018..6af91fb76 100644 --- a/docs/d4/d30/classcudnn__frontend_1_1Operation__v8.js +++ b/docs/d4/d30/classcudnn__frontend_1_1Operation__v8.js @@ -14,10 +14,20 @@ var classcudnn__frontend_1_1Operation__v8 = [ "alpha_d", "d4/d30/classcudnn__frontend_1_1Operation__v8.html#aee00f6897786ce0f16963a7d2f57a2f8", null ], [ "alpha_s", "d4/d30/classcudnn__frontend_1_1Operation__v8.html#a4a71d73a1231c39e51a74f750586a733", null ], [ "alphabetaType", "d4/d30/classcudnn__frontend_1_1Operation__v8.html#a0414d5eb022c25584d60491f416e6449", null ], + [ "amatdesc", "d4/d30/classcudnn__frontend_1_1Operation__v8.html#ae0e0256b292acd560accc1c02a6e393b", null ], [ "bdesc", "d4/d30/classcudnn__frontend_1_1Operation__v8.html#a1305e0cdaeb029fd52eb189254afe18c", null ], [ "beta_d", "d4/d30/classcudnn__frontend_1_1Operation__v8.html#a1118f19807c9f58cc1d0892bdb1f8c94", null ], [ "beta_s", "d4/d30/classcudnn__frontend_1_1Operation__v8.html#a0f14ddfbaae6e62375c46dd0d5ed993d", null ], + [ "bmatdesc", "d4/d30/classcudnn__frontend_1_1Operation__v8.html#a0945c6296efc14ffc41122aaae3946b8", null ], [ "cdesc", "d4/d30/classcudnn__frontend_1_1Operation__v8.html#a19856fbb973574342efedc43134af3a7", null ], + [ "cmatdesc", "d4/d30/classcudnn__frontend_1_1Operation__v8.html#adea4f5ef82e61fc375fd2c3ee8e92147", null ], + [ "dwdesc", "d4/d30/classcudnn__frontend_1_1Operation__v8.html#a4f565db1b8b85ea43d60631cd3414f47", null ], + [ "dxdesc", "d4/d30/classcudnn__frontend_1_1Operation__v8.html#a4f30409838436d0c4dea5271af86f9b7", null ], + [ "dydesc", "d4/d30/classcudnn__frontend_1_1Operation__v8.html#adf6b55205eac4c52c0ab70e4758e33da", null ], + [ "is_pointwise_activation_bwd_op", "d4/d30/classcudnn__frontend_1_1Operation__v8.html#ab8c4c8c81e8cebc44cb725f4a4b4add9", null ], + [ "is_pointwise_activation_fwd_op", "d4/d30/classcudnn__frontend_1_1Operation__v8.html#a12d0d0fa40152f5205570f40e681795f", null ], + [ "is_pointwise_math_op", "d4/d30/classcudnn__frontend_1_1Operation__v8.html#a2e1e0fb15b7df300945cae2347db635a", null ], + [ "matmuldesc", "d4/d30/classcudnn__frontend_1_1Operation__v8.html#ac4b85cbb9ba522c98eb524a7712721af", null ], [ "op_mode", "d4/d30/classcudnn__frontend_1_1Operation__v8.html#a43cbfcab995a238e2001c4ec6543ae50", null ], [ "operationTag", "d4/d30/classcudnn__frontend_1_1Operation__v8.html#a736317246d52e774170bc60511870932", null ], [ "pointwise_mode", "d4/d30/classcudnn__frontend_1_1Operation__v8.html#a09f5151a90f805d81550a30617bcec0c", null ], diff --git a/docs/d4/d39/classcudnn__frontend_1_1OperationGraphBuilder__v8.html b/docs/d4/d39/classcudnn__frontend_1_1OperationGraphBuilder__v8.html index 1de8f0a78..5b2544ab6 100644 --- a/docs/d4/d39/classcudnn__frontend_1_1OperationGraphBuilder__v8.html +++ b/docs/d4/d39/classcudnn__frontend_1_1OperationGraphBuilder__v8.html @@ -5,7 +5,7 @@ -CUDNN API: cudnn_frontend::OperationGraphBuilder_v8 Class Reference +CUDNN Frontend API: cudnn_frontend::OperationGraphBuilder_v8 Class Reference @@ -28,8 +28,8 @@ -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    diff --git a/docs/d4/d57/cudnn__frontend__EngineConfigGenerator_8h__incl.map b/docs/d4/d57/cudnn__frontend__EngineConfigGenerator_8h__incl.map index 687f3ff40..ab09ce884 100644 --- a/docs/d4/d57/cudnn__frontend__EngineConfigGenerator_8h__incl.map +++ b/docs/d4/d57/cudnn__frontend__EngineConfigGenerator_8h__incl.map @@ -1,17 +1,18 @@ - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + diff --git a/docs/d4/d57/cudnn__frontend__EngineConfigGenerator_8h__incl.md5 b/docs/d4/d57/cudnn__frontend__EngineConfigGenerator_8h__incl.md5 index 9a5e3786f..8c83cabb8 100644 --- a/docs/d4/d57/cudnn__frontend__EngineConfigGenerator_8h__incl.md5 +++ b/docs/d4/d57/cudnn__frontend__EngineConfigGenerator_8h__incl.md5 @@ -1 +1 @@ -fd0e53bab802421f1224a782dd7177ed \ No newline at end of file +60df53963556d3563489debf6ab82e56 \ No newline at end of file diff --git a/docs/d4/d57/cudnn__frontend__EngineConfigGenerator_8h__incl.png b/docs/d4/d57/cudnn__frontend__EngineConfigGenerator_8h__incl.png index 1449c587e..9216c7911 100644 Binary files a/docs/d4/d57/cudnn__frontend__EngineConfigGenerator_8h__incl.png and b/docs/d4/d57/cudnn__frontend__EngineConfigGenerator_8h__incl.png differ diff --git a/docs/d4/d6b/group__EngineFallbackListBuilder__v8.html b/docs/d4/d6b/group__EngineFallbackListBuilder__v8.html index a018192c4..2356c3998 100644 --- a/docs/d4/d6b/group__EngineFallbackListBuilder__v8.html +++ b/docs/d4/d6b/group__EngineFallbackListBuilder__v8.html @@ -5,7 +5,7 @@ -CUDNN API: EngineFallbackListBuilder_v8 +CUDNN Frontend API: EngineFallbackListBuilder_v8 @@ -28,8 +28,8 @@ -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    diff --git a/docs/d4/d9b/classcudnn__frontend_1_1MatMulDesc__v8__inherit__graph.map b/docs/d4/d9b/classcudnn__frontend_1_1MatMulDesc__v8__inherit__graph.map new file mode 100644 index 000000000..0dc3121c6 --- /dev/null +++ b/docs/d4/d9b/classcudnn__frontend_1_1MatMulDesc__v8__inherit__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/d4/d9b/classcudnn__frontend_1_1MatMulDesc__v8__inherit__graph.md5 b/docs/d4/d9b/classcudnn__frontend_1_1MatMulDesc__v8__inherit__graph.md5 new file mode 100644 index 000000000..ec5db80da --- /dev/null +++ b/docs/d4/d9b/classcudnn__frontend_1_1MatMulDesc__v8__inherit__graph.md5 @@ -0,0 +1 @@ +224447b45958dee2279af62811592391 \ No newline at end of file diff --git a/docs/d4/d9b/classcudnn__frontend_1_1MatMulDesc__v8__inherit__graph.png b/docs/d4/d9b/classcudnn__frontend_1_1MatMulDesc__v8__inherit__graph.png new file mode 100644 index 000000000..eb11872b7 Binary files /dev/null and b/docs/d4/d9b/classcudnn__frontend_1_1MatMulDesc__v8__inherit__graph.png differ diff --git a/docs/d4/d9b/classcudnn__frontend_1_1PointWiseDescBuilder__v8__coll__graph.map b/docs/d4/d9b/classcudnn__frontend_1_1PointWiseDescBuilder__v8__coll__graph.map index 19c400e2e..0bc2f7bad 100644 --- a/docs/d4/d9b/classcudnn__frontend_1_1PointWiseDescBuilder__v8__coll__graph.map +++ b/docs/d4/d9b/classcudnn__frontend_1_1PointWiseDescBuilder__v8__coll__graph.map @@ -1,5 +1,5 @@ - + diff --git a/docs/d4/d9b/classcudnn__frontend_1_1PointWiseDescBuilder__v8__coll__graph.md5 b/docs/d4/d9b/classcudnn__frontend_1_1PointWiseDescBuilder__v8__coll__graph.md5 index f5cd83b0c..801cf4222 100644 --- a/docs/d4/d9b/classcudnn__frontend_1_1PointWiseDescBuilder__v8__coll__graph.md5 +++ b/docs/d4/d9b/classcudnn__frontend_1_1PointWiseDescBuilder__v8__coll__graph.md5 @@ -1 +1 @@ -cb0a6953dbc5ed2008e0fce76e070972 \ No newline at end of file +10632cf557be2df16f03da7c77a99765 \ No newline at end of file diff --git a/docs/d4/d9b/classcudnn__frontend_1_1PointWiseDescBuilder__v8__coll__graph.png b/docs/d4/d9b/classcudnn__frontend_1_1PointWiseDescBuilder__v8__coll__graph.png index 008e61f55..f15d2410d 100644 Binary files a/docs/d4/d9b/classcudnn__frontend_1_1PointWiseDescBuilder__v8__coll__graph.png and b/docs/d4/d9b/classcudnn__frontend_1_1PointWiseDescBuilder__v8__coll__graph.png differ diff --git a/docs/d4/da2/classcudnn__frontend_1_1PointWiseDesc__v8__coll__graph.md5 b/docs/d4/da2/classcudnn__frontend_1_1PointWiseDesc__v8__coll__graph.md5 index d9cc8e550..5324346ca 100644 --- a/docs/d4/da2/classcudnn__frontend_1_1PointWiseDesc__v8__coll__graph.md5 +++ b/docs/d4/da2/classcudnn__frontend_1_1PointWiseDesc__v8__coll__graph.md5 @@ -1 +1 @@ -e56b87b09f2e0c0708ace6e1e0a14f70 \ No newline at end of file +5ca6feab8b1e14ea638494ae24ca1cdc \ No newline at end of file diff --git a/docs/d4/da2/classcudnn__frontend_1_1PointWiseDesc__v8__coll__graph.png b/docs/d4/da2/classcudnn__frontend_1_1PointWiseDesc__v8__coll__graph.png index 77e2cc394..00d8bc8c4 100644 Binary files a/docs/d4/da2/classcudnn__frontend_1_1PointWiseDesc__v8__coll__graph.png and b/docs/d4/da2/classcudnn__frontend_1_1PointWiseDesc__v8__coll__graph.png differ diff --git a/docs/d4/dce/classcudnn__frontend_1_1VariantPackBuilder__v8.html b/docs/d4/dce/classcudnn__frontend_1_1VariantPackBuilder__v8.html index 1b5dc0941..af585064d 100644 --- a/docs/d4/dce/classcudnn__frontend_1_1VariantPackBuilder__v8.html +++ b/docs/d4/dce/classcudnn__frontend_1_1VariantPackBuilder__v8.html @@ -5,7 +5,7 @@ -CUDNN API: cudnn_frontend::VariantPackBuilder_v8 Class Reference +CUDNN Frontend API: cudnn_frontend::VariantPackBuilder_v8 Class Reference @@ -28,8 +28,8 @@ -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    diff --git a/docs/d4/de1/group__ExecutionPlanBuilder__v8.html b/docs/d4/de1/group__ExecutionPlanBuilder__v8.html index e4dbcbbce..30fffc7e7 100644 --- a/docs/d4/de1/group__ExecutionPlanBuilder__v8.html +++ b/docs/d4/de1/group__ExecutionPlanBuilder__v8.html @@ -5,7 +5,7 @@ -CUDNN API: ExecutionPlanBuilder_v8 +CUDNN Frontend API: ExecutionPlanBuilder_v8 @@ -28,8 +28,8 @@ -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    @@ -104,8 +104,6 @@ auto cudnn_frontend::ExecutionPlanBuilder_v8::setEngineConfig (EngineConfig_v8 const &engine_config_) -> ExecutionPlanBuilder_v8 &  Set engine Config for the Plan. More...
      -auto cudnn_frontend::ExecutionPlanBuilder_v8::setEngineConfig (cudnnBackendDescriptor_t &desc, std::string const &opGraphTag_="") -> ExecutionPlanBuilder_v8 & -  auto cudnn_frontend::ExecutionPlanBuilder_v8::setEngineConfig (ManagedOpaqueDescriptor &desc, std::string const &opGraphTag_="") -> ExecutionPlanBuilder_v8 &  Set engine Config for the Plan. More...
      @@ -114,7 +112,7 @@

    Set individual property of ExecutionPlan_v8 class

    Function Documentation

    -

    ◆ setEngineConfig() [1/3]

    +

    ◆ setEngineConfig() [1/2]

    @@ -141,48 +139,10 @@

    Definition at line 225 of file cudnn_frontend_ExecutionPlan.h.

    -

    -
    - -

    ◆ setEngineConfig() [2/3]

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    auto cudnn_frontend::ExecutionPlanBuilder_v8::setEngineConfig (cudnnBackendDescriptor_t & desc,
    std::string const & opGraphTag_ = "" 
    ) -> ExecutionPlanBuilder_v8 &
    -
    -inline
    -
    - -

    Definition at line 231 of file cudnn_frontend_ExecutionPlan.h.

    -
    -

    ◆ setEngineConfig() [3/3]

    +

    ◆ setEngineConfig() [2/2]

    @@ -217,7 +177,7 @@

    Definition at line 237 of file cudnn_frontend_ExecutionPlan.h.

    +

    Definition at line 233 of file cudnn_frontend_ExecutionPlan.h.

    diff --git a/docs/d4/de1/group__ExecutionPlanBuilder__v8.js b/docs/d4/de1/group__ExecutionPlanBuilder__v8.js index 3f7e5177c..6c82d6d97 100644 --- a/docs/d4/de1/group__ExecutionPlanBuilder__v8.js +++ b/docs/d4/de1/group__ExecutionPlanBuilder__v8.js @@ -1,7 +1,6 @@ var group__ExecutionPlanBuilder__v8 = [ [ "setEngineConfig", "d4/de1/group__ExecutionPlanBuilder__v8.html#gac5c23cff8c1424f71ef2cee2dc66cd3c", null ], - [ "setEngineConfig", "d4/de1/group__ExecutionPlanBuilder__v8.html#gaf7010781cc8c0583a2d841ac6d9ed521", null ], [ "setEngineConfig", "d4/de1/group__ExecutionPlanBuilder__v8.html#gae0f92d5445da53253ff3460ac6aefffa", null ], [ "setHandle", "d4/de1/group__ExecutionPlanBuilder__v8.html#ga4166679391fc2df54e25964c03ae6e8e", null ] ]; \ No newline at end of file diff --git a/docs/d5/d02/classcudnn__frontend_1_1PointWiseDescBuilder__v8.html b/docs/d5/d02/classcudnn__frontend_1_1PointWiseDescBuilder__v8.html index b6d888fa6..6f79275f4 100644 --- a/docs/d5/d02/classcudnn__frontend_1_1PointWiseDescBuilder__v8.html +++ b/docs/d5/d02/classcudnn__frontend_1_1PointWiseDescBuilder__v8.html @@ -5,7 +5,7 @@ -CUDNN API: cudnn_frontend::PointWiseDescBuilder_v8 Class Reference +CUDNN Frontend API: cudnn_frontend::PointWiseDescBuilder_v8 Class Reference @@ -28,8 +28,8 @@ -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    @@ -95,7 +95,7 @@
    Collaboration graph
    - + @@ -116,6 +116,18 @@ auto setMode (cudnnNanPropagation_t nan_mode_) -> PointWiseDescBuilder_v8 &  Set NaN propagation mode. More...
      +auto setReluLowerClip (double lower_clip_) -> PointWiseDescBuilder_v8 & +  +auto setReluUpperClip (double upper_clip_) -> PointWiseDescBuilder_v8 & +  +auto setReluLowerClipSlope (double lower_clip_slope_) -> PointWiseDescBuilder_v8 & +  +auto setEluAlpha (double elu_alpha_) -> PointWiseDescBuilder_v8 & +  +auto setSoftplusBeta (double softplus_beta_) -> PointWiseDescBuilder_v8 & +  +auto setSwishBeta (double swish_beta_) -> PointWiseDescBuilder_v8 & +  PointWiseDesc_v8 && build ()    PointWiseDescBuilder_v8 ()=default @@ -137,7 +149,7 @@

    Detailed Description

    PointWiseDescBuilder_v8 Class Helper class used to build PointWiseDesc_v8 class

    -

    Definition at line 113 of file cudnn_frontend_PointWiseDesc.h.

    +

    Definition at line 134 of file cudnn_frontend_PointWiseDesc.h.

    Constructor & Destructor Documentation

    ◆ PointWiseDescBuilder_v8() [1/3]

    @@ -266,9 +278,9 @@

    constructs the PointWiseDesc_v8 by calling the cudnn API Throws the appropriate error message

    -

    Definition at line 149 of file cudnn_frontend_PointWiseDesc.h.

    +

    Definition at line 206 of file cudnn_frontend_PointWiseDesc.h.

    -

    References cudnn_frontend::PointWiseDesc_v8::operator=(), cudnn_frontend::PointWiseDesc_v8::PointWiseDescBuilder_v8, cudnn_frontend::set_error_and_throw_exception(), and cudnn_frontend::BackendDescriptor::status.

    +

    References cudnn_frontend::PointWiseDesc_v8::operator=(), cudnn_frontend::PointWiseDesc_v8::PointWiseDescBuilder_v8, cudnn_frontend::set_error_and_throw_exception(), and cudnn_frontend::BackendDescriptor::status.

    @@ -296,6 +308,174 @@

    +

    +
    + +

    ◆ setEluAlpha()

    + +
    +
    + + + + + +
    + + + + + + + + +
    auto cudnn_frontend::PointWiseDescBuilder_v8::setEluAlpha (double elu_alpha_) -> PointWiseDescBuilder_v8 &
    +
    +inline
    +
    + +

    Definition at line 186 of file cudnn_frontend_PointWiseDesc.h.

    + +
    +
    + +

    ◆ setReluLowerClip()

    + +
    +
    + + + + + +
    + + + + + + + + +
    auto cudnn_frontend::PointWiseDescBuilder_v8::setReluLowerClip (double lower_clip_) -> PointWiseDescBuilder_v8 &
    +
    +inline
    +
    + +

    Definition at line 168 of file cudnn_frontend_PointWiseDesc.h.

    + +
    +
    + +

    ◆ setReluLowerClipSlope()

    + +
    +
    + + + + + +
    + + + + + + + + +
    auto cudnn_frontend::PointWiseDescBuilder_v8::setReluLowerClipSlope (double lower_clip_slope_) -> PointWiseDescBuilder_v8 &
    +
    +inline
    +
    + +

    Definition at line 180 of file cudnn_frontend_PointWiseDesc.h.

    + +
    +
    + +

    ◆ setReluUpperClip()

    + +
    +
    + + + + + +
    + + + + + + + + +
    auto cudnn_frontend::PointWiseDescBuilder_v8::setReluUpperClip (double upper_clip_) -> PointWiseDescBuilder_v8 &
    +
    +inline
    +
    + +

    Definition at line 174 of file cudnn_frontend_PointWiseDesc.h.

    + +
    +
    + +

    ◆ setSoftplusBeta()

    + +
    +
    + + + + + +
    + + + + + + + + +
    auto cudnn_frontend::PointWiseDescBuilder_v8::setSoftplusBeta (double softplus_beta_) -> PointWiseDescBuilder_v8 &
    +
    +inline
    +
    + +

    Definition at line 192 of file cudnn_frontend_PointWiseDesc.h.

    + +
    +
    + +

    ◆ setSwishBeta()

    + +
    +
    + + + + + +
    + + + + + + + + +
    auto cudnn_frontend::PointWiseDescBuilder_v8::setSwishBeta (double swish_beta_) -> PointWiseDescBuilder_v8 &
    +
    +inline
    +
    + +

    Definition at line 198 of file cudnn_frontend_PointWiseDesc.h.

    +

    Member Data Documentation

    @@ -319,7 +499,7 @@

    -

    Definition at line 245 of file cudnn_frontend_PointWiseDesc.h.

    +

    Definition at line 367 of file cudnn_frontend_PointWiseDesc.h.

    diff --git a/docs/d5/d02/classcudnn__frontend_1_1PointWiseDescBuilder__v8.js b/docs/d5/d02/classcudnn__frontend_1_1PointWiseDescBuilder__v8.js index c775dd9bf..825b24ce0 100644 --- a/docs/d5/d02/classcudnn__frontend_1_1PointWiseDescBuilder__v8.js +++ b/docs/d5/d02/classcudnn__frontend_1_1PointWiseDescBuilder__v8.js @@ -7,8 +7,14 @@ var classcudnn__frontend_1_1PointWiseDescBuilder__v8 = [ "build", "d5/d02/classcudnn__frontend_1_1PointWiseDescBuilder__v8.html#a5de642e4141705f8e06c4bf566f1d332", null ], [ "operator=", "d5/d02/classcudnn__frontend_1_1PointWiseDescBuilder__v8.html#ac0d140493e21b164bc21dd0bcbeeaa65", null ], [ "setClipping", "d2/db5/group__PointWiseDescBuilder__v8.html#ga124ebb4a416c645cd0b68f59545c62a8", null ], + [ "setEluAlpha", "d5/d02/classcudnn__frontend_1_1PointWiseDescBuilder__v8.html#a8bdbf27c37334f5b61a65eb1bd4b6a98", null ], [ "setMathPrecision", "d2/db5/group__PointWiseDescBuilder__v8.html#ga3efa065fc125c5af06bd0a9c543bdb9f", null ], [ "setMode", "d2/db5/group__PointWiseDescBuilder__v8.html#ga48264536e68f952e92a0bdbaa84d9363", null ], [ "setMode", "d2/db5/group__PointWiseDescBuilder__v8.html#gae5240136e19e0a4094036d48c6b1a3b7", null ], + [ "setReluLowerClip", "d5/d02/classcudnn__frontend_1_1PointWiseDescBuilder__v8.html#afdbe0ce3f7fb2f0d23251ccb7507bc69", null ], + [ "setReluLowerClipSlope", "d5/d02/classcudnn__frontend_1_1PointWiseDescBuilder__v8.html#aa93615adf69e7a87a06d0cea687794a6", null ], + [ "setReluUpperClip", "d5/d02/classcudnn__frontend_1_1PointWiseDescBuilder__v8.html#a0514e70d05a21a9c46bc66d1e61c28f5", null ], + [ "setSoftplusBeta", "d5/d02/classcudnn__frontend_1_1PointWiseDescBuilder__v8.html#ab692e5a2b3970346f68af33530ef98e8", null ], + [ "setSwishBeta", "d5/d02/classcudnn__frontend_1_1PointWiseDescBuilder__v8.html#aad41d0f7b6667383fd9012bc492a13c3", null ], [ "m_pointWiseDesc", "d5/d02/classcudnn__frontend_1_1PointWiseDescBuilder__v8.html#a804a2b5438f464185b16a4652fc14cf5", null ] ]; \ No newline at end of file diff --git a/docs/d5/d06/classcudnn__frontend_1_1ExecutionPlan__v8.html b/docs/d5/d06/classcudnn__frontend_1_1ExecutionPlan__v8.html index 404e44b00..a19bc8178 100644 --- a/docs/d5/d06/classcudnn__frontend_1_1ExecutionPlan__v8.html +++ b/docs/d5/d06/classcudnn__frontend_1_1ExecutionPlan__v8.html @@ -5,7 +5,7 @@ -CUDNN API: cudnn_frontend::ExecutionPlan_v8 Class Reference +CUDNN Frontend API: cudnn_frontend::ExecutionPlan_v8 Class Reference @@ -28,8 +28,8 @@ -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    @@ -279,7 +279,7 @@

    Definition at line 53 of file cudnn_frontend_ExecutionPlan.h.

    -

    Referenced by cudnn_frontend::ExecutionPlanBuilder_v8::build().

    +

    Referenced by cudnn_frontend::ExecutionPlanBuilder_v8::build().

    diff --git a/docs/d5/d0e/classcudnn__frontend_1_1MatMulDescBuilder__v8__coll__graph.map b/docs/d5/d0e/classcudnn__frontend_1_1MatMulDescBuilder__v8__coll__graph.map new file mode 100644 index 000000000..45afa4a00 --- /dev/null +++ b/docs/d5/d0e/classcudnn__frontend_1_1MatMulDescBuilder__v8__coll__graph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/docs/d5/d0e/classcudnn__frontend_1_1MatMulDescBuilder__v8__coll__graph.md5 b/docs/d5/d0e/classcudnn__frontend_1_1MatMulDescBuilder__v8__coll__graph.md5 new file mode 100644 index 000000000..113be1cbb --- /dev/null +++ b/docs/d5/d0e/classcudnn__frontend_1_1MatMulDescBuilder__v8__coll__graph.md5 @@ -0,0 +1 @@ +b9c9c4abff57a24f6a18cd9f847993d0 \ No newline at end of file diff --git a/docs/d5/d0e/classcudnn__frontend_1_1MatMulDescBuilder__v8__coll__graph.png b/docs/d5/d0e/classcudnn__frontend_1_1MatMulDescBuilder__v8__coll__graph.png new file mode 100644 index 000000000..13805aea2 Binary files /dev/null and b/docs/d5/d0e/classcudnn__frontend_1_1MatMulDescBuilder__v8__coll__graph.png differ diff --git a/docs/d5/d14/classcudnn__frontend_1_1OpaqueBackendPointer.html b/docs/d5/d14/classcudnn__frontend_1_1OpaqueBackendPointer.html index 734eee90a..b00160954 100644 --- a/docs/d5/d14/classcudnn__frontend_1_1OpaqueBackendPointer.html +++ b/docs/d5/d14/classcudnn__frontend_1_1OpaqueBackendPointer.html @@ -5,7 +5,7 @@ -CUDNN API: cudnn_frontend::OpaqueBackendPointer Class Reference +CUDNN Frontend API: cudnn_frontend::OpaqueBackendPointer Class Reference @@ -28,8 +28,8 @@ -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    @@ -94,8 +94,6 @@ Collaboration diagram for cudnn_frontend::OpaqueBackendPointer:
    Collaboration graph
    - -
    @@ -92,8 +92,6 @@ Include dependency graph for cudnn_frontend_Filters.h:
    - -
    This graph shows which files directly or indirectly include this file:
    diff --git a/docs/d5/d36/cudnn__frontend__Filters_8h_source.html b/docs/d5/d36/cudnn__frontend__Filters_8h_source.html index def203df4..40d34f7b2 100644 --- a/docs/d5/d36/cudnn__frontend__Filters_8h_source.html +++ b/docs/d5/d36/cudnn__frontend__Filters_8h_source.html @@ -5,7 +5,7 @@ -CUDNN API: cudnn_frontend_Filters.h Source File +CUDNN Frontend API: cudnn_frontend_Filters.h Source File @@ -28,8 +28,8 @@
    diff --git a/docs/d5/da4/classcudnn__frontend_1_1MatMulDesc__v8-members.html b/docs/d5/da4/classcudnn__frontend_1_1MatMulDesc__v8-members.html new file mode 100644 index 000000000..a60dfda36 --- /dev/null +++ b/docs/d5/da4/classcudnn__frontend_1_1MatMulDesc__v8-members.html @@ -0,0 +1,121 @@ + + + + + + + +CUDNN Frontend API: Member List + + + + + + + + + + + + + + +
    +
    +

    diff --git a/docs/d5/d36/cudnn__frontend__Filters_8h.html b/docs/d5/d36/cudnn__frontend__Filters_8h.html index 08bc77f50..cd074e08b 100644 --- a/docs/d5/d36/cudnn__frontend__Filters_8h.html +++ b/docs/d5/d36/cudnn__frontend__Filters_8h.html @@ -5,7 +5,7 @@ -CUDNN API: cudnn_frontend_Filters.h File Reference +CUDNN Frontend API: cudnn_frontend_Filters.h File Reference @@ -28,8 +28,8 @@

    -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    + + + + + +
    +
    CUDNN Frontend API +  8.2.0 +
    +
    + + + + + + + + + +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    cudnn_frontend::MatMulDesc_v8 Member List
    +
    +
    + +

    This is the complete list of members for cudnn_frontend::MatMulDesc_v8, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + +
    BackendDescriptor(ManagedOpaqueDescriptor pointer_, cudnnStatus_t status_, std::string err_msg_)cudnn_frontend::BackendDescriptorinlineprotected
    BackendDescriptor()=defaultcudnn_frontend::BackendDescriptorprotected
    describe() const overridecudnn_frontend::MatMulDesc_v8inlinevirtual
    err_msgcudnn_frontend::BackendDescriptormutableprotected
    get_desc() constcudnn_frontend::BackendDescriptorinline
    get_error() constcudnn_frontend::BackendDescriptorinline
    get_raw_desc() constcudnn_frontend::BackendDescriptorinline
    get_status() constcudnn_frontend::BackendDescriptorinline
    initialize_managed_backend_pointer(cudnnBackendDescriptorType_t type)cudnn_frontend::BackendDescriptorinline
    math_precisioncudnn_frontend::MatMulDesc_v8private
    MatMulDesc_v8(MatMulDesc_v8 &&from)cudnn_frontend::MatMulDesc_v8inline
    MatMulDesc_v8()=defaultcudnn_frontend::MatMulDesc_v8private
    MatMulDesc_v8(MatMulDesc_v8 const &)=deletecudnn_frontend::MatMulDesc_v8private
    MatMulDescBuilder_v8 classcudnn_frontend::MatMulDesc_v8friend
    operator=(MatMulDesc_v8 const &)=deletecudnn_frontend::MatMulDesc_v8private
    pointercudnn_frontend::BackendDescriptorprotected
    set_error(const char *message) constcudnn_frontend::BackendDescriptorinline
    set_status(cudnnStatus_t const status_) constcudnn_frontend::BackendDescriptorinline
    statuscudnn_frontend::BackendDescriptormutableprotected
    ~MatMulDesc_v8()=defaultcudnn_frontend::MatMulDesc_v8
    +
    + + + + diff --git a/docs/d5/dd1/cudnn__frontend__find__plan_8h__incl.map b/docs/d5/dd1/cudnn__frontend__find__plan_8h__incl.map index 587e68b4c..5dad7eb3c 100644 --- a/docs/d5/dd1/cudnn__frontend__find__plan_8h__incl.map +++ b/docs/d5/dd1/cudnn__frontend__find__plan_8h__incl.map @@ -1,18 +1,19 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + diff --git a/docs/d5/dd1/cudnn__frontend__find__plan_8h__incl.md5 b/docs/d5/dd1/cudnn__frontend__find__plan_8h__incl.md5 index 488eda5be..e4c096cfd 100644 --- a/docs/d5/dd1/cudnn__frontend__find__plan_8h__incl.md5 +++ b/docs/d5/dd1/cudnn__frontend__find__plan_8h__incl.md5 @@ -1 +1 @@ -fd1fc8970884b469457bdde6545b3238 \ No newline at end of file +f684299354d84580a0793034511b0550 \ No newline at end of file diff --git a/docs/d5/dd1/cudnn__frontend__find__plan_8h__incl.png b/docs/d5/dd1/cudnn__frontend__find__plan_8h__incl.png index ac676c119..6b672e217 100644 Binary files a/docs/d5/dd1/cudnn__frontend__find__plan_8h__incl.png and b/docs/d5/dd1/cudnn__frontend__find__plan_8h__incl.png differ diff --git a/docs/d5/dda/classcudnn__frontend_1_1ExecutionPlanBuilder__v8-members.html b/docs/d5/dda/classcudnn__frontend_1_1ExecutionPlanBuilder__v8-members.html index ce59a7c0f..c92d3fc90 100644 --- a/docs/d5/dda/classcudnn__frontend_1_1ExecutionPlanBuilder__v8-members.html +++ b/docs/d5/dda/classcudnn__frontend_1_1ExecutionPlanBuilder__v8-members.html @@ -5,7 +5,7 @@ -CUDNN API: Member List +CUDNN Frontend API: Member List @@ -28,8 +28,8 @@ -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    @@ -94,10 +94,9 @@ m_execution_plancudnn_frontend::ExecutionPlanBuilder_v8private operator=(ExecutionPlanBuilder_v8 const &)=deletecudnn_frontend::ExecutionPlanBuilder_v8 setEngineConfig(EngineConfig_v8 const &engine_config_) -> ExecutionPlanBuilder_v8 &cudnn_frontend::ExecutionPlanBuilder_v8inline - setEngineConfig(cudnnBackendDescriptor_t &desc, std::string const &opGraphTag_="") -> ExecutionPlanBuilder_v8 &cudnn_frontend::ExecutionPlanBuilder_v8inline - setEngineConfig(ManagedOpaqueDescriptor &desc, std::string const &opGraphTag_="") -> ExecutionPlanBuilder_v8 &cudnn_frontend::ExecutionPlanBuilder_v8inline - setHandle(cudnnHandle_t handle_) -> ExecutionPlanBuilder_v8 &cudnn_frontend::ExecutionPlanBuilder_v8inline - ~ExecutionPlanBuilder_v8()=defaultcudnn_frontend::ExecutionPlanBuilder_v8 + setEngineConfig(ManagedOpaqueDescriptor &desc, std::string const &opGraphTag_="") -> ExecutionPlanBuilder_v8 &cudnn_frontend::ExecutionPlanBuilder_v8inline + setHandle(cudnnHandle_t handle_) -> ExecutionPlanBuilder_v8 &cudnn_frontend::ExecutionPlanBuilder_v8inline + ~ExecutionPlanBuilder_v8()=defaultcudnn_frontend::ExecutionPlanBuilder_v8
    diff --git a/docs/d5/de2/cudnn__frontend_8h__dep__incl.md5 b/docs/d5/de2/cudnn__frontend_8h__dep__incl.md5 index 4d25a81b9..d394f2920 100644 --- a/docs/d5/de2/cudnn__frontend_8h__dep__incl.md5 +++ b/docs/d5/de2/cudnn__frontend_8h__dep__incl.md5 @@ -1 +1 @@ -6a741d47e1838daaa68432d35385f700 \ No newline at end of file +af0bc10e492008e9a2644aac8560dcfa \ No newline at end of file diff --git a/docs/d5/def/group__VariantPackBuilder__v8.html b/docs/d5/def/group__VariantPackBuilder__v8.html index 1934b7fbd..712b6c700 100644 --- a/docs/d5/def/group__VariantPackBuilder__v8.html +++ b/docs/d5/def/group__VariantPackBuilder__v8.html @@ -5,7 +5,7 @@ -CUDNN API: VariantPackBuilder_v8 +CUDNN Frontend API: VariantPackBuilder_v8 @@ -28,8 +28,8 @@ -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    diff --git a/docs/d6/d1b/structcudnn__frontend_1_1executionOption.html b/docs/d6/d1b/structcudnn__frontend_1_1executionOption.html index 9d4a7da1e..12c2b560b 100644 --- a/docs/d6/d1b/structcudnn__frontend_1_1executionOption.html +++ b/docs/d6/d1b/structcudnn__frontend_1_1executionOption.html @@ -5,7 +5,7 @@ -CUDNN API: cudnn_frontend::executionOption Struct Reference +CUDNN Frontend API: cudnn_frontend::executionOption Struct Reference @@ -28,8 +28,8 @@ -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    diff --git a/docs/d6/d32/cudnn__frontend__MatMulDesc_8h.html b/docs/d6/d32/cudnn__frontend__MatMulDesc_8h.html new file mode 100644 index 000000000..7ec930553 --- /dev/null +++ b/docs/d6/d32/cudnn__frontend__MatMulDesc_8h.html @@ -0,0 +1,152 @@ + + + + + + + +CUDNN Frontend API: cudnn_frontend_MatMulDesc.h File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    CUDNN Frontend API +  8.2.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    cudnn_frontend_MatMulDesc.h File Reference
    +
    +
    +
    #include <algorithm>
    +#include <array>
    +#include <functional>
    +#include <memory>
    +#include <sstream>
    +#include <utility>
    +#include <cudnn.h>
    +#include <cudnn_backend.h>
    +#include "cudnn_frontend_utils.h"
    +
    +Include dependency graph for cudnn_frontend_MatMulDesc.h:
    +
    +
    + + + + +
    +
    +This graph shows which files directly or indirectly include this file:
    +
    +
    + + + + + + + + + + + + +
    +
    +

    Go to the source code of this file.

    + + + + + + +

    +Classes

    class  cudnn_frontend::MatMulDesc_v8
     
    class  cudnn_frontend::MatMulDescBuilder_v8
     
    + + + +

    +Namespaces

     cudnn_frontend
     
    +
    +
    + + + + diff --git a/docs/d6/d32/cudnn__frontend__MatMulDesc_8h_source.html b/docs/d6/d32/cudnn__frontend__MatMulDesc_8h_source.html new file mode 100644 index 000000000..5a76abc66 --- /dev/null +++ b/docs/d6/d32/cudnn__frontend__MatMulDesc_8h_source.html @@ -0,0 +1,119 @@ + + + + + + + +CUDNN Frontend API: cudnn_frontend_MatMulDesc.h Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    CUDNN Frontend API +  8.2.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    cudnn_frontend_MatMulDesc.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    2  * Copyright (c) 2021, NVIDIA CORPORATION. All rights reserved.
    3  *
    4  * Permission is hereby granted, free of charge, to any person obtaining a
    5  * copy of this software and associated documentation files (the "Software"),
    6  * to deal in the Software without restriction, including without limitation
    7  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
    8  * and/or sell copies of the Software, and to permit persons to whom the
    9  * Software is furnished to do so, subject to the following conditions:
    10  *
    11  * The above copyright notice and this permission notice shall be included in
    12  * all copies or substantial portions of the Software.
    13  *
    14  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    15  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    16  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
    17  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    18  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
    19  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
    20  * DEALINGS IN THE SOFTWARE.
    21  */
    22 
    23 #pragma once
    24 
    25 #include <algorithm>
    26 #include <array>
    27 #include <functional>
    28 #include <memory>
    29 #include <sstream>
    30 #include <utility>
    31 
    32 #include <cudnn.h>
    33 #include <cudnn_backend.h>
    34 
    35 #include "cudnn_frontend_utils.h"
    36 
    37 namespace cudnn_frontend {
    48  public:
    49  friend class MatMulDescBuilder_v8;
    50  std::string
    51  describe() const override {
    52  std::stringstream ss;
    53  ss << "CUDNN_BACKEND_MATMUL_DESCRIPTOR :"
    54  << " Math precision " << (math_precision);
    55  return ss.str();
    56  }
    57 
    59  : BackendDescriptor(from.get_desc(), from.get_status(), from.get_error()),
    61 
    62  ~MatMulDesc_v8() = default;
    63 
    64  private:
    65  MatMulDesc_v8() = default;
    66  MatMulDesc_v8(MatMulDesc_v8 const &) = delete;
    68  operator=(MatMulDesc_v8 const &) = delete;
    69 
    70  cudnnDataType_t math_precision = CUDNN_DATA_FLOAT;
    71 };
    72 
    77  public:
    82  auto
    84  setMathPrecision(cudnnDataType_t data_type_) -> MatMulDescBuilder_v8 & {
    85  m_matMulDesc.math_precision = data_type_;
    86  return *this;
    87  }
    90  MatMulDesc_v8 &&
    93  build() {
    94  // Create a descriptor. Memory allocation happens here.
    95  auto status = m_matMulDesc.initialize_managed_backend_pointer(CUDNN_BACKEND_MATMUL_DESCRIPTOR);
    96  if (status != CUDNN_STATUS_SUCCESS) {
    97  set_error_and_throw_exception(&m_matMulDesc, status, "CUDNN_BACKEND_MATMUL_DESCRIPTOR: cudnnCreate Failed");
    98  return std::move(m_matMulDesc);
    99  }
    100 
    101  // Once Created lets set the descriptor parameters.
    102  status = cudnnBackendSetAttribute(m_matMulDesc.pointer->get_backend_descriptor(),
    103  CUDNN_ATTR_MATMUL_COMP_TYPE,
    104  CUDNN_TYPE_DATA_TYPE,
    105  1,
    106  &m_matMulDesc.math_precision);
    107  if (status != CUDNN_STATUS_SUCCESS) {
    109  &m_matMulDesc,
    110  status,
    111  "CUDNN_BACKEND_MATMUL_DESCRIPTOR: SetAttribute CUDNN_ATTR_MATMUL_COMP_TYPE Failed");
    112  return std::move(m_matMulDesc);
    113  }
    114 
    115  // Finalizing the descriptor
    116  status = cudnnBackendFinalize(m_matMulDesc.pointer->get_backend_descriptor());
    117  if (status != CUDNN_STATUS_SUCCESS) {
    118  set_error_and_throw_exception(&m_matMulDesc, status, "CUDNN_BACKEND_MATMUL_DESCRIPTOR: cudnnFinalize Failed");
    119  return std::move(m_matMulDesc);
    120  }
    121 
    122  return std::move(m_matMulDesc);
    123  }
    124 
    125  explicit MatMulDescBuilder_v8() = default;
    126  ~MatMulDescBuilder_v8() = default;
    128  MatMulDescBuilder_v8(MatMulDescBuilder_v8 const &) = delete;
    130  operator=(MatMulDescBuilder_v8 const &) = delete;
    131 
    132  private:
    134 };
    135 }
    MatMulDesc_v8 & operator=(MatMulDesc_v8 const &)=delete
    +
    static void set_error_and_throw_exception(BackendDescriptor const *desc, cudnnStatus_t status, const char *message)
    + + + + + +
    ManagedOpaqueDescriptor get_desc() const
    Returns a copy of underlying managed descriptor.
    + +
    std::string describe() const override
    Return a string describing the backend Descriptor.
    + + +
    auto setMathPrecision(cudnnDataType_t data_type_) -> MatMulDescBuilder_v8 &
    Set Math Precision Data Type for the Matmul Operation.
    +
    cudnnStatus_t get_status() const
    Current status of the descriptor.
    + + +
    const char * get_error() const
    Diagonistic error message if any.
    + + +
    cudnnStatus_t status
    Shared pointer of the OpaqueBackendPointer.
    +
    +
    + + + + diff --git a/docs/d6/d46/group__EngineHeuristicsQuery.html b/docs/d6/d46/group__EngineHeuristicsQuery.html index d6d290f0b..2da941732 100644 --- a/docs/d6/d46/group__EngineHeuristicsQuery.html +++ b/docs/d6/d46/group__EngineHeuristicsQuery.html @@ -5,7 +5,7 @@ -CUDNN API: EngineHeuristicsQuery +CUDNN Frontend API: EngineHeuristicsQuery @@ -28,8 +28,8 @@ -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    diff --git a/docs/d6/d51/cudnn__frontend__ExecutionPlan_8h.html b/docs/d6/d51/cudnn__frontend__ExecutionPlan_8h.html index 66401b18f..707d3eca0 100644 --- a/docs/d6/d51/cudnn__frontend__ExecutionPlan_8h.html +++ b/docs/d6/d51/cudnn__frontend__ExecutionPlan_8h.html @@ -5,7 +5,7 @@ -CUDNN API: cudnn_frontend_ExecutionPlan.h File Reference +CUDNN Frontend API: cudnn_frontend_ExecutionPlan.h File Reference @@ -28,8 +28,8 @@ -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    @@ -102,14 +102,15 @@
    - - - - - - - - + + + + + + + + +
    diff --git a/docs/d6/d51/cudnn__frontend__ExecutionPlan_8h_source.html b/docs/d6/d51/cudnn__frontend__ExecutionPlan_8h_source.html index e589229f9..1b5869775 100644 --- a/docs/d6/d51/cudnn__frontend__ExecutionPlan_8h_source.html +++ b/docs/d6/d51/cudnn__frontend__ExecutionPlan_8h_source.html @@ -5,7 +5,7 @@ -CUDNN API: cudnn_frontend_ExecutionPlan.h Source File +CUDNN Frontend API: cudnn_frontend_ExecutionPlan.h Source File @@ -28,8 +28,8 @@ -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    @@ -84,7 +84,7 @@
    cudnn_frontend_ExecutionPlan.h
    -Go to the documentation of this file.
    1 /*
    2  * Copyright (c) 2021, NVIDIA CORPORATION. All rights reserved.
    3  *
    4  * Permission is hereby granted, free of charge, to any person obtaining a
    5  * copy of this software and associated documentation files (the "Software"),
    6  * to deal in the Software without restriction, including without limitation
    7  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
    8  * and/or sell copies of the Software, and to permit persons to whom the
    9  * Software is furnished to do so, subject to the following conditions:
    10  *
    11  * The above copyright notice and this permission notice shall be included in
    12  * all copies or substantial portions of the Software.
    13  *
    14  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    15  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    16  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
    17  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    18  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
    19  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
    20  * DEALINGS IN THE SOFTWARE.
    21  */
    22 
    23 #pragma once
    24 
    25 #include <algorithm>
    26 #include <array>
    27 #include <functional>
    28 #include <memory>
    29 #include <sstream>
    30 #include <utility>
    31 
    32 #include <cudnn.h>
    33 #include <cudnn_backend.h>
    34 
    35 #include "cudnn_frontend_Engine.h"
    36 #include "cudnn_frontend_utils.h"
    37 
    38 namespace cudnn_frontend {
    52  public:
    54 
    56  : BackendDescriptor(from.get_desc(), from.get_status(), from.get_error()),
    57  handle(from.handle),
    59  planTag(from.planTag) {}
    60  ~ExecutionPlan_v8() = default;
    65  auto
    67  getWorkspaceSize(void) const -> int64_t {
    68  uint64_t workSpaceSize = 0;
    69  auto status = cudnnBackendGetAttribute(pointer->get_backend_descriptor(),
    70  CUDNN_ATTR_EXECUTION_PLAN_WORKSPACE_SIZE,
    71  CUDNN_TYPE_INT64,
    72  1,
    73  NULL,
    74  &workSpaceSize);
    75  if (status != CUDNN_STATUS_SUCCESS) {
    77  status,
    78  "CUDNN_BACKEND_EXECUTION_PLAN_DESCRIPTOR: GetAttribute "
    79  "CUDNN_ATTR_EXECUTION_PLAN_WORKSPACE_SIZE Failed");
    80  return workSpaceSize;
    81  }
    82  if (workSpaceSize < 0) {
    84  this, status, "CUDNN_BACKEND_EXECUTION_PLAN_DESCRIPTOR: GetAttribute Workspace Size Invalid");
    85  return workSpaceSize;
    86  }
    87  return workSpaceSize;
    88  }
    89 
    90  std::string
    91  describe() const override {
    92  std::stringstream ss;
    93  ss << "CUDNN_BACKEND_EXECUTION_PLAN_DESCRIPTOR :";
    94  return ss.str();
    95  }
    96 
    97  std::string const &
    98  getTag() const {
    99  return planTag;
    100  }
    101 
    102  private:
    103  void
    105  // Compute a unique tag for execution plan:
    106  auto status = CUDNN_STATUS_SUCCESS;
    107  std::stringstream tag{""};
    108  int64_t elemCount = 0, engineId = 0, numKnobs = 0;
    109 
    110  ManagedOpaqueDescriptor extractedEngine = make_shared_backend_pointer(CUDNN_BACKEND_ENGINE_DESCRIPTOR);
    111  status = extractedEngine->get_status();
    112  std::array<ManagedOpaqueDescriptor, CUDNN_KNOB_TYPE_COUNTS> extractedKnobs{{nullptr}};
    113  if (status != CUDNN_STATUS_SUCCESS) {
    115  this, status, "CUDNN_BACKEND_EXECUTION_PLAN_DESCRIPTOR: cudnnCreate Failed when compute tag");
    116  }
    117 
    118  for (auto &knob : extractedKnobs) {
    119  knob = make_shared_backend_pointer(CUDNN_BACKEND_KNOB_CHOICE_DESCRIPTOR);
    120  status = knob->get_status();
    121  if (status != CUDNN_STATUS_SUCCESS) {
    123  this, status, "CUDNN_BACKEND_EXECUTION_PLAN_DESCRIPTOR: cudnnCreate Failed when compute tag");
    124  }
    125  }
    126 
    127  cudnnBackendDescriptor_t extractedEngine_ = extractedEngine->get_backend_descriptor();
    128  std::array<cudnnBackendDescriptor_t, CUDNN_KNOB_TYPE_COUNTS> extractedKnobs_{{nullptr}};
    129  for (auto i = 0; i < extractedKnobs.size(); i++) {
    130  extractedKnobs_[i] = extractedKnobs[i]->get_backend_descriptor();
    131  }
    132 
    133  status = cudnnBackendGetAttribute(engine_config->get_backend_descriptor(),
    134  CUDNN_ATTR_ENGINECFG_ENGINE,
    135  CUDNN_TYPE_BACKEND_DESCRIPTOR,
    136  1,
    137  &elemCount,
    138  &extractedEngine_);
    139  if (status != CUDNN_STATUS_SUCCESS) {
    141  status,
    142  "CUDNN_BACKEND_EXECUTION_PLAN_DESCRIPTOR: GetAttribute "
    143  "CUDNN_ATTR_ENGINECFG_ENGINE Failed");
    144  }
    145  status = cudnnBackendGetAttribute(
    146  extractedEngine_, CUDNN_ATTR_ENGINE_GLOBAL_INDEX, CUDNN_TYPE_INT64, 1, &elemCount, &engineId);
    147  if (status != CUDNN_STATUS_SUCCESS) {
    149  status,
    150  "CUDNN_BACKEND_EXECUTION_PLAN_DESCRIPTOR: GetAttribute "
    151  "CUDNN_ATTR_ENGINE_GLOBAL_INDEX Failed");
    152  }
    153  tag << "eng" << engineId;
    154 
    155  status = cudnnBackendGetAttribute(engine_config->get_backend_descriptor(),
    156  CUDNN_ATTR_ENGINECFG_KNOB_CHOICES,
    157  CUDNN_TYPE_BACKEND_DESCRIPTOR,
    158  CUDNN_KNOB_TYPE_COUNTS,
    159  &numKnobs,
    160  &(extractedKnobs_[0]));
    161  if (status != CUDNN_STATUS_SUCCESS) {
    163  status,
    164  "CUDNN_BACKEND_EXECUTION_PLAN_DESCRIPTOR: GetAttribute "
    165  "CUDNN_ATTR_ENGINECFG_KNOB_CHOICES Failed");
    166  }
    167  if (numKnobs > CUDNN_KNOB_TYPE_COUNTS) {
    169  status,
    170  "CUDNN_BACKEND_EXECUTION_PLAN_DESCRIPTOR: GetAttribute "
    171  "numKnobs exceed the CUDNN_KNOB_TYPE_COUNTS");
    172  }
    173  for (int64_t idx = 0; idx < numKnobs; ++idx) {
    174  const cudnnBackendDescriptor_t &knob = extractedKnobs_[idx];
    175  cudnnBackendKnobType_t type = CUDNN_KNOB_TYPE_COUNTS;
    176  int64_t choice = -2;
    177  status = cudnnBackendGetAttribute(
    178  knob, CUDNN_ATTR_KNOB_CHOICE_KNOB_TYPE, CUDNN_TYPE_KNOB_TYPE, 1, nullptr, &type);
    179  if (status != CUDNN_STATUS_SUCCESS) {
    181  status,
    182  "computeTag CUDNN_BACKEND_EXECUTION_PLAN_DESCRIPTOR: GetAttribute "
    183  "CUDNN_ATTR_KNOB_CHOICE_KNOB_TYPE Failed");
    184  }
    185  status = cudnnBackendGetAttribute(
    186  knob, CUDNN_ATTR_KNOB_CHOICE_KNOB_VALUE, CUDNN_TYPE_INT64, 1, nullptr, &choice);
    187  if (status != CUDNN_STATUS_SUCCESS) {
    189  status,
    190  "CUDNN_BACKEND_EXECUTION_PLAN_DESCRIPTOR: GetAttribute "
    191  "CUDNN_ATTR_KNOB_CHOICE_KNOB_VALUE Failed");
    192  }
    193  tag << "_k" << type << "(" << choice << ")";
    194  }
    195  planTag += tag.str();
    196  }
    197 
    198  ExecutionPlan_v8() = default;
    199  ExecutionPlan_v8(ExecutionPlan_v8 const &) = delete;
    201  operator=(ExecutionPlan_v8 const &) = delete;
    202 
    204  cudnnHandle_t handle = nullptr;
    205  std::string planTag;
    206 };
    207 
    212  public:
    217  auto
    219  setHandle(cudnnHandle_t handle_) -> ExecutionPlanBuilder_v8 & {
    220  m_execution_plan.handle = handle_;
    221  return *this;
    222  }
    224  auto
    226  m_execution_plan.engine_config = engine_config_.get_desc();
    227  m_execution_plan.planTag = engine_config_.getTag();
    228  return *this;
    229  }
    230  auto
    231  setEngineConfig(cudnnBackendDescriptor_t &desc, std::string const &opGraphTag_ = "") -> ExecutionPlanBuilder_v8 & {
    232  // TBD
    233  return *this;
    234  }
    236  auto
    237  setEngineConfig(ManagedOpaqueDescriptor &desc, std::string const &opGraphTag_ = "") -> ExecutionPlanBuilder_v8 & {
    238  m_execution_plan.engine_config = desc;
    239  m_execution_plan.planTag = opGraphTag_;
    240  return *this;
    241  }
    247  build() {
    248  if (m_execution_plan.handle == nullptr) {
    250  &m_execution_plan,
    251  CUDNN_STATUS_BAD_PARAM,
    252  "CUDNN_BACKEND_EXECUTION_PLAN_DESCRIPTOR: Check and Set the CUDNN_ATTR_EXECUTION_PLAN_HANDLE");
    253  return std::move(m_execution_plan);
    254  };
    255  if (m_execution_plan.engine_config == nullptr) {
    257  &m_execution_plan,
    258  CUDNN_STATUS_BAD_PARAM,
    259  "CUDNN_BACKEND_EXECUTION_PLAN_DESCRIPTOR: Check and Set the CUDNN_ATTR_EXECUTION_PLAN_ENGINE_CONFIG");
    260  return std::move(m_execution_plan);
    261  };
    262 
    263  // Create a descriptor. Memory allocation happens here.
    264  auto status = m_execution_plan.initialize_managed_backend_pointer(CUDNN_BACKEND_EXECUTION_PLAN_DESCRIPTOR);
    265  if (status != CUDNN_STATUS_SUCCESS) {
    267  &m_execution_plan, status, "CUDNN_BACKEND_EXECUTION_PLAN_DESCRIPTOR: cudnnCreate Failed");
    268  return std::move(m_execution_plan);
    269  }
    270 
    271  status = cudnnBackendSetAttribute(m_execution_plan.pointer->get_backend_descriptor(),
    272  CUDNN_ATTR_EXECUTION_PLAN_ENGINE_CONFIG,
    273  CUDNN_TYPE_BACKEND_DESCRIPTOR,
    274  1,
    275  &(m_execution_plan.engine_config->get_backend_descriptor()));
    276  if (status != CUDNN_STATUS_SUCCESS) {
    278  &m_execution_plan,
    279  status,
    280  "CUDNN_BACKEND_EXECUTION_PLAN_DESCRIPTOR: SetAttribute CUDNN_ATTR_EXECUTION_PLAN_ENGINE_CONFIG Failed");
    281  return std::move(m_execution_plan);
    282  }
    283  status = cudnnBackendSetAttribute(m_execution_plan.pointer->get_backend_descriptor(),
    284  CUDNN_ATTR_EXECUTION_PLAN_HANDLE,
    285  CUDNN_TYPE_HANDLE,
    286  1,
    287  &m_execution_plan.handle);
    288  if (status != CUDNN_STATUS_SUCCESS) {
    290  &m_execution_plan,
    291  status,
    292  "CUDNN_BACKEND_EXECUTION_PLAN_DESCRIPTOR: SetAttribute CUDNN_ATTR_EXECUTION_PLAN_HANDLE Failed");
    293  return std::move(m_execution_plan);
    294  }
    295  // Finalizing the descriptor
    296  status = cudnnBackendFinalize(m_execution_plan.pointer->get_backend_descriptor());
    297  if (status != CUDNN_STATUS_SUCCESS) {
    299  &m_execution_plan, status, "CUDNN_BACKEND_EXECUTION_PLAN_DESCRIPTOR: cudnnFinalize Descriptor Failed");
    300  return std::move(m_execution_plan);
    301  }
    302 
    303  m_execution_plan.computeTag();
    304 
    305  return std::move(m_execution_plan);
    306  }
    307 
    308  explicit ExecutionPlanBuilder_v8() = default;
    309  ~ExecutionPlanBuilder_v8() = default;
    313  operator=(ExecutionPlanBuilder_v8 const &) = delete;
    314 
    315  private:
    317 };
    318 }
    auto setEngineConfig(EngineConfig_v8 const &engine_config_) -> ExecutionPlanBuilder_v8 &
    Set engine Config for the Plan.
    +Go to the documentation of this file.
    1 /*
    2  * Copyright (c) 2021, NVIDIA CORPORATION. All rights reserved.
    3  *
    4  * Permission is hereby granted, free of charge, to any person obtaining a
    5  * copy of this software and associated documentation files (the "Software"),
    6  * to deal in the Software without restriction, including without limitation
    7  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
    8  * and/or sell copies of the Software, and to permit persons to whom the
    9  * Software is furnished to do so, subject to the following conditions:
    10  *
    11  * The above copyright notice and this permission notice shall be included in
    12  * all copies or substantial portions of the Software.
    13  *
    14  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    15  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    16  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
    17  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    18  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
    19  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
    20  * DEALINGS IN THE SOFTWARE.
    21  */
    22 
    23 #pragma once
    24 
    25 #include <algorithm>
    26 #include <array>
    27 #include <functional>
    28 #include <memory>
    29 #include <sstream>
    30 #include <utility>
    31 
    32 #include <cudnn.h>
    33 #include <cudnn_backend.h>
    34 
    35 #include "cudnn_frontend_Engine.h"
    36 #include "cudnn_frontend_utils.h"
    37 
    38 namespace cudnn_frontend {
    52  public:
    54 
    56  : BackendDescriptor(from.get_desc(), from.get_status(), from.get_error()),
    58  handle(from.handle),
    59  planTag(from.planTag) {}
    60  ~ExecutionPlan_v8() = default;
    65  auto
    67  getWorkspaceSize(void) const -> int64_t {
    68  std::int64_t workSpaceSize = 0;
    69  auto status = cudnnBackendGetAttribute(pointer->get_backend_descriptor(),
    70  CUDNN_ATTR_EXECUTION_PLAN_WORKSPACE_SIZE,
    71  CUDNN_TYPE_INT64,
    72  1,
    73  NULL,
    74  &workSpaceSize);
    75  if (status != CUDNN_STATUS_SUCCESS) {
    77  status,
    78  "CUDNN_BACKEND_EXECUTION_PLAN_DESCRIPTOR: GetAttribute "
    79  "CUDNN_ATTR_EXECUTION_PLAN_WORKSPACE_SIZE Failed");
    80  return workSpaceSize;
    81  }
    82  if (workSpaceSize < 0) {
    84  this, status, "CUDNN_BACKEND_EXECUTION_PLAN_DESCRIPTOR: GetAttribute Workspace Size Invalid");
    85  return workSpaceSize;
    86  }
    87  return workSpaceSize;
    88  }
    89 
    90  std::string
    91  describe() const override {
    92  std::stringstream ss;
    93  ss << "CUDNN_BACKEND_EXECUTION_PLAN_DESCRIPTOR :";
    94  return ss.str();
    95  }
    96 
    97  std::string const &
    98  getTag() const {
    99  return planTag;
    100  }
    101 
    102  private:
    103  void
    105  // Compute a unique tag for execution plan:
    106  auto status = CUDNN_STATUS_SUCCESS;
    107  std::stringstream tag{""};
    108  int64_t elemCount = 0, engineId = 0, numKnobs = 0;
    109 
    110  ManagedOpaqueDescriptor extractedEngine = make_shared_backend_pointer(CUDNN_BACKEND_ENGINE_DESCRIPTOR);
    111  status = extractedEngine->get_status();
    112  std::array<ManagedOpaqueDescriptor, CUDNN_KNOB_TYPE_COUNTS> extractedKnobs{{nullptr}};
    113  if (status != CUDNN_STATUS_SUCCESS) {
    115  this, status, "CUDNN_BACKEND_EXECUTION_PLAN_DESCRIPTOR: cudnnCreate Failed when compute tag");
    116  }
    117 
    118  for (auto &knob : extractedKnobs) {
    119  knob = make_shared_backend_pointer(CUDNN_BACKEND_KNOB_CHOICE_DESCRIPTOR);
    120  status = knob->get_status();
    121  if (status != CUDNN_STATUS_SUCCESS) {
    123  this, status, "CUDNN_BACKEND_EXECUTION_PLAN_DESCRIPTOR: cudnnCreate Failed when compute tag");
    124  }
    125  }
    126 
    127  cudnnBackendDescriptor_t extractedEngine_ = extractedEngine->get_backend_descriptor();
    128  std::array<cudnnBackendDescriptor_t, CUDNN_KNOB_TYPE_COUNTS> extractedKnobs_{{nullptr}};
    129  for (std::uint32_t i = 0; i < extractedKnobs.size(); i++) {
    130  extractedKnobs_[i] = extractedKnobs[i]->get_backend_descriptor();
    131  }
    132 
    133  status = cudnnBackendGetAttribute(engine_config->get_backend_descriptor(),
    134  CUDNN_ATTR_ENGINECFG_ENGINE,
    135  CUDNN_TYPE_BACKEND_DESCRIPTOR,
    136  1,
    137  &elemCount,
    138  &extractedEngine_);
    139  if (status != CUDNN_STATUS_SUCCESS) {
    141  status,
    142  "CUDNN_BACKEND_EXECUTION_PLAN_DESCRIPTOR: GetAttribute "
    143  "CUDNN_ATTR_ENGINECFG_ENGINE Failed");
    144  }
    145  status = cudnnBackendGetAttribute(
    146  extractedEngine_, CUDNN_ATTR_ENGINE_GLOBAL_INDEX, CUDNN_TYPE_INT64, 1, &elemCount, &engineId);
    147  if (status != CUDNN_STATUS_SUCCESS) {
    149  status,
    150  "CUDNN_BACKEND_EXECUTION_PLAN_DESCRIPTOR: GetAttribute "
    151  "CUDNN_ATTR_ENGINE_GLOBAL_INDEX Failed");
    152  }
    153  tag << "eng" << engineId;
    154 
    155  status = cudnnBackendGetAttribute(engine_config->get_backend_descriptor(),
    156  CUDNN_ATTR_ENGINECFG_KNOB_CHOICES,
    157  CUDNN_TYPE_BACKEND_DESCRIPTOR,
    158  CUDNN_KNOB_TYPE_COUNTS,
    159  &numKnobs,
    160  &(extractedKnobs_[0]));
    161  if (status != CUDNN_STATUS_SUCCESS) {
    163  status,
    164  "CUDNN_BACKEND_EXECUTION_PLAN_DESCRIPTOR: GetAttribute "
    165  "CUDNN_ATTR_ENGINECFG_KNOB_CHOICES Failed");
    166  }
    167  if (numKnobs > CUDNN_KNOB_TYPE_COUNTS) {
    169  status,
    170  "CUDNN_BACKEND_EXECUTION_PLAN_DESCRIPTOR: GetAttribute "
    171  "numKnobs exceed the CUDNN_KNOB_TYPE_COUNTS");
    172  }
    173  for (int64_t idx = 0; idx < numKnobs; ++idx) {
    174  const cudnnBackendDescriptor_t &knob = extractedKnobs_[idx];
    175  cudnnBackendKnobType_t type = CUDNN_KNOB_TYPE_COUNTS;
    176  int64_t choice = -2;
    177  status = cudnnBackendGetAttribute(
    178  knob, CUDNN_ATTR_KNOB_CHOICE_KNOB_TYPE, CUDNN_TYPE_KNOB_TYPE, 1, nullptr, &type);
    179  if (status != CUDNN_STATUS_SUCCESS) {
    181  status,
    182  "computeTag CUDNN_BACKEND_EXECUTION_PLAN_DESCRIPTOR: GetAttribute "
    183  "CUDNN_ATTR_KNOB_CHOICE_KNOB_TYPE Failed");
    184  }
    185  status = cudnnBackendGetAttribute(
    186  knob, CUDNN_ATTR_KNOB_CHOICE_KNOB_VALUE, CUDNN_TYPE_INT64, 1, nullptr, &choice);
    187  if (status != CUDNN_STATUS_SUCCESS) {
    189  status,
    190  "CUDNN_BACKEND_EXECUTION_PLAN_DESCRIPTOR: GetAttribute "
    191  "CUDNN_ATTR_KNOB_CHOICE_KNOB_VALUE Failed");
    192  }
    193  tag << "_k" << type << "(" << choice << ")";
    194  }
    195  planTag += tag.str();
    196  }
    197 
    198  ExecutionPlan_v8() = default;
    199  ExecutionPlan_v8(ExecutionPlan_v8 const &) = delete;
    201  operator=(ExecutionPlan_v8 const &) = delete;
    202 
    204  cudnnHandle_t handle = nullptr;
    205  std::string planTag;
    206 };
    207 
    212  public:
    217  auto
    219  setHandle(cudnnHandle_t handle_) -> ExecutionPlanBuilder_v8 & {
    220  m_execution_plan.handle = handle_;
    221  return *this;
    222  }
    224  auto
    226  m_execution_plan.engine_config = engine_config_.get_desc();
    227  m_execution_plan.planTag = engine_config_.getTag();
    228  return *this;
    229  }
    230 
    232  auto
    233  setEngineConfig(ManagedOpaqueDescriptor &desc, std::string const &opGraphTag_ = "") -> ExecutionPlanBuilder_v8 & {
    234  m_execution_plan.engine_config = desc;
    235  m_execution_plan.planTag = opGraphTag_;
    236  return *this;
    237  }
    243  build() {
    244  if (m_execution_plan.handle == nullptr) {
    246  &m_execution_plan,
    247  CUDNN_STATUS_BAD_PARAM,
    248  "CUDNN_BACKEND_EXECUTION_PLAN_DESCRIPTOR: Check and Set the CUDNN_ATTR_EXECUTION_PLAN_HANDLE");
    249  return std::move(m_execution_plan);
    250  };
    251  if (m_execution_plan.engine_config == nullptr) {
    253  &m_execution_plan,
    254  CUDNN_STATUS_BAD_PARAM,
    255  "CUDNN_BACKEND_EXECUTION_PLAN_DESCRIPTOR: Check and Set the CUDNN_ATTR_EXECUTION_PLAN_ENGINE_CONFIG");
    256  return std::move(m_execution_plan);
    257  };
    258 
    259  // Create a descriptor. Memory allocation happens here.
    260  auto status = m_execution_plan.initialize_managed_backend_pointer(CUDNN_BACKEND_EXECUTION_PLAN_DESCRIPTOR);
    261  if (status != CUDNN_STATUS_SUCCESS) {
    263  &m_execution_plan, status, "CUDNN_BACKEND_EXECUTION_PLAN_DESCRIPTOR: cudnnCreate Failed");
    264  return std::move(m_execution_plan);
    265  }
    266 
    267  status = cudnnBackendSetAttribute(m_execution_plan.pointer->get_backend_descriptor(),
    268  CUDNN_ATTR_EXECUTION_PLAN_ENGINE_CONFIG,
    269  CUDNN_TYPE_BACKEND_DESCRIPTOR,
    270  1,
    271  &(m_execution_plan.engine_config->get_backend_descriptor()));
    272  if (status != CUDNN_STATUS_SUCCESS) {
    274  &m_execution_plan,
    275  status,
    276  "CUDNN_BACKEND_EXECUTION_PLAN_DESCRIPTOR: SetAttribute CUDNN_ATTR_EXECUTION_PLAN_ENGINE_CONFIG Failed");
    277  return std::move(m_execution_plan);
    278  }
    279  status = cudnnBackendSetAttribute(m_execution_plan.pointer->get_backend_descriptor(),
    280  CUDNN_ATTR_EXECUTION_PLAN_HANDLE,
    281  CUDNN_TYPE_HANDLE,
    282  1,
    283  &m_execution_plan.handle);
    284  if (status != CUDNN_STATUS_SUCCESS) {
    286  &m_execution_plan,
    287  status,
    288  "CUDNN_BACKEND_EXECUTION_PLAN_DESCRIPTOR: SetAttribute CUDNN_ATTR_EXECUTION_PLAN_HANDLE Failed");
    289  return std::move(m_execution_plan);
    290  }
    291  // Finalizing the descriptor
    292  status = cudnnBackendFinalize(m_execution_plan.pointer->get_backend_descriptor());
    293  if (status != CUDNN_STATUS_SUCCESS) {
    295  &m_execution_plan, status, "CUDNN_BACKEND_EXECUTION_PLAN_DESCRIPTOR: cudnnFinalize Descriptor Failed");
    296  return std::move(m_execution_plan);
    297  }
    298 
    299  m_execution_plan.computeTag();
    300 
    301  return std::move(m_execution_plan);
    302  }
    303 
    304  explicit ExecutionPlanBuilder_v8() = default;
    305  ~ExecutionPlanBuilder_v8() = default;
    309  operator=(ExecutionPlanBuilder_v8 const &) = delete;
    310 
    311  private:
    313 };
    314 }
    auto setEngineConfig(EngineConfig_v8 const &engine_config_) -> ExecutionPlanBuilder_v8 &
    Set engine Config for the Plan.
    static void set_error_and_throw_exception(BackendDescriptor const *desc, cudnnStatus_t status, const char *message)
    @@ -95,16 +95,15 @@
    ManagedOpaqueDescriptor get_desc() const
    Returns a copy of underlying managed descriptor.
    -
    auto setEngineConfig(ManagedOpaqueDescriptor &desc, std::string const &opGraphTag_="") -> ExecutionPlanBuilder_v8 &
    Set engine Config for the Plan.
    - +
    auto setEngineConfig(ManagedOpaqueDescriptor &desc, std::string const &opGraphTag_="") -> ExecutionPlanBuilder_v8 &
    Set engine Config for the Plan.
    +
    cudnnStatus_t get_status() const
    Current status of the descriptor.
    auto setHandle(cudnnHandle_t handle_) -> ExecutionPlanBuilder_v8 &
    Set engine for the ExecutionPlan_v8.
    - +
    std::shared_ptr< OpaqueBackendPointer > ManagedOpaqueDescriptor
    -
    auto setEngineConfig(cudnnBackendDescriptor_t &desc, std::string const &opGraphTag_="") -> ExecutionPlanBuilder_v8 &
    std::string describe() const override
    Return a string describing the backend Descriptor.
    diff --git a/docs/d6/d63/cudnn__frontend__Operation_8h__dep__incl.md5 b/docs/d6/d63/cudnn__frontend__Operation_8h__dep__incl.md5 index 007e0603e..22c9844a3 100644 --- a/docs/d6/d63/cudnn__frontend__Operation_8h__dep__incl.md5 +++ b/docs/d6/d63/cudnn__frontend__Operation_8h__dep__incl.md5 @@ -1 +1 @@ -96371d5e3391364e1e984e26c64e1636 \ No newline at end of file +be1f9c4e64c31407fa91a43e0bf28c83 \ No newline at end of file diff --git a/docs/d6/d67/cudnn__frontend__EngineConfig_8h.html b/docs/d6/d67/cudnn__frontend__EngineConfig_8h.html index 42b56a28a..6d457852b 100644 --- a/docs/d6/d67/cudnn__frontend__EngineConfig_8h.html +++ b/docs/d6/d67/cudnn__frontend__EngineConfig_8h.html @@ -5,7 +5,7 @@ -CUDNN API: cudnn_frontend_EngineConfig.h File Reference +CUDNN Frontend API: cudnn_frontend_EngineConfig.h File Reference @@ -28,8 +28,8 @@ -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    @@ -103,14 +103,15 @@
    - - - - - - - - + + + + + + + + +
    diff --git a/docs/d6/d67/cudnn__frontend__EngineConfig_8h_source.html b/docs/d6/d67/cudnn__frontend__EngineConfig_8h_source.html index 575ad80bd..f52f66669 100644 --- a/docs/d6/d67/cudnn__frontend__EngineConfig_8h_source.html +++ b/docs/d6/d67/cudnn__frontend__EngineConfig_8h_source.html @@ -5,7 +5,7 @@ -CUDNN API: cudnn_frontend_EngineConfig.h Source File +CUDNN Frontend API: cudnn_frontend_EngineConfig.h Source File @@ -28,8 +28,8 @@ -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    @@ -84,7 +84,7 @@
    cudnn_frontend_EngineConfig.h
    -Go to the documentation of this file.
    1 /*
    2  * Copyright (c) 2021, NVIDIA CORPORATION. All rights reserved.
    3  *
    4  * Permission is hereby granted, free of charge, to any person obtaining a
    5  * copy of this software and associated documentation files (the "Software"),
    6  * to deal in the Software without restriction, including without limitation
    7  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
    8  * and/or sell copies of the Software, and to permit persons to whom the
    9  * Software is furnished to do so, subject to the following conditions:
    10  *
    11  * The above copyright notice and this permission notice shall be included in
    12  * all copies or substantial portions of the Software.
    13  *
    14  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    15  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    16  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
    17  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    18  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
    19  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
    20  * DEALINGS IN THE SOFTWARE.
    21  */
    22 
    23 #pragma once
    24 
    25 #include <algorithm>
    26 #include <array>
    27 #include <functional>
    28 #include <memory>
    29 #include <sstream>
    30 #include <utility>
    31 
    32 #include <cudnn.h>
    33 #include <cudnn_backend.h>
    34 
    35 #include "cudnn_frontend_Engine.h"
    36 #include "cudnn_frontend_utils.h"
    37 
    38 namespace cudnn_frontend {
    52  public:
    53  friend class EngineConfigBuilder_v8;
    54  std::string
    55  describe() const override {
    56  std::stringstream ss;
    57  ss << "CUDNN_BACKEND_ENGINECFG_DESCRIPTOR :";
    58  ss << " Number of knobs: " << numKnobs;
    59  return ss.str();
    60  }
    62  : BackendDescriptor(from.get_desc(), from.get_status(), from.get_error()),
    63  engine(from.engine),
    64  numKnobs(from.numKnobs),
    65  opGraphTag(from.opGraphTag) {
    66  bChoices = from.bChoices;
    67  }
    68  ~EngineConfig_v8() = default;
    69 
    70  std::string const &
    71  getTag() const {
    72  return opGraphTag;
    73  }
    74 
    75  private:
    77  cudnnStatus_t status;
    78  for (uint64_t i = 0; i < bChoices.size(); i++) {
    79  bChoices[i] = make_shared_backend_pointer(CUDNN_BACKEND_KNOB_CHOICE_DESCRIPTOR);
    80  if (bChoices[i]->is_good() == false) {
    81  status = bChoices[i]->get_status();
    83  this,
    84  status,
    85  "CUDNN_BACKEND_ENGINECFG_DESCRIPTOR: CUDNN_BACKEND_KNOB_CHOICE_DESCRIPTOR cudnnCreate Failed");
    86  break;
    87  }
    88  }
    89  }
    90  EngineConfig_v8(EngineConfig_v8 const &) = delete;
    92  operator=(EngineConfig_v8 const &) = delete;
    93 
    95  int64_t numKnobs = 0;
    96  std::string opGraphTag;
    97  std::array<ManagedOpaqueDescriptor, CUDNN_KNOB_TYPE_COUNTS> bChoices = {};
    98 };
    99 
    104  public:
    109  auto
    112  m_engine_config.engine = engine_.get_desc();
    113  m_engine_config.opGraphTag = engine_.getTag();
    114  auto &knobs = engine_.getFinalizedKnobs();
    115  m_engine_config.numKnobs = knobs.size();
    116  for (auto i = 0; i < knobs.size(); i++) {
    117  cudnnStatus_t status;
    118  cudnnBackendKnobType_t type = knobs[i].getKnobType();
    119  int64_t value = knobs[i].getChoice();
    120  status = cudnnBackendSetAttribute(m_engine_config.bChoices[i]->get_backend_descriptor(),
    121  CUDNN_ATTR_KNOB_CHOICE_KNOB_TYPE,
    122  CUDNN_TYPE_KNOB_TYPE,
    123  1,
    124  &type);
    125  if (status != CUDNN_STATUS_SUCCESS) {
    126  set_error_and_throw_exception(&m_engine_config,
    127  status,
    128  "CUDNN_BACKEND_ENGINECFG_DESCRIPTOR: "
    129  "CUDNN_BACKEND_KNOB_CHOICE_DESCRIPTOR SetAttribute "
    130  "CUDNN_ATTR_KNOB_CHOICE_KNOB_TYPE Failed");
    131  }
    132  status = cudnnBackendSetAttribute(m_engine_config.bChoices[i]->get_backend_descriptor(),
    133  CUDNN_ATTR_KNOB_CHOICE_KNOB_VALUE,
    134  CUDNN_TYPE_INT64,
    135  1,
    136  &value);
    137  if (status != CUDNN_STATUS_SUCCESS) {
    138  set_error_and_throw_exception(&m_engine_config,
    139  status,
    140  "CUDNN_BACKEND_ENGINECFG_DESCRIPTOR: "
    141  "CUDNN_BACKEND_KNOB_CHOICE_DESCRIPTOR SetAttribute "
    142  "CUDNN_ATTR_KNOB_CHOICE_KNOB_VALUE Failed");
    143  }
    144  status = cudnnBackendFinalize(m_engine_config.bChoices[i]->get_backend_descriptor());
    145  if (status != CUDNN_STATUS_SUCCESS) {
    147  &m_engine_config,
    148  status,
    149  "CUDNN_BACKEND_ENGINECFG_DESCRIPTOR: CUDNN_BACKEND_KNOB_CHOICE_DESCRIPTOR cudnnFinalize Failed");
    150  }
    151  }
    152  return *this;
    153  }
    156  EngineConfig_v8 &&
    159  build() {
    160  if (m_engine_config.status != CUDNN_STATUS_SUCCESS) {
    161  set_error_and_throw_exception(&m_engine_config,
    162  m_engine_config.status,
    163  "CUDNN_BACKEND_ENGINECFG_DESCRIPTOR: is not created properly");
    164  return std::move(m_engine_config);
    165  }
    166  if (m_engine_config.engine == nullptr) {
    168  &m_engine_config,
    169  CUDNN_STATUS_BAD_PARAM,
    170  "CUDNN_BACKEND_ENGINECFG_DESCRIPTOR: Check and Set the CUDNN_ATTR_ENGINECFG_ENGINE.");
    171  return std::move(m_engine_config);
    172  }
    173  // Create a descriptor. Memory allocation happens here.
    174  auto status = m_engine_config.initialize_managed_backend_pointer(CUDNN_BACKEND_ENGINECFG_DESCRIPTOR);
    175  if (status != CUDNN_STATUS_SUCCESS) {
    177  &m_engine_config, status, "CUDNN_BACKEND_ENGINECFG_DESCRIPTOR: cudnnCreate Failed");
    178  return std::move(m_engine_config);
    179  }
    180 
    181  status = cudnnBackendSetAttribute(m_engine_config.pointer->get_backend_descriptor(),
    182  CUDNN_ATTR_ENGINECFG_ENGINE,
    183  CUDNN_TYPE_BACKEND_DESCRIPTOR,
    184  1,
    185  &(m_engine_config.engine->get_backend_descriptor()));
    186  if (status != CUDNN_STATUS_SUCCESS) {
    188  &m_engine_config,
    189  status,
    190  "CUDNN_BACKEND_ENGINECFG_DESCRIPTOR: SetAttribute CUDNN_ATTR_ENGINECFG_ENGINE Failed");
    191  return std::move(m_engine_config);
    192  }
    193 
    194  if (m_engine_config.numKnobs > 0) {
    195  std::array<cudnnBackendDescriptor_t, CUDNN_KNOB_TYPE_COUNTS> bChoices_;
    196  for (auto i = 0; i < m_engine_config.numKnobs; i++) {
    197  bChoices_[i] = m_engine_config.bChoices[i]->get_backend_descriptor();
    198  }
    199  status = cudnnBackendSetAttribute(m_engine_config.pointer->get_backend_descriptor(),
    200  CUDNN_ATTR_ENGINECFG_KNOB_CHOICES,
    201  CUDNN_TYPE_BACKEND_DESCRIPTOR,
    202  m_engine_config.numKnobs,
    203  bChoices_.data());
    204  if (status != CUDNN_STATUS_SUCCESS) {
    206  &m_engine_config,
    207  status,
    208  "CUDNN_BACKEND_ENGINECFG_DESCRIPTOR: SetAttribute CUDNN_ATTR_ENGINECFG_KNOB_CHOICES Failed");
    209  return std::move(m_engine_config);
    210  }
    211  }
    212 
    213  // Finalizing the descriptor
    214  status = cudnnBackendFinalize(m_engine_config.pointer->get_backend_descriptor());
    215  if (status != CUDNN_STATUS_SUCCESS) {
    217  &m_engine_config, status, "CUDNN_BACKEND_ENGINECFG_DESCRIPTOR: cudnnFinalize Failed");
    218  return std::move(m_engine_config);
    219  }
    220  return std::move(m_engine_config);
    221  }
    222 
    223  explicit EngineConfigBuilder_v8() = default;
    224  ~EngineConfigBuilder_v8() = default;
    228  operator=(EngineConfigBuilder_v8 const &) = delete;
    229 
    230  private:
    232 };
    233 
    241 
    242 using EngineConfigList = std::vector<ManagedOpaqueDescriptor>;
    243 }
    static void set_error_and_throw_exception(BackendDescriptor const *desc, cudnnStatus_t status, const char *message)
    +Go to the documentation of this file.
    1 /*
    2  * Copyright (c) 2021, NVIDIA CORPORATION. All rights reserved.
    3  *
    4  * Permission is hereby granted, free of charge, to any person obtaining a
    5  * copy of this software and associated documentation files (the "Software"),
    6  * to deal in the Software without restriction, including without limitation
    7  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
    8  * and/or sell copies of the Software, and to permit persons to whom the
    9  * Software is furnished to do so, subject to the following conditions:
    10  *
    11  * The above copyright notice and this permission notice shall be included in
    12  * all copies or substantial portions of the Software.
    13  *
    14  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    15  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    16  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
    17  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    18  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
    19  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
    20  * DEALINGS IN THE SOFTWARE.
    21  */
    22 
    23 #pragma once
    24 
    25 #include <algorithm>
    26 #include <array>
    27 #include <functional>
    28 #include <memory>
    29 #include <sstream>
    30 #include <utility>
    31 
    32 #include <cudnn.h>
    33 #include <cudnn_backend.h>
    34 
    35 #include "cudnn_frontend_Engine.h"
    36 #include "cudnn_frontend_utils.h"
    37 
    38 namespace cudnn_frontend {
    52  public:
    53  friend class EngineConfigBuilder_v8;
    54  std::string
    55  describe() const override {
    56  std::stringstream ss;
    57  ss << "CUDNN_BACKEND_ENGINECFG_DESCRIPTOR :";
    58  ss << " Number of knobs: " << numKnobs;
    59  return ss.str();
    60  }
    62  : BackendDescriptor(from.get_desc(), from.get_status(), from.get_error()),
    63  engine(from.engine),
    64  numKnobs(from.numKnobs),
    65  opGraphTag(from.opGraphTag) {
    66  bChoices = from.bChoices;
    67  }
    68  ~EngineConfig_v8() = default;
    69 
    70  std::string const &
    71  getTag() const {
    72  return opGraphTag;
    73  }
    74 
    75  private:
    77  cudnnStatus_t status;
    78  for (uint64_t i = 0; i < bChoices.size(); i++) {
    79  bChoices[i] = make_shared_backend_pointer(CUDNN_BACKEND_KNOB_CHOICE_DESCRIPTOR);
    80  if (bChoices[i]->is_good() == false) {
    81  status = bChoices[i]->get_status();
    83  this,
    84  status,
    85  "CUDNN_BACKEND_ENGINECFG_DESCRIPTOR: CUDNN_BACKEND_KNOB_CHOICE_DESCRIPTOR cudnnCreate Failed");
    86  break;
    87  }
    88  }
    89  }
    90  EngineConfig_v8(EngineConfig_v8 const &) = delete;
    92  operator=(EngineConfig_v8 const &) = delete;
    93 
    95  int64_t numKnobs = 0;
    96  std::string opGraphTag;
    97  std::array<ManagedOpaqueDescriptor, CUDNN_KNOB_TYPE_COUNTS> bChoices = {};
    98 };
    99 
    104  public:
    109  auto
    112  m_engine_config.engine = engine_.get_desc();
    113  m_engine_config.opGraphTag = engine_.getTag();
    114  auto &knobs = engine_.getFinalizedKnobs();
    115  m_engine_config.numKnobs = knobs.size();
    116  for (std::uint32_t i = 0; i < knobs.size(); i++) {
    117  cudnnStatus_t status;
    118  cudnnBackendKnobType_t type = knobs[i].getKnobType();
    119  int64_t value = knobs[i].getChoice();
    120  status = cudnnBackendSetAttribute(m_engine_config.bChoices[i]->get_backend_descriptor(),
    121  CUDNN_ATTR_KNOB_CHOICE_KNOB_TYPE,
    122  CUDNN_TYPE_KNOB_TYPE,
    123  1,
    124  &type);
    125  if (status != CUDNN_STATUS_SUCCESS) {
    126  set_error_and_throw_exception(&m_engine_config,
    127  status,
    128  "CUDNN_BACKEND_ENGINECFG_DESCRIPTOR: "
    129  "CUDNN_BACKEND_KNOB_CHOICE_DESCRIPTOR SetAttribute "
    130  "CUDNN_ATTR_KNOB_CHOICE_KNOB_TYPE Failed");
    131  }
    132  status = cudnnBackendSetAttribute(m_engine_config.bChoices[i]->get_backend_descriptor(),
    133  CUDNN_ATTR_KNOB_CHOICE_KNOB_VALUE,
    134  CUDNN_TYPE_INT64,
    135  1,
    136  &value);
    137  if (status != CUDNN_STATUS_SUCCESS) {
    138  set_error_and_throw_exception(&m_engine_config,
    139  status,
    140  "CUDNN_BACKEND_ENGINECFG_DESCRIPTOR: "
    141  "CUDNN_BACKEND_KNOB_CHOICE_DESCRIPTOR SetAttribute "
    142  "CUDNN_ATTR_KNOB_CHOICE_KNOB_VALUE Failed");
    143  }
    144  status = cudnnBackendFinalize(m_engine_config.bChoices[i]->get_backend_descriptor());
    145  if (status != CUDNN_STATUS_SUCCESS) {
    147  &m_engine_config,
    148  status,
    149  "CUDNN_BACKEND_ENGINECFG_DESCRIPTOR: CUDNN_BACKEND_KNOB_CHOICE_DESCRIPTOR cudnnFinalize Failed");
    150  }
    151  }
    152  return *this;
    153  }
    156  EngineConfig_v8 &&
    159  build() {
    160  if (m_engine_config.status != CUDNN_STATUS_SUCCESS) {
    161  set_error_and_throw_exception(&m_engine_config,
    162  m_engine_config.status,
    163  "CUDNN_BACKEND_ENGINECFG_DESCRIPTOR: is not created properly");
    164  return std::move(m_engine_config);
    165  }
    166  if (m_engine_config.engine == nullptr) {
    168  &m_engine_config,
    169  CUDNN_STATUS_BAD_PARAM,
    170  "CUDNN_BACKEND_ENGINECFG_DESCRIPTOR: Check and Set the CUDNN_ATTR_ENGINECFG_ENGINE.");
    171  return std::move(m_engine_config);
    172  }
    173  // Create a descriptor. Memory allocation happens here.
    174  auto status = m_engine_config.initialize_managed_backend_pointer(CUDNN_BACKEND_ENGINECFG_DESCRIPTOR);
    175  if (status != CUDNN_STATUS_SUCCESS) {
    177  &m_engine_config, status, "CUDNN_BACKEND_ENGINECFG_DESCRIPTOR: cudnnCreate Failed");
    178  return std::move(m_engine_config);
    179  }
    180 
    181  status = cudnnBackendSetAttribute(m_engine_config.pointer->get_backend_descriptor(),
    182  CUDNN_ATTR_ENGINECFG_ENGINE,
    183  CUDNN_TYPE_BACKEND_DESCRIPTOR,
    184  1,
    185  &(m_engine_config.engine->get_backend_descriptor()));
    186  if (status != CUDNN_STATUS_SUCCESS) {
    188  &m_engine_config,
    189  status,
    190  "CUDNN_BACKEND_ENGINECFG_DESCRIPTOR: SetAttribute CUDNN_ATTR_ENGINECFG_ENGINE Failed");
    191  return std::move(m_engine_config);
    192  }
    193 
    194  if (m_engine_config.numKnobs > 0) {
    195  std::array<cudnnBackendDescriptor_t, CUDNN_KNOB_TYPE_COUNTS> bChoices_;
    196  for (auto i = 0; i < m_engine_config.numKnobs; i++) {
    197  bChoices_[i] = m_engine_config.bChoices[i]->get_backend_descriptor();
    198  }
    199  status = cudnnBackendSetAttribute(m_engine_config.pointer->get_backend_descriptor(),
    200  CUDNN_ATTR_ENGINECFG_KNOB_CHOICES,
    201  CUDNN_TYPE_BACKEND_DESCRIPTOR,
    202  m_engine_config.numKnobs,
    203  bChoices_.data());
    204  if (status != CUDNN_STATUS_SUCCESS) {
    206  &m_engine_config,
    207  status,
    208  "CUDNN_BACKEND_ENGINECFG_DESCRIPTOR: SetAttribute CUDNN_ATTR_ENGINECFG_KNOB_CHOICES Failed");
    209  return std::move(m_engine_config);
    210  }
    211  }
    212 
    213  // Finalizing the descriptor
    214  status = cudnnBackendFinalize(m_engine_config.pointer->get_backend_descriptor());
    215  if (status != CUDNN_STATUS_SUCCESS) {
    217  &m_engine_config, status, "CUDNN_BACKEND_ENGINECFG_DESCRIPTOR: cudnnFinalize Failed");
    218  return std::move(m_engine_config);
    219  }
    220  return std::move(m_engine_config);
    221  }
    222 
    223  explicit EngineConfigBuilder_v8() = default;
    224  ~EngineConfigBuilder_v8() = default;
    228  operator=(EngineConfigBuilder_v8 const &) = delete;
    229 
    230  private:
    232 };
    233 
    241 
    242 using EngineConfigList = std::vector<ManagedOpaqueDescriptor>;
    243 }
    static void set_error_and_throw_exception(BackendDescriptor const *desc, cudnnStatus_t status, const char *message)
    diff --git a/docs/d6/d73/classcudnn__frontend_1_1ConvDesc__v8.html b/docs/d6/d73/classcudnn__frontend_1_1ConvDesc__v8.html index 9fef60011..c90eb15ba 100644 --- a/docs/d6/d73/classcudnn__frontend_1_1ConvDesc__v8.html +++ b/docs/d6/d73/classcudnn__frontend_1_1ConvDesc__v8.html @@ -5,7 +5,7 @@ -CUDNN API: cudnn_frontend::ConvDesc_v8 Class Reference +CUDNN Frontend API: cudnn_frontend::ConvDesc_v8 Class Reference @@ -28,8 +28,8 @@ -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    diff --git a/docs/d6/d88/classcudnn__frontend_1_1BackendDescriptor.html b/docs/d6/d88/classcudnn__frontend_1_1BackendDescriptor.html index 9d21375ce..af0b5de40 100644 --- a/docs/d6/d88/classcudnn__frontend_1_1BackendDescriptor.html +++ b/docs/d6/d88/classcudnn__frontend_1_1BackendDescriptor.html @@ -5,7 +5,7 @@ -CUDNN API: cudnn_frontend::BackendDescriptor Class Reference +CUDNN Frontend API: cudnn_frontend::BackendDescriptor Class Reference @@ -28,8 +28,8 @@ -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    @@ -102,11 +102,12 @@ - - - - - + + + + + +
    @@ -415,7 +416,7 @@

    References cudnn_frontend::make_shared_backend_pointer().

    -

    Referenced by cudnn_frontend::OperationBuilder_v8::build().

    +

    Referenced by cudnn_frontend::OperationBuilder_v8::build().

    @@ -534,7 +535,7 @@

    Definition at line 156 of file cudnn_backend_base.h.

    -

    Referenced by cudnn_frontend::OperationBuilder_v8::build(), cudnn_frontend::Engine_v8::Engine_v8(), cudnn_frontend::EngineHeuristics_v8::getEngineConfig(), cudnn_frontend::EngineHeuristics_v8::getEngineConfigCount(), cudnn_frontend::OperationGraph_v8::getEngineCount(), and cudnn_frontend::ExecutionPlan_v8::getWorkspaceSize().

    +

    Referenced by cudnn_frontend::OperationBuilder_v8::build(), cudnn_frontend::Engine_v8::Engine_v8(), cudnn_frontend::EngineHeuristics_v8::getEngineConfig(), cudnn_frontend::EngineHeuristics_v8::getEngineConfigCount(), cudnn_frontend::OperationGraph_v8::getEngineCount(), and cudnn_frontend::ExecutionPlan_v8::getWorkspaceSize().

    @@ -563,7 +564,7 @@

    Definition at line 158 of file cudnn_backend_base.h.

    -

    Referenced by cudnn_frontend::VariantPackBuilder_v8::build(), cudnn_frontend::OperationGraphBuilder_v8::build(), cudnn_frontend::PointWiseDescBuilder_v8::build(), cudnn_frontend::TensorBuilder_v8::build(), cudnn_frontend::EngineConfigBuilder_v8::build(), cudnn_frontend::EngineHeuristicsBuilder_v8::build(), cudnn_frontend::ConvDescBuilder_v8::build(), cudnn_frontend::ExecutionPlanBuilder_v8::build(), cudnn_frontend::OperationBuilder_v8::build(), cudnn_frontend::EngineBuilder_v8::build(), cudnn_frontend::Engine_v8::buildKnobs(), cudnn_frontend::ExecutionPlan_v8::computeTag(), cudnn_frontend::Engine_v8::Engine_v8(), cudnn_frontend::EngineConfig_v8::EngineConfig_v8(), cudnn_frontend::EngineHeuristics_v8::getEngineConfig(), cudnn_frontend::EngineHeuristics_v8::getEngineConfigCount(), cudnn_frontend::OperationGraph_v8::getEngineCount(), cudnn_frontend::ExecutionPlan_v8::getWorkspaceSize(), and cudnn_frontend::EngineConfigBuilder_v8::setEngine().

    +

    Referenced by cudnn_frontend::MatMulDescBuilder_v8::build(), cudnn_frontend::VariantPackBuilder_v8::build(), cudnn_frontend::OperationGraphBuilder_v8::build(), cudnn_frontend::TensorBuilder_v8::build(), cudnn_frontend::EngineConfigBuilder_v8::build(), cudnn_frontend::EngineHeuristicsBuilder_v8::build(), cudnn_frontend::ConvDescBuilder_v8::build(), cudnn_frontend::PointWiseDescBuilder_v8::build(), cudnn_frontend::ExecutionPlanBuilder_v8::build(), cudnn_frontend::EngineBuilder_v8::build(), cudnn_frontend::OperationBuilder_v8::build(), cudnn_frontend::Engine_v8::buildKnobs(), cudnn_frontend::ExecutionPlan_v8::computeTag(), cudnn_frontend::Engine_v8::Engine_v8(), cudnn_frontend::EngineConfig_v8::EngineConfig_v8(), cudnn_frontend::EngineHeuristics_v8::getEngineConfig(), cudnn_frontend::EngineHeuristics_v8::getEngineConfigCount(), cudnn_frontend::OperationGraph_v8::getEngineCount(), cudnn_frontend::ExecutionPlan_v8::getWorkspaceSize(), and cudnn_frontend::EngineConfigBuilder_v8::setEngine().

    diff --git a/docs/d6/da7/classcudnn__frontend_1_1Tensor__v8.html b/docs/d6/da7/classcudnn__frontend_1_1Tensor__v8.html index 7d6f2b7c4..460e893c5 100644 --- a/docs/d6/da7/classcudnn__frontend_1_1Tensor__v8.html +++ b/docs/d6/da7/classcudnn__frontend_1_1Tensor__v8.html @@ -5,7 +5,7 @@ -CUDNN API: cudnn_frontend::Tensor_v8 Class Reference +CUDNN Frontend API: cudnn_frontend::Tensor_v8 Class Reference @@ -28,8 +28,8 @@ -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    diff --git a/docs/d6/db7/classcudnn__frontend_1_1MatMulDesc__v8.html b/docs/d6/db7/classcudnn__frontend_1_1MatMulDesc__v8.html new file mode 100644 index 000000000..ffee8a87a --- /dev/null +++ b/docs/d6/db7/classcudnn__frontend_1_1MatMulDesc__v8.html @@ -0,0 +1,430 @@ + + + + + + + +CUDNN Frontend API: cudnn_frontend::MatMulDesc_v8 Class Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    CUDNN Frontend API +  8.2.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    cudnn_frontend::MatMulDesc_v8 Class Reference
    +
    +
    + +

    #include <cudnn_frontend_MatMulDesc.h>

    +
    +Inheritance diagram for cudnn_frontend::MatMulDesc_v8:
    +
    +
    Inheritance graph
    + + + +
    +
    +Collaboration diagram for cudnn_frontend::MatMulDesc_v8:
    +
    +
    Collaboration graph
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    std::string describe () const override
     Return a string describing the backend Descriptor. More...
     
     MatMulDesc_v8 (MatMulDesc_v8 &&from)
     
     ~MatMulDesc_v8 ()=default
     
    - Public Member Functions inherited from cudnn_frontend::BackendDescriptor
    cudnnBackendDescriptor_t get_raw_desc () const
     
    cudnnStatus_t get_status () const
     Current status of the descriptor. More...
     
    void set_status (cudnnStatus_t const status_) const
     Set status of the descriptor. More...
     
    void set_error (const char *message) const
     Set Diagonistic error message. More...
     
    const char * get_error () const
     Diagonistic error message if any. More...
     
    ManagedOpaqueDescriptor get_desc () const
     Returns a copy of underlying managed descriptor. More...
     
    cudnnStatus_t initialize_managed_backend_pointer (cudnnBackendDescriptorType_t type)
     Initializes the underlying managed descriptor. More...
     
    + + + + + + + +

    +Private Member Functions

     MatMulDesc_v8 ()=default
     
     MatMulDesc_v8 (MatMulDesc_v8 const &)=delete
     
    MatMulDesc_v8operator= (MatMulDesc_v8 const &)=delete
     
    + + + +

    +Private Attributes

    cudnnDataType_t math_precision = CUDNN_DATA_FLOAT
     
    + + + +

    +Friends

    class MatMulDescBuilder_v8
     
    + + + + + + + + + + + + + + + +

    +Additional Inherited Members

    - Protected Member Functions inherited from cudnn_frontend::BackendDescriptor
     BackendDescriptor (ManagedOpaqueDescriptor pointer_, cudnnStatus_t status_, std::string err_msg_)
     
     BackendDescriptor ()=default
     
    - Protected Attributes inherited from cudnn_frontend::BackendDescriptor
    ManagedOpaqueDescriptor pointer
     
    cudnnStatus_t status = CUDNN_STATUS_SUCCESS
     Shared pointer of the OpaqueBackendPointer. More...
     
    std::string err_msg
     Error message if any being set. More...
     
    +

    Detailed Description

    +

    MatMulDesc Descriptor Class This class tells the properties of the MatMul operation Properties:

      +
    • math_precision
    • +
    +

    Use MatMulDesc_v8 to build this class. Describe returns a string describing the MatMul operation

    + +

    Definition at line 47 of file cudnn_frontend_MatMulDesc.h.

    +

    Constructor & Destructor Documentation

    + +

    ◆ MatMulDesc_v8() [1/3]

    + +
    +
    + + + + + +
    + + + + + + + + +
    cudnn_frontend::MatMulDesc_v8::MatMulDesc_v8 (MatMulDesc_v8 && from)
    +
    +inline
    +
    + +

    Definition at line 58 of file cudnn_frontend_MatMulDesc.h.

    + +

    References MatMulDesc_v8(), operator=(), and ~MatMulDesc_v8().

    + +
    +
    + +

    ◆ ~MatMulDesc_v8()

    + +
    +
    + + + + + +
    + + + + + + + +
    cudnn_frontend::MatMulDesc_v8::~MatMulDesc_v8 ()
    +
    +default
    +
    + +

    Referenced by MatMulDesc_v8().

    + +
    +
    + +

    ◆ MatMulDesc_v8() [2/3]

    + +
    +
    + + + + + +
    + + + + + + + +
    cudnn_frontend::MatMulDesc_v8::MatMulDesc_v8 ()
    +
    +privatedefault
    +
    + +

    Referenced by MatMulDesc_v8().

    + +
    +
    + +

    ◆ MatMulDesc_v8() [3/3]

    + +
    +
    + + + + + +
    + + + + + + + + +
    cudnn_frontend::MatMulDesc_v8::MatMulDesc_v8 (MatMulDesc_v8 const & )
    +
    +privatedelete
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ describe()

    + +
    +
    + + + + + +
    + + + + + + + +
    std::string cudnn_frontend::MatMulDesc_v8::describe () const
    +
    +inlineoverridevirtual
    +
    + +

    Return a string describing the backend Descriptor.

    + +

    Implements cudnn_frontend::BackendDescriptor.

    + +

    Definition at line 51 of file cudnn_frontend_MatMulDesc.h.

    + +

    References math_precision.

    + +
    +
    + +

    ◆ operator=()

    + +
    +
    + + + + + +
    + + + + + + + + +
    MatMulDesc_v8& cudnn_frontend::MatMulDesc_v8::operator= (MatMulDesc_v8 const & )
    +
    +privatedelete
    +
    +
    +

    Friends And Related Function Documentation

    + +

    ◆ MatMulDescBuilder_v8

    + +
    +
    + + + + + +
    + + + + +
    friend class MatMulDescBuilder_v8
    +
    +friend
    +
    + +

    Definition at line 49 of file cudnn_frontend_MatMulDesc.h.

    + +

    Referenced by cudnn_frontend::MatMulDescBuilder_v8::build().

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ math_precision

    + +
    +
    + + + + + +
    + + + + +
    cudnnDataType_t cudnn_frontend::MatMulDesc_v8::math_precision = CUDNN_DATA_FLOAT
    +
    +private
    +
    + +

    Definition at line 70 of file cudnn_frontend_MatMulDesc.h.

    + +

    Referenced by describe().

    + +
    +
    +
    The documentation for this class was generated from the following file: +
    +
    + + + + diff --git a/docs/d6/db7/classcudnn__frontend_1_1MatMulDesc__v8.js b/docs/d6/db7/classcudnn__frontend_1_1MatMulDesc__v8.js new file mode 100644 index 000000000..c579000e1 --- /dev/null +++ b/docs/d6/db7/classcudnn__frontend_1_1MatMulDesc__v8.js @@ -0,0 +1,11 @@ +var classcudnn__frontend_1_1MatMulDesc__v8 = +[ + [ "MatMulDesc_v8", "d6/db7/classcudnn__frontend_1_1MatMulDesc__v8.html#ab725a8e47331aca6310155f6d55c0a02", null ], + [ "~MatMulDesc_v8", "d6/db7/classcudnn__frontend_1_1MatMulDesc__v8.html#ad27b038b19b218067bd30e60d94fd672", null ], + [ "MatMulDesc_v8", "d6/db7/classcudnn__frontend_1_1MatMulDesc__v8.html#a5e060b83ea1e1ed59a66e15fdba91227", null ], + [ "MatMulDesc_v8", "d6/db7/classcudnn__frontend_1_1MatMulDesc__v8.html#a48aa29d5df9a717e63c5146ac48c4543", null ], + [ "describe", "d6/db7/classcudnn__frontend_1_1MatMulDesc__v8.html#a2931e4d0b21e6986a3f5a1697ca4bae0", null ], + [ "operator=", "d6/db7/classcudnn__frontend_1_1MatMulDesc__v8.html#ac1257a1ca1261961fc99123988552911", null ], + [ "MatMulDescBuilder_v8", "d6/db7/classcudnn__frontend_1_1MatMulDesc__v8.html#aa99cc0548322d7298b9ca664a976281f", null ], + [ "math_precision", "d6/db7/classcudnn__frontend_1_1MatMulDesc__v8.html#a1dd13143c85b67f2c0da90f02884fab1", null ] +]; \ No newline at end of file diff --git a/docs/d6/db7/cudnn__frontend__Heuristics_8h__incl.map b/docs/d6/db7/cudnn__frontend__Heuristics_8h__incl.map index 2cf061116..16549379f 100644 --- a/docs/d6/db7/cudnn__frontend__Heuristics_8h__incl.map +++ b/docs/d6/db7/cudnn__frontend__Heuristics_8h__incl.map @@ -1,9 +1,10 @@ - - - - - - - + + + + + + + + diff --git a/docs/d6/db7/cudnn__frontend__Heuristics_8h__incl.md5 b/docs/d6/db7/cudnn__frontend__Heuristics_8h__incl.md5 index 9ca0f7de3..ed01884d2 100644 --- a/docs/d6/db7/cudnn__frontend__Heuristics_8h__incl.md5 +++ b/docs/d6/db7/cudnn__frontend__Heuristics_8h__incl.md5 @@ -1 +1 @@ -b2f080c60ffd4c838bb13d23f70115dd \ No newline at end of file +17f1399ce5cacc73dce2c7301a65afa2 \ No newline at end of file diff --git a/docs/d6/db7/cudnn__frontend__Heuristics_8h__incl.png b/docs/d6/db7/cudnn__frontend__Heuristics_8h__incl.png index c9a315e5f..9ba6f1ee6 100644 Binary files a/docs/d6/db7/cudnn__frontend__Heuristics_8h__incl.png and b/docs/d6/db7/cudnn__frontend__Heuristics_8h__incl.png differ diff --git a/docs/d7/d0d/group__ExecutionPlanQuery.html b/docs/d7/d0d/group__ExecutionPlanQuery.html index e453b28fc..ba720479f 100644 --- a/docs/d7/d0d/group__ExecutionPlanQuery.html +++ b/docs/d7/d0d/group__ExecutionPlanQuery.html @@ -5,7 +5,7 @@ -CUDNN API: ExecutionPlanQuery +CUDNN Frontend API: ExecutionPlanQuery @@ -28,8 +28,8 @@ -
    @@ -579,7 +579,7 @@

    -

    Definition at line 316 of file cudnn_frontend_ExecutionPlan.h.

    +

    Definition at line 312 of file cudnn_frontend_ExecutionPlan.h.

    diff --git a/docs/d7/d59/classcudnn__frontend_1_1EngineFallbackList__v8-members.html b/docs/d7/d59/classcudnn__frontend_1_1EngineFallbackList__v8-members.html index 73ad17185..c4080b273 100644 --- a/docs/d7/d59/classcudnn__frontend_1_1EngineFallbackList__v8-members.html +++ b/docs/d7/d59/classcudnn__frontend_1_1EngineFallbackList__v8-members.html @@ -5,7 +5,7 @@ -CUDNN API: Member List +CUDNN Frontend API: Member List @@ -28,8 +28,8 @@ -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    diff --git a/docs/d7/d6c/classcudnn__frontend_1_1BackendDescriptor-members.html b/docs/d7/d6c/classcudnn__frontend_1_1BackendDescriptor-members.html index 02d7f2dcb..a97e83ab4 100644 --- a/docs/d7/d6c/classcudnn__frontend_1_1BackendDescriptor-members.html +++ b/docs/d7/d6c/classcudnn__frontend_1_1BackendDescriptor-members.html @@ -5,7 +5,7 @@ -CUDNN API: Member List +CUDNN Frontend API: Member List @@ -28,8 +28,8 @@ -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    diff --git a/docs/d7/d98/classcudnn__frontend_1_1Engine__v8_1_1Knob-members.html b/docs/d7/d98/classcudnn__frontend_1_1Engine__v8_1_1Knob-members.html index 52e33580d..b19fceff4 100644 --- a/docs/d7/d98/classcudnn__frontend_1_1Engine__v8_1_1Knob-members.html +++ b/docs/d7/d98/classcudnn__frontend_1_1Engine__v8_1_1Knob-members.html @@ -5,7 +5,7 @@ -CUDNN API: Member List +CUDNN Frontend API: Member List @@ -28,8 +28,8 @@ -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    @@ -89,11 +89,11 @@ - - - - - + + + + + diff --git a/docs/d7/dde/classcudnn__frontend_1_1EngineConfigBuilder__v8-members.html b/docs/d7/dde/classcudnn__frontend_1_1EngineConfigBuilder__v8-members.html index d0d55ee70..a06e830f0 100644 --- a/docs/d7/dde/classcudnn__frontend_1_1EngineConfigBuilder__v8-members.html +++ b/docs/d7/dde/classcudnn__frontend_1_1EngineConfigBuilder__v8-members.html @@ -5,7 +5,7 @@ -CUDNN API: Member List +CUDNN Frontend API: Member List @@ -28,8 +28,8 @@ diff --git a/docs/d7/de1/classcudnn__frontend_1_1ConvDescBuilder__v8-members.html b/docs/d7/de1/classcudnn__frontend_1_1ConvDescBuilder__v8-members.html index 9da10e376..be09e3497 100644 --- a/docs/d7/de1/classcudnn__frontend_1_1ConvDescBuilder__v8-members.html +++ b/docs/d7/de1/classcudnn__frontend_1_1ConvDescBuilder__v8-members.html @@ -5,7 +5,7 @@ -CUDNN API: Member List +CUDNN Frontend API: Member List @@ -28,8 +28,8 @@ diff --git a/docs/d7/de4/classcudnn__frontend_1_1cudnnException-members.html b/docs/d7/de4/classcudnn__frontend_1_1cudnnException-members.html index 2ac18c4d7..6871df123 100644 --- a/docs/d7/de4/classcudnn__frontend_1_1cudnnException-members.html +++ b/docs/d7/de4/classcudnn__frontend_1_1cudnnException-members.html @@ -5,7 +5,7 @@ -CUDNN API: Member List +CUDNN Frontend API: Member List @@ -28,8 +28,8 @@ diff --git a/docs/d8/d00/cudnn__frontend__ExecutionPlan_8h__incl.map b/docs/d8/d00/cudnn__frontend__ExecutionPlan_8h__incl.map index b2baaca87..37f45dace 100644 --- a/docs/d8/d00/cudnn__frontend__ExecutionPlan_8h__incl.map +++ b/docs/d8/d00/cudnn__frontend__ExecutionPlan_8h__incl.map @@ -1,10 +1,11 @@ - - - - - - - - + + + + + + + + + diff --git a/docs/d8/d00/cudnn__frontend__ExecutionPlan_8h__incl.md5 b/docs/d8/d00/cudnn__frontend__ExecutionPlan_8h__incl.md5 index b26887bc4..583956a66 100644 --- a/docs/d8/d00/cudnn__frontend__ExecutionPlan_8h__incl.md5 +++ b/docs/d8/d00/cudnn__frontend__ExecutionPlan_8h__incl.md5 @@ -1 +1 @@ -f17fe633b4cd98cf3f5f5d0543b7ae71 \ No newline at end of file +3e032407e6484b1e4b16ea0677b89f4e \ No newline at end of file diff --git a/docs/d8/d00/cudnn__frontend__ExecutionPlan_8h__incl.png b/docs/d8/d00/cudnn__frontend__ExecutionPlan_8h__incl.png index 1c0bde07e..a14694f53 100644 Binary files a/docs/d8/d00/cudnn__frontend__ExecutionPlan_8h__incl.png and b/docs/d8/d00/cudnn__frontend__ExecutionPlan_8h__incl.png differ diff --git a/docs/d8/d5d/classcudnn__frontend_1_1Operation__v8__coll__graph.map b/docs/d8/d5d/classcudnn__frontend_1_1Operation__v8__coll__graph.map index 555347777..5969e22dc 100644 --- a/docs/d8/d5d/classcudnn__frontend_1_1Operation__v8__coll__graph.map +++ b/docs/d8/d5d/classcudnn__frontend_1_1Operation__v8__coll__graph.map @@ -1,5 +1,5 @@ - - - + + + diff --git a/docs/d8/d5d/classcudnn__frontend_1_1Operation__v8__coll__graph.md5 b/docs/d8/d5d/classcudnn__frontend_1_1Operation__v8__coll__graph.md5 index 89fdc076f..cf51d02fb 100644 --- a/docs/d8/d5d/classcudnn__frontend_1_1Operation__v8__coll__graph.md5 +++ b/docs/d8/d5d/classcudnn__frontend_1_1Operation__v8__coll__graph.md5 @@ -1 +1 @@ -e274e79270a36167f8337e2573ff8795 \ No newline at end of file +63087e9ffca8ce1508338d09b76745aa \ No newline at end of file diff --git a/docs/d8/d5d/classcudnn__frontend_1_1Operation__v8__coll__graph.png b/docs/d8/d5d/classcudnn__frontend_1_1Operation__v8__coll__graph.png index df060fc16..94fa1aaa5 100644 Binary files a/docs/d8/d5d/classcudnn__frontend_1_1Operation__v8__coll__graph.png and b/docs/d8/d5d/classcudnn__frontend_1_1Operation__v8__coll__graph.png differ diff --git a/docs/d8/d87/classcudnn__frontend_1_1EngineConfigGenerator-members.html b/docs/d8/d87/classcudnn__frontend_1_1EngineConfigGenerator-members.html index 4ad3b9689..59658a13b 100644 --- a/docs/d8/d87/classcudnn__frontend_1_1EngineConfigGenerator-members.html +++ b/docs/d8/d87/classcudnn__frontend_1_1EngineConfigGenerator-members.html @@ -5,7 +5,7 @@ -CUDNN API: Member List +CUDNN Frontend API: Member List @@ -28,8 +28,8 @@ diff --git a/docs/d8/da1/cudnn__frontend__Engine_8h__dep__incl.md5 b/docs/d8/da1/cudnn__frontend__Engine_8h__dep__incl.md5 index 25ae2ca41..41b701075 100644 --- a/docs/d8/da1/cudnn__frontend__Engine_8h__dep__incl.md5 +++ b/docs/d8/da1/cudnn__frontend__Engine_8h__dep__incl.md5 @@ -1 +1 @@ -1f368504532ac97c582fb0ba78bcff81 \ No newline at end of file +8a68ab4500e7d8e0ba4cd464b44434f6 \ No newline at end of file diff --git a/docs/d8/de1/cudnn__frontend__MatMulDesc_8h__dep__incl.map b/docs/d8/de1/cudnn__frontend__MatMulDesc_8h__dep__incl.map new file mode 100644 index 000000000..e4ade5ce6 --- /dev/null +++ b/docs/d8/de1/cudnn__frontend__MatMulDesc_8h__dep__incl.map @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/docs/d8/de1/cudnn__frontend__MatMulDesc_8h__dep__incl.md5 b/docs/d8/de1/cudnn__frontend__MatMulDesc_8h__dep__incl.md5 new file mode 100644 index 000000000..883c9f44e --- /dev/null +++ b/docs/d8/de1/cudnn__frontend__MatMulDesc_8h__dep__incl.md5 @@ -0,0 +1 @@ +a3ee56b5f9febf958a618248aa706ad1 \ No newline at end of file diff --git a/docs/d8/de1/cudnn__frontend__MatMulDesc_8h__dep__incl.png b/docs/d8/de1/cudnn__frontend__MatMulDesc_8h__dep__incl.png new file mode 100644 index 000000000..e4d53b02c Binary files /dev/null and b/docs/d8/de1/cudnn__frontend__MatMulDesc_8h__dep__incl.png differ diff --git a/docs/d8/dee/classcudnn__frontend_1_1BackendDescriptor__inherit__graph.map b/docs/d8/dee/classcudnn__frontend_1_1BackendDescriptor__inherit__graph.map index 260848a84..5fa497d5d 100644 --- a/docs/d8/dee/classcudnn__frontend_1_1BackendDescriptor__inherit__graph.map +++ b/docs/d8/dee/classcudnn__frontend_1_1BackendDescriptor__inherit__graph.map @@ -5,9 +5,10 @@ - - - - - + + + + + + diff --git a/docs/d8/dee/classcudnn__frontend_1_1BackendDescriptor__inherit__graph.md5 b/docs/d8/dee/classcudnn__frontend_1_1BackendDescriptor__inherit__graph.md5 index 007be88a8..7b6c917fa 100644 --- a/docs/d8/dee/classcudnn__frontend_1_1BackendDescriptor__inherit__graph.md5 +++ b/docs/d8/dee/classcudnn__frontend_1_1BackendDescriptor__inherit__graph.md5 @@ -1 +1 @@ -5c87e841235ac1cd63f3a1b6bdaa30c2 \ No newline at end of file +f3275f61a86a0e3683f0f9e1679607c4 \ No newline at end of file diff --git a/docs/d8/dee/classcudnn__frontend_1_1BackendDescriptor__inherit__graph.png b/docs/d8/dee/classcudnn__frontend_1_1BackendDescriptor__inherit__graph.png index 07615d1c6..dc2298ed9 100644 Binary files a/docs/d8/dee/classcudnn__frontend_1_1BackendDescriptor__inherit__graph.png and b/docs/d8/dee/classcudnn__frontend_1_1BackendDescriptor__inherit__graph.png differ diff --git a/docs/d9/d08/group__MatMulDescBuilder__v8.html b/docs/d9/d08/group__MatMulDescBuilder__v8.html new file mode 100644 index 000000000..cb50069c1 --- /dev/null +++ b/docs/d9/d08/group__MatMulDescBuilder__v8.html @@ -0,0 +1,140 @@ + + + + + + + +CUDNN Frontend API: MatMulDescBuilder_v8 + + + + + + + + + + + + + + +
    +
    +
    choicecudnn_frontend::Engine_v8::Knobprivate
    describe() constcudnn_frontend::Engine_v8::Knobinline
    getChoice() constcudnn_frontend::Engine_v8::Knobinline
    getKnobType() constcudnn_frontend::Engine_v8::Knobinline
    getMaxValue() constcudnn_frontend::Engine_v8::Knobinline
    getMinValue() constcudnn_frontend::Engine_v8::Knobinline
    getStride() constcudnn_frontend::Engine_v8::Knobinline
    getChoice() constcudnn_frontend::Engine_v8::Knobinline
    getKnobType() constcudnn_frontend::Engine_v8::Knobinline
    getMaxValue() constcudnn_frontend::Engine_v8::Knobinline
    getMinValue() constcudnn_frontend::Engine_v8::Knobinline
    getStride() constcudnn_frontend::Engine_v8::Knobinline
    Knob(cudnnBackendKnobType_t type_, int64_t max, int64_t min, int64_t stride_)cudnn_frontend::Engine_v8::Knobinline
    knobTypecudnn_frontend::Engine_v8::Knobprivate
    maxValuecudnn_frontend::Engine_v8::Knobprivate
    -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    + + + + + +
    +
    CUDNN Frontend API +  8.2.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    MatMulDescBuilder_v8
    +
    +
    + + + + + +

    +Functions

    auto cudnn_frontend::MatMulDescBuilder_v8::setMathPrecision (cudnnDataType_t data_type_) -> MatMulDescBuilder_v8 &
     Set Math Precision Data Type for the Matmul Operation. More...
     
    +

    Detailed Description

    +

    Set individual property of MatMulDesc_v8 class

    +

    Function Documentation

    + +

    ◆ setMathPrecision()

    + +
    +
    + + + + + +
    + + + + + + + + +
    auto cudnn_frontend::MatMulDescBuilder_v8::setMathPrecision (cudnnDataType_t data_type_) -> MatMulDescBuilder_v8 &
    +
    +inline
    +
    + +

    Set Math Precision Data Type for the Matmul Operation.

    + +

    Definition at line 84 of file cudnn_frontend_MatMulDesc.h.

    + +
    +
    +
    +
    + + + + diff --git a/docs/d9/d08/group__MatMulDescBuilder__v8.js b/docs/d9/d08/group__MatMulDescBuilder__v8.js new file mode 100644 index 000000000..7600b2792 --- /dev/null +++ b/docs/d9/d08/group__MatMulDescBuilder__v8.js @@ -0,0 +1,4 @@ +var group__MatMulDescBuilder__v8 = +[ + [ "setMathPrecision", "d9/d08/group__MatMulDescBuilder__v8.html#ga5885f3eb7580cbe0cbe7243c4711c0f2", null ] +]; \ No newline at end of file diff --git a/docs/d9/d7c/classcudnn__frontend_1_1EngineFallbackListBuilder__v8-members.html b/docs/d9/d7c/classcudnn__frontend_1_1EngineFallbackListBuilder__v8-members.html index bfe4035e6..e327b071e 100644 --- a/docs/d9/d7c/classcudnn__frontend_1_1EngineFallbackListBuilder__v8-members.html +++ b/docs/d9/d7c/classcudnn__frontend_1_1EngineFallbackListBuilder__v8-members.html @@ -5,7 +5,7 @@ -CUDNN API: Member List +CUDNN Frontend API: Member List @@ -28,8 +28,8 @@ -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    diff --git a/docs/d9/dca/classcudnn__frontend_1_1cudnnException.html b/docs/d9/dca/classcudnn__frontend_1_1cudnnException.html index 91aa8794f..bdf6b022f 100644 --- a/docs/d9/dca/classcudnn__frontend_1_1cudnnException.html +++ b/docs/d9/dca/classcudnn__frontend_1_1cudnnException.html @@ -5,7 +5,7 @@ -CUDNN API: cudnn_frontend::cudnnException Class Reference +CUDNN Frontend API: cudnn_frontend::cudnnException Class Reference @@ -28,8 +28,8 @@ -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    diff --git a/docs/d9/de2/classcudnn__frontend_1_1OperationBuilder__v8__coll__graph.map b/docs/d9/de2/classcudnn__frontend_1_1OperationBuilder__v8__coll__graph.map index f87156625..eb2120e41 100644 --- a/docs/d9/de2/classcudnn__frontend_1_1OperationBuilder__v8__coll__graph.map +++ b/docs/d9/de2/classcudnn__frontend_1_1OperationBuilder__v8__coll__graph.map @@ -1,6 +1,6 @@ - - - - + + + + diff --git a/docs/d9/de2/classcudnn__frontend_1_1OperationBuilder__v8__coll__graph.md5 b/docs/d9/de2/classcudnn__frontend_1_1OperationBuilder__v8__coll__graph.md5 index 36cd4d237..16bb38ed9 100644 --- a/docs/d9/de2/classcudnn__frontend_1_1OperationBuilder__v8__coll__graph.md5 +++ b/docs/d9/de2/classcudnn__frontend_1_1OperationBuilder__v8__coll__graph.md5 @@ -1 +1 @@ -50afcf726781a23f9fe9c7b0f07baaca \ No newline at end of file +6084b6c43fd6e11ced0920ac687ec913 \ No newline at end of file diff --git a/docs/d9/de2/classcudnn__frontend_1_1OperationBuilder__v8__coll__graph.png b/docs/d9/de2/classcudnn__frontend_1_1OperationBuilder__v8__coll__graph.png index 3a277f3ef..3418b997b 100644 Binary files a/docs/d9/de2/classcudnn__frontend_1_1OperationBuilder__v8__coll__graph.png and b/docs/d9/de2/classcudnn__frontend_1_1OperationBuilder__v8__coll__graph.png differ diff --git a/docs/d9/de7/classcudnn__frontend_1_1Tensor__v8-members.html b/docs/d9/de7/classcudnn__frontend_1_1Tensor__v8-members.html index e30b12f0b..9971c4384 100644 --- a/docs/d9/de7/classcudnn__frontend_1_1Tensor__v8-members.html +++ b/docs/d9/de7/classcudnn__frontend_1_1Tensor__v8-members.html @@ -5,7 +5,7 @@ -CUDNN API: Member List +CUDNN Frontend API: Member List @@ -28,8 +28,8 @@ -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    diff --git a/docs/d9/df1/classcudnn__frontend_1_1EngineFallbackListBuilder__v8.html b/docs/d9/df1/classcudnn__frontend_1_1EngineFallbackListBuilder__v8.html index d8f9a6b4f..42db71101 100644 --- a/docs/d9/df1/classcudnn__frontend_1_1EngineFallbackListBuilder__v8.html +++ b/docs/d9/df1/classcudnn__frontend_1_1EngineFallbackListBuilder__v8.html @@ -5,7 +5,7 @@ -CUDNN API: cudnn_frontend::EngineFallbackListBuilder_v8 Class Reference +CUDNN Frontend API: cudnn_frontend::EngineFallbackListBuilder_v8 Class Reference @@ -28,8 +28,8 @@ -
    diff --git a/docs/d9/dfd/classcudnn__frontend_1_1EngineBuilder__v8.html b/docs/d9/dfd/classcudnn__frontend_1_1EngineBuilder__v8.html index d527a81d9..75278b781 100644 --- a/docs/d9/dfd/classcudnn__frontend_1_1EngineBuilder__v8.html +++ b/docs/d9/dfd/classcudnn__frontend_1_1EngineBuilder__v8.html @@ -5,7 +5,7 @@ -CUDNN API: cudnn_frontend::EngineBuilder_v8 Class Reference +CUDNN Frontend API: cudnn_frontend::EngineBuilder_v8 Class Reference @@ -28,8 +28,8 @@ -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    @@ -110,9 +110,6 @@ auto setOperationGraph (OperationGraph_v8 const &opGraph_) -> EngineBuilder_v8 &  Set operationGraph for the engine. More...
      -auto setOperationGraph (cudnnBackendDescriptor_t desc_) -> EngineBuilder_v8 & - Set operationGraph for the engine. More...
    -  auto setOperationGraph (ManagedOpaqueDescriptor desc_) -> EngineBuilder_v8 &  Set operationGraph for the engine. More...
      @@ -269,7 +266,7 @@

    constructs the Engine_v8 by calling the cudnn API Throws the appropriate error message

    -

    Definition at line 267 of file cudnn_frontend_Engine.h.

    +

    Definition at line 262 of file cudnn_frontend_Engine.h.

    References cudnn_frontend::Engine_v8::EngineBuilder_v8, cudnn_frontend::Engine_v8::operator=(), cudnn_frontend::set_error_and_throw_exception(), and cudnn_frontend::BackendDescriptor::status.

    @@ -322,7 +319,7 @@

    -

    Definition at line 335 of file cudnn_frontend_Engine.h.

    +

    Definition at line 330 of file cudnn_frontend_Engine.h.

    diff --git a/docs/d9/dfd/classcudnn__frontend_1_1EngineBuilder__v8.js b/docs/d9/dfd/classcudnn__frontend_1_1EngineBuilder__v8.js index dca429a92..7b6a9ea6a 100644 --- a/docs/d9/dfd/classcudnn__frontend_1_1EngineBuilder__v8.js +++ b/docs/d9/dfd/classcudnn__frontend_1_1EngineBuilder__v8.js @@ -8,7 +8,6 @@ var classcudnn__frontend_1_1EngineBuilder__v8 = [ "operator=", "d9/dfd/classcudnn__frontend_1_1EngineBuilder__v8.html#a9d29a91186f6baa215b61340a386ec6d", null ], [ "setGlobalEngineIdx", "d3/d09/group__EngineBuilder__v8.html#ga2b171d44da46865d536236bb01103005", null ], [ "setOperationGraph", "d3/d09/group__EngineBuilder__v8.html#ga0ceef322363405504dbdc4d1f3c9949a", null ], - [ "setOperationGraph", "d3/d09/group__EngineBuilder__v8.html#ga27466cecb45496d001cfbe4de4b5c5a9", null ], [ "setOperationGraph", "d3/d09/group__EngineBuilder__v8.html#ga7220dab88f9fed1704c9d78d9771be5f", null ], [ "m_engine", "d9/dfd/classcudnn__frontend_1_1EngineBuilder__v8.html#adc25c468425d9b6b71b9592b80ea715d", null ] ]; \ No newline at end of file diff --git a/docs/da/d1e/classcudnn__frontend_1_1Operation__v8__inherit__graph.md5 b/docs/da/d1e/classcudnn__frontend_1_1Operation__v8__inherit__graph.md5 index b03248c2b..932a4f843 100644 --- a/docs/da/d1e/classcudnn__frontend_1_1Operation__v8__inherit__graph.md5 +++ b/docs/da/d1e/classcudnn__frontend_1_1Operation__v8__inherit__graph.md5 @@ -1 +1 @@ -12a91b27cbd54a342188048c3a932ce2 \ No newline at end of file +1a9ed829682a6db5a7bccff530144f7b \ No newline at end of file diff --git a/docs/da/d1e/classcudnn__frontend_1_1Operation__v8__inherit__graph.png b/docs/da/d1e/classcudnn__frontend_1_1Operation__v8__inherit__graph.png index 43a89ab03..10a2ac8cc 100644 Binary files a/docs/da/d1e/classcudnn__frontend_1_1Operation__v8__inherit__graph.png and b/docs/da/d1e/classcudnn__frontend_1_1Operation__v8__inherit__graph.png differ diff --git a/docs/da/d5a/cudnn__frontend__Operation_8h.html b/docs/da/d5a/cudnn__frontend__Operation_8h.html index d593048fa..7b2615435 100644 --- a/docs/da/d5a/cudnn__frontend__Operation_8h.html +++ b/docs/da/d5a/cudnn__frontend__Operation_8h.html @@ -5,7 +5,7 @@ -CUDNN API: cudnn_frontend_Operation.h File Reference +CUDNN Frontend API: cudnn_frontend_Operation.h File Reference @@ -28,8 +28,8 @@ -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    @@ -97,6 +97,7 @@ #include <cudnn_backend.h>
    #include "cudnn_frontend_ConvDesc.h"
    #include "cudnn_frontend_PointWiseDesc.h"
    +#include "cudnn_frontend_MatMulDesc.h"
    #include "cudnn_frontend_Tensor.h"
    #include "cudnn_frontend_utils.h"
    @@ -104,11 +105,12 @@
    - - - - - + + + + + +
    diff --git a/docs/da/d5a/cudnn__frontend__Operation_8h_source.html b/docs/da/d5a/cudnn__frontend__Operation_8h_source.html index 9b7f43414..3785cc1bd 100644 --- a/docs/da/d5a/cudnn__frontend__Operation_8h_source.html +++ b/docs/da/d5a/cudnn__frontend__Operation_8h_source.html @@ -5,7 +5,7 @@ -CUDNN API: cudnn_frontend_Operation.h Source File +CUDNN Frontend API: cudnn_frontend_Operation.h Source File @@ -28,8 +28,8 @@ -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    @@ -84,63 +84,83 @@
    cudnn_frontend_Operation.h
    -Go to the documentation of this file.
    1 /*
    2  * Copyright (c) 2021, NVIDIA CORPORATION. All rights reserved.
    3  *
    4  * Permission is hereby granted, free of charge, to any person obtaining a
    5  * copy of this software and associated documentation files (the "Software"),
    6  * to deal in the Software without restriction, including without limitation
    7  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
    8  * and/or sell copies of the Software, and to permit persons to whom the
    9  * Software is furnished to do so, subject to the following conditions:
    10  *
    11  * The above copyright notice and this permission notice shall be included in
    12  * all copies or substantial portions of the Software.
    13  *
    14  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    15  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    16  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
    17  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    18  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
    19  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
    20  * DEALINGS IN THE SOFTWARE.
    21  */
    22 
    23 #pragma once
    24 
    25 #include <algorithm>
    26 #include <array>
    27 #include <functional>
    28 #include <memory>
    29 #include <sstream>
    30 #include <utility>
    31 
    32 #include <cudnn.h>
    33 #include <cudnn_backend.h>
    34 
    37 #include "cudnn_frontend_Tensor.h"
    38 #include "cudnn_frontend_utils.h"
    39 
    40 namespace cudnn_frontend {
    41 
    57  public:
    58  friend class OperationBuilder_v8;
    59  std::string
    60  describe() const override {
    61  std::stringstream ss;
    62  ss << "CUDNN_BACKEND_OPERATION :"
    63  << " OpMode: " << std::to_string(op_mode);
    64  ss << std::hex << " X " << xdesc;
    65  ss << std::hex << " Y " << ydesc;
    66  ss << std::hex << " W " << wdesc;
    67  ss << std::hex << " B " << bdesc;
    68  ss << std::hex << " C " << cdesc;
    69  ss << std::hex << " P " << pwdesc;
    70  ss << std::dec << " alphabetaType " << alphabetaType;
    71  ss << " Alpha: " << alpha_s << " " << alpha_d;
    72  ss << " Alpha2: " << alpha2_s << " " << alpha2_d;
    73  ss << " Beta: " << beta_s << " " << beta_d;
    74  return ss.str();
    75  }
    77  : BackendDescriptor(from.pointer, from.get_status(), from.get_error()),
    78  op_mode(from.op_mode),
    79  xdesc(from.xdesc),
    80  ydesc(from.ydesc),
    81  wdesc(from.wdesc),
    82  bdesc(from.bdesc),
    83  cdesc(from.cdesc),
    84  pwdesc(from.pwdesc),
    86  alpha_s(from.alpha_s),
    87  alpha_d(from.alpha_d),
    88  beta_s(from.beta_s),
    89  beta_d(from.beta_d),
    92  operationTag(from.operationTag) {}
    93 
    96  return ydesc;
    97  }
    98 
    99  std::string const &
    100  getTag() const {
    101  return operationTag;
    102  }
    103 
    104  ~Operation_v8() = default;
    105 
    106  private:
    107  Operation_v8() = default;
    108  Operation_v8(Operation_v8 const &) = delete;
    109  Operation_v8 &
    110  operator=(Operation_v8 const &) = delete;
    111 
    112  cudnnBackendDescriptorType_t op_mode = CUDNN_BACKEND_OPERATION_CONVOLUTION_FORWARD_DESCRIPTOR;
    113 
    120 
    121  cudnnBackendAttributeType_t alphabetaType = CUDNN_TYPE_FLOAT;
    122  float alpha_s = 1.0f, beta_s = .0f, alpha2_s = 1.0f;
    123  double alpha_d = 1.0, beta_d = 0.0, alpha2_d = 1.0;
    124  int64_t pointwise_port_count = -1;
    125  cudnnPointwiseMode_t pointwise_mode;
    126  std::string operationTag;
    127 };
    128 
    132 
    134  private:
    136  bool is_convolution_op = false;
    137 
    138  public:
    143  auto
    145  m_operation.xdesc = raw_tensor;
    146  return *this;
    147  }
    148 
    149  auto
    150  setxDesc(Tensor_v8 const &tensor) -> OperationBuilder_v8 & {
    151  m_operation.xdesc = tensor.get_desc();
    152  return *this;
    153  }
    154  auto
    155  setbDesc(Tensor_v8 const &tensor) -> OperationBuilder_v8 & {
    156  if (is_convolution_op == true) {
    158  &m_operation,
    159  CUDNN_STATUS_BAD_PARAM,
    160  "CUDNN_BACKEND_OPERATION_*_DESCRIPTOR: Convolution operation does not need bTensor");
    161  }
    162  m_operation.bdesc = tensor.get_desc();
    163  return *this;
    164  }
    165  auto
    166  setyDesc(Tensor_v8 const &tensor) -> OperationBuilder_v8 & {
    167  m_operation.ydesc = tensor.get_desc();
    168  return *this;
    169  }
    170  auto
    171  setwDesc(Tensor_v8 const &tensor) -> OperationBuilder_v8 & {
    172  if (is_convolution_op == false) {
    174  &m_operation,
    175  CUDNN_STATUS_BAD_PARAM,
    176  "CUDNN_BACKEND_OPERATION_*_DESCRIPTOR: Non Convolution operation does not need wTensor");
    177  }
    178  m_operation.wdesc = tensor.get_desc();
    179  return *this;
    180  }
    181  auto
    183  if (is_convolution_op == false) {
    185  &m_operation,
    186  CUDNN_STATUS_BAD_PARAM,
    187  "CUDNN_BACKEND_OPERATION_*_DESCRIPTOR: Non Convolution operation does not need Convolution DESCRIPTOR");
    188  }
    189  m_operation.cdesc = conv.get_desc();
    190  return *this;
    191  }
    192  auto
    193  setpwDesc(PointWiseDesc_v8 const &pointWiseDesc) -> OperationBuilder_v8 & {
    194  if (is_convolution_op == true) {
    196  &m_operation,
    197  CUDNN_STATUS_BAD_PARAM,
    198  "CUDNN_BACKEND_OPERATION_*_DESCRIPTOR: Convolution operation does not need POINTWISE DESCRIPTOR");
    199  }
    200  m_operation.pwdesc = pointWiseDesc.get_desc();
    201  m_operation.pointwise_port_count = pointWiseDesc.getPortCount();
    202  m_operation.pointwise_mode = pointWiseDesc.getPointWiseMode();
    203  return *this;
    204  }
    205  auto
    206  setAlpha(float alpha) -> OperationBuilder_v8 & {
    207  m_operation.alphabetaType = CUDNN_TYPE_FLOAT;
    208  m_operation.alpha_d = static_cast<double>(alpha);
    209  m_operation.alpha_s = alpha;
    210  return *this;
    211  }
    212  auto
    213  setAlpha(double alpha) -> OperationBuilder_v8 & {
    214  m_operation.alphabetaType = CUDNN_TYPE_DOUBLE;
    215  m_operation.alpha_s = static_cast<float>(alpha);
    216  m_operation.alpha_d = alpha;
    217  return *this;
    218  }
    219  auto
    220  setAlpha2(float alpha) -> OperationBuilder_v8 & {
    221  m_operation.alphabetaType = CUDNN_TYPE_FLOAT;
    222  m_operation.alpha2_d = static_cast<double>(alpha);
    223  m_operation.alpha2_s = alpha;
    224  return *this;
    225  }
    226  auto
    227  setAlpha2(double alpha) -> OperationBuilder_v8 & {
    228  m_operation.alphabetaType = CUDNN_TYPE_DOUBLE;
    229  m_operation.alpha2_s = static_cast<float>(alpha);
    230  m_operation.alpha2_d = alpha;
    231  return *this;
    232  }
    233  auto
    234  setBeta(float beta) -> OperationBuilder_v8 & {
    235  m_operation.alphabetaType = CUDNN_TYPE_FLOAT;
    236  m_operation.beta_d = static_cast<double>(beta);
    237  m_operation.beta_s = beta;
    238  return *this;
    239  }
    240  auto
    241  setBeta(double beta) -> OperationBuilder_v8 & {
    242  m_operation.alphabetaType = CUDNN_TYPE_DOUBLE;
    243  m_operation.beta_s = static_cast<float>(beta);
    244  m_operation.beta_d = beta;
    245  return *this;
    246  }
    247 
    248  OperationBuilder_v8(cudnnBackendDescriptorType_t mode) {
    249  m_operation.op_mode = mode;
    250  is_convolution_op = ((m_operation.op_mode == CUDNN_BACKEND_OPERATION_CONVOLUTION_FORWARD_DESCRIPTOR) ||
    251  (m_operation.op_mode == CUDNN_BACKEND_OPERATION_CONVOLUTION_BACKWARD_FILTER_DESCRIPTOR) ||
    252  (m_operation.op_mode == CUDNN_BACKEND_OPERATION_CONVOLUTION_BACKWARD_DATA_DESCRIPTOR));
    253  }
    256  Operation_v8 &&
    259  build() {
    260  if (m_operation.status != CUDNN_STATUS_SUCCESS) {
    262  &m_operation, m_operation.status, "CUDNN_BACKEND_OPERATION: Operation not initialized properly");
    263  return std::move(m_operation);
    264  }
    265  if (m_operation.xdesc == nullptr) {
    267  &m_operation,
    268  CUDNN_STATUS_BAD_PARAM,
    269  "CUDNN_BACKEND_OPERATION: Check and Set the CUDNN_ATTR_OPERATION_CONVOLUTION_*_X");
    270  return std::move(m_operation);
    271  }
    272  if (m_operation.wdesc == nullptr && is_convolution_op) {
    274  &m_operation,
    275  CUDNN_STATUS_BAD_PARAM,
    276  "CUDNN_BACKEND_OPERATION: Check and Set the CUDNN_ATTR_OPERATION_CONVOLUTION_*_W");
    277  return std::move(m_operation);
    278  }
    279  if (m_operation.ydesc == nullptr && is_convolution_op) {
    281  &m_operation,
    282  CUDNN_STATUS_BAD_PARAM,
    283  "CUDNN_BACKEND_OPERATION: Check and Set the CUDNN_ATTR_OPERATION_CONVOLUTION_*_Y");
    284  return std::move(m_operation);
    285  }
    286  if (m_operation.cdesc == nullptr && is_convolution_op) {
    288  &m_operation,
    289  CUDNN_STATUS_BAD_PARAM,
    290  "CUDNN_BACKEND_OPERATION: Check and Set the CUDNN_ATTR_OPERATION_CONVOLUTION_*_CONV_DESC");
    291  return std::move(m_operation);
    292  }
    293 
    294  // Create the descriptor.
    295  auto status = m_operation.initialize_managed_backend_pointer(m_operation.op_mode);
    296  if (status != CUDNN_STATUS_SUCCESS) {
    297  set_error_and_throw_exception(&m_operation, status, "CUDNN_BACKEND_OPERATION: cudnnCreate Failed");
    298  return std::move(m_operation);
    299  }
    300  if (m_operation.op_mode == CUDNN_BACKEND_OPERATION_CONVOLUTION_FORWARD_DESCRIPTOR) {
    301  m_operation.operationTag = "ConvFwd";
    302 
    303  status = cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(),
    304  CUDNN_ATTR_OPERATION_CONVOLUTION_FORWARD_X,
    305  CUDNN_TYPE_BACKEND_DESCRIPTOR,
    306  1,
    307  &(m_operation.xdesc->get_backend_descriptor()));
    308  if (status != CUDNN_STATUS_SUCCESS) {
    310  &m_operation,
    311  status,
    312  "CUDNN_BACKEND_OPERATION: SetAttribute CUDNN_ATTR_OPERATION_CONVOLUTION_FORWARD_X Failed");
    313  return std::move(m_operation);
    314  }
    315  status = cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(),
    316  CUDNN_ATTR_OPERATION_CONVOLUTION_FORWARD_W,
    317  CUDNN_TYPE_BACKEND_DESCRIPTOR,
    318  1,
    319  &(m_operation.wdesc->get_backend_descriptor()));
    320  if (status != CUDNN_STATUS_SUCCESS) {
    322  &m_operation,
    323  status,
    324  "CUDNN_BACKEND_OPERATION: SetAttribute CUDNN_ATTR_OPERATION_CONVOLUTION_FORWARD_W Failed");
    325  return std::move(m_operation);
    326  }
    327  status = cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(),
    328  CUDNN_ATTR_OPERATION_CONVOLUTION_FORWARD_Y,
    329  CUDNN_TYPE_BACKEND_DESCRIPTOR,
    330  1,
    331  &(m_operation.ydesc->get_backend_descriptor()));
    332  if (status != CUDNN_STATUS_SUCCESS) {
    334  &m_operation,
    335  status,
    336  "CUDNN_BACKEND_OPERATION: SetAttribute CUDNN_ATTR_OPERATION_CONVOLUTION_FORWARD_Y Failed");
    337  return std::move(m_operation);
    338  }
    339  status = cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(),
    340  CUDNN_ATTR_OPERATION_CONVOLUTION_FORWARD_CONV_DESC,
    341  CUDNN_TYPE_BACKEND_DESCRIPTOR,
    342  1,
    343  &(m_operation.cdesc->get_backend_descriptor()));
    344  if (status != CUDNN_STATUS_SUCCESS) {
    346  &m_operation,
    347  status,
    348  "CUDNN_BACKEND_OPERATION: SetAttribute CUDNN_ATTR_OPERATION_CONVOLUTION_FORWARD_CONV_DESC Failed");
    349  return std::move(m_operation);
    350  }
    351  void *alpha = (m_operation.alphabetaType == CUDNN_TYPE_FLOAT ? static_cast<void *>(&m_operation.alpha_s)
    352  : static_cast<void *>(&m_operation.alpha_d));
    353  void *beta = (m_operation.alphabetaType == CUDNN_TYPE_FLOAT ? static_cast<void *>(&m_operation.beta_s)
    354  : static_cast<void *>(&m_operation.beta_d));
    355  status = cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(),
    356  CUDNN_ATTR_OPERATION_CONVOLUTION_FORWARD_ALPHA,
    357  m_operation.alphabetaType,
    358  1,
    359  alpha);
    360  if (status != CUDNN_STATUS_SUCCESS) {
    362  &m_operation,
    363  status,
    364  "CUDNN_BACKEND_OPERATION: SetAttribute CUDNN_ATTR_OPERATION_CONVOLUTION_FORWARD_ALPHA Failed");
    365  return std::move(m_operation);
    366  }
    367  status = cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(),
    368  CUDNN_ATTR_OPERATION_CONVOLUTION_FORWARD_BETA,
    369  m_operation.alphabetaType,
    370  1,
    371  beta);
    372  if (status != CUDNN_STATUS_SUCCESS) {
    374  &m_operation,
    375  status,
    376  "CUDNN_BACKEND_OPERATION: SetAttribute CUDNN_ATTR_OPERATION_CONVOLUTION_FORWARD_BETA Failed");
    377  return std::move(m_operation);
    378  }
    379  } else if (m_operation.op_mode == CUDNN_BACKEND_OPERATION_CONVOLUTION_BACKWARD_FILTER_DESCRIPTOR) {
    380  m_operation.operationTag = "ConvBwdFilter";
    381 
    382  status = cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(),
    383  CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_FILTER_X,
    384  CUDNN_TYPE_BACKEND_DESCRIPTOR,
    385  1,
    386  &(m_operation.xdesc->get_backend_descriptor()));
    387  if (status != CUDNN_STATUS_SUCCESS) {
    389  &m_operation,
    390  status,
    391  "CUDNN_BACKEND_OPERATION: SetAttribute CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_FILTER_X Failed");
    392  return std::move(m_operation);
    393  }
    394  status = cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(),
    395  CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_FILTER_DW,
    396  CUDNN_TYPE_BACKEND_DESCRIPTOR,
    397  1,
    398  &(m_operation.wdesc->get_backend_descriptor()));
    399  if (status != CUDNN_STATUS_SUCCESS) {
    401  &m_operation,
    402  status,
    403  "CUDNN_BACKEND_OPERATION: SetAttribute CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_FILTER_DW Failed");
    404  return std::move(m_operation);
    405  }
    406  status = cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(),
    407  CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_FILTER_DY,
    408  CUDNN_TYPE_BACKEND_DESCRIPTOR,
    409  1,
    410  &(m_operation.ydesc->get_backend_descriptor()));
    411  if (status != CUDNN_STATUS_SUCCESS) {
    413  &m_operation,
    414  status,
    415  "CUDNN_BACKEND_OPERATION: SetAttribute CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_FILTER_DY Failed");
    416  return std::move(m_operation);
    417  }
    418  status = cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(),
    419  CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_FILTER_CONV_DESC,
    420  CUDNN_TYPE_BACKEND_DESCRIPTOR,
    421  1,
    422  &(m_operation.cdesc->get_backend_descriptor()));
    423  if (status != CUDNN_STATUS_SUCCESS) {
    424  set_error_and_throw_exception(&m_operation,
    425  status,
    426  "CUDNN_BACKEND_OPERATION: SetAttribute "
    427  "CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_FILTER_CONV_DESC Failed");
    428  return std::move(m_operation);
    429  }
    430  void *alpha = (m_operation.alphabetaType == CUDNN_TYPE_FLOAT ? static_cast<void *>(&m_operation.alpha_s)
    431  : static_cast<void *>(&m_operation.alpha_d));
    432  void *beta = (m_operation.alphabetaType == CUDNN_TYPE_FLOAT ? static_cast<void *>(&m_operation.beta_s)
    433  : static_cast<void *>(&m_operation.beta_d));
    434  status = cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(),
    435  CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_FILTER_ALPHA,
    436  m_operation.alphabetaType,
    437  1,
    438  alpha);
    439  if (status != CUDNN_STATUS_SUCCESS) {
    441  &m_operation,
    442  status,
    443  "CUDNN_BACKEND_OPERATION: SetAttribute CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_FILTER_ALPHA Failed");
    444  return std::move(m_operation);
    445  }
    446  status = cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(),
    447  CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_FILTER_BETA,
    448  m_operation.alphabetaType,
    449  1,
    450  beta);
    451  if (status != CUDNN_STATUS_SUCCESS) {
    453  &m_operation,
    454  status,
    455  "CUDNN_BACKEND_OPERATION: SetAttribute CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_FILTER_BETA Failed");
    456  return std::move(m_operation);
    457  }
    458  } else if (m_operation.op_mode == CUDNN_BACKEND_OPERATION_CONVOLUTION_BACKWARD_DATA_DESCRIPTOR) {
    459  m_operation.operationTag = "ConvBwdData";
    460 
    461  status = cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(),
    462  CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_DATA_DX,
    463  CUDNN_TYPE_BACKEND_DESCRIPTOR,
    464  1,
    465  &(m_operation.xdesc->get_backend_descriptor()));
    466  if (status != CUDNN_STATUS_SUCCESS) {
    468  &m_operation,
    469  status,
    470  "CUDNN_BACKEND_OPERATION: SetAttribute CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_DATA_DX Failed");
    471  return std::move(m_operation);
    472  }
    473  status = cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(),
    474  CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_DATA_W,
    475  CUDNN_TYPE_BACKEND_DESCRIPTOR,
    476  1,
    477  &(m_operation.wdesc->get_backend_descriptor()));
    478  if (status != CUDNN_STATUS_SUCCESS) {
    480  &m_operation,
    481  status,
    482  "CUDNN_BACKEND_OPERATION: SetAttribute CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_DATA_W Failed");
    483  return std::move(m_operation);
    484  }
    485  status = cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(),
    486  CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_DATA_DY,
    487  CUDNN_TYPE_BACKEND_DESCRIPTOR,
    488  1,
    489  &(m_operation.ydesc->get_backend_descriptor()));
    490  if (status != CUDNN_STATUS_SUCCESS) {
    492  &m_operation,
    493  status,
    494  "CUDNN_BACKEND_OPERATION: SetAttribute CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_DATA_DY Failed");
    495  return std::move(m_operation);
    496  }
    497  status = cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(),
    498  CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_DATA_CONV_DESC,
    499  CUDNN_TYPE_BACKEND_DESCRIPTOR,
    500  1,
    501  &(m_operation.cdesc->get_backend_descriptor()));
    502  if (status != CUDNN_STATUS_SUCCESS) {
    504  &m_operation,
    505  status,
    506  "CUDNN_BACKEND_OPERATION: SetAttribute CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_DATA_CONV_DESC Failed");
    507  return std::move(m_operation);
    508  }
    509  void *alpha = (m_operation.alphabetaType == CUDNN_TYPE_FLOAT ? static_cast<void *>(&m_operation.alpha_s)
    510  : static_cast<void *>(&m_operation.alpha_d));
    511  void *beta = (m_operation.alphabetaType == CUDNN_TYPE_FLOAT ? static_cast<void *>(&m_operation.beta_s)
    512  : static_cast<void *>(&m_operation.beta_d));
    513  status = cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(),
    514  CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_DATA_ALPHA,
    515  m_operation.alphabetaType,
    516  1,
    517  alpha);
    518  if (status != CUDNN_STATUS_SUCCESS) {
    520  &m_operation,
    521  status,
    522  "CUDNN_BACKEND_OPERATION: SetAttribute CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_DATA_ALPHA Failed");
    523  return std::move(m_operation);
    524  }
    525  status = cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(),
    526  CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_DATA_BETA,
    527  m_operation.alphabetaType,
    528  1,
    529  beta);
    530  if (status != CUDNN_STATUS_SUCCESS) {
    532  &m_operation,
    533  status,
    534  "CUDNN_BACKEND_OPERATION: SetAttribute CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_DATA_BETA Failed");
    535  return std::move(m_operation);
    536  }
    537  } else if (m_operation.op_mode == CUDNN_BACKEND_OPERATION_POINTWISE_DESCRIPTOR) {
    538  switch (m_operation.pointwise_mode) {
    539  case CUDNN_POINTWISE_ADD:
    540  m_operation.operationTag = "Add";
    541  break;
    542  case CUDNN_POINTWISE_MUL:
    543  m_operation.operationTag = "Mul";
    544  break;
    545  case CUDNN_POINTWISE_MIN:
    546  m_operation.operationTag = "Min";
    547  break;
    548  case CUDNN_POINTWISE_MAX:
    549  m_operation.operationTag = "Max";
    550  break;
    551  case CUDNN_POINTWISE_SQRT:
    552  m_operation.operationTag = "Sqrt";
    553  break;
    554  case CUDNN_POINTWISE_RELU_FWD:
    555  m_operation.operationTag = "ReluFwd";
    556  break;
    557  case CUDNN_POINTWISE_TANH_FWD:
    558  m_operation.operationTag = "TanhFwd";
    559  break;
    560  case CUDNN_POINTWISE_SIGMOID_FWD:
    561  m_operation.operationTag = "SigmoidFwd";
    562  break;
    563  case CUDNN_POINTWISE_ELU_FWD:
    564  m_operation.operationTag = "EluFwd";
    565  break;
    566  }
    567 
    568  status = cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(),
    569  CUDNN_ATTR_OPERATION_POINTWISE_XDESC,
    570  CUDNN_TYPE_BACKEND_DESCRIPTOR,
    571  1,
    572  &(m_operation.xdesc->get_backend_descriptor()));
    573  if (status != CUDNN_STATUS_SUCCESS) {
    575  &m_operation,
    576  status,
    577  "CUDNN_BACKEND_OPERATION: SetAttribute CUDNN_ATTR_OPERATION_POINTWISE_XDESC Failed");
    578  return std::move(m_operation);
    579  }
    580  status = cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(),
    581  CUDNN_ATTR_OPERATION_POINTWISE_PW_DESCRIPTOR,
    582  CUDNN_TYPE_BACKEND_DESCRIPTOR,
    583  1,
    584  &(m_operation.pwdesc->get_backend_descriptor()));
    585  if (status != CUDNN_STATUS_SUCCESS) {
    587  &m_operation,
    588  status,
    589  "CUDNN_BACKEND_OPERATION: SetAttribute CUDNN_ATTR_OPERATION_POINTWISE_PW_DESCRIPTOR Failed");
    590  return std::move(m_operation);
    591  }
    592  status = cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(),
    593  CUDNN_ATTR_OPERATION_POINTWISE_YDESC,
    594  CUDNN_TYPE_BACKEND_DESCRIPTOR,
    595  1,
    596  &(m_operation.ydesc->get_backend_descriptor()));
    597  if (status != CUDNN_STATUS_SUCCESS) {
    599  &m_operation,
    600  status,
    601  "CUDNN_BACKEND_OPERATION: SetAttribute CUDNN_ATTR_OPERATION_POINTWISE_YDESC Failed");
    602  return std::move(m_operation);
    603  }
    604  void *alpha = (m_operation.alphabetaType == CUDNN_TYPE_FLOAT ? static_cast<void *>(&m_operation.alpha_s)
    605  : static_cast<void *>(&m_operation.alpha_d));
    606  void *alpha2 = (m_operation.alphabetaType == CUDNN_TYPE_FLOAT ? static_cast<void *>(&m_operation.alpha2_s)
    607  : static_cast<void *>(&m_operation.alpha2_d));
    608  status = cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(),
    609  CUDNN_ATTR_OPERATION_POINTWISE_ALPHA1,
    610  m_operation.alphabetaType,
    611  1,
    612  alpha);
    613  if (status != CUDNN_STATUS_SUCCESS) {
    615  &m_operation,
    616  status,
    617  "CUDNN_BACKEND_OPERATION: SetAttribute CUDNN_ATTR_OPERATION_POINTWISE_ALPHA1 Failed");
    618  return std::move(m_operation);
    619  }
    620  status = cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(),
    621  CUDNN_ATTR_OPERATION_POINTWISE_ALPHA2,
    622  m_operation.alphabetaType,
    623  1,
    624  alpha2);
    625  if (status != CUDNN_STATUS_SUCCESS) {
    627  &m_operation,
    628  status,
    629  "CUDNN_BACKEND_OPERATION: SetAttribute CUDNN_ATTR_OPERATION_POINTWISE_ALPHA2 Failed");
    630  return std::move(m_operation);
    631  }
    632  if (m_operation.pointwise_port_count == 3) {
    633  status = cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(),
    634  CUDNN_ATTR_OPERATION_POINTWISE_BDESC,
    635  CUDNN_TYPE_BACKEND_DESCRIPTOR,
    636  1,
    637  &(m_operation.bdesc->get_backend_descriptor()));
    638  if (status != CUDNN_STATUS_SUCCESS) {
    640  &m_operation,
    641  status,
    642  "CUDNN_BACKEND_OPERATION: SetAttribute CUDNN_ATTR_OPERATION_POINTWISE_BDESC Failed");
    643  return std::move(m_operation);
    644  }
    645  }
    646  }
    647  status = cudnnBackendFinalize(m_operation.pointer->get_backend_descriptor());
    648  if (status != CUDNN_STATUS_SUCCESS) {
    649  set_error_and_throw_exception(&m_operation, status, "CUDNN_BACKEND_OPERATION: cudnnFinalize Failed");
    650  return std::move(m_operation);
    651  }
    652  return std::move(m_operation);
    653  }
    654 };
    655 }
    -
    auto setcDesc(ConvDesc_v8 const &conv) -> OperationBuilder_v8 &
    +Go to the documentation of this file.
    1 /*
    2  * Copyright (c) 2021, NVIDIA CORPORATION. All rights reserved.
    3  *
    4  * Permission is hereby granted, free of charge, to any person obtaining a
    5  * copy of this software and associated documentation files (the "Software"),
    6  * to deal in the Software without restriction, including without limitation
    7  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
    8  * and/or sell copies of the Software, and to permit persons to whom the
    9  * Software is furnished to do so, subject to the following conditions:
    10  *
    11  * The above copyright notice and this permission notice shall be included in
    12  * all copies or substantial portions of the Software.
    13  *
    14  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    15  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    16  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
    17  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    18  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
    19  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
    20  * DEALINGS IN THE SOFTWARE.
    21  */
    22 
    23 #pragma once
    24 
    25 #include <algorithm>
    26 #include <array>
    27 #include <functional>
    28 #include <memory>
    29 #include <sstream>
    30 #include <utility>
    31 
    32 #include <cudnn.h>
    33 #include <cudnn_backend.h>
    34 
    38 #include "cudnn_frontend_Tensor.h"
    39 #include "cudnn_frontend_utils.h"
    40 
    41 namespace cudnn_frontend {
    66  public:
    67  friend class OperationBuilder_v8;
    68  std::string
    69  describe() const override {
    70  std::stringstream ss;
    71  ss << "CUDNN_BACKEND_OPERATION :"
    72  << " OpMode: " << std::to_string(op_mode);
    73  ss << std::hex << " X " << xdesc;
    74  ss << std::hex << " Y " << ydesc;
    75  ss << std::hex << " W " << wdesc;
    76  ss << std::hex << " B " << bdesc;
    77  ss << std::hex << " DW " << dwdesc;
    78  ss << std::hex << " DY " << dydesc;
    79  ss << std::hex << " DX " << dxdesc;
    80  ss << std::hex << " C " << cdesc;
    81  ss << std::hex << " A Mtrix " << amatdesc;
    82  ss << std::hex << " B Mtrix " << bmatdesc;
    83  ss << std::hex << " C Mtrix " << cmatdesc;
    84  ss << std::hex << " P " << pwdesc;
    85  ss << std::hex << " MatMul " << matmuldesc;
    86  ss << std::dec << " alphabetaType " << alphabetaType;
    87  ss << " Alpha: " << alpha_s << " " << alpha_d;
    88  ss << " Alpha2: " << alpha2_s << " " << alpha2_d;
    89  ss << " Beta: " << beta_s << " " << beta_d;
    90  return ss.str();
    91  }
    93  : BackendDescriptor(from.pointer, from.get_status(), from.get_error()),
    94  op_mode(from.op_mode),
    95  xdesc(from.xdesc),
    96  ydesc(from.ydesc),
    97  wdesc(from.wdesc),
    98  bdesc(from.bdesc),
    99  dydesc(from.dydesc),
    100  dxdesc(from.dxdesc),
    101  dwdesc(from.dwdesc),
    102  cdesc(from.cdesc),
    103  amatdesc(from.amatdesc),
    104  bmatdesc(from.bmatdesc),
    105  cmatdesc(from.cmatdesc),
    106  pwdesc(from.pwdesc),
    107  matmuldesc(from.matmuldesc),
    109  alpha_s(from.alpha_s),
    110  beta_s(from.beta_s),
    111  alpha2_s(from.alpha2_s),
    112  alpha_d(from.alpha_d),
    113  beta_d(from.beta_d),
    114  alpha2_d(from.alpha2_d),
    117  operationTag(from.operationTag) {}
    118 
    121  return (op_mode == CUDNN_BACKEND_OPERATION_MATMUL_DESCRIPTOR) ? cmatdesc : ydesc;
    122  }
    123 
    124  std::string const &
    125  getTag() const {
    126  return operationTag;
    127  }
    128 
    129  ~Operation_v8() = default;
    130 
    131  private:
    132  Operation_v8() = default;
    133  Operation_v8(Operation_v8 const &) = delete;
    134  Operation_v8 &
    135  operator=(Operation_v8 const &) = delete;
    136 
    137  cudnnBackendDescriptorType_t op_mode = CUDNN_BACKEND_OPERATION_CONVOLUTION_FORWARD_DESCRIPTOR;
    138 
    152 
    153  cudnnBackendAttributeType_t alphabetaType = CUDNN_TYPE_FLOAT;
    154  float alpha_s = 1.0f, beta_s = .0f, alpha2_s = 1.0f;
    155  double alpha_d = 1.0, beta_d = 0.0, alpha2_d = 1.0;
    156  int64_t pointwise_port_count = -1;
    157  cudnnPointwiseMode_t pointwise_mode;
    160  bool is_pointwise_math_op = false;
    161  std::string operationTag;
    162 };
    163 
    167 
    169  private:
    171  bool is_convolution_op = false;
    172  bool is_pointwise_op = false;
    173  bool is_matmul_op = false;
    174 
    175  public:
    180  auto
    182  m_operation.xdesc = raw_tensor;
    183  return *this;
    184  }
    185 
    186  auto
    187  setxDesc(Tensor_v8 const &tensor) -> OperationBuilder_v8 & {
    188  m_operation.xdesc = tensor.get_desc();
    189  return *this;
    190  }
    191  auto
    192  setbDesc(Tensor_v8 const &tensor) -> OperationBuilder_v8 & {
    193  if (is_pointwise_op == false) {
    195  &m_operation,
    196  CUDNN_STATUS_BAD_PARAM,
    197  "CUDNN_BACKEND_OPERATION_*_DESCRIPTOR: Non Pointwise operation does not need bTensor");
    198  }
    199  m_operation.bdesc = tensor.get_desc();
    200  return *this;
    201  }
    202  auto
    203  setyDesc(Tensor_v8 const &tensor) -> OperationBuilder_v8 & {
    204  m_operation.ydesc = tensor.get_desc();
    205  return *this;
    206  }
    207  auto
    208  setwDesc(Tensor_v8 const &tensor) -> OperationBuilder_v8 & {
    209  if (is_convolution_op == false) {
    211  &m_operation,
    212  CUDNN_STATUS_BAD_PARAM,
    213  "CUDNN_BACKEND_OPERATION_*_DESCRIPTOR: Non Convolution operation does not need wTensor");
    214  }
    215  m_operation.wdesc = tensor.get_desc();
    216  return *this;
    217  }
    218 
    219  auto
    221  m_operation.dydesc = raw_tensor;
    222  return *this;
    223  }
    224  auto
    226  m_operation.dydesc = tensor.get_desc();
    227  return *this;
    228  }
    229  auto
    231  m_operation.dxdesc = tensor.get_desc();
    232  return *this;
    233  }
    234  auto
    236  m_operation.dwdesc = tensor.get_desc();
    237  return *this;
    238  }
    239 
    240  auto
    242  if (is_convolution_op == false) {
    244  &m_operation,
    245  CUDNN_STATUS_BAD_PARAM,
    246  "CUDNN_BACKEND_OPERATION_*_DESCRIPTOR: Non Convolution operation does not need Convolution DESCRIPTOR");
    247  }
    248  m_operation.cdesc = conv.get_desc();
    249  return *this;
    250  }
    251  auto
    253  if (is_matmul_op == false) {
    255  &m_operation,
    256  CUDNN_STATUS_BAD_PARAM,
    257  "CUDNN_BACKEND_OPERATION_*_DESCRIPTOR: Non Matmul operation does not need a Matrix Tensor");
    258  }
    259  m_operation.amatdesc = tensor.get_desc();
    260  return *this;
    261  }
    262  auto
    264  if (is_matmul_op == false) {
    266  &m_operation,
    267  CUDNN_STATUS_BAD_PARAM,
    268  "CUDNN_BACKEND_OPERATION_*_DESCRIPTOR: Non Matmul operation does not need b Matrix Tensor");
    269  }
    270  m_operation.bmatdesc = tensor.get_desc();
    271  return *this;
    272  }
    273  auto
    275  if (is_matmul_op == false) {
    277  &m_operation,
    278  CUDNN_STATUS_BAD_PARAM,
    279  "CUDNN_BACKEND_OPERATION_*_DESCRIPTOR: Non Matmul operation does not need c Matrix Tensor");
    280  }
    281  m_operation.cmatdesc = tensor.get_desc();
    282  return *this;
    283  }
    284  auto
    286  if (is_matmul_op == false) {
    288  &m_operation,
    289  CUDNN_STATUS_BAD_PARAM,
    290  "CUDNN_BACKEND_OPERATION_*_DESCRIPTOR: Non Matmul operation does not need MATMUL DESCRIPTOR");
    291  }
    292  m_operation.matmuldesc = matmulDesc.get_desc();
    293  return *this;
    294  }
    295  auto
    296  setpwDesc(PointWiseDesc_v8 const &pointWiseDesc) -> OperationBuilder_v8 & {
    297  if (is_pointwise_op == false) {
    299  &m_operation,
    300  CUDNN_STATUS_BAD_PARAM,
    301  "CUDNN_BACKEND_OPERATION_*_DESCRIPTOR: Non Pointwise operation does not need POINTWISE DESCRIPTOR");
    302  }
    303  m_operation.pwdesc = pointWiseDesc.get_desc();
    304  m_operation.pointwise_port_count = pointWiseDesc.getPortCount();
    305  m_operation.pointwise_mode = pointWiseDesc.getPointWiseMode();
    306 
    307  m_operation.is_pointwise_math_op = ((m_operation.pointwise_mode == CUDNN_POINTWISE_ADD) ||
    308  (m_operation.pointwise_mode == CUDNN_POINTWISE_MUL) ||
    309  (m_operation.pointwise_mode == CUDNN_POINTWISE_MIN) ||
    310  (m_operation.pointwise_mode == CUDNN_POINTWISE_MAX) ||
    311  (m_operation.pointwise_mode == CUDNN_POINTWISE_SQRT));
    312 
    313  m_operation.is_pointwise_activation_fwd_op = ((m_operation.pointwise_mode == CUDNN_POINTWISE_RELU_FWD) ||
    314  (m_operation.pointwise_mode == CUDNN_POINTWISE_TANH_FWD) ||
    315  (m_operation.pointwise_mode == CUDNN_POINTWISE_SIGMOID_FWD) ||
    316  (m_operation.pointwise_mode == CUDNN_POINTWISE_ELU_FWD) ||
    317  (m_operation.pointwise_mode == CUDNN_POINTWISE_GELU_FWD) ||
    318  (m_operation.pointwise_mode == CUDNN_POINTWISE_SOFTPLUS_FWD) ||
    319  (m_operation.pointwise_mode == CUDNN_POINTWISE_SWISH_FWD));
    320 
    321  m_operation.is_pointwise_activation_bwd_op = ((m_operation.pointwise_mode == CUDNN_POINTWISE_RELU_BWD) ||
    322  (m_operation.pointwise_mode == CUDNN_POINTWISE_TANH_BWD) ||
    323  (m_operation.pointwise_mode == CUDNN_POINTWISE_SIGMOID_BWD) ||
    324  (m_operation.pointwise_mode == CUDNN_POINTWISE_ELU_BWD) ||
    325  (m_operation.pointwise_mode == CUDNN_POINTWISE_GELU_BWD) ||
    326  (m_operation.pointwise_mode == CUDNN_POINTWISE_SOFTPLUS_BWD) ||
    327  (m_operation.pointwise_mode == CUDNN_POINTWISE_SWISH_BWD));
    328 
    329  return *this;
    330  }
    331 
    332  auto
    333  setAlpha(float alpha) -> OperationBuilder_v8 & {
    334  m_operation.alphabetaType = CUDNN_TYPE_FLOAT;
    335  m_operation.alpha_d = static_cast<double>(alpha);
    336  m_operation.alpha_s = alpha;
    337  return *this;
    338  }
    339  auto
    340  setAlpha(double alpha) -> OperationBuilder_v8 & {
    341  m_operation.alphabetaType = CUDNN_TYPE_DOUBLE;
    342  m_operation.alpha_s = static_cast<float>(alpha);
    343  m_operation.alpha_d = alpha;
    344  return *this;
    345  }
    346  auto
    347  setAlpha2(float alpha) -> OperationBuilder_v8 & {
    348  m_operation.alphabetaType = CUDNN_TYPE_FLOAT;
    349  m_operation.alpha2_d = static_cast<double>(alpha);
    350  m_operation.alpha2_s = alpha;
    351  return *this;
    352  }
    353  auto
    354  setAlpha2(double alpha) -> OperationBuilder_v8 & {
    355  m_operation.alphabetaType = CUDNN_TYPE_DOUBLE;
    356  m_operation.alpha2_s = static_cast<float>(alpha);
    357  m_operation.alpha2_d = alpha;
    358  return *this;
    359  }
    360  auto
    361  setBeta(float beta) -> OperationBuilder_v8 & {
    362  m_operation.alphabetaType = CUDNN_TYPE_FLOAT;
    363  m_operation.beta_d = static_cast<double>(beta);
    364  m_operation.beta_s = beta;
    365  return *this;
    366  }
    367  auto
    368  setBeta(double beta) -> OperationBuilder_v8 & {
    369  m_operation.alphabetaType = CUDNN_TYPE_DOUBLE;
    370  m_operation.beta_s = static_cast<float>(beta);
    371  m_operation.beta_d = beta;
    372  return *this;
    373  }
    374 
    375  OperationBuilder_v8(cudnnBackendDescriptorType_t mode) {
    376  m_operation.op_mode = mode;
    377  is_convolution_op = ((m_operation.op_mode == CUDNN_BACKEND_OPERATION_CONVOLUTION_FORWARD_DESCRIPTOR) ||
    378  (m_operation.op_mode == CUDNN_BACKEND_OPERATION_CONVOLUTION_BACKWARD_FILTER_DESCRIPTOR) ||
    379  (m_operation.op_mode == CUDNN_BACKEND_OPERATION_CONVOLUTION_BACKWARD_DATA_DESCRIPTOR));
    380 
    381  is_pointwise_op = (m_operation.op_mode == CUDNN_BACKEND_OPERATION_POINTWISE_DESCRIPTOR);
    382  is_matmul_op = (m_operation.op_mode == CUDNN_BACKEND_OPERATION_MATMUL_DESCRIPTOR);
    383  }
    386  Operation_v8 &&
    389  build() {
    390  if (m_operation.status != CUDNN_STATUS_SUCCESS) {
    392  &m_operation, m_operation.status, "CUDNN_BACKEND_OPERATION: Operation not initialized properly");
    393  return std::move(m_operation);
    394  }
    395 
    396  if (is_convolution_op) {
    397  if (m_operation.cdesc == nullptr) {
    399  &m_operation,
    400  CUDNN_STATUS_BAD_PARAM,
    401  "CUDNN_BACKEND_OPERATION: Check and Set the CUDNN_ATTR_OPERATION_CONVOLUTION_*_CONV_DESC");
    402  return std::move(m_operation);
    403  }
    404  if (m_operation.op_mode == CUDNN_BACKEND_OPERATION_CONVOLUTION_FORWARD_DESCRIPTOR) {
    405  if (m_operation.xdesc == nullptr) {
    407  &m_operation,
    408  CUDNN_STATUS_BAD_PARAM,
    409  "CUDNN_BACKEND_OPERATION: Check and Set the CUDNN_ATTR_OPERATION_CONVOLUTION_*_X");
    410  return std::move(m_operation);
    411  }
    412  if (m_operation.wdesc == nullptr) {
    414  &m_operation,
    415  CUDNN_STATUS_BAD_PARAM,
    416  "CUDNN_BACKEND_OPERATION: Check and Set the CUDNN_ATTR_OPERATION_CONVOLUTION_*_W");
    417  return std::move(m_operation);
    418  }
    419  if (m_operation.ydesc == nullptr) {
    421  &m_operation,
    422  CUDNN_STATUS_BAD_PARAM,
    423  "CUDNN_BACKEND_OPERATION: Check and Set the CUDNN_ATTR_OPERATION_CONVOLUTION_*_Y");
    424  return std::move(m_operation);
    425  }
    426 
    427  } else if (m_operation.op_mode == CUDNN_BACKEND_OPERATION_CONVOLUTION_BACKWARD_FILTER_DESCRIPTOR) {
    428  if (m_operation.ydesc != nullptr && m_operation.dydesc != nullptr) {
    429  set_error_and_throw_exception(&m_operation,
    430  CUDNN_STATUS_BAD_PARAM,
    431  "CUDNN_BACKEND_OPERATION: Ambiguous specification. Choose and Set "
    432  "only one of setyDesc() or setdyDesc()");
    433  return std::move(m_operation);
    434  }
    435  if (m_operation.ydesc == nullptr && m_operation.dydesc == nullptr) {
    437  &m_operation,
    438  CUDNN_STATUS_BAD_PARAM,
    439  "CUDNN_BACKEND_OPERATION: Choose and Set one of setyDesc() or setdyDesc()");
    440  return std::move(m_operation);
    441  }
    442  if (m_operation.xdesc == nullptr) {
    444  &m_operation,
    445  CUDNN_STATUS_BAD_PARAM,
    446  "CUDNN_BACKEND_OPERATION: Check and Set the CUDNN_ATTR_OPERATION_CONVOLUTION_*_X");
    447  return std::move(m_operation);
    448  }
    449  if (m_operation.wdesc != nullptr && m_operation.dwdesc != nullptr) {
    450  set_error_and_throw_exception(&m_operation,
    451  CUDNN_STATUS_BAD_PARAM,
    452  "CUDNN_BACKEND_OPERATION: Ambiguous specification. Choose and Set "
    453  "only one of setwDesc() or setdwDesc()");
    454  return std::move(m_operation);
    455  }
    456  if (m_operation.wdesc == nullptr && m_operation.dwdesc == nullptr) {
    458  &m_operation,
    459  CUDNN_STATUS_BAD_PARAM,
    460  "CUDNN_BACKEND_OPERATION: Choose and Set one of setwDesc() or setdwDesc()");
    461  return std::move(m_operation);
    462  }
    463  } else if (m_operation.op_mode == CUDNN_BACKEND_OPERATION_CONVOLUTION_BACKWARD_DATA_DESCRIPTOR) {
    464  if (m_operation.ydesc != nullptr && m_operation.dydesc != nullptr) {
    465  set_error_and_throw_exception(&m_operation,
    466  CUDNN_STATUS_BAD_PARAM,
    467  "CUDNN_BACKEND_OPERATION: Ambiguous specification. Choose and Set "
    468  "only one of setyDesc() or setdyDesc()");
    469  return std::move(m_operation);
    470  }
    471  if (m_operation.ydesc == nullptr && m_operation.dydesc == nullptr) {
    473  &m_operation,
    474  CUDNN_STATUS_BAD_PARAM,
    475  "CUDNN_BACKEND_OPERATION: Choose and Set one of setyDesc() or setdyDesc()");
    476  return std::move(m_operation);
    477  }
    478  if (m_operation.wdesc == nullptr) {
    480  &m_operation,
    481  CUDNN_STATUS_BAD_PARAM,
    482  "CUDNN_BACKEND_OPERATION: Check and Set the CUDNN_ATTR_OPERATION_CONVOLUTION_*_W");
    483  return std::move(m_operation);
    484  }
    485  if (m_operation.xdesc != nullptr && m_operation.dxdesc != nullptr) {
    486  set_error_and_throw_exception(&m_operation,
    487  CUDNN_STATUS_BAD_PARAM,
    488  "CUDNN_BACKEND_OPERATION: Ambiguous specification. Choose and Set "
    489  "only one of setxDesc() or setdxDesc()");
    490  return std::move(m_operation);
    491  }
    492  if (m_operation.xdesc == nullptr && m_operation.dxdesc == nullptr) {
    494  &m_operation,
    495  CUDNN_STATUS_BAD_PARAM,
    496  "CUDNN_BACKEND_OPERATION: Choose and Set one of setxDesc() or setdxDesc()");
    497  return std::move(m_operation);
    498  }
    499  } else {
    500  set_error_and_throw_exception(&m_operation,
    501  CUDNN_STATUS_BAD_PARAM,
    502  "CUDNN_BACKEND_OPERATION: Unsupported convolution operation. Check and "
    503  "set CUDNN_BACKEND_OPERATION_CONVOLUTION_*_DESCRIPTOR");
    504  return std::move(m_operation);
    505  }
    506  } else if (is_pointwise_op) {
    507  if (m_operation.xdesc == nullptr) {
    509  &m_operation,
    510  CUDNN_STATUS_BAD_PARAM,
    511  "CUDNN_BACKEND_OPERATION: Check and Set the CUDNN_ATTR_OPERATION_POINTWISE_XDESC");
    512  return std::move(m_operation);
    513  }
    514 
    515  if (m_operation.is_pointwise_math_op) {
    516  if (m_operation.pointwise_port_count == 3 && m_operation.bdesc == nullptr) {
    518  &m_operation,
    519  CUDNN_STATUS_BAD_PARAM,
    520  "CUDNN_BACKEND_OPERATION: Check and Set the CUDNN_ATTR_OPERATION_POINTWISE_BDESC");
    521  return std::move(m_operation);
    522  }
    523  if (m_operation.ydesc == nullptr) {
    525  &m_operation,
    526  CUDNN_STATUS_BAD_PARAM,
    527  "CUDNN_BACKEND_OPERATION: Check and Set the CUDNN_ATTR_OPERATION_POINTWISE_YDESC");
    528  return std::move(m_operation);
    529  }
    530  } else if (m_operation.is_pointwise_activation_fwd_op) {
    531  if (m_operation.ydesc == nullptr) {
    533  &m_operation,
    534  CUDNN_STATUS_BAD_PARAM,
    535  "CUDNN_BACKEND_OPERATION: Check and Set the CUDNN_ATTR_OPERATION_POINTWISE_YDESC");
    536  return std::move(m_operation);
    537  }
    538  } else if (m_operation.is_pointwise_activation_bwd_op) {
    539  if (m_operation.dydesc == nullptr) {
    541  &m_operation,
    542  CUDNN_STATUS_BAD_PARAM,
    543  "CUDNN_BACKEND_OPERATION: Check and Set the CUDNN_ATTR_OPERATION_POINTWISE_DYDESC");
    544  return std::move(m_operation);
    545  }
    546  if (m_operation.dxdesc == nullptr) {
    548  &m_operation,
    549  CUDNN_STATUS_BAD_PARAM,
    550  "CUDNN_BACKEND_OPERATION: Check and Set the CUDNN_ATTR_OPERATION_POINTWISE_DXDESC");
    551  return std::move(m_operation);
    552  }
    553  } else {
    555  &m_operation,
    556  CUDNN_STATUS_BAD_PARAM,
    557  "CUDNN_BACKEND_OPERATION: Unsupported cudnn pointwise mode. Check and set CUDNN_POINTWISE_*");
    558  return std::move(m_operation);
    559  }
    560 
    561  } else if (is_matmul_op) {
    562  if (m_operation.matmuldesc == nullptr) {
    564  &m_operation,
    565  CUDNN_STATUS_BAD_PARAM,
    566  "CUDNN_BACKEND_OPERATION: Check and Set the CUDNN_ATTR_OPERATION_MATMUL_DESC");
    567  return std::move(m_operation);
    568  }
    569  if (m_operation.amatdesc == nullptr) {
    571  &m_operation,
    572  CUDNN_STATUS_BAD_PARAM,
    573  "CUDNN_BACKEND_OPERATION: Check and Set the CUDNN_ATTR_OPERATION_MATMUL_ADESC");
    574  return std::move(m_operation);
    575  }
    576  if (m_operation.bmatdesc == nullptr) {
    578  &m_operation,
    579  CUDNN_STATUS_BAD_PARAM,
    580  "CUDNN_BACKEND_OPERATION: Check and Set the CUDNN_ATTR_OPERATION_MATMUL_BDESC");
    581  return std::move(m_operation);
    582  }
    583  if (m_operation.cmatdesc == nullptr) {
    585  &m_operation,
    586  CUDNN_STATUS_BAD_PARAM,
    587  "CUDNN_BACKEND_OPERATION: Check and Set the CUDNN_ATTR_OPERATION_MATMUL_CDESC");
    588  return std::move(m_operation);
    589  }
    590  } else {
    591  set_error_and_throw_exception(&m_operation,
    592  CUDNN_STATUS_BAD_PARAM,
    593  "CUDNN_BACKEND_OPERATION_DESCRIPTOR: Unsupported cudnn backend descriptor "
    594  "type. Check and set CUDNN_BACKEND_OPERATION_*_DESCRIPTOR");
    595  return std::move(m_operation);
    596  }
    597 
    598  // Create the descriptor.
    599  auto status = m_operation.initialize_managed_backend_pointer(m_operation.op_mode);
    600  if (status != CUDNN_STATUS_SUCCESS) {
    601  set_error_and_throw_exception(&m_operation, status, "CUDNN_BACKEND_OPERATION: cudnnCreate Failed");
    602  return std::move(m_operation);
    603  }
    604 
    605  if (m_operation.op_mode == CUDNN_BACKEND_OPERATION_CONVOLUTION_FORWARD_DESCRIPTOR) {
    606  m_operation.operationTag = "ConvFwd";
    607 
    608  status = cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(),
    609  CUDNN_ATTR_OPERATION_CONVOLUTION_FORWARD_X,
    610  CUDNN_TYPE_BACKEND_DESCRIPTOR,
    611  1,
    612  &(m_operation.xdesc->get_backend_descriptor()));
    613  if (status != CUDNN_STATUS_SUCCESS) {
    615  &m_operation,
    616  status,
    617  "CUDNN_BACKEND_OPERATION: SetAttribute CUDNN_ATTR_OPERATION_CONVOLUTION_FORWARD_X Failed");
    618  return std::move(m_operation);
    619  }
    620  status = cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(),
    621  CUDNN_ATTR_OPERATION_CONVOLUTION_FORWARD_W,
    622  CUDNN_TYPE_BACKEND_DESCRIPTOR,
    623  1,
    624  &(m_operation.wdesc->get_backend_descriptor()));
    625  if (status != CUDNN_STATUS_SUCCESS) {
    627  &m_operation,
    628  status,
    629  "CUDNN_BACKEND_OPERATION: SetAttribute CUDNN_ATTR_OPERATION_CONVOLUTION_FORWARD_W Failed");
    630  return std::move(m_operation);
    631  }
    632  status = cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(),
    633  CUDNN_ATTR_OPERATION_CONVOLUTION_FORWARD_Y,
    634  CUDNN_TYPE_BACKEND_DESCRIPTOR,
    635  1,
    636  &(m_operation.ydesc->get_backend_descriptor()));
    637  if (status != CUDNN_STATUS_SUCCESS) {
    639  &m_operation,
    640  status,
    641  "CUDNN_BACKEND_OPERATION: SetAttribute CUDNN_ATTR_OPERATION_CONVOLUTION_FORWARD_Y Failed");
    642  return std::move(m_operation);
    643  }
    644  status = cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(),
    645  CUDNN_ATTR_OPERATION_CONVOLUTION_FORWARD_CONV_DESC,
    646  CUDNN_TYPE_BACKEND_DESCRIPTOR,
    647  1,
    648  &(m_operation.cdesc->get_backend_descriptor()));
    649  if (status != CUDNN_STATUS_SUCCESS) {
    651  &m_operation,
    652  status,
    653  "CUDNN_BACKEND_OPERATION: SetAttribute CUDNN_ATTR_OPERATION_CONVOLUTION_FORWARD_CONV_DESC Failed");
    654  return std::move(m_operation);
    655  }
    656  void *alpha = (m_operation.alphabetaType == CUDNN_TYPE_FLOAT ? static_cast<void *>(&m_operation.alpha_s)
    657  : static_cast<void *>(&m_operation.alpha_d));
    658  void *beta = (m_operation.alphabetaType == CUDNN_TYPE_FLOAT ? static_cast<void *>(&m_operation.beta_s)
    659  : static_cast<void *>(&m_operation.beta_d));
    660  status = cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(),
    661  CUDNN_ATTR_OPERATION_CONVOLUTION_FORWARD_ALPHA,
    662  m_operation.alphabetaType,
    663  1,
    664  alpha);
    665  if (status != CUDNN_STATUS_SUCCESS) {
    667  &m_operation,
    668  status,
    669  "CUDNN_BACKEND_OPERATION: SetAttribute CUDNN_ATTR_OPERATION_CONVOLUTION_FORWARD_ALPHA Failed");
    670  return std::move(m_operation);
    671  }
    672  status = cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(),
    673  CUDNN_ATTR_OPERATION_CONVOLUTION_FORWARD_BETA,
    674  m_operation.alphabetaType,
    675  1,
    676  beta);
    677  if (status != CUDNN_STATUS_SUCCESS) {
    679  &m_operation,
    680  status,
    681  "CUDNN_BACKEND_OPERATION: SetAttribute CUDNN_ATTR_OPERATION_CONVOLUTION_FORWARD_BETA Failed");
    682  return std::move(m_operation);
    683  }
    684  } else if (m_operation.op_mode == CUDNN_BACKEND_OPERATION_CONVOLUTION_BACKWARD_FILTER_DESCRIPTOR) {
    685  m_operation.operationTag = "ConvBwdFilter";
    686 
    687  status = cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(),
    688  CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_FILTER_X,
    689  CUDNN_TYPE_BACKEND_DESCRIPTOR,
    690  1,
    691  &(m_operation.xdesc->get_backend_descriptor()));
    692  if (status != CUDNN_STATUS_SUCCESS) {
    694  &m_operation,
    695  status,
    696  "CUDNN_BACKEND_OPERATION: SetAttribute CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_FILTER_X Failed");
    697  return std::move(m_operation);
    698  }
    699 
    700  auto dwdesc_ = m_operation.dwdesc != nullptr ? m_operation.dwdesc : m_operation.wdesc;
    701  status = cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(),
    702  CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_FILTER_DW,
    703  CUDNN_TYPE_BACKEND_DESCRIPTOR,
    704  1,
    705  &(dwdesc_->get_backend_descriptor()));
    706  if (status != CUDNN_STATUS_SUCCESS) {
    708  &m_operation,
    709  status,
    710  "CUDNN_BACKEND_OPERATION: SetAttribute CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_FILTER_DW Failed");
    711  return std::move(m_operation);
    712  }
    713 
    714  auto dydesc_ = m_operation.dydesc != nullptr ? m_operation.dydesc : m_operation.ydesc;
    715  status = cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(),
    716  CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_FILTER_DY,
    717  CUDNN_TYPE_BACKEND_DESCRIPTOR,
    718  1,
    719  &(dydesc_->get_backend_descriptor()));
    720  if (status != CUDNN_STATUS_SUCCESS) {
    722  &m_operation,
    723  status,
    724  "CUDNN_BACKEND_OPERATION: SetAttribute CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_FILTER_DY Failed");
    725  return std::move(m_operation);
    726  }
    727 
    728  status = cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(),
    729  CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_FILTER_CONV_DESC,
    730  CUDNN_TYPE_BACKEND_DESCRIPTOR,
    731  1,
    732  &(m_operation.cdesc->get_backend_descriptor()));
    733  if (status != CUDNN_STATUS_SUCCESS) {
    734  set_error_and_throw_exception(&m_operation,
    735  status,
    736  "CUDNN_BACKEND_OPERATION: SetAttribute "
    737  "CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_FILTER_CONV_DESC Failed");
    738  return std::move(m_operation);
    739  }
    740  void *alpha = (m_operation.alphabetaType == CUDNN_TYPE_FLOAT ? static_cast<void *>(&m_operation.alpha_s)
    741  : static_cast<void *>(&m_operation.alpha_d));
    742  void *beta = (m_operation.alphabetaType == CUDNN_TYPE_FLOAT ? static_cast<void *>(&m_operation.beta_s)
    743  : static_cast<void *>(&m_operation.beta_d));
    744  status = cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(),
    745  CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_FILTER_ALPHA,
    746  m_operation.alphabetaType,
    747  1,
    748  alpha);
    749  if (status != CUDNN_STATUS_SUCCESS) {
    751  &m_operation,
    752  status,
    753  "CUDNN_BACKEND_OPERATION: SetAttribute CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_FILTER_ALPHA Failed");
    754  return std::move(m_operation);
    755  }
    756  status = cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(),
    757  CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_FILTER_BETA,
    758  m_operation.alphabetaType,
    759  1,
    760  beta);
    761  if (status != CUDNN_STATUS_SUCCESS) {
    763  &m_operation,
    764  status,
    765  "CUDNN_BACKEND_OPERATION: SetAttribute CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_FILTER_BETA Failed");
    766  return std::move(m_operation);
    767  }
    768  } else if (m_operation.op_mode == CUDNN_BACKEND_OPERATION_CONVOLUTION_BACKWARD_DATA_DESCRIPTOR) {
    769  m_operation.operationTag = "ConvBwdData";
    770 
    771  auto dxdesc_ = m_operation.dxdesc != nullptr ? m_operation.dxdesc : m_operation.xdesc;
    772  status = cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(),
    773  CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_DATA_DX,
    774  CUDNN_TYPE_BACKEND_DESCRIPTOR,
    775  1,
    776  &(dxdesc_->get_backend_descriptor()));
    777  if (status != CUDNN_STATUS_SUCCESS) {
    779  &m_operation,
    780  status,
    781  "CUDNN_BACKEND_OPERATION: SetAttribute CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_DATA_DX Failed");
    782  return std::move(m_operation);
    783  }
    784 
    785  status = cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(),
    786  CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_DATA_W,
    787  CUDNN_TYPE_BACKEND_DESCRIPTOR,
    788  1,
    789  &(m_operation.wdesc->get_backend_descriptor()));
    790  if (status != CUDNN_STATUS_SUCCESS) {
    792  &m_operation,
    793  status,
    794  "CUDNN_BACKEND_OPERATION: SetAttribute CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_DATA_W Failed");
    795  return std::move(m_operation);
    796  }
    797 
    798  auto dydesc_ = m_operation.dydesc != nullptr ? m_operation.dydesc : m_operation.ydesc;
    799  status = cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(),
    800  CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_DATA_DY,
    801  CUDNN_TYPE_BACKEND_DESCRIPTOR,
    802  1,
    803  &(dydesc_->get_backend_descriptor()));
    804  if (status != CUDNN_STATUS_SUCCESS) {
    806  &m_operation,
    807  status,
    808  "CUDNN_BACKEND_OPERATION: SetAttribute CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_DATA_DY Failed");
    809  return std::move(m_operation);
    810  }
    811 
    812  status = cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(),
    813  CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_DATA_CONV_DESC,
    814  CUDNN_TYPE_BACKEND_DESCRIPTOR,
    815  1,
    816  &(m_operation.cdesc->get_backend_descriptor()));
    817  if (status != CUDNN_STATUS_SUCCESS) {
    819  &m_operation,
    820  status,
    821  "CUDNN_BACKEND_OPERATION: SetAttribute CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_DATA_CONV_DESC Failed");
    822  return std::move(m_operation);
    823  }
    824 
    825  void *alpha = (m_operation.alphabetaType == CUDNN_TYPE_FLOAT ? static_cast<void *>(&m_operation.alpha_s)
    826  : static_cast<void *>(&m_operation.alpha_d));
    827  void *beta = (m_operation.alphabetaType == CUDNN_TYPE_FLOAT ? static_cast<void *>(&m_operation.beta_s)
    828  : static_cast<void *>(&m_operation.beta_d));
    829  status = cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(),
    830  CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_DATA_ALPHA,
    831  m_operation.alphabetaType,
    832  1,
    833  alpha);
    834  if (status != CUDNN_STATUS_SUCCESS) {
    836  &m_operation,
    837  status,
    838  "CUDNN_BACKEND_OPERATION: SetAttribute CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_DATA_ALPHA Failed");
    839  return std::move(m_operation);
    840  }
    841  status = cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(),
    842  CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_DATA_BETA,
    843  m_operation.alphabetaType,
    844  1,
    845  beta);
    846  if (status != CUDNN_STATUS_SUCCESS) {
    848  &m_operation,
    849  status,
    850  "CUDNN_BACKEND_OPERATION: SetAttribute CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_DATA_BETA Failed");
    851  return std::move(m_operation);
    852  }
    853  } else if (m_operation.op_mode == CUDNN_BACKEND_OPERATION_POINTWISE_DESCRIPTOR) {
    854  switch (m_operation.pointwise_mode) {
    855  case CUDNN_POINTWISE_ADD:
    856  m_operation.operationTag = "Add";
    857  break;
    858  case CUDNN_POINTWISE_MUL:
    859  m_operation.operationTag = "Mul";
    860  break;
    861  case CUDNN_POINTWISE_MIN:
    862  m_operation.operationTag = "Min";
    863  break;
    864  case CUDNN_POINTWISE_MAX:
    865  m_operation.operationTag = "Max";
    866  break;
    867  case CUDNN_POINTWISE_SQRT:
    868  m_operation.operationTag = "Sqrt";
    869  break;
    870  case CUDNN_POINTWISE_RELU_FWD:
    871  m_operation.operationTag = "ReluFwd";
    872  break;
    873  case CUDNN_POINTWISE_TANH_FWD:
    874  m_operation.operationTag = "TanhFwd";
    875  break;
    876  case CUDNN_POINTWISE_SIGMOID_FWD:
    877  m_operation.operationTag = "SigmoidFwd";
    878  break;
    879  case CUDNN_POINTWISE_ELU_FWD:
    880  m_operation.operationTag = "EluFwd";
    881  break;
    882  case CUDNN_POINTWISE_GELU_FWD:
    883  m_operation.operationTag = "GeluFwd";
    884  break;
    885  case CUDNN_POINTWISE_SOFTPLUS_FWD:
    886  m_operation.operationTag = "SoftplusFwd";
    887  break;
    888  case CUDNN_POINTWISE_SWISH_FWD:
    889  m_operation.operationTag = "SwishFwd";
    890  break;
    891  case CUDNN_POINTWISE_RELU_BWD:
    892  m_operation.operationTag = "ReluBwd";
    893  break;
    894  case CUDNN_POINTWISE_TANH_BWD:
    895  m_operation.operationTag = "TanhBwd";
    896  break;
    897  case CUDNN_POINTWISE_SIGMOID_BWD:
    898  m_operation.operationTag = "SigmoidBwd";
    899  break;
    900  case CUDNN_POINTWISE_ELU_BWD:
    901  m_operation.operationTag = "EluBwd";
    902  break;
    903  case CUDNN_POINTWISE_GELU_BWD:
    904  m_operation.operationTag = "GeluBwd";
    905  break;
    906  case CUDNN_POINTWISE_SOFTPLUS_BWD:
    907  m_operation.operationTag = "SoftplusBwd";
    908  break;
    909  case CUDNN_POINTWISE_SWISH_BWD:
    910  m_operation.operationTag = "SwishBwd";
    911  break;
    912  default:
    913  m_operation.operationTag = "OtherOp";
    914  break;
    915  }
    916 
    917  status = cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(),
    918  CUDNN_ATTR_OPERATION_POINTWISE_PW_DESCRIPTOR,
    919  CUDNN_TYPE_BACKEND_DESCRIPTOR,
    920  1,
    921  &(m_operation.pwdesc->get_backend_descriptor()));
    922  if (status != CUDNN_STATUS_SUCCESS) {
    924  &m_operation,
    925  status,
    926  "CUDNN_BACKEND_OPERATION: SetAttribute CUDNN_ATTR_OPERATION_POINTWISE_PW_DESCRIPTOR Failed");
    927  return std::move(m_operation);
    928  }
    929 
    930  status = cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(),
    931  CUDNN_ATTR_OPERATION_POINTWISE_XDESC,
    932  CUDNN_TYPE_BACKEND_DESCRIPTOR,
    933  1,
    934  &(m_operation.xdesc->get_backend_descriptor()));
    935  if (status != CUDNN_STATUS_SUCCESS) {
    937  &m_operation,
    938  status,
    939  "CUDNN_BACKEND_OPERATION: SetAttribute CUDNN_ATTR_OPERATION_POINTWISE_XDESC Failed");
    940  return std::move(m_operation);
    941  }
    942 
    943  if (!m_operation.is_pointwise_activation_bwd_op) {
    944  status = cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(),
    945  CUDNN_ATTR_OPERATION_POINTWISE_YDESC,
    946  CUDNN_TYPE_BACKEND_DESCRIPTOR,
    947  1,
    948  &(m_operation.ydesc->get_backend_descriptor()));
    949  if (status != CUDNN_STATUS_SUCCESS) {
    951  &m_operation,
    952  status,
    953  "CUDNN_BACKEND_OPERATION: SetAttribute CUDNN_ATTR_OPERATION_POINTWISE_YDESC Failed");
    954  return std::move(m_operation);
    955  }
    956  } else {
    957  status = cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(),
    958  CUDNN_ATTR_OPERATION_POINTWISE_DYDESC,
    959  CUDNN_TYPE_BACKEND_DESCRIPTOR,
    960  1,
    961  &(m_operation.dydesc->get_backend_descriptor()));
    962  if (status != CUDNN_STATUS_SUCCESS) {
    964  &m_operation,
    965  status,
    966  "CUDNN_BACKEND_OPERATION: SetAttribute CUDNN_ATTR_OPERATION_POINTWISE_DYDESC Failed");
    967  return std::move(m_operation);
    968  }
    969 
    970  status = cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(),
    971  CUDNN_ATTR_OPERATION_POINTWISE_DXDESC,
    972  CUDNN_TYPE_BACKEND_DESCRIPTOR,
    973  1,
    974  &(m_operation.dxdesc->get_backend_descriptor()));
    975  if (status != CUDNN_STATUS_SUCCESS) {
    977  &m_operation,
    978  status,
    979  "CUDNN_BACKEND_OPERATION: SetAttribute CUDNN_ATTR_OPERATION_POINTWISE_DXDESC Failed");
    980  return std::move(m_operation);
    981  }
    982  }
    983 
    984  void *alpha = (m_operation.alphabetaType == CUDNN_TYPE_FLOAT ? static_cast<void *>(&m_operation.alpha_s)
    985  : static_cast<void *>(&m_operation.alpha_d));
    986  void *alpha2 = (m_operation.alphabetaType == CUDNN_TYPE_FLOAT ? static_cast<void *>(&m_operation.alpha2_s)
    987  : static_cast<void *>(&m_operation.alpha2_d));
    988  status = cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(),
    989  CUDNN_ATTR_OPERATION_POINTWISE_ALPHA1,
    990  m_operation.alphabetaType,
    991  1,
    992  alpha);
    993  if (status != CUDNN_STATUS_SUCCESS) {
    995  &m_operation,
    996  status,
    997  "CUDNN_BACKEND_OPERATION: SetAttribute CUDNN_ATTR_OPERATION_POINTWISE_ALPHA1 Failed");
    998  return std::move(m_operation);
    999  }
    1000  status = cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(),
    1001  CUDNN_ATTR_OPERATION_POINTWISE_ALPHA2,
    1002  m_operation.alphabetaType,
    1003  1,
    1004  alpha2);
    1005  if (status != CUDNN_STATUS_SUCCESS) {
    1007  &m_operation,
    1008  status,
    1009  "CUDNN_BACKEND_OPERATION: SetAttribute CUDNN_ATTR_OPERATION_POINTWISE_ALPHA2 Failed");
    1010  return std::move(m_operation);
    1011  }
    1012 
    1013  if (m_operation.pointwise_port_count == 3 && !m_operation.is_pointwise_activation_bwd_op) {
    1014  status = cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(),
    1015  CUDNN_ATTR_OPERATION_POINTWISE_BDESC,
    1016  CUDNN_TYPE_BACKEND_DESCRIPTOR,
    1017  1,
    1018  &(m_operation.bdesc->get_backend_descriptor()));
    1019  if (status != CUDNN_STATUS_SUCCESS) {
    1021  &m_operation,
    1022  status,
    1023  "CUDNN_BACKEND_OPERATION: SetAttribute CUDNN_ATTR_OPERATION_POINTWISE_BDESC Failed");
    1024  return std::move(m_operation);
    1025  }
    1026  }
    1027  } else if (m_operation.op_mode == CUDNN_BACKEND_OPERATION_MATMUL_DESCRIPTOR) {
    1028  m_operation.operationTag = "Matmul";
    1029  status = cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(),
    1030  CUDNN_ATTR_OPERATION_MATMUL_ADESC,
    1031  CUDNN_TYPE_BACKEND_DESCRIPTOR,
    1032  1,
    1033  &(m_operation.amatdesc->get_backend_descriptor()));
    1034  if (status != CUDNN_STATUS_SUCCESS) {
    1036  &m_operation,
    1037  status,
    1038  "CUDNN_BACKEND_OPERATION: SetAttribute CUDNN_ATTR_OPERATION_MATMUL_ADESC Failed");
    1039  return std::move(m_operation);
    1040  }
    1041  status = cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(),
    1042  CUDNN_ATTR_OPERATION_MATMUL_BDESC,
    1043  CUDNN_TYPE_BACKEND_DESCRIPTOR,
    1044  1,
    1045  &(m_operation.bmatdesc->get_backend_descriptor()));
    1046  if (status != CUDNN_STATUS_SUCCESS) {
    1048  &m_operation,
    1049  status,
    1050  "CUDNN_BACKEND_OPERATION: SetAttribute CUDNN_ATTR_OPERATION_MATMUL_BDESC Failed");
    1051  return std::move(m_operation);
    1052  }
    1053  status = cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(),
    1054  CUDNN_ATTR_OPERATION_MATMUL_CDESC,
    1055  CUDNN_TYPE_BACKEND_DESCRIPTOR,
    1056  1,
    1057  &(m_operation.cmatdesc->get_backend_descriptor()));
    1058  if (status != CUDNN_STATUS_SUCCESS) {
    1060  &m_operation,
    1061  status,
    1062  "CUDNN_BACKEND_OPERATION: SetAttribute CUDNN_ATTR_OPERATION_MATMUL_CDESC Failed");
    1063  return std::move(m_operation);
    1064  }
    1065  status = cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(),
    1066  CUDNN_ATTR_OPERATION_MATMUL_DESC,
    1067  CUDNN_TYPE_BACKEND_DESCRIPTOR,
    1068  1,
    1069  &(m_operation.matmuldesc->get_backend_descriptor()));
    1070  if (status != CUDNN_STATUS_SUCCESS) {
    1072  &m_operation,
    1073  status,
    1074  "CUDNN_BACKEND_OPERATION: SetAttribute CUDNN_ATTR_OPERATION_MATMUL_DESC Failed");
    1075  return std::move(m_operation);
    1076  }
    1077  }
    1078  status = cudnnBackendFinalize(m_operation.pointer->get_backend_descriptor());
    1079  if (status != CUDNN_STATUS_SUCCESS) {
    1080  set_error_and_throw_exception(&m_operation, status, "CUDNN_BACKEND_OPERATION: cudnnFinalize Failed");
    1081  return std::move(m_operation);
    1082  }
    1083  return std::move(m_operation);
    1084  }
    1085 };
    1086 }
    +
    auto setcDesc(ConvDesc_v8 const &conv) -> OperationBuilder_v8 &
    cudnnStatus_t initialize_managed_backend_pointer(cudnnBackendDescriptorType_t type)
    Initializes the underlying managed descriptor.
    static void set_error_and_throw_exception(BackendDescriptor const *desc, cudnnStatus_t status, const char *message)
    -
    auto setAlpha(float alpha) -> OperationBuilder_v8 &
    -
    auto setwDesc(Tensor_v8 const &tensor) -> OperationBuilder_v8 &
    +
    auto setAlpha(float alpha) -> OperationBuilder_v8 &
    +
    auto setdxDesc(Tensor_v8 const &tensor) -> OperationBuilder_v8 &
    +
    auto setwDesc(Tensor_v8 const &tensor) -> OperationBuilder_v8 &
    + +
    Operation_v8 & operator=(Operation_v8 const &)=delete
    - -
    auto setbDesc(Tensor_v8 const &tensor) -> OperationBuilder_v8 &
    + +
    auto setbDesc(Tensor_v8 const &tensor) -> OperationBuilder_v8 &
    - - - -
    cudnnBackendDescriptorType_t op_mode
    - - - -
    auto setBeta(float beta) -> OperationBuilder_v8 &
    + + + +
    auto setaMatDesc(Tensor_v8 const &tensor) -> OperationBuilder_v8 &
    + +
    auto setmatmulDesc(MatMulDesc_v8 const &matmulDesc) -> OperationBuilder_v8 &
    +
    cudnnBackendDescriptorType_t op_mode
    + + + +
    auto setBeta(float beta) -> OperationBuilder_v8 &
    - -
    auto setpwDesc(PointWiseDesc_v8 const &pointWiseDesc) -> OperationBuilder_v8 &
    -
    auto setAlpha2(float alpha) -> OperationBuilder_v8 &
    - - - + +
    auto setpwDesc(PointWiseDesc_v8 const &pointWiseDesc) -> OperationBuilder_v8 &
    +
    auto setAlpha2(float alpha) -> OperationBuilder_v8 &
    +
    auto setdwDesc(Tensor_v8 const &tensor) -> OperationBuilder_v8 &
    + + +
    cudnnStatus_t get_status() const
    Current status of the descriptor.
    -
    auto setBeta(double beta) -> OperationBuilder_v8 &
    - +
    auto setBeta(double beta) -> OperationBuilder_v8 &
    +
    auto setbMatDesc(Tensor_v8 const &tensor) -> OperationBuilder_v8 &
    +
    std::shared_ptr< OpaqueBackendPointer > ManagedOpaqueDescriptor
    +
    auto setdyDesc(ManagedOpaqueDescriptor const &raw_tensor) -> OperationBuilder_v8 &
    -
    std::string describe() const override
    Return a string describing the backend Descriptor.
    +
    std::string describe() const override
    Return a string describing the backend Descriptor.
    + + + +
    auto setdyDesc(Tensor_v8 const &tensor) -> OperationBuilder_v8 &
    - +
    const char * get_error() const
    Diagonistic error message if any.
    - -
    cudnnBackendAttributeType_t alphabetaType
    - + +
    cudnnBackendAttributeType_t alphabetaType
    + - - -
    auto setxDesc(ManagedOpaqueDescriptor const &raw_tensor) -> OperationBuilder_v8 &
    - -
    auto setyDesc(Tensor_v8 const &tensor) -> OperationBuilder_v8 &
    -
    auto setxDesc(Tensor_v8 const &tensor) -> OperationBuilder_v8 &
    - -
    ManagedOpaqueDescriptor getOutputTensor()
    -
    auto setAlpha2(double alpha) -> OperationBuilder_v8 &
    + + + + +
    auto setxDesc(ManagedOpaqueDescriptor const &raw_tensor) -> OperationBuilder_v8 &
    +
    auto setcMatDesc(Tensor_v8 const &tensor) -> OperationBuilder_v8 &
    + +
    auto setyDesc(Tensor_v8 const &tensor) -> OperationBuilder_v8 &
    + +
    auto setxDesc(Tensor_v8 const &tensor) -> OperationBuilder_v8 &
    + + +
    ManagedOpaqueDescriptor getOutputTensor()
    +
    auto setAlpha2(double alpha) -> OperationBuilder_v8 &
    + -
    OperationBuilder_v8(cudnnBackendDescriptorType_t mode)
    - -
    std::string const & getTag() const
    -
    auto setAlpha(double alpha) -> OperationBuilder_v8 &
    +
    OperationBuilder_v8(cudnnBackendDescriptorType_t mode)
    + +
    std::string const & getTag() const
    +
    auto setAlpha(double alpha) -> OperationBuilder_v8 &
    cudnnStatus_t status
    Shared pointer of the OpaqueBackendPointer.
    +
    diff --git a/docs/da/d5f/cudnn__frontend__PointWiseDesc_8h.html b/docs/da/d5f/cudnn__frontend__PointWiseDesc_8h.html index 4b794cb2c..3c0c03dc5 100644 --- a/docs/da/d5f/cudnn__frontend__PointWiseDesc_8h.html +++ b/docs/da/d5f/cudnn__frontend__PointWiseDesc_8h.html @@ -5,7 +5,7 @@ -CUDNN API: cudnn_frontend_PointWiseDesc.h File Reference +CUDNN Frontend API: cudnn_frontend_PointWiseDesc.h File Reference @@ -28,8 +28,8 @@ -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    diff --git a/docs/da/d5f/cudnn__frontend__PointWiseDesc_8h_source.html b/docs/da/d5f/cudnn__frontend__PointWiseDesc_8h_source.html index e4db5ffd3..5e618bdca 100644 --- a/docs/da/d5f/cudnn__frontend__PointWiseDesc_8h_source.html +++ b/docs/da/d5f/cudnn__frontend__PointWiseDesc_8h_source.html @@ -5,7 +5,7 @@ -CUDNN API: cudnn_frontend_PointWiseDesc.h Source File +CUDNN Frontend API: cudnn_frontend_PointWiseDesc.h Source File @@ -28,8 +28,8 @@ -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    @@ -84,35 +84,45 @@
    cudnn_frontend_PointWiseDesc.h
    -Go to the documentation of this file.
    1 /*
    2  * Copyright (c) 2021, NVIDIA CORPORATION. All rights reserved.
    3  *
    4  * Permission is hereby granted, free of charge, to any person obtaining a
    5  * copy of this software and associated documentation files (the "Software"),
    6  * to deal in the Software without restriction, including without limitation
    7  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
    8  * and/or sell copies of the Software, and to permit persons to whom the
    9  * Software is furnished to do so, subject to the following conditions:
    10  *
    11  * The above copyright notice and this permission notice shall be included in
    12  * all copies or substantial portions of the Software.
    13  *
    14  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    15  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    16  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
    17  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    18  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
    19  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
    20  * DEALINGS IN THE SOFTWARE.
    21  */
    22 
    23 #pragma once
    24 
    25 #include <algorithm>
    26 #include <array>
    27 #include <functional>
    28 #include <memory>
    29 #include <sstream>
    30 #include <utility>
    31 
    32 #include <cudnn.h>
    33 #include <cudnn_backend.h>
    34 
    35 #include "cudnn_frontend_utils.h"
    36 
    37 namespace cudnn_frontend {
    52  public:
    54  std::string
    55  describe() const override {
    56  std::stringstream ss;
    57  char sep = ' ';
    58  ss << "CUDNN_BACKEND_POINTWISE_DESCRIPTOR :"
    59  << " Mode: " << (mode) << " Math precision " << (math_precision);
    60  return ss.str();
    61  }
    62 
    63  int64_t
    64  getPortCount() const {
    65  switch (mode) {
    66  case CUDNN_POINTWISE_ADD:
    67  case CUDNN_POINTWISE_MUL:
    68  case CUDNN_POINTWISE_MIN:
    69  case CUDNN_POINTWISE_MAX:
    70  return 3;
    71  case CUDNN_POINTWISE_SQRT:
    72  case CUDNN_POINTWISE_RELU_FWD:
    73  case CUDNN_POINTWISE_TANH_FWD:
    74  case CUDNN_POINTWISE_SIGMOID_FWD:
    75  case CUDNN_POINTWISE_ELU_FWD:
    76  return 2;
    77  default:
    78  return -1;
    79  }
    80  }
    81 
    82  cudnnPointwiseMode_t
    83  getPointWiseMode() const {
    84  return mode;
    85  }
    86 
    88  : BackendDescriptor(from.get_desc(), from.get_status(), from.get_error()),
    90  mode(from.mode),
    92  upper_clip(from.upper_clip),
    93  lower_clip(from.lower_clip) {}
    94 
    95  ~PointWiseDesc_v8() = default;
    96 
    97  private:
    98  PointWiseDesc_v8() = default;
    99  PointWiseDesc_v8(PointWiseDesc_v8 const &) = delete;
    101  operator=(PointWiseDesc_v8 const &) = delete;
    102 
    103  cudnnDataType_t math_precision = CUDNN_DATA_FLOAT;
    104  cudnnPointwiseMode_t mode = CUDNN_POINTWISE_ADD;
    105  cudnnNanPropagation_t nan_propagation = CUDNN_NOT_PROPAGATE_NAN;
    106  double upper_clip = std::numeric_limits<double>::max();
    107  double lower_clip = std::numeric_limits<double>::min();
    108 };
    109 
    114  public:
    119  auto
    121  setMathPrecision(cudnnDataType_t data_type_) -> PointWiseDescBuilder_v8 & {
    122  m_pointWiseDesc.math_precision = data_type_;
    123  return *this;
    124  }
    126  auto
    127  setClipping(double l, double u) -> PointWiseDescBuilder_v8 & {
    128  m_pointWiseDesc.upper_clip = u;
    129  m_pointWiseDesc.lower_clip = l;
    130  return *this;
    131  }
    133  auto
    134  setMode(cudnnPointwiseMode_t mode_) -> PointWiseDescBuilder_v8 & {
    135  m_pointWiseDesc.mode = mode_;
    136  return *this;
    137  }
    139  auto
    140  setMode(cudnnNanPropagation_t nan_mode_) -> PointWiseDescBuilder_v8 & {
    141  m_pointWiseDesc.nan_propagation = nan_mode_;
    142  return *this;
    143  }
    149  build() {
    150  // Create a descriptor. Memory allocation happens here.
    151  auto status = m_pointWiseDesc.initialize_managed_backend_pointer(CUDNN_BACKEND_POINTWISE_DESCRIPTOR);
    152  if (status != CUDNN_STATUS_SUCCESS) {
    154  &m_pointWiseDesc, status, "CUDNN_BACKEND_POINTWISE_DESCRIPTOR: cudnnCreate Failed");
    155  return std::move(m_pointWiseDesc);
    156  }
    157 
    158  // Once Created lets set the descriptor parameters.
    159  status = cudnnBackendSetAttribute(m_pointWiseDesc.pointer->get_backend_descriptor(),
    160  CUDNN_ATTR_POINTWISE_MODE,
    161  CUDNN_TYPE_POINTWISE_MODE,
    162  1,
    163  &m_pointWiseDesc.mode);
    164  if (status != CUDNN_STATUS_SUCCESS) {
    166  &m_pointWiseDesc,
    167  status,
    168  "CUDNN_BACKEND_POINTWISE_DESCRIPTOR: CUDNN_TYPE_POINTWISE_MODE SetAttribute Failed");
    169  return std::move(m_pointWiseDesc);
    170  }
    171 
    172  status = cudnnBackendSetAttribute(m_pointWiseDesc.pointer->get_backend_descriptor(),
    173  CUDNN_ATTR_POINTWISE_MATH_PREC,
    174  CUDNN_TYPE_DATA_TYPE,
    175  1,
    176  &m_pointWiseDesc.math_precision);
    177  if (status != CUDNN_STATUS_SUCCESS) {
    179  &m_pointWiseDesc,
    180  status,
    181  "CUDNN_BACKEND_POINTWISE_DESCRIPTOR: SetAttribute CUDNN_ATTR_POINTWISE_MATH_PREC Failed");
    182  return std::move(m_pointWiseDesc);
    183  }
    184 
    185  if (m_pointWiseDesc.mode == CUDNN_POINTWISE_RELU_FWD) {
    186  status = cudnnBackendSetAttribute(m_pointWiseDesc.pointer->get_backend_descriptor(),
    187  CUDNN_ATTR_POINTWISE_NAN_PROPAGATION,
    188  CUDNN_TYPE_NAN_PROPOGATION,
    189  1,
    190  &m_pointWiseDesc.nan_propagation);
    191  if (status != CUDNN_STATUS_SUCCESS) {
    193  &m_pointWiseDesc,
    194  status,
    195  "CUDNN_BACKEND_POINTWISE_DESCRIPTOR: SetAttribute CUDNN_ATTR_POINTWISE_NAN_PROPAGATION Failed");
    196  return std::move(m_pointWiseDesc);
    197  }
    198 
    199  status = cudnnBackendSetAttribute(m_pointWiseDesc.pointer->get_backend_descriptor(),
    200  CUDNN_ATTR_POINTWISE_RELU_LOWER_CLIP,
    201  CUDNN_TYPE_DOUBLE,
    202  1,
    203  &m_pointWiseDesc.lower_clip);
    204  if (status != CUDNN_STATUS_SUCCESS) {
    206  &m_pointWiseDesc,
    207  status,
    208  "CUDNN_BACKEND_POINTWISE_DESCRIPTOR: SetAttribute CUDNN_ATTR_POINTWISE_RELU_LOWER_CLIP, Failed");
    209  return std::move(m_pointWiseDesc);
    210  }
    211 
    212  status = cudnnBackendSetAttribute(m_pointWiseDesc.pointer->get_backend_descriptor(),
    213  CUDNN_ATTR_POINTWISE_RELU_UPPER_CLIP,
    214  CUDNN_TYPE_DOUBLE,
    215  1,
    216  &m_pointWiseDesc.upper_clip);
    217  if (status != CUDNN_STATUS_SUCCESS) {
    219  &m_pointWiseDesc,
    220  status,
    221  "CUDNN_BACKEND_POINTWISE_DESCRIPTOR: SetAttribute CUDNN_ATTR_POINTWISE_RELU_UPPER_CLIP, Failed");
    222  return std::move(m_pointWiseDesc);
    223  }
    224  }
    225 
    226  // Finalizing the descriptor
    227  status = cudnnBackendFinalize(m_pointWiseDesc.pointer->get_backend_descriptor());
    228  if (status != CUDNN_STATUS_SUCCESS) {
    230  &m_pointWiseDesc, status, "CUDNN_BACKEND_POINTWISE_DESCRIPTOR: cudnnFinalize Failed");
    231  return std::move(m_pointWiseDesc);
    232  }
    233 
    234  return std::move(m_pointWiseDesc);
    235  }
    236 
    237  explicit PointWiseDescBuilder_v8() = default;
    238  ~PointWiseDescBuilder_v8() = default;
    242  operator=(PointWiseDescBuilder_v8 const &) = delete;
    243 
    244  private:
    246 };
    247 }
    +Go to the documentation of this file.
    1 /*
    2  * Copyright (c) 2021, NVIDIA CORPORATION. All rights reserved.
    3  *
    4  * Permission is hereby granted, free of charge, to any person obtaining a
    5  * copy of this software and associated documentation files (the "Software"),
    6  * to deal in the Software without restriction, including without limitation
    7  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
    8  * and/or sell copies of the Software, and to permit persons to whom the
    9  * Software is furnished to do so, subject to the following conditions:
    10  *
    11  * The above copyright notice and this permission notice shall be included in
    12  * all copies or substantial portions of the Software.
    13  *
    14  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    15  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    16  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
    17  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    18  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
    19  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
    20  * DEALINGS IN THE SOFTWARE.
    21  */
    22 
    23 #pragma once
    24 
    25 #include <algorithm>
    26 #include <array>
    27 #include <functional>
    28 #include <memory>
    29 #include <sstream>
    30 #include <utility>
    31 
    32 #include <cudnn.h>
    33 #include <cudnn_backend.h>
    34 
    35 #include "cudnn_frontend_utils.h"
    36 
    37 namespace cudnn_frontend {
    56  public:
    58  std::string
    59  describe() const override {
    60  std::stringstream ss;
    61  ss << "CUDNN_BACKEND_POINTWISE_DESCRIPTOR :"
    62  << " Mode: " << (mode) << " Math precision " << (math_precision);
    63  return ss.str();
    64  }
    65 
    66  int64_t
    67  getPortCount() const {
    68  switch (mode) {
    69  case CUDNN_POINTWISE_ADD:
    70  case CUDNN_POINTWISE_MUL:
    71  case CUDNN_POINTWISE_MIN:
    72  case CUDNN_POINTWISE_MAX:
    73  case CUDNN_POINTWISE_RELU_BWD:
    74  case CUDNN_POINTWISE_TANH_BWD:
    75  case CUDNN_POINTWISE_SIGMOID_BWD:
    76  case CUDNN_POINTWISE_ELU_BWD:
    77  case CUDNN_POINTWISE_GELU_BWD:
    78  case CUDNN_POINTWISE_SOFTPLUS_BWD:
    79  case CUDNN_POINTWISE_SWISH_BWD:
    80  return 3;
    81  case CUDNN_POINTWISE_SQRT:
    82  case CUDNN_POINTWISE_RELU_FWD:
    83  case CUDNN_POINTWISE_TANH_FWD:
    84  case CUDNN_POINTWISE_SIGMOID_FWD:
    85  case CUDNN_POINTWISE_ELU_FWD:
    86  case CUDNN_POINTWISE_GELU_FWD:
    87  case CUDNN_POINTWISE_SOFTPLUS_FWD:
    88  case CUDNN_POINTWISE_SWISH_FWD:
    89  return 2;
    90  default:
    91  return -1;
    92  }
    93  }
    94 
    95  cudnnPointwiseMode_t
    96  getPointWiseMode() const {
    97  return mode;
    98  }
    99 
    101  : BackendDescriptor(from.get_desc(), from.get_status(), from.get_error()),
    103  mode(from.mode),
    105  upper_clip(from.upper_clip),
    106  lower_clip(from.lower_clip),
    108  elu_alpha(from.elu_alpha),
    110  swish_beta(from.swish_beta) {}
    111 
    112  ~PointWiseDesc_v8() = default;
    113 
    114  private:
    115  PointWiseDesc_v8() = default;
    116  PointWiseDesc_v8(PointWiseDesc_v8 const &) = delete;
    118  operator=(PointWiseDesc_v8 const &) = delete;
    119 
    120  cudnnDataType_t math_precision = CUDNN_DATA_FLOAT;
    121  cudnnPointwiseMode_t mode = CUDNN_POINTWISE_ADD;
    122  cudnnNanPropagation_t nan_propagation = CUDNN_NOT_PROPAGATE_NAN;
    123  double upper_clip = std::numeric_limits<double>::max();
    124  double lower_clip = 0.0;
    125  double lower_clip_slope = 0.0;
    126  double elu_alpha = 1.0;
    127  double softplus_beta = 1.0;
    128  double swish_beta = 1.0;
    129 };
    130 
    135  public:
    140  auto
    142  setMathPrecision(cudnnDataType_t data_type_) -> PointWiseDescBuilder_v8 & {
    143  m_pointWiseDesc.math_precision = data_type_;
    144  return *this;
    145  }
    147  auto
    148  setClipping(double l, double u) -> PointWiseDescBuilder_v8 & {
    149  m_pointWiseDesc.upper_clip = u;
    150  m_pointWiseDesc.lower_clip = l;
    151  return *this;
    152  }
    154  auto
    155  setMode(cudnnPointwiseMode_t mode_) -> PointWiseDescBuilder_v8 & {
    156  m_pointWiseDesc.mode = mode_;
    157  return *this;
    158  }
    160  auto
    161  setMode(cudnnNanPropagation_t nan_mode_) -> PointWiseDescBuilder_v8 & {
    162  m_pointWiseDesc.nan_propagation = nan_mode_;
    163  return *this;
    164  }
    167  auto
    168  setReluLowerClip(double lower_clip_) -> PointWiseDescBuilder_v8 & {
    169  m_pointWiseDesc.lower_clip = lower_clip_;
    170  return *this;
    171  }
    172 
    173  auto
    174  setReluUpperClip(double upper_clip_) -> PointWiseDescBuilder_v8 & {
    175  m_pointWiseDesc.upper_clip = upper_clip_;
    176  return *this;
    177  }
    178 
    179  auto
    180  setReluLowerClipSlope(double lower_clip_slope_) -> PointWiseDescBuilder_v8 & {
    181  m_pointWiseDesc.lower_clip_slope = lower_clip_slope_;
    182  return *this;
    183  }
    184 
    185  auto
    186  setEluAlpha(double elu_alpha_) -> PointWiseDescBuilder_v8 & {
    187  m_pointWiseDesc.elu_alpha = elu_alpha_;
    188  return *this;
    189  }
    190 
    191  auto
    192  setSoftplusBeta(double softplus_beta_) -> PointWiseDescBuilder_v8 & {
    193  m_pointWiseDesc.softplus_beta = softplus_beta_;
    194  return *this;
    195  }
    196 
    197  auto
    198  setSwishBeta(double swish_beta_) -> PointWiseDescBuilder_v8 & {
    199  m_pointWiseDesc.swish_beta = swish_beta_;
    200  return *this;
    201  }
    202 
    206  build() {
    207  // Create a descriptor. Memory allocation happens here.
    208  auto status = m_pointWiseDesc.initialize_managed_backend_pointer(CUDNN_BACKEND_POINTWISE_DESCRIPTOR);
    209  if (status != CUDNN_STATUS_SUCCESS) {
    211  &m_pointWiseDesc, status, "CUDNN_BACKEND_POINTWISE_DESCRIPTOR: cudnnCreate Failed");
    212  return std::move(m_pointWiseDesc);
    213  }
    214 
    215  // Once Created lets set the descriptor parameters.
    216  status = cudnnBackendSetAttribute(m_pointWiseDesc.pointer->get_backend_descriptor(),
    217  CUDNN_ATTR_POINTWISE_MODE,
    218  CUDNN_TYPE_POINTWISE_MODE,
    219  1,
    220  &m_pointWiseDesc.mode);
    221  if (status != CUDNN_STATUS_SUCCESS) {
    223  &m_pointWiseDesc,
    224  status,
    225  "CUDNN_BACKEND_POINTWISE_DESCRIPTOR: CUDNN_TYPE_POINTWISE_MODE SetAttribute Failed");
    226  return std::move(m_pointWiseDesc);
    227  }
    228 
    229  status = cudnnBackendSetAttribute(m_pointWiseDesc.pointer->get_backend_descriptor(),
    230  CUDNN_ATTR_POINTWISE_MATH_PREC,
    231  CUDNN_TYPE_DATA_TYPE,
    232  1,
    233  &m_pointWiseDesc.math_precision);
    234  if (status != CUDNN_STATUS_SUCCESS) {
    236  &m_pointWiseDesc,
    237  status,
    238  "CUDNN_BACKEND_POINTWISE_DESCRIPTOR: SetAttribute CUDNN_ATTR_POINTWISE_MATH_PREC Failed");
    239  return std::move(m_pointWiseDesc);
    240  }
    241 
    242  if (m_pointWiseDesc.mode == CUDNN_POINTWISE_RELU_FWD || m_pointWiseDesc.mode == CUDNN_POINTWISE_RELU_BWD) {
    243  status = cudnnBackendSetAttribute(m_pointWiseDesc.pointer->get_backend_descriptor(),
    244  CUDNN_ATTR_POINTWISE_NAN_PROPAGATION,
    245  CUDNN_TYPE_NAN_PROPOGATION,
    246  1,
    247  &m_pointWiseDesc.nan_propagation);
    248  if (status != CUDNN_STATUS_SUCCESS) {
    250  &m_pointWiseDesc,
    251  status,
    252  "CUDNN_BACKEND_POINTWISE_DESCRIPTOR: SetAttribute CUDNN_ATTR_POINTWISE_NAN_PROPAGATION Failed");
    253  return std::move(m_pointWiseDesc);
    254  }
    255 
    256  status = cudnnBackendSetAttribute(m_pointWiseDesc.pointer->get_backend_descriptor(),
    257  CUDNN_ATTR_POINTWISE_RELU_LOWER_CLIP,
    258  CUDNN_TYPE_DOUBLE,
    259  1,
    260  &m_pointWiseDesc.lower_clip);
    261  if (status != CUDNN_STATUS_SUCCESS) {
    263  &m_pointWiseDesc,
    264  status,
    265  "CUDNN_BACKEND_POINTWISE_DESCRIPTOR: SetAttribute CUDNN_ATTR_POINTWISE_RELU_LOWER_CLIP, Failed");
    266  return std::move(m_pointWiseDesc);
    267  }
    268 
    269  if (m_pointWiseDesc.math_precision == CUDNN_DATA_FLOAT) {
    270  double clamped_upper_clip =
    271  std::min<double>(m_pointWiseDesc.upper_clip, std::numeric_limits<float>::max());
    272  status = cudnnBackendSetAttribute(m_pointWiseDesc.pointer->get_backend_descriptor(),
    273  CUDNN_ATTR_POINTWISE_RELU_UPPER_CLIP,
    274  CUDNN_TYPE_DOUBLE,
    275  1,
    276  &clamped_upper_clip);
    277 
    278  } else {
    279  status = cudnnBackendSetAttribute(m_pointWiseDesc.pointer->get_backend_descriptor(),
    280  CUDNN_ATTR_POINTWISE_RELU_UPPER_CLIP,
    281  CUDNN_TYPE_DOUBLE,
    282  1,
    283  &m_pointWiseDesc.upper_clip);
    284  }
    285  if (status != CUDNN_STATUS_SUCCESS) {
    287  &m_pointWiseDesc,
    288  status,
    289  "CUDNN_BACKEND_POINTWISE_DESCRIPTOR: SetAttribute CUDNN_ATTR_POINTWISE_RELU_UPPER_CLIP, Failed");
    290  return std::move(m_pointWiseDesc);
    291  }
    292 
    293  status = cudnnBackendSetAttribute(m_pointWiseDesc.pointer->get_backend_descriptor(),
    294  CUDNN_ATTR_POINTWISE_RELU_LOWER_CLIP_SLOPE,
    295  CUDNN_TYPE_DOUBLE,
    296  1,
    297  &m_pointWiseDesc.lower_clip_slope);
    298  if (status != CUDNN_STATUS_SUCCESS) {
    299  set_error_and_throw_exception(&m_pointWiseDesc,
    300  status,
    301  "CUDNN_BACKEND_POINTWISE_DESCRIPTOR: SetAttribute "
    302  "CUDNN_ATTR_POINTWISE_RELU_LOWER_CLIP_SLOPE, Failed");
    303  return std::move(m_pointWiseDesc);
    304  }
    305  } else if (m_pointWiseDesc.mode == CUDNN_POINTWISE_ELU_FWD || m_pointWiseDesc.mode == CUDNN_POINTWISE_ELU_BWD) {
    306  status = cudnnBackendSetAttribute(m_pointWiseDesc.pointer->get_backend_descriptor(),
    307  CUDNN_ATTR_POINTWISE_ELU_ALPHA,
    308  CUDNN_TYPE_DOUBLE,
    309  1,
    310  &m_pointWiseDesc.elu_alpha);
    311  if (status != CUDNN_STATUS_SUCCESS) {
    313  &m_pointWiseDesc,
    314  status,
    315  "CUDNN_BACKEND_POINTWISE_DESCRIPTOR: SetAttribute CUDNN_ATTR_POINTWISE_ELU_ALPHA, Failed");
    316  return std::move(m_pointWiseDesc);
    317  }
    318  } else if (m_pointWiseDesc.mode == CUDNN_POINTWISE_SOFTPLUS_FWD ||
    319  m_pointWiseDesc.mode == CUDNN_POINTWISE_SOFTPLUS_BWD) {
    320  status = cudnnBackendSetAttribute(m_pointWiseDesc.pointer->get_backend_descriptor(),
    321  CUDNN_ATTR_POINTWISE_SOFTPLUS_BETA,
    322  CUDNN_TYPE_DOUBLE,
    323  1,
    324  &m_pointWiseDesc.softplus_beta);
    325  if (status != CUDNN_STATUS_SUCCESS) {
    327  &m_pointWiseDesc,
    328  status,
    329  "CUDNN_BACKEND_POINTWISE_DESCRIPTOR: SetAttribute CUDNN_ATTR_POINTWISE_SOFTPLUS_BETA, Failed");
    330  return std::move(m_pointWiseDesc);
    331  }
    332  } else if (m_pointWiseDesc.mode == CUDNN_POINTWISE_SWISH_FWD ||
    333  m_pointWiseDesc.mode == CUDNN_POINTWISE_SWISH_BWD) {
    334  status = cudnnBackendSetAttribute(m_pointWiseDesc.pointer->get_backend_descriptor(),
    335  CUDNN_ATTR_POINTWISE_SWISH_BETA,
    336  CUDNN_TYPE_DOUBLE,
    337  1,
    338  &m_pointWiseDesc.swish_beta);
    339  if (status != CUDNN_STATUS_SUCCESS) {
    341  &m_pointWiseDesc,
    342  status,
    343  "CUDNN_BACKEND_POINTWISE_DESCRIPTOR: SetAttribute CUDNN_ATTR_POINTWISE_SWISH_BETA, Failed");
    344  return std::move(m_pointWiseDesc);
    345  }
    346  }
    347 
    348  // Finalizing the descriptor
    349  status = cudnnBackendFinalize(m_pointWiseDesc.pointer->get_backend_descriptor());
    350  if (status != CUDNN_STATUS_SUCCESS) {
    352  &m_pointWiseDesc, status, "CUDNN_BACKEND_POINTWISE_DESCRIPTOR: cudnnFinalize Failed");
    353  return std::move(m_pointWiseDesc);
    354  }
    355 
    356  return std::move(m_pointWiseDesc);
    357  }
    358 
    359  explicit PointWiseDescBuilder_v8() = default;
    360  ~PointWiseDescBuilder_v8() = default;
    364  operator=(PointWiseDescBuilder_v8 const &) = delete;
    365 
    366  private:
    368 };
    369 }
    static void set_error_and_throw_exception(BackendDescriptor const *desc, cudnnStatus_t status, const char *message)
    -
    auto setClipping(double l, double u) -> PointWiseDescBuilder_v8 &
    Set upper and lower limits for the RELU activation.
    +
    auto setClipping(double l, double u) -> PointWiseDescBuilder_v8 &
    Set upper and lower limits for the RELU activation.
    PointWiseDesc_v8 & operator=(PointWiseDesc_v8 const &)=delete
    -
    auto setMode(cudnnNanPropagation_t nan_mode_) -> PointWiseDescBuilder_v8 &
    Set NaN propagation mode.
    +
    auto setMode(cudnnNanPropagation_t nan_mode_) -> PointWiseDescBuilder_v8 &
    Set NaN propagation mode.
    - -
    cudnnPointwiseMode_t getPointWiseMode() const
    - +
    auto setSwishBeta(double swish_beta_) -> PointWiseDescBuilder_v8 &
    + +
    cudnnPointwiseMode_t getPointWiseMode() const
    + +
    ManagedOpaqueDescriptor get_desc() const
    Returns a copy of underlying managed descriptor.
    - +
    auto setReluLowerClip(double lower_clip_) -> PointWiseDescBuilder_v8 &
    + - -
    std::string describe() const override
    Return a string describing the backend Descriptor.
    - +
    auto setSoftplusBeta(double softplus_beta_) -> PointWiseDescBuilder_v8 &
    + +
    std::string describe() const override
    Return a string describing the backend Descriptor.
    +
    auto setReluLowerClipSlope(double lower_clip_slope_) -> PointWiseDescBuilder_v8 &
    +
    cudnnStatus_t get_status() const
    Current status of the descriptor.
    - - + + +
    const char * get_error() const
    Diagonistic error message if any.
    - -
    auto setMathPrecision(cudnnDataType_t data_type_) -> PointWiseDescBuilder_v8 &
    Set Math Precision Data Type for the Convolution Operation.
    -
    auto setMode(cudnnPointwiseMode_t mode_) -> PointWiseDescBuilder_v8 &
    Set upper and lower limits for the RELU activation.
    - - + +
    auto setMathPrecision(cudnnDataType_t data_type_) -> PointWiseDescBuilder_v8 &
    Set Math Precision Data Type for the Convolution Operation.
    + + +
    auto setMode(cudnnPointwiseMode_t mode_) -> PointWiseDescBuilder_v8 &
    Set upper and lower limits for the RELU activation.
    +
    auto setEluAlpha(double elu_alpha_) -> PointWiseDescBuilder_v8 &
    + + +
    auto setReluUpperClip(double upper_clip_) -> PointWiseDescBuilder_v8 &
    cudnnStatus_t status
    Shared pointer of the OpaqueBackendPointer.
    - +
    diff --git a/docs/da/daa/classcudnn__frontend_1_1OperationGraphBuilder__v8-members.html b/docs/da/daa/classcudnn__frontend_1_1OperationGraphBuilder__v8-members.html index f6893464e..4e1f3a09f 100644 --- a/docs/da/daa/classcudnn__frontend_1_1OperationGraphBuilder__v8-members.html +++ b/docs/da/daa/classcudnn__frontend_1_1OperationGraphBuilder__v8-members.html @@ -5,7 +5,7 @@ -CUDNN API: Member List +CUDNN Frontend API: Member List @@ -28,8 +28,8 @@ -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    diff --git a/docs/da/daf/classcudnn__frontend_1_1Engine__v8-members.html b/docs/da/daf/classcudnn__frontend_1_1Engine__v8-members.html index 0df93dd40..f7f704607 100644 --- a/docs/da/daf/classcudnn__frontend_1_1Engine__v8-members.html +++ b/docs/da/daf/classcudnn__frontend_1_1Engine__v8-members.html @@ -5,7 +5,7 @@ -CUDNN API: Member List +CUDNN Frontend API: Member List @@ -28,8 +28,8 @@ -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    diff --git a/docs/db/d0d/cudnn__frontend__OperationGraph_8h__incl.map b/docs/db/d0d/cudnn__frontend__OperationGraph_8h__incl.map index 85e4c7e42..2903ded59 100644 --- a/docs/db/d0d/cudnn__frontend__OperationGraph_8h__incl.map +++ b/docs/db/d0d/cudnn__frontend__OperationGraph_8h__incl.map @@ -1,8 +1,9 @@ - - - - - - + + + + + + + diff --git a/docs/db/d0d/cudnn__frontend__OperationGraph_8h__incl.md5 b/docs/db/d0d/cudnn__frontend__OperationGraph_8h__incl.md5 index 346a06063..d06f43622 100644 --- a/docs/db/d0d/cudnn__frontend__OperationGraph_8h__incl.md5 +++ b/docs/db/d0d/cudnn__frontend__OperationGraph_8h__incl.md5 @@ -1 +1 @@ -9a0ea0f03c750eab465f292781b7453e \ No newline at end of file +94da66c0119fcea4230ffe8c518d3a88 \ No newline at end of file diff --git a/docs/db/d0d/cudnn__frontend__OperationGraph_8h__incl.png b/docs/db/d0d/cudnn__frontend__OperationGraph_8h__incl.png index ea3ea711d..95d6b1975 100644 Binary files a/docs/db/d0d/cudnn__frontend__OperationGraph_8h__incl.png and b/docs/db/d0d/cudnn__frontend__OperationGraph_8h__incl.png differ diff --git a/docs/db/d66/cudnn__frontend__Heuristics_8h.html b/docs/db/d66/cudnn__frontend__Heuristics_8h.html index 5577034d7..011479ccc 100644 --- a/docs/db/d66/cudnn__frontend__Heuristics_8h.html +++ b/docs/db/d66/cudnn__frontend__Heuristics_8h.html @@ -5,7 +5,7 @@ -CUDNN API: cudnn_frontend_Heuristics.h File Reference +CUDNN Frontend API: cudnn_frontend_Heuristics.h File Reference @@ -28,8 +28,8 @@ -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    @@ -97,13 +97,14 @@
    - - - - - - - + + + + + + + +
    diff --git a/docs/db/d66/cudnn__frontend__Heuristics_8h_source.html b/docs/db/d66/cudnn__frontend__Heuristics_8h_source.html index 4fb2b4af8..e1fe765ab 100644 --- a/docs/db/d66/cudnn__frontend__Heuristics_8h_source.html +++ b/docs/db/d66/cudnn__frontend__Heuristics_8h_source.html @@ -5,7 +5,7 @@ -CUDNN API: cudnn_frontend_Heuristics.h Source File +CUDNN Frontend API: cudnn_frontend_Heuristics.h Source File @@ -28,8 +28,8 @@ -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    @@ -84,7 +84,7 @@
    cudnn_frontend_Heuristics.h
    -Go to the documentation of this file.
    1 /*
    2  * Copyright (c) 2021, NVIDIA CORPORATION. All rights reserved.
    3  *
    4  * Permission is hereby granted, free of charge, to any person obtaining a
    5  * copy of this software and associated documentation files (the "Software"),
    6  * to deal in the Software without restriction, including without limitation
    7  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
    8  * and/or sell copies of the Software, and to permit persons to whom the
    9  * Software is furnished to do so, subject to the following conditions:
    10  *
    11  * The above copyright notice and this permission notice shall be included in
    12  * all copies or substantial portions of the Software.
    13  *
    14  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    15  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    16  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
    17  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    18  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
    19  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
    20  * DEALINGS IN THE SOFTWARE.
    21  */
    22 
    23 #pragma once
    24 
    25 #include <vector>
    26 
    27 #include <cudnn.h>
    28 #include <cudnn_backend.h>
    29 
    31 #include "cudnn_frontend_utils.h"
    32 
    33 namespace cudnn_frontend {
    46  public:
    48  std::string
    49  describe() const override {
    50  std::stringstream ss;
    51  ss << "CUDNN_BACKEND_ENGINEHEUR_DESCRIPTOR :";
    52  return ss.str();
    53  }
    54 
    56  : BackendDescriptor(from.get_desc(), from.get_status(), from.get_error()),
    57  mode(from.mode),
    58  opGraph(from.opGraph),
    59  opGraphTag(from.opGraphTag) {}
    60 
    61  ~EngineHeuristics_v8() = default;
    62 
    67  auto
    69  getEngineConfig(int64_t count = 1) -> std::vector<ManagedOpaqueDescriptor> & {
    70  cudnnStatus_t status;
    71  for (auto i = 0u; i < count; ++i) {
    72  ManagedOpaqueDescriptor engConfig = nullptr;
    73  engConfig = make_shared_backend_pointer(CUDNN_BACKEND_ENGINECFG_DESCRIPTOR);
    74  if (engConfig->is_good() == false) {
    76  this,
    77  engConfig->get_status(),
    78  "CUDNN_BACKEND_ENGINEHEUR_DESCRIPTOR: CUDNN_BACKEND_ENGINECFG_DESCRIPTOR cudnnCreate Failed");
    79  return m_heuristic_results;
    80  };
    81  m_heuristic_results.emplace_back(engConfig);
    82  }
    83  std::vector<cudnnBackendDescriptor_t> heuristic_results_;
    84  for (auto i = 0; i < m_heuristic_results.size(); i++) {
    85  heuristic_results_.emplace_back(m_heuristic_results[i]->get_backend_descriptor());
    86  }
    87  int64_t result = -1;
    88  status = cudnnBackendGetAttribute(pointer->get_backend_descriptor(),
    89  CUDNN_ATTR_ENGINEHEUR_RESULTS,
    90  CUDNN_TYPE_BACKEND_DESCRIPTOR,
    91  count,
    92  &result,
    93  heuristic_results_.data());
    94  if (status != CUDNN_STATUS_SUCCESS) {
    96  this, status, "CUDNN_BACKEND_ENGINEHEUR_DESCRIPTOR: GetAttribute CUDNN_ATTR_ENGINEHEUR_RESULTS Failed");
    97  };
    98  return m_heuristic_results;
    99  }
    100 
    102  auto
    103  getEngineConfigCount(void) const -> int64_t {
    104  cudnnStatus_t status;
    105  int64_t count = -1;
    106  status = cudnnBackendGetAttribute(pointer->get_backend_descriptor(),
    107  CUDNN_ATTR_ENGINEHEUR_RESULTS,
    108  CUDNN_TYPE_BACKEND_DESCRIPTOR,
    109  0,
    110  &count,
    111  nullptr);
    112  if (status != CUDNN_STATUS_SUCCESS) {
    114  this,
    115  status,
    116  "CUDNN_BACKEND_ENGINEHEUR_DESCRIPTOR: GetAttribute CUDNN_ATTR_ENGINEHEUR_RESULTS Count Failed");
    117  };
    118  return count;
    119  }
    122  private:
    123  EngineHeuristics_v8() = default;
    124  EngineHeuristics_v8(EngineHeuristics_v8 const &) = delete;
    126  operator=(EngineHeuristics_v8 const &) = delete;
    127 
    128  cudnnBackendHeurMode_t mode = CUDNN_HEUR_MODE_INSTANT;
    130  std::vector<ManagedOpaqueDescriptor> m_heuristic_results;
    131  std::string opGraphTag;
    132 };
    133 
    138  public:
    143  auto
    146  m_heuristics.opGraph = opGraph_.get_desc();
    147  m_heuristics.opGraphTag = opGraph_.getTag();
    148  return *this;
    149  }
    151  auto
    152  setHeurMode(cudnnBackendHeurMode_t mode_) -> EngineHeuristicsBuilder_v8 & {
    153  m_heuristics.mode = mode_;
    154  return *this;
    155  }
    161  build() {
    162  if (m_heuristics.opGraph == nullptr) {
    163  set_error_and_throw_exception(&m_heuristics,
    164  CUDNN_STATUS_BAD_PARAM,
    165  "CUDNN_BACKEND_ENGINEHEUR_DESCRIPTOR: Check and Set the "
    166  "CUDNN_ATTR_ENGINEHEUR_OPERATION_GRAPH field for heuristic");
    167  return std::move(m_heuristics);
    168  };
    169 
    170  // Create a descriptor. Memory allocation happens here.
    171  auto status = m_heuristics.initialize_managed_backend_pointer(CUDNN_BACKEND_ENGINEHEUR_DESCRIPTOR);
    172  if (status != CUDNN_STATUS_SUCCESS) {
    174  &m_heuristics, status, "CUDNN_BACKEND_ENGINEHEUR_DESCRIPTOR: cudnnCreate Failed");
    175  return std::move(m_heuristics);
    176  };
    177 
    178  status = cudnnBackendSetAttribute(m_heuristics.pointer->get_backend_descriptor(),
    179  CUDNN_ATTR_ENGINEHEUR_OPERATION_GRAPH,
    180  CUDNN_TYPE_BACKEND_DESCRIPTOR,
    181  1,
    182  &(m_heuristics.opGraph->get_backend_descriptor()));
    183  if (status != CUDNN_STATUS_SUCCESS) {
    185  &m_heuristics,
    186  status,
    187  "CUDNN_BACKEND_ENGINEHEUR_DESCRIPTOR: SetAttribute CUDNN_ATTR_ENGINEHEUR_OPERATION_GRAPH Failed");
    188  return std::move(m_heuristics);
    189  };
    190  status = cudnnBackendSetAttribute(m_heuristics.pointer->get_backend_descriptor(),
    191  CUDNN_ATTR_ENGINEHEUR_MODE,
    192  CUDNN_TYPE_HEUR_MODE,
    193  1,
    194  &m_heuristics.mode);
    195  if (status != CUDNN_STATUS_SUCCESS) {
    197  &m_heuristics,
    198  status,
    199  "CUDNN_BACKEND_ENGINEHEUR_DESCRIPTOR: SetAttribute CUDNN_ATTR_ENGINEHEUR_MODE Failed");
    200  return std::move(m_heuristics);
    201  };
    202 
    203  // Finalizing the descriptor
    204  status = cudnnBackendFinalize(m_heuristics.pointer->get_backend_descriptor());
    205  if (status != CUDNN_STATUS_SUCCESS) {
    207  &m_heuristics, status, "CUDNN_BACKEND_ENGINEHEUR_DESCRIPTOR: cudnn Finalize failed");
    208  return std::move(m_heuristics);
    209  };
    210 
    211  return std::move(m_heuristics);
    212  }
    213 
    214  explicit EngineHeuristicsBuilder_v8() = default;
    215  ~EngineHeuristicsBuilder_v8() = default;
    219  operator=(EngineHeuristicsBuilder_v8 const &) = delete;
    220 
    221  private:
    223 };
    224 }
    auto setHeurMode(cudnnBackendHeurMode_t mode_) -> EngineHeuristicsBuilder_v8 &
    Set cudnnHandle for the operations.
    +Go to the documentation of this file.
    1 /*
    2  * Copyright (c) 2021, NVIDIA CORPORATION. All rights reserved.
    3  *
    4  * Permission is hereby granted, free of charge, to any person obtaining a
    5  * copy of this software and associated documentation files (the "Software"),
    6  * to deal in the Software without restriction, including without limitation
    7  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
    8  * and/or sell copies of the Software, and to permit persons to whom the
    9  * Software is furnished to do so, subject to the following conditions:
    10  *
    11  * The above copyright notice and this permission notice shall be included in
    12  * all copies or substantial portions of the Software.
    13  *
    14  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    15  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    16  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
    17  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    18  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
    19  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
    20  * DEALINGS IN THE SOFTWARE.
    21  */
    22 
    23 #pragma once
    24 
    25 #include <vector>
    26 
    27 #include <cudnn.h>
    28 #include <cudnn_backend.h>
    29 
    31 #include "cudnn_frontend_utils.h"
    32 
    33 namespace cudnn_frontend {
    46  public:
    48  std::string
    49  describe() const override {
    50  std::stringstream ss;
    51  ss << "CUDNN_BACKEND_ENGINEHEUR_DESCRIPTOR :";
    52  return ss.str();
    53  }
    54 
    56  : BackendDescriptor(from.get_desc(), from.get_status(), from.get_error()),
    57  mode(from.mode),
    58  opGraph(from.opGraph),
    59  opGraphTag(from.opGraphTag) {}
    60 
    61  ~EngineHeuristics_v8() = default;
    62 
    67  auto
    69  getEngineConfig(int64_t count = 1) -> std::vector<ManagedOpaqueDescriptor> & {
    70  cudnnStatus_t status;
    71  for (auto i = 0u; i < count; ++i) {
    72  ManagedOpaqueDescriptor engConfig = nullptr;
    73  engConfig = make_shared_backend_pointer(CUDNN_BACKEND_ENGINECFG_DESCRIPTOR);
    74  if (engConfig->is_good() == false) {
    76  this,
    77  engConfig->get_status(),
    78  "CUDNN_BACKEND_ENGINEHEUR_DESCRIPTOR: CUDNN_BACKEND_ENGINECFG_DESCRIPTOR cudnnCreate Failed");
    79  return m_heuristic_results;
    80  };
    81  m_heuristic_results.emplace_back(engConfig);
    82  }
    83  std::vector<cudnnBackendDescriptor_t> heuristic_results_;
    84  for (std::uint32_t i = 0; i < m_heuristic_results.size(); i++) {
    85  heuristic_results_.emplace_back(m_heuristic_results[i]->get_backend_descriptor());
    86  }
    87  int64_t result = -1;
    88  status = cudnnBackendGetAttribute(pointer->get_backend_descriptor(),
    89  CUDNN_ATTR_ENGINEHEUR_RESULTS,
    90  CUDNN_TYPE_BACKEND_DESCRIPTOR,
    91  count,
    92  &result,
    93  heuristic_results_.data());
    94  if (status != CUDNN_STATUS_SUCCESS) {
    96  this, status, "CUDNN_BACKEND_ENGINEHEUR_DESCRIPTOR: GetAttribute CUDNN_ATTR_ENGINEHEUR_RESULTS Failed");
    97  };
    98  return m_heuristic_results;
    99  }
    100 
    102  auto
    103  getEngineConfigCount(void) const -> int64_t {
    104  cudnnStatus_t status;
    105  int64_t count = -1;
    106  status = cudnnBackendGetAttribute(pointer->get_backend_descriptor(),
    107  CUDNN_ATTR_ENGINEHEUR_RESULTS,
    108  CUDNN_TYPE_BACKEND_DESCRIPTOR,
    109  0,
    110  &count,
    111  nullptr);
    112  if (status != CUDNN_STATUS_SUCCESS) {
    114  this,
    115  status,
    116  "CUDNN_BACKEND_ENGINEHEUR_DESCRIPTOR: GetAttribute CUDNN_ATTR_ENGINEHEUR_RESULTS Count Failed");
    117  };
    118  return count;
    119  }
    122  private:
    123  EngineHeuristics_v8() = default;
    124  EngineHeuristics_v8(EngineHeuristics_v8 const &) = delete;
    126  operator=(EngineHeuristics_v8 const &) = delete;
    127 
    128  cudnnBackendHeurMode_t mode = CUDNN_HEUR_MODE_INSTANT;
    130  std::vector<ManagedOpaqueDescriptor> m_heuristic_results;
    131  std::string opGraphTag;
    132 };
    133 
    138  public:
    143  auto
    146  m_heuristics.opGraph = opGraph_.get_desc();
    147  m_heuristics.opGraphTag = opGraph_.getTag();
    148  return *this;
    149  }
    151  auto
    152  setHeurMode(cudnnBackendHeurMode_t mode_) -> EngineHeuristicsBuilder_v8 & {
    153  m_heuristics.mode = mode_;
    154  return *this;
    155  }
    161  build() {
    162  if (m_heuristics.opGraph == nullptr) {
    163  set_error_and_throw_exception(&m_heuristics,
    164  CUDNN_STATUS_BAD_PARAM,
    165  "CUDNN_BACKEND_ENGINEHEUR_DESCRIPTOR: Check and Set the "
    166  "CUDNN_ATTR_ENGINEHEUR_OPERATION_GRAPH field for heuristic");
    167  return std::move(m_heuristics);
    168  };
    169 
    170  // Create a descriptor. Memory allocation happens here.
    171  auto status = m_heuristics.initialize_managed_backend_pointer(CUDNN_BACKEND_ENGINEHEUR_DESCRIPTOR);
    172  if (status != CUDNN_STATUS_SUCCESS) {
    174  &m_heuristics, status, "CUDNN_BACKEND_ENGINEHEUR_DESCRIPTOR: cudnnCreate Failed");
    175  return std::move(m_heuristics);
    176  };
    177 
    178  status = cudnnBackendSetAttribute(m_heuristics.pointer->get_backend_descriptor(),
    179  CUDNN_ATTR_ENGINEHEUR_OPERATION_GRAPH,
    180  CUDNN_TYPE_BACKEND_DESCRIPTOR,
    181  1,
    182  &(m_heuristics.opGraph->get_backend_descriptor()));
    183  if (status != CUDNN_STATUS_SUCCESS) {
    185  &m_heuristics,
    186  status,
    187  "CUDNN_BACKEND_ENGINEHEUR_DESCRIPTOR: SetAttribute CUDNN_ATTR_ENGINEHEUR_OPERATION_GRAPH Failed");
    188  return std::move(m_heuristics);
    189  };
    190  status = cudnnBackendSetAttribute(m_heuristics.pointer->get_backend_descriptor(),
    191  CUDNN_ATTR_ENGINEHEUR_MODE,
    192  CUDNN_TYPE_HEUR_MODE,
    193  1,
    194  &m_heuristics.mode);
    195  if (status != CUDNN_STATUS_SUCCESS) {
    197  &m_heuristics,
    198  status,
    199  "CUDNN_BACKEND_ENGINEHEUR_DESCRIPTOR: SetAttribute CUDNN_ATTR_ENGINEHEUR_MODE Failed");
    200  return std::move(m_heuristics);
    201  };
    202 
    203  // Finalizing the descriptor
    204  status = cudnnBackendFinalize(m_heuristics.pointer->get_backend_descriptor());
    205  if (status != CUDNN_STATUS_SUCCESS) {
    207  &m_heuristics, status, "CUDNN_BACKEND_ENGINEHEUR_DESCRIPTOR: cudnn Finalize failed");
    208  return std::move(m_heuristics);
    209  };
    210 
    211  return std::move(m_heuristics);
    212  }
    213 
    214  explicit EngineHeuristicsBuilder_v8() = default;
    215  ~EngineHeuristicsBuilder_v8() = default;
    219  operator=(EngineHeuristicsBuilder_v8 const &) = delete;
    220 
    221  private:
    223 };
    224 }
    auto setHeurMode(cudnnBackendHeurMode_t mode_) -> EngineHeuristicsBuilder_v8 &
    Set cudnnHandle for the operations.
    static void set_error_and_throw_exception(BackendDescriptor const *desc, cudnnStatus_t status, const char *message)
    diff --git a/docs/db/d79/cudnn__frontend__Engine_8h__incl.map b/docs/db/d79/cudnn__frontend__Engine_8h__incl.map index e1c8b3691..5af266c3b 100644 --- a/docs/db/d79/cudnn__frontend__Engine_8h__incl.map +++ b/docs/db/d79/cudnn__frontend__Engine_8h__incl.map @@ -1,9 +1,10 @@ - - - - - - - + + + + + + + + diff --git a/docs/db/d79/cudnn__frontend__Engine_8h__incl.md5 b/docs/db/d79/cudnn__frontend__Engine_8h__incl.md5 index e948b81c0..eab251977 100644 --- a/docs/db/d79/cudnn__frontend__Engine_8h__incl.md5 +++ b/docs/db/d79/cudnn__frontend__Engine_8h__incl.md5 @@ -1 +1 @@ -0b39bd57c3ee29fef8c180ff143fca2d \ No newline at end of file +4e40f79980b6d92d3cfd9983e086b6d9 \ No newline at end of file diff --git a/docs/db/d79/cudnn__frontend__Engine_8h__incl.png b/docs/db/d79/cudnn__frontend__Engine_8h__incl.png index 642f4c4fa..901383f7e 100644 Binary files a/docs/db/d79/cudnn__frontend__Engine_8h__incl.png and b/docs/db/d79/cudnn__frontend__Engine_8h__incl.png differ diff --git a/docs/db/d7d/cudnn__frontend__OperationGraph_8h.html b/docs/db/d7d/cudnn__frontend__OperationGraph_8h.html index 56d99168b..350303e96 100644 --- a/docs/db/d7d/cudnn__frontend__OperationGraph_8h.html +++ b/docs/db/d7d/cudnn__frontend__OperationGraph_8h.html @@ -5,7 +5,7 @@ -CUDNN API: cudnn_frontend_OperationGraph.h File Reference +CUDNN Frontend API: cudnn_frontend_OperationGraph.h File Reference @@ -28,8 +28,8 @@ -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    @@ -102,12 +102,13 @@
    - - - - - - + + + + + + +
    diff --git a/docs/db/d7d/cudnn__frontend__OperationGraph_8h_source.html b/docs/db/d7d/cudnn__frontend__OperationGraph_8h_source.html index 65bd23c7b..c7e1a2144 100644 --- a/docs/db/d7d/cudnn__frontend__OperationGraph_8h_source.html +++ b/docs/db/d7d/cudnn__frontend__OperationGraph_8h_source.html @@ -5,7 +5,7 @@ -CUDNN API: cudnn_frontend_OperationGraph.h Source File +CUDNN Frontend API: cudnn_frontend_OperationGraph.h Source File @@ -28,8 +28,8 @@ -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    @@ -85,7 +85,7 @@
    Go to the documentation of this file.
    1 /*
    2  * Copyright (c) 2021, NVIDIA CORPORATION. All rights reserved.
    3  *
    4  * Permission is hereby granted, free of charge, to any person obtaining a
    5  * copy of this software and associated documentation files (the "Software"),
    6  * to deal in the Software without restriction, including without limitation
    7  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
    8  * and/or sell copies of the Software, and to permit persons to whom the
    9  * Software is furnished to do so, subject to the following conditions:
    10  *
    11  * The above copyright notice and this permission notice shall be included in
    12  * all copies or substantial portions of the Software.
    13  *
    14  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    15  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    16  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
    17  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    18  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
    19  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
    20  * DEALINGS IN THE SOFTWARE.
    21  */
    22 
    23 #pragma once
    24 
    25 #include <algorithm>
    26 #include <array>
    27 #include <functional>
    28 #include <memory>
    29 #include <sstream>
    30 #include <utility>
    31 
    32 #include <cudnn.h>
    33 #include <cudnn_backend.h>
    34 
    36 #include "cudnn_frontend_utils.h"
    37 
    38 namespace cudnn_frontend {
    39 
    52  public:
    54  std::string
    55  describe() const override {
    56  std::stringstream ss;
    57  ss << "CUDNN_BACKEND_OPERATIONGRAPH_DESCRIPTOR :";
    58  return ss.str();
    59  }
    60 
    62  : BackendDescriptor(from.get_desc(), from.get_status(), from.get_error()),
    63  handle(from.handle),
    64  ops(from.ops),
    65  numOps(from.numOps),
    66  opGraphTag(from.opGraphTag) {}
    67 
    68  ~OperationGraph_v8() = default;
    69 
    74  auto
    76  getEngineCount(void) const -> int64_t {
    77  int64_t global_count = -1;
    78  auto status = cudnnBackendGetAttribute(pointer->get_backend_descriptor(),
    79  CUDNN_ATTR_OPERATIONGRAPH_ENGINE_GLOBAL_COUNT,
    80  CUDNN_TYPE_INT64,
    81  1,
    82  NULL,
    83  &global_count);
    84  if (status != CUDNN_STATUS_SUCCESS) {
    86  status,
    87  "CUDNN_BACKEND_OPERATIONGRAPH_DESCRIPTOR: GetAttribute "
    88  "CUDNN_ATTR_OPERATIONGRAPH_ENGINE_GLOBAL_COUNT Failed");
    89  }
    90  return global_count;
    91  }
    94  std::string const &
    95  getTag() const {
    96  return opGraphTag;
    97  }
    98 
    99  private:
    100  OperationGraph_v8() = default;
    101  OperationGraph_v8(OperationGraph_v8 const &) = delete;
    103  operator=(OperationGraph_v8 const &) = delete;
    104 
    105  cudnnHandle_t handle = nullptr;
    106  std::array<ManagedOpaqueDescriptor, 10> ops{};
    107  int64_t numOps = -1;
    108  std::string opGraphTag = "";
    109 };
    110 
    115  public:
    120  auto
    122  setHandle(cudnnHandle_t handle_) -> OperationGraphBuilder_v8 & {
    123  m_operationGraph.handle = handle_;
    124  return *this;
    125  }
    127  auto
    128  setOperationGraph(int64_t numOps_, Operation_v8 const **ops_) -> OperationGraphBuilder_v8 & {
    129  m_operationGraph.numOps = numOps_;
    130  for (auto i = 0u; i < numOps_; i++) {
    131  m_operationGraph.ops[i] = ops_[i]->get_desc();
    132  m_operationGraph.opGraphTag += ops_[i]->getTag() + '_';
    133  }
    134  return *this;
    135  }
    141  build() {
    142  if (m_operationGraph.numOps <= 0) {
    144  &m_operationGraph,
    145  CUDNN_STATUS_BAD_PARAM,
    146  "CUDNN_BACKEND_OPERATIONGRAPH_DESCRIPTOR: Check and Set the CUDNN_ATTR_OPERATIONGRAPH_OPS Count field");
    147  return std::move(m_operationGraph);
    148  }
    149  if (m_operationGraph.ops[0] == nullptr) {
    151  &m_operationGraph,
    152  CUDNN_STATUS_BAD_PARAM,
    153  "CUDNN_BACKEND_OPERATIONGRAPH_DESCRIPTOR: Check and set CUDNN_ATTR_OPERATIONGRAPH_OPS field");
    154  return std::move(m_operationGraph);
    155  }
    156  if (m_operationGraph.handle == nullptr) {
    158  &m_operationGraph,
    159  CUDNN_STATUS_BAD_PARAM,
    160  "CUDNN_BACKEND_OPERATIONGRAPH_DESCRIPTOR: Check and Set CUDNN_ATTR_OPERATIONGRAPH_HANDLE");
    161  return std::move(m_operationGraph);
    162  }
    163 
    164  // Create a descriptor. Memory allocation happens here.
    165  auto status = m_operationGraph.initialize_managed_backend_pointer(CUDNN_BACKEND_OPERATIONGRAPH_DESCRIPTOR);
    166  if (status != CUDNN_STATUS_SUCCESS) {
    168  &m_operationGraph, status, "CUDNN_BACKEND_OPERATIONGRAPH_DESCRIPTOR: cudnnCreate Failed");
    169  return std::move(m_operationGraph);
    170  }
    171 
    172  std::array<cudnnBackendDescriptor_t, 10> ops_raw{nullptr};
    173  for (auto i = 0u; i < m_operationGraph.numOps; i++) {
    174  ops_raw[i] = m_operationGraph.ops[i]->get_backend_descriptor();
    175  }
    176 
    177  status = cudnnBackendSetAttribute(m_operationGraph.pointer->get_backend_descriptor(),
    178  CUDNN_ATTR_OPERATIONGRAPH_OPS,
    179  CUDNN_TYPE_BACKEND_DESCRIPTOR,
    180  m_operationGraph.numOps,
    181  ops_raw.data());
    182  if (status != CUDNN_STATUS_SUCCESS) {
    184  &m_operationGraph,
    185  status,
    186  "CUDNN_BACKEND_OPERATIONGRAPH_DESCRIPTOR: SetAttribute CUDNN_ATTR_OPERATIONGRAPH_OPS Failed");
    187  return std::move(m_operationGraph);
    188  }
    189  status = cudnnBackendSetAttribute(m_operationGraph.pointer->get_backend_descriptor(),
    190  CUDNN_ATTR_OPERATIONGRAPH_HANDLE,
    191  CUDNN_TYPE_HANDLE,
    192  1,
    193  &m_operationGraph.handle);
    194  if (status != CUDNN_STATUS_SUCCESS) {
    196  &m_operationGraph,
    197  status,
    198  "CUDNN_BACKEND_OPERATIONGRAPH_DESCRIPTOR: SetAttribute CUDNN_ATTR_OPERATIONGRAPH_HANDLE Failed");
    199  return std::move(m_operationGraph);
    200  }
    201 
    202  // Finalizing the descriptor
    203  status = cudnnBackendFinalize(m_operationGraph.pointer->get_backend_descriptor());
    204  if (status != CUDNN_STATUS_SUCCESS) {
    206  &m_operationGraph, status, "CUDNN_BACKEND_OPERATIONGRAPH_DESCRIPTOR: cudnnFinalize Failed");
    207  return std::move(m_operationGraph);
    208  }
    209 
    210  return std::move(m_operationGraph);
    211  }
    212 
    213  explicit OperationGraphBuilder_v8() = default;
    214  ~OperationGraphBuilder_v8() = default;
    218  operator=(OperationGraphBuilder_v8 const &) = delete;
    219 
    220  private:
    222 };
    223 }
    static void set_error_and_throw_exception(BackendDescriptor const *desc, cudnnStatus_t status, const char *message)
    - +
    auto setHandle(cudnnHandle_t handle_) -> OperationGraphBuilder_v8 &
    Set cudnnHandle for the operations.
    diff --git a/docs/db/d99/classcudnn__frontend_1_1EngineFallbackList__v8.html b/docs/db/d99/classcudnn__frontend_1_1EngineFallbackList__v8.html index c4c4f418c..8a8c1c6ed 100644 --- a/docs/db/d99/classcudnn__frontend_1_1EngineFallbackList__v8.html +++ b/docs/db/d99/classcudnn__frontend_1_1EngineFallbackList__v8.html @@ -5,7 +5,7 @@ -CUDNN API: cudnn_frontend::EngineFallbackList_v8 Class Reference +CUDNN Frontend API: cudnn_frontend::EngineFallbackList_v8 Class Reference @@ -28,8 +28,8 @@ -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    diff --git a/docs/db/dae/classcudnn__frontend_1_1TensorBuilder__v8.html b/docs/db/dae/classcudnn__frontend_1_1TensorBuilder__v8.html index 273c2504a..924c265c8 100644 --- a/docs/db/dae/classcudnn__frontend_1_1TensorBuilder__v8.html +++ b/docs/db/dae/classcudnn__frontend_1_1TensorBuilder__v8.html @@ -5,7 +5,7 @@ -CUDNN API: cudnn_frontend::TensorBuilder_v8 Class Reference +CUDNN Frontend API: cudnn_frontend::TensorBuilder_v8 Class Reference @@ -28,8 +28,8 @@ -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    diff --git a/docs/db/dba/structcudnn__frontend_1_1executionOption-members.html b/docs/db/dba/structcudnn__frontend_1_1executionOption-members.html index 80f12ca41..36bf68b5d 100644 --- a/docs/db/dba/structcudnn__frontend_1_1executionOption-members.html +++ b/docs/db/dba/structcudnn__frontend_1_1executionOption-members.html @@ -5,7 +5,7 @@ -CUDNN API: Member List +CUDNN Frontend API: Member List @@ -28,8 +28,8 @@ -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    diff --git a/docs/db/ddb/classcudnn__frontend_1_1EngineHeuristics__v8.html b/docs/db/ddb/classcudnn__frontend_1_1EngineHeuristics__v8.html index 90b1db77b..087ed072b 100644 --- a/docs/db/ddb/classcudnn__frontend_1_1EngineHeuristics__v8.html +++ b/docs/db/ddb/classcudnn__frontend_1_1EngineHeuristics__v8.html @@ -5,7 +5,7 @@ -CUDNN API: cudnn_frontend::EngineHeuristics_v8 Class Reference +CUDNN Frontend API: cudnn_frontend::EngineHeuristics_v8 Class Reference @@ -28,8 +28,8 @@ -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    diff --git a/docs/db/de1/classcudnn__frontend_1_1ConvDescBuilder__v8.html b/docs/db/de1/classcudnn__frontend_1_1ConvDescBuilder__v8.html index 9559d11e3..cd483ba3d 100644 --- a/docs/db/de1/classcudnn__frontend_1_1ConvDescBuilder__v8.html +++ b/docs/db/de1/classcudnn__frontend_1_1ConvDescBuilder__v8.html @@ -5,7 +5,7 @@ -CUDNN API: cudnn_frontend::ConvDescBuilder_v8 Class Reference +CUDNN Frontend API: cudnn_frontend::ConvDescBuilder_v8 Class Reference @@ -28,8 +28,8 @@ -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    diff --git a/docs/dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html b/docs/dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html index 8b619fa3b..0e9bba7c3 100644 --- a/docs/dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html +++ b/docs/dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html @@ -5,7 +5,7 @@ -CUDNN API: cudnn_frontend::Engine_v8::Knob Class Reference +CUDNN Frontend API: cudnn_frontend::Engine_v8::Knob Class Reference @@ -28,8 +28,8 @@ -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    @@ -92,8 +92,6 @@ Collaboration diagram for cudnn_frontend::Engine_v8::Knob:
    Collaboration graph
    - -
    - - - - - - - - - - + + + + + + + + + +

    @@ -104,16 +102,16 @@

     
    void setChoice (uint64_t val_)
     
    const int64_t getChoice () const
     
    const cudnnBackendKnobType_t getKnobType () const
     
    const int64_t getMinValue () const
     
    const int64_t getMaxValue () const
     
    const int64_t getStride () const
     
    int64_t getChoice () const
     
    cudnnBackendKnobType_t getKnobType () const
     
    int64_t getMinValue () const
     
    int64_t getMaxValue () const
     
    int64_t getStride () const
     
    @@ -217,8 +215,8 @@

    -

    ◆ getChoice()

    + +

    ◆ getChoice()

    @@ -227,7 +225,7 @@

    Private Attributes

    - + @@ -246,8 +244,8 @@

    -

    ◆ getKnobType()

    + +

    ◆ getKnobType()

    @@ -256,7 +254,7 @@

    const int64_t cudnn_frontend::Engine_v8::Knob::getChoice int64_t cudnn_frontend::Engine_v8::Knob::getChoice ( ) const
    - + @@ -275,8 +273,8 @@

    -

    ◆ getMaxValue()

    + +

    ◆ getMaxValue()

    @@ -285,7 +283,7 @@

    const cudnnBackendKnobType_t cudnn_frontend::Engine_v8::Knob::getKnobType cudnnBackendKnobType_t cudnn_frontend::Engine_v8::Knob::getKnobType ( ) const
    - + @@ -304,8 +302,8 @@

    -

    ◆ getMinValue()

    + +

    ◆ getMinValue()

    @@ -314,7 +312,7 @@

    const int64_t cudnn_frontend::Engine_v8::Knob::getMaxValue int64_t cudnn_frontend::Engine_v8::Knob::getMaxValue ( ) const
    - + @@ -333,8 +331,8 @@

    -

    ◆ getStride()

    + +

    ◆ getStride()

    @@ -343,7 +341,7 @@

    const int64_t cudnn_frontend::Engine_v8::Knob::getMinValue int64_t cudnn_frontend::Engine_v8::Knob::getMinValue ( ) const
    - + diff --git a/docs/dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.js b/docs/dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.js index d9b3037dd..b94aead5a 100644 --- a/docs/dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.js +++ b/docs/dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.js @@ -2,11 +2,11 @@ var classcudnn__frontend_1_1Engine__v8_1_1Knob = [ [ "Knob", "dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#aaf0d313c5491b599537422694eb83b82", null ], [ "describe", "dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#a3f60f9ba0e35cb0bccbf3524def69db2", null ], - [ "getChoice", "dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#ad2fbb6103c61dfa6fa1800dccadb5f38", null ], - [ "getKnobType", "dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#a1a4287f2767654ef28b3a5f1925e7ff1", null ], - [ "getMaxValue", "dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#ac16f2f536d5d813d52eb74825b6dff64", null ], - [ "getMinValue", "dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#a210061280cc6df1431d1c464a65d9a02", null ], - [ "getStride", "dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#a92040bb78e1f2b4ecb3cc6768a3946df", null ], + [ "getChoice", "dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#a4c0a920d14a719e99fce3d64a6eb0980", null ], + [ "getKnobType", "dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#a75ea7ec76b08688da99e6bd3664083c8", null ], + [ "getMaxValue", "dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#a4fe794b42a0ee5ba71b8ca8c797d1dbe", null ], + [ "getMinValue", "dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#af3fdf6b0da493544a003913bdf524449", null ], + [ "getStride", "dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#adc0dd9d11771a040a8f5191bef00cdb5", null ], [ "setChoice", "dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#a542f95d42a6d118e3de1726720c12278", null ], [ "choice", "dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#aee3bbc2a558893309d6882a0e30d439a", null ], [ "knobType", "dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#adc13c98616305cd23d86dc5dc1dfe86e", null ], diff --git a/docs/dc/d11/cudnn__backend__base_8h.html b/docs/dc/d11/cudnn__backend__base_8h.html index 6257e425d..37c057da1 100644 --- a/docs/dc/d11/cudnn__backend__base_8h.html +++ b/docs/dc/d11/cudnn__backend__base_8h.html @@ -5,7 +5,7 @@ -CUDNN API: cudnn_backend_base.h File Reference +CUDNN Frontend API: cudnn_backend_base.h File Reference @@ -28,8 +28,8 @@ @@ -94,29 +94,28 @@ Include dependency graph for cudnn_backend_base.h:
    - -
    This graph shows which files directly or indirectly include this file:
    - + - - - - - - + + + + + + - - - - - - + + + + + + +
    diff --git a/docs/dc/d11/cudnn__backend__base_8h_source.html b/docs/dc/d11/cudnn__backend__base_8h_source.html index 58af51728..9f037f49f 100644 --- a/docs/dc/d11/cudnn__backend__base_8h_source.html +++ b/docs/dc/d11/cudnn__backend__base_8h_source.html @@ -5,7 +5,7 @@ -CUDNN API: cudnn_backend_base.h Source File +CUDNN Frontend API: cudnn_backend_base.h Source File @@ -28,8 +28,8 @@
    diff --git a/docs/dc/d2b/classcudnn__frontend_1_1MatMulDescBuilder__v8-members.html b/docs/dc/d2b/classcudnn__frontend_1_1MatMulDescBuilder__v8-members.html new file mode 100644 index 000000000..8ef6fec5a --- /dev/null +++ b/docs/dc/d2b/classcudnn__frontend_1_1MatMulDescBuilder__v8-members.html @@ -0,0 +1,109 @@ + + + + + + + +CUDNN Frontend API: Member List + + + + + + + + + + + + + + +
    +
    +
    const int64_t cudnn_frontend::Engine_v8::Knob::getStride int64_t cudnn_frontend::Engine_v8::Knob::getStride ( ) const
    -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    + + + + + +
    +
    CUDNN Frontend API +  8.2.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + + + + diff --git a/docs/dc/d34/cudnn__backend__base_8h__dep__incl.map b/docs/dc/d34/cudnn__backend__base_8h__dep__incl.map index 1178b1ef7..705cdbf1d 100644 --- a/docs/dc/d34/cudnn__backend__base_8h__dep__incl.map +++ b/docs/dc/d34/cudnn__backend__base_8h__dep__incl.map @@ -1,17 +1,18 @@ - + - - - - - - + + + + + + - - - - - - + + + + + + + diff --git a/docs/dc/d34/cudnn__backend__base_8h__dep__incl.md5 b/docs/dc/d34/cudnn__backend__base_8h__dep__incl.md5 index 2124bc21e..fc485f3b9 100644 --- a/docs/dc/d34/cudnn__backend__base_8h__dep__incl.md5 +++ b/docs/dc/d34/cudnn__backend__base_8h__dep__incl.md5 @@ -1 +1 @@ -44a1974cf361603663d84b694e6c1463 \ No newline at end of file +7ac99a3c84db9c0e7fa3218958c8eb87 \ No newline at end of file diff --git a/docs/dc/d34/cudnn__backend__base_8h__dep__incl.png b/docs/dc/d34/cudnn__backend__base_8h__dep__incl.png index 54f212634..de54485f7 100644 Binary files a/docs/dc/d34/cudnn__backend__base_8h__dep__incl.png and b/docs/dc/d34/cudnn__backend__base_8h__dep__incl.png differ diff --git a/docs/dc/d3c/classcudnn__frontend_1_1Engine__v8.html b/docs/dc/d3c/classcudnn__frontend_1_1Engine__v8.html index 0efa66c31..d14200f98 100644 --- a/docs/dc/d3c/classcudnn__frontend_1_1Engine__v8.html +++ b/docs/dc/d3c/classcudnn__frontend_1_1Engine__v8.html @@ -5,7 +5,7 @@ -CUDNN API: cudnn_frontend::Engine_v8 Class Reference +CUDNN Frontend API: cudnn_frontend::Engine_v8 Class Reference @@ -28,8 +28,8 @@ -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    @@ -511,7 +511,7 @@

    -

    Referenced by cudnn_frontend::EngineBuilder_v8::build().

    +

    Referenced by cudnn_frontend::EngineBuilder_v8::build().

    @@ -538,7 +538,7 @@

    Definition at line 165 of file cudnn_frontend_Engine.h.

    -

    Referenced by cudnn_frontend::EngineBuilder_v8::build().

    +

    Referenced by cudnn_frontend::EngineBuilder_v8::build().

    diff --git a/docs/dc/d40/cudnn__frontend__Heuristics_8h__dep__incl.md5 b/docs/dc/d40/cudnn__frontend__Heuristics_8h__dep__incl.md5 index 6dbd9bbcb..7de5ba17a 100644 --- a/docs/dc/d40/cudnn__frontend__Heuristics_8h__dep__incl.md5 +++ b/docs/dc/d40/cudnn__frontend__Heuristics_8h__dep__incl.md5 @@ -1 +1 @@ -73245addb2cc1f404685ae72326b3928 \ No newline at end of file +e477e6181c9051de76291e22e47e2de9 \ No newline at end of file diff --git a/docs/dc/d99/group__EngineHeuristicsBuilder__v8.html b/docs/dc/d99/group__EngineHeuristicsBuilder__v8.html index f6613b59c..acb8f3059 100644 --- a/docs/dc/d99/group__EngineHeuristicsBuilder__v8.html +++ b/docs/dc/d99/group__EngineHeuristicsBuilder__v8.html @@ -5,7 +5,7 @@ -CUDNN API: EngineHeuristicsBuilder_v8 +CUDNN Frontend API: EngineHeuristicsBuilder_v8 @@ -28,8 +28,8 @@ -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    diff --git a/docs/dc/da3/classcudnn__frontend_1_1EngineConfigGenerator.html b/docs/dc/da3/classcudnn__frontend_1_1EngineConfigGenerator.html index 6832c23c1..2d2e033ed 100644 --- a/docs/dc/da3/classcudnn__frontend_1_1EngineConfigGenerator.html +++ b/docs/dc/da3/classcudnn__frontend_1_1EngineConfigGenerator.html @@ -5,7 +5,7 @@ -CUDNN API: cudnn_frontend::EngineConfigGenerator Class Reference +CUDNN Frontend API: cudnn_frontend::EngineConfigGenerator Class Reference @@ -28,8 +28,8 @@ -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    diff --git a/docs/dc/df0/classcudnn__frontend_1_1ExecutionPlanBuilder__v8__coll__graph.md5 b/docs/dc/df0/classcudnn__frontend_1_1ExecutionPlanBuilder__v8__coll__graph.md5 index c0820e3c8..f830abc9a 100644 --- a/docs/dc/df0/classcudnn__frontend_1_1ExecutionPlanBuilder__v8__coll__graph.md5 +++ b/docs/dc/df0/classcudnn__frontend_1_1ExecutionPlanBuilder__v8__coll__graph.md5 @@ -1 +1 @@ -f87f13fb8643553a7db120c9947907de \ No newline at end of file +3372caff8eb397d4ab5e5708a5e49e3d \ No newline at end of file diff --git a/docs/dc/df0/classcudnn__frontend_1_1ExecutionPlanBuilder__v8__coll__graph.png b/docs/dc/df0/classcudnn__frontend_1_1ExecutionPlanBuilder__v8__coll__graph.png index ac00658d4..1787a8e2e 100644 Binary files a/docs/dc/df0/classcudnn__frontend_1_1ExecutionPlanBuilder__v8__coll__graph.png and b/docs/dc/df0/classcudnn__frontend_1_1ExecutionPlanBuilder__v8__coll__graph.png differ diff --git a/docs/dd/d3a/classcudnn__frontend_1_1MatMulDesc__v8__coll__graph.map b/docs/dd/d3a/classcudnn__frontend_1_1MatMulDesc__v8__coll__graph.map new file mode 100644 index 000000000..817f29fab --- /dev/null +++ b/docs/dd/d3a/classcudnn__frontend_1_1MatMulDesc__v8__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/dd/d3a/classcudnn__frontend_1_1MatMulDesc__v8__coll__graph.md5 b/docs/dd/d3a/classcudnn__frontend_1_1MatMulDesc__v8__coll__graph.md5 new file mode 100644 index 000000000..8a7b7ee9c --- /dev/null +++ b/docs/dd/d3a/classcudnn__frontend_1_1MatMulDesc__v8__coll__graph.md5 @@ -0,0 +1 @@ +a987c9c70aa6473195b18c5d2b19b53b \ No newline at end of file diff --git a/docs/dd/d3a/classcudnn__frontend_1_1MatMulDesc__v8__coll__graph.png b/docs/dd/d3a/classcudnn__frontend_1_1MatMulDesc__v8__coll__graph.png new file mode 100644 index 000000000..708d0708e Binary files /dev/null and b/docs/dd/d3a/classcudnn__frontend_1_1MatMulDesc__v8__coll__graph.png differ diff --git a/docs/dd/d4a/cudnn__frontend__ExecutionPlan_8h__dep__incl.md5 b/docs/dd/d4a/cudnn__frontend__ExecutionPlan_8h__dep__incl.md5 index a88f9b616..1c8dde18b 100644 --- a/docs/dd/d4a/cudnn__frontend__ExecutionPlan_8h__dep__incl.md5 +++ b/docs/dd/d4a/cudnn__frontend__ExecutionPlan_8h__dep__incl.md5 @@ -1 +1 @@ -d4f10074b38a2587298525369f0b7458 \ No newline at end of file +599221920f58a5ca03c19a20300f1bc4 \ No newline at end of file diff --git a/docs/dd/d56/cudnn__frontend__MatMulDesc_8h__incl.map b/docs/dd/d56/cudnn__frontend__MatMulDesc_8h__incl.map new file mode 100644 index 000000000..683761b32 --- /dev/null +++ b/docs/dd/d56/cudnn__frontend__MatMulDesc_8h__incl.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/dd/d56/cudnn__frontend__MatMulDesc_8h__incl.md5 b/docs/dd/d56/cudnn__frontend__MatMulDesc_8h__incl.md5 new file mode 100644 index 000000000..e603da898 --- /dev/null +++ b/docs/dd/d56/cudnn__frontend__MatMulDesc_8h__incl.md5 @@ -0,0 +1 @@ +c63b99ddc69a234c707142e7a139b392 \ No newline at end of file diff --git a/docs/dd/d56/cudnn__frontend__MatMulDesc_8h__incl.png b/docs/dd/d56/cudnn__frontend__MatMulDesc_8h__incl.png new file mode 100644 index 000000000..50bcce0ce Binary files /dev/null and b/docs/dd/d56/cudnn__frontend__MatMulDesc_8h__incl.png differ diff --git a/docs/dd/d72/classcudnn__frontend_1_1EngineConfigBuilder__v8.html b/docs/dd/d72/classcudnn__frontend_1_1EngineConfigBuilder__v8.html index 84e87b3c2..dc1ac2b8a 100644 --- a/docs/dd/d72/classcudnn__frontend_1_1EngineConfigBuilder__v8.html +++ b/docs/dd/d72/classcudnn__frontend_1_1EngineConfigBuilder__v8.html @@ -5,7 +5,7 @@ -CUDNN API: cudnn_frontend::EngineConfigBuilder_v8 Class Reference +CUDNN Frontend API: cudnn_frontend::EngineConfigBuilder_v8 Class Reference @@ -28,8 +28,8 @@ -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    diff --git a/docs/dd/d9e/classcudnn__frontend_1_1TensorBuilder__v8-members.html b/docs/dd/d9e/classcudnn__frontend_1_1TensorBuilder__v8-members.html index 43b34343d..82ba7e231 100644 --- a/docs/dd/d9e/classcudnn__frontend_1_1TensorBuilder__v8-members.html +++ b/docs/dd/d9e/classcudnn__frontend_1_1TensorBuilder__v8-members.html @@ -5,7 +5,7 @@ -CUDNN API: Member List +CUDNN Frontend API: Member List @@ -28,8 +28,8 @@ -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    diff --git a/docs/dd/de7/cudnn__frontend__EngineConfig_8h__dep__incl.md5 b/docs/dd/de7/cudnn__frontend__EngineConfig_8h__dep__incl.md5 index bc19b6b66..2ee91a61a 100644 --- a/docs/dd/de7/cudnn__frontend__EngineConfig_8h__dep__incl.md5 +++ b/docs/dd/de7/cudnn__frontend__EngineConfig_8h__dep__incl.md5 @@ -1 +1 @@ -82fb5864e5dd4ef2fbbe2f4efbdae31e \ No newline at end of file +0f02437f2ef5b69768e3cd114d6d2415 \ No newline at end of file diff --git a/docs/de/d00/classcudnn__frontend_1_1MatMulDescBuilder__v8.html b/docs/de/d00/classcudnn__frontend_1_1MatMulDescBuilder__v8.html new file mode 100644 index 000000000..b50c20ff7 --- /dev/null +++ b/docs/de/d00/classcudnn__frontend_1_1MatMulDescBuilder__v8.html @@ -0,0 +1,332 @@ + + + + + + + +CUDNN Frontend API: cudnn_frontend::MatMulDescBuilder_v8 Class Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    CUDNN Frontend API +  8.2.0 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    cudnn_frontend::MatMulDescBuilder_v8 Class Reference
    +
    +
    + +

    #include <cudnn_frontend_MatMulDesc.h>

    +
    +Collaboration diagram for cudnn_frontend::MatMulDescBuilder_v8:
    +
    +
    Collaboration graph
    + + + + + + +
    + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    auto setMathPrecision (cudnnDataType_t data_type_) -> MatMulDescBuilder_v8 &
     Set Math Precision Data Type for the Matmul Operation. More...
     
    MatMulDesc_v8 && build ()
     
     MatMulDescBuilder_v8 ()=default
     
     ~MatMulDescBuilder_v8 ()=default
     
     MatMulDescBuilder_v8 (MatMulDescBuilder_v8 &&)=delete
     
     MatMulDescBuilder_v8 (MatMulDescBuilder_v8 const &)=delete
     
    MatMulDescBuilder_v8operator= (MatMulDescBuilder_v8 const &)=delete
     
    + + + +

    +Private Attributes

    MatMulDesc_v8 m_matMulDesc
     
    +

    Detailed Description

    +

    MatMulDescBuilder_v8 Class Helper class used to build MatMulDesc_v8 class

    + +

    Definition at line 76 of file cudnn_frontend_MatMulDesc.h.

    +

    Constructor & Destructor Documentation

    + +

    ◆ MatMulDescBuilder_v8() [1/3]

    + +
    +
    + + + + + +
    + + + + + + + +
    cudnn_frontend::MatMulDescBuilder_v8::MatMulDescBuilder_v8 ()
    +
    +explicitdefault
    +
    + +
    +
    + +

    ◆ ~MatMulDescBuilder_v8()

    + +
    +
    + + + + + +
    + + + + + + + +
    cudnn_frontend::MatMulDescBuilder_v8::~MatMulDescBuilder_v8 ()
    +
    +default
    +
    + +
    +
    + +

    ◆ MatMulDescBuilder_v8() [2/3]

    + +
    +
    + + + + + +
    + + + + + + + + +
    cudnn_frontend::MatMulDescBuilder_v8::MatMulDescBuilder_v8 (MatMulDescBuilder_v8 && )
    +
    +delete
    +
    + +
    +
    + +

    ◆ MatMulDescBuilder_v8() [3/3]

    + +
    +
    + + + + + +
    + + + + + + + + +
    cudnn_frontend::MatMulDescBuilder_v8::MatMulDescBuilder_v8 (MatMulDescBuilder_v8 const & )
    +
    +delete
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ build()

    + +
    +
    + + + + + +
    + + + + + + + +
    MatMulDesc_v8&& cudnn_frontend::MatMulDescBuilder_v8::build ()
    +
    +inline
    +
    +
    + +

    ◆ operator=()

    + +
    +
    + + + + + +
    + + + + + + + + +
    MatMulDescBuilder_v8& cudnn_frontend::MatMulDescBuilder_v8::operator= (MatMulDescBuilder_v8 const & )
    +
    +delete
    +
    + +
    +
    +

    Member Data Documentation

    + +

    ◆ m_matMulDesc

    + +
    +
    + + + + + +
    + + + + +
    MatMulDesc_v8 cudnn_frontend::MatMulDescBuilder_v8::m_matMulDesc
    +
    +private
    +
    + +

    Definition at line 133 of file cudnn_frontend_MatMulDesc.h.

    + +
    +
    +
    The documentation for this class was generated from the following file: +
    +
    + + + + diff --git a/docs/de/d00/classcudnn__frontend_1_1MatMulDescBuilder__v8.js b/docs/de/d00/classcudnn__frontend_1_1MatMulDescBuilder__v8.js new file mode 100644 index 000000000..102591414 --- /dev/null +++ b/docs/de/d00/classcudnn__frontend_1_1MatMulDescBuilder__v8.js @@ -0,0 +1,11 @@ +var classcudnn__frontend_1_1MatMulDescBuilder__v8 = +[ + [ "MatMulDescBuilder_v8", "de/d00/classcudnn__frontend_1_1MatMulDescBuilder__v8.html#afea76414fa5c0c5f38a551afcf11391c", null ], + [ "~MatMulDescBuilder_v8", "de/d00/classcudnn__frontend_1_1MatMulDescBuilder__v8.html#a3f5790e5ada9a1785d9daf4246ea8de3", null ], + [ "MatMulDescBuilder_v8", "de/d00/classcudnn__frontend_1_1MatMulDescBuilder__v8.html#a75af51fa2937a7df6787d3181ef22cf2", null ], + [ "MatMulDescBuilder_v8", "de/d00/classcudnn__frontend_1_1MatMulDescBuilder__v8.html#a287154397d78c528465a949ab0242068", null ], + [ "build", "de/d00/classcudnn__frontend_1_1MatMulDescBuilder__v8.html#addc153acf5600781659a1a2ba891e59c", null ], + [ "operator=", "de/d00/classcudnn__frontend_1_1MatMulDescBuilder__v8.html#a02ee327bae65fc44c140d7bb6a0b4991", null ], + [ "setMathPrecision", "d9/d08/group__MatMulDescBuilder__v8.html#ga5885f3eb7580cbe0cbe7243c4711c0f2", null ], + [ "m_matMulDesc", "de/d00/classcudnn__frontend_1_1MatMulDescBuilder__v8.html#aa71bc8242df4035ff5d6b4d54083db4b", null ] +]; \ No newline at end of file diff --git a/docs/de/d0c/cudnn__frontend_8h.html b/docs/de/d0c/cudnn__frontend_8h.html index d6d17b00f..37b9c4e72 100644 --- a/docs/de/d0c/cudnn__frontend_8h.html +++ b/docs/de/d0c/cudnn__frontend_8h.html @@ -5,7 +5,7 @@ -CUDNN API: cudnn_frontend.h File Reference +CUDNN Frontend API: cudnn_frontend.h File Reference @@ -28,8 +28,8 @@ -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    @@ -99,25 +99,27 @@ #include "cudnn_frontend_Tensor.h"
    #include "cudnn_frontend_VariantPack.h"
    #include "cudnn_frontend_PointWiseDesc.h"
    +#include "cudnn_frontend_MatMulDesc.h"
    Include dependency graph for cudnn_frontend.h:
    - - - - - - - - - - - - - - + + + + + + + + + + + + + + +
    @@ -152,6 +154,10 @@   using cudnn_frontend::PointWiseDesc = PointWiseDesc_v8   +using cudnn_frontend::MatMulDesc = MatMulDesc_v8 +  +using cudnn_frontend::MatMulDescBuilder = MatMulDescBuilder_v8 +  using cudnn_frontend::Operation = Operation_v8   using cudnn_frontend::OperationBuilder = OperationBuilder_v8 diff --git a/docs/de/d0c/cudnn__frontend_8h.js b/docs/de/d0c/cudnn__frontend_8h.js index 993a167e0..e1b6e9bc9 100644 --- a/docs/de/d0c/cudnn__frontend_8h.js +++ b/docs/de/d0c/cudnn__frontend_8h.js @@ -12,6 +12,8 @@ var cudnn__frontend_8h = [ "EngineHeuristicsBuilder", "de/d0c/cudnn__frontend_8h.html#aae6a627b67858b15afbc5656afa88123", null ], [ "ExecutionPlan", "de/d0c/cudnn__frontend_8h.html#a984c10aa29daac796444bda66bdef26e", null ], [ "ExecutionPlanBuilder", "de/d0c/cudnn__frontend_8h.html#aa508b66c4de02f4aacae8029dbe422eb", null ], + [ "MatMulDesc", "de/d0c/cudnn__frontend_8h.html#ad809552e9ec400bcbfcfc0ea5acd4e56", null ], + [ "MatMulDescBuilder", "de/d0c/cudnn__frontend_8h.html#a0c344e3bc1f332aa9f5b213eb1ae9ee6", null ], [ "Operation", "de/d0c/cudnn__frontend_8h.html#a2f1497702504947953a0f5a69b6eeb2a", null ], [ "OperationBuilder", "de/d0c/cudnn__frontend_8h.html#ae6d02ff4c7922673ed3862145a4019d4", null ], [ "OperationGraph", "de/d0c/cudnn__frontend_8h.html#ac86ce924df5209c4ce1bc25856eea6e6", null ], diff --git a/docs/de/d0c/cudnn__frontend_8h_source.html b/docs/de/d0c/cudnn__frontend_8h_source.html index 38c769077..e85435104 100644 --- a/docs/de/d0c/cudnn__frontend_8h_source.html +++ b/docs/de/d0c/cudnn__frontend_8h_source.html @@ -5,7 +5,7 @@ -CUDNN API: cudnn_frontend.h Source File +CUDNN Frontend API: cudnn_frontend.h Source File @@ -28,8 +28,8 @@ -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    @@ -84,16 +84,17 @@
    cudnn_frontend.h
    -Go to the documentation of this file.
    1 /*
    2  * Copyright (c) 2021, NVIDIA CORPORATION. All rights reserved.
    3  *
    4  * Permission is hereby granted, free of charge, to any person obtaining a
    5  * copy of this software and associated documentation files (the "Software"),
    6  * to deal in the Software without restriction, including without limitation
    7  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
    8  * and/or sell copies of the Software, and to permit persons to whom the
    9  * Software is furnished to do so, subject to the following conditions:
    10  *
    11  * The above copyright notice and this permission notice shall be included in
    12  * all copies or substantial portions of the Software.
    13  *
    14  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    15  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    16  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
    17  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    18  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
    19  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
    20  * DEALINGS IN THE SOFTWARE.
    21  */
    22 
    23 #pragma once
    24 
    27 #include "cudnn_frontend_Engine.h"
    31 #include "cudnn_frontend_Filters.h"
    34 #include "cudnn_frontend_Tensor.h"
    37 
    38 namespace cudnn_frontend {
    39 using Tensor = Tensor_v8;
    52 using Engine = Engine_v8;
    61 }
    +Go to the documentation of this file.
    1 /*
    2  * Copyright (c) 2021, NVIDIA CORPORATION. All rights reserved.
    3  *
    4  * Permission is hereby granted, free of charge, to any person obtaining a
    5  * copy of this software and associated documentation files (the "Software"),
    6  * to deal in the Software without restriction, including without limitation
    7  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
    8  * and/or sell copies of the Software, and to permit persons to whom the
    9  * Software is furnished to do so, subject to the following conditions:
    10  *
    11  * The above copyright notice and this permission notice shall be included in
    12  * all copies or substantial portions of the Software.
    13  *
    14  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    15  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    16  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
    17  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    18  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
    19  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
    20  * DEALINGS IN THE SOFTWARE.
    21  */
    22 
    23 #pragma once
    24 
    100 #include "cudnn_frontend_Engine.h"
    104 #include "cudnn_frontend_Filters.h"
    107 #include "cudnn_frontend_Tensor.h"
    111 
    112 namespace cudnn_frontend {
    137 }
    + - + - - + + @@ -101,7 +102,7 @@ - + @@ -111,11 +112,13 @@ + + diff --git a/docs/de/d1e/cudnn__frontend__EngineConfigGenerator_8h.html b/docs/de/d1e/cudnn__frontend__EngineConfigGenerator_8h.html index 1701ec5d1..8d005ba19 100644 --- a/docs/de/d1e/cudnn__frontend__EngineConfigGenerator_8h.html +++ b/docs/de/d1e/cudnn__frontend__EngineConfigGenerator_8h.html @@ -5,7 +5,7 @@ -CUDNN API: cudnn_frontend_EngineConfigGenerator.h File Reference +CUDNN Frontend API: cudnn_frontend_EngineConfigGenerator.h File Reference @@ -28,8 +28,8 @@ -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    @@ -96,21 +96,22 @@
    - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + +
    diff --git a/docs/de/d1e/cudnn__frontend__EngineConfigGenerator_8h_source.html b/docs/de/d1e/cudnn__frontend__EngineConfigGenerator_8h_source.html index 5a263fc58..50b83cb9d 100644 --- a/docs/de/d1e/cudnn__frontend__EngineConfigGenerator_8h_source.html +++ b/docs/de/d1e/cudnn__frontend__EngineConfigGenerator_8h_source.html @@ -5,7 +5,7 @@ -CUDNN API: cudnn_frontend_EngineConfigGenerator.h Source File +CUDNN Frontend API: cudnn_frontend_EngineConfigGenerator.h Source File @@ -28,8 +28,8 @@ -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    diff --git a/docs/de/d6d/cudnn__frontend__Engine_8h.html b/docs/de/d6d/cudnn__frontend__Engine_8h.html index dde7cfe70..426af0cdc 100644 --- a/docs/de/d6d/cudnn__frontend__Engine_8h.html +++ b/docs/de/d6d/cudnn__frontend__Engine_8h.html @@ -5,7 +5,7 @@ -CUDNN API: cudnn_frontend_Engine.h File Reference +CUDNN Frontend API: cudnn_frontend_Engine.h File Reference @@ -28,8 +28,8 @@ -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    @@ -103,13 +103,14 @@
    - - - - - - - + + + + + + + +
    diff --git a/docs/de/d6d/cudnn__frontend__Engine_8h_source.html b/docs/de/d6d/cudnn__frontend__Engine_8h_source.html index abe0f28c6..2bcf9cc5f 100644 --- a/docs/de/d6d/cudnn__frontend__Engine_8h_source.html +++ b/docs/de/d6d/cudnn__frontend__Engine_8h_source.html @@ -5,7 +5,7 @@ -CUDNN API: cudnn_frontend_Engine.h Source File +CUDNN Frontend API: cudnn_frontend_Engine.h Source File @@ -28,8 +28,8 @@ -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    @@ -84,26 +84,25 @@
    cudnn_frontend_Engine.h
    -Go to the documentation of this file.
    1 /*
    2  * Copyright (c) 2021, NVIDIA CORPORATION. All rights reserved.
    3  *
    4  * Permission is hereby granted, free of charge, to any person obtaining a
    5  * copy of this software and associated documentation files (the "Software"),
    6  * to deal in the Software without restriction, including without limitation
    7  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
    8  * and/or sell copies of the Software, and to permit persons to whom the
    9  * Software is furnished to do so, subject to the following conditions:
    10  *
    11  * The above copyright notice and this permission notice shall be included in
    12  * all copies or substantial portions of the Software.
    13  *
    14  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    15  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    16  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
    17  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    18  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
    19  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
    20  * DEALINGS IN THE SOFTWARE.
    21  */
    22 
    23 #pragma once
    24 
    25 #include <algorithm>
    26 #include <array>
    27 #include <functional>
    28 #include <memory>
    29 #include <sstream>
    30 #include <utility>
    31 #include <vector>
    32 
    33 #include <cudnn.h>
    34 #include <cudnn_backend.h>
    35 
    37 #include "cudnn_frontend_utils.h"
    38 
    39 namespace cudnn_frontend {
    40 
    52 class Engine_v8 : public BackendDescriptor {
    53  private:
    54  Engine_v8() = default;
    55  Engine_v8(Engine_v8 const &) = delete;
    56  Engine_v8 &
    57  operator=(Engine_v8 const &) = delete;
    58 
    62  class Knob {
    63  public:
    64  Knob(cudnnBackendKnobType_t type_, int64_t max, int64_t min, int64_t stride_)
    65  : knobType(type_), maxValue(max), minValue(min), stride(stride_) {}
    66 
    67  std::string
    68  describe() const {
    69  std::stringstream ss;
    70  ss << "Knob:" << knobType;
    71  ss << " Min: " << minValue;
    72  ss << " Max: " << maxValue;
    73  ss << " Stride: " << stride;
    74  return ss.str();
    75  }
    76 
    77  void
    78  setChoice(uint64_t val_) {
    79  choice = val_;
    80  }
    81 
    82  const int64_t
    83  getChoice() const {
    84  return choice;
    85  }
    86 
    87  const cudnnBackendKnobType_t
    88  getKnobType() const {
    89  return knobType;
    90  }
    91 
    92  const int64_t
    93  getMinValue() const {
    94  return minValue;
    95  }
    96 
    97  const int64_t
    98  getMaxValue() const {
    99  return minValue;
    100  }
    101 
    102  const int64_t
    103  getStride() const {
    104  return stride;
    105  }
    106 
    107  private:
    108  cudnnBackendKnobType_t knobType = CUDNN_KNOB_TYPE_COUNTS;
    109  int64_t maxValue = 0, minValue = 0, stride = 0;
    110  int64_t choice = 0;
    111  };
    112 
    114  int64_t idx = -1;
    115  int64_t numKnobs = 0;
    116  std::array<ManagedOpaqueDescriptor, CUDNN_KNOB_TYPE_COUNTS> bKnobs = {};
    117  std::vector<Knob> knobs;
    118  std::string opGraphTag;
    119 
    121  void
    123  cudnnStatus_t status;
    124  for (auto i = 0; i < numKnobs; i++) {
    125  auto bKnob = bKnobs[i]->get_backend_descriptor();
    126  cudnnBackendKnobType_t type;
    127  int64_t maxValue, minValue, stride, elemCount;
    128  status =
    129  cudnnBackendGetAttribute(bKnob, CUDNN_ATTR_KNOB_INFO_TYPE, CUDNN_TYPE_KNOB_TYPE, 1, &elemCount, &type);
    130  if (status != CUDNN_STATUS_SUCCESS) {
    132  status,
    133  "CUDNN_BACKEND_ENGINE_DESCRIPTOR: CUDNN_BACKEND_KNOB_INFO_DESCRIPTOR "
    134  "GetAttribute CUDNN_ATTR_KNOB_INFO_TYPE failed");
    135  }
    136  status = cudnnBackendGetAttribute(
    137  bKnob, CUDNN_ATTR_KNOB_INFO_MAXIMUM_VALUE, CUDNN_TYPE_INT64, 1, &elemCount, &maxValue);
    138  if (status != CUDNN_STATUS_SUCCESS) {
    140  status,
    141  "CUDNN_BACKEND_ENGINE_DESCRIPTOR: CUDNN_BACKEND_KNOB_INFO_DESCRIPTOR "
    142  "GetAttribute CUDNN_ATTR_KNOB_INFO_MAXIMUM_VALUE Failed");
    143  }
    144  status = cudnnBackendGetAttribute(
    145  bKnob, CUDNN_ATTR_KNOB_INFO_MINIMUM_VALUE, CUDNN_TYPE_INT64, 1, &elemCount, &minValue);
    146  if (status != CUDNN_STATUS_SUCCESS) {
    148  status,
    149  "CUDNN_BACKEND_ENGINE_DESCRIPTOR: CUDNN_BACKEND_KNOB_INFO_DESCRIPTOR "
    150  "GetAttribute CUDNN_ATTR_KNOB_INFO_MINIMUM_VALUE Failed");
    151  }
    152  status =
    153  cudnnBackendGetAttribute(bKnob, CUDNN_ATTR_KNOB_INFO_STRIDE, CUDNN_TYPE_INT64, 1, &elemCount, &stride);
    154  if (status != CUDNN_STATUS_SUCCESS) {
    156  status,
    157  "CUDNN_BACKEND_ENGINE_DESCRIPTOR: CUDNN_BACKEND_KNOB_INFO_DESCRIPTOR "
    158  "GetAttribute CUDNN_ATTR_KNOB_INFO_STRIDE Failed");
    159  }
    160  knobs.emplace_back(Knob(type, maxValue, minValue, stride));
    161  }
    162  }
    163 
    164  public:
    165  friend class EngineBuilder_v8;
    166  std::string
    167  describe() const override {
    168  std::stringstream ss;
    169  ss << "CUDNN_BACKEND_ENGINE_DESCRIPTOR :";
    170  ss << " ID: " << idx;
    171  ss << " Has " << numKnobs << " knobs";
    172  return ss.str();
    173  }
    175  : BackendDescriptor(from.get_desc(), from.get_status(), from.get_error()),
    176  opGraph(from.opGraph),
    177  idx(from.idx),
    178  opGraphTag(from.opGraphTag) {
    179  cudnnStatus_t status;
    180  for (uint64_t i = 0; i < bKnobs.size(); i++) {
    181  bKnobs[i] = make_shared_backend_pointer(CUDNN_BACKEND_KNOB_INFO_DESCRIPTOR);
    182  if (bKnobs[i]->is_good() == false) {
    183  status = bKnobs[i]->get_status();
    185  this,
    186  status,
    187  "CUDNN_BACKEND_ENGINE_DESCRIPTOR: CUDNN_BACKEND_KNOB_INFO_DESCRIPTOR cudnnCreate Failed");
    188  }
    189  }
    190 
    191  std::array<cudnnBackendDescriptor_t, CUDNN_KNOB_TYPE_COUNTS> bKnobs_ =
    192  {};
    193  for (auto i = 0; i < bKnobs.size(); i++) {
    194  bKnobs_[i] = bKnobs[i]->get_backend_descriptor();
    195  }
    196  status = cudnnBackendGetAttribute(pointer->get_backend_descriptor(),
    197  CUDNN_ATTR_ENGINE_KNOB_INFO,
    198  CUDNN_TYPE_BACKEND_DESCRIPTOR,
    199  CUDNN_KNOB_TYPE_COUNTS,
    200  &numKnobs,
    201  bKnobs_.data());
    202  if (status != CUDNN_STATUS_SUCCESS) {
    204  this, status, "CUDNN_BACKEND_ENGINE_DESCRIPTOR: GetAttribute CUDNN_ATTR_ENGINE_KNOB_INFO Query Failed");
    205  }
    206  buildKnobs();
    207  }
    208  ~Engine_v8() = default;
    209 
    210  std::string const &
    211  getTag() const {
    212  return opGraphTag;
    213  }
    214 
    216  std::vector<Knob> &
    218  return knobs;
    219  }
    220 
    222  std::vector<Knob> const &
    224  return knobs;
    225  }
    226 };
    227 
    232  public:
    237  auto
    240  m_engine.opGraph = opGraph_.get_desc();
    241  m_engine.opGraphTag = opGraph_.getTag();
    242  return *this;
    243  }
    245  auto
    246  setOperationGraph(cudnnBackendDescriptor_t desc_) -> EngineBuilder_v8 & {
    247  // TBD
    248  return *this;
    249  }
    251  auto
    253  m_engine.opGraph = desc_;
    254  return *this;
    255  }
    257  auto
    259  m_engine.idx = idx_;
    260  return *this;
    261  }
    264  Engine_v8 &&
    267  build() {
    268  if (m_engine.idx < 0) {
    270  &m_engine,
    271  CUDNN_STATUS_BAD_PARAM,
    272  "CUDNN_BACKEND_ENGINE_DESCRIPTOR: Check and Set the CUDNN_ATTR_ENGINE_GLOBAL_INDEX to valid value");
    273  return std::move(m_engine);
    274  }
    275  if (m_engine.opGraph == nullptr) {
    277  &m_engine,
    278  CUDNN_STATUS_BAD_PARAM,
    279  "CUDNN_BACKEND_ENGINE_DESCRIPTOR: Check and Set CUDNN_ATTR_ENGINE_OPERATION_GRAPH to valid value");
    280  return std::move(m_engine);
    281  }
    282 
    283  // Create a descriptor. Memory allocation happens here.
    284  auto status = m_engine.initialize_managed_backend_pointer(CUDNN_BACKEND_ENGINE_DESCRIPTOR);
    285  if (status != CUDNN_STATUS_SUCCESS) {
    287  &m_engine, status, "CUDNN_BACKEND_ENGINE_DESCRIPTOR: cudnnCreate Descriptor Failed");
    288  return std::move(m_engine);
    289  }
    290 
    291  status = cudnnBackendSetAttribute(m_engine.pointer->get_backend_descriptor(),
    292  CUDNN_ATTR_ENGINE_OPERATION_GRAPH,
    293  CUDNN_TYPE_BACKEND_DESCRIPTOR,
    294  1,
    295  &(m_engine.opGraph->get_backend_descriptor()));
    296  if (status != CUDNN_STATUS_SUCCESS) {
    298  &m_engine,
    299  status,
    300  "CUDNN_BACKEND_ENGINE_DESCRIPTOR: SetAttribute CUDNN_ATTR_ENGINE_OPERATION_GRAPH Failed");
    301  return std::move(m_engine);
    302  }
    303 
    304  status = cudnnBackendSetAttribute(m_engine.pointer->get_backend_descriptor(),
    305  CUDNN_ATTR_ENGINE_GLOBAL_INDEX,
    306  CUDNN_TYPE_INT64,
    307  1,
    308  &m_engine.idx);
    309  if (status != CUDNN_STATUS_SUCCESS) {
    311  &m_engine,
    312  status,
    313  "CUDNN_BACKEND_ENGINE_DESCRIPTOR: SetAttribute CUDNN_ATTR_ENGINE_GLOBAL_INDEX Failed");
    314  return std::move(m_engine);
    315  }
    316 
    317  // Finalizing the descriptor
    318  status = cudnnBackendFinalize(m_engine.pointer->get_backend_descriptor());
    319  if (status != CUDNN_STATUS_SUCCESS) {
    320  set_error_and_throw_exception(&m_engine, status, "CUDNN_BACKEND_ENGINE_DESCRIPTOR: cudnnFinalize Failed");
    321  return std::move(m_engine);
    322  }
    323 
    324  return std::move(m_engine);
    325  }
    326 
    327  explicit EngineBuilder_v8() = default;
    328  ~EngineBuilder_v8() = default;
    329  EngineBuilder_v8(EngineBuilder_v8 &&) = delete;
    330  EngineBuilder_v8(EngineBuilder_v8 const &) = delete;
    332  operator=(EngineBuilder_v8 const &) = delete;
    333 
    334  private:
    336 };
    337 }
    int64_t choice
    Choice set by the user.
    +Go to the documentation of this file.
    1 /*
    2  * Copyright (c) 2021, NVIDIA CORPORATION. All rights reserved.
    3  *
    4  * Permission is hereby granted, free of charge, to any person obtaining a
    5  * copy of this software and associated documentation files (the "Software"),
    6  * to deal in the Software without restriction, including without limitation
    7  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
    8  * and/or sell copies of the Software, and to permit persons to whom the
    9  * Software is furnished to do so, subject to the following conditions:
    10  *
    11  * The above copyright notice and this permission notice shall be included in
    12  * all copies or substantial portions of the Software.
    13  *
    14  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    15  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    16  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
    17  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    18  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
    19  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
    20  * DEALINGS IN THE SOFTWARE.
    21  */
    22 
    23 #pragma once
    24 
    25 #include <algorithm>
    26 #include <array>
    27 #include <functional>
    28 #include <memory>
    29 #include <sstream>
    30 #include <utility>
    31 #include <vector>
    32 
    33 #include <cudnn.h>
    34 #include <cudnn_backend.h>
    35 
    37 #include "cudnn_frontend_utils.h"
    38 
    39 namespace cudnn_frontend {
    40 
    52 class Engine_v8 : public BackendDescriptor {
    53  private:
    54  Engine_v8() = default;
    55  Engine_v8(Engine_v8 const &) = delete;
    56  Engine_v8 &
    57  operator=(Engine_v8 const &) = delete;
    58 
    62  class Knob {
    63  public:
    64  Knob(cudnnBackendKnobType_t type_, int64_t max, int64_t min, int64_t stride_)
    65  : knobType(type_), maxValue(max), minValue(min), stride(stride_) {}
    66 
    67  std::string
    68  describe() const {
    69  std::stringstream ss;
    70  ss << "Knob:" << knobType;
    71  ss << " Min: " << minValue;
    72  ss << " Max: " << maxValue;
    73  ss << " Stride: " << stride;
    74  return ss.str();
    75  }
    76 
    77  void
    78  setChoice(uint64_t val_) {
    79  choice = val_;
    80  }
    81 
    82  int64_t
    83  getChoice() const {
    84  return choice;
    85  }
    86 
    87  cudnnBackendKnobType_t
    88  getKnobType() const {
    89  return knobType;
    90  }
    91 
    92  int64_t
    93  getMinValue() const {
    94  return minValue;
    95  }
    96 
    97  int64_t
    98  getMaxValue() const {
    99  return minValue;
    100  }
    101 
    102  int64_t
    103  getStride() const {
    104  return stride;
    105  }
    106 
    107  private:
    108  cudnnBackendKnobType_t knobType = CUDNN_KNOB_TYPE_COUNTS;
    109  int64_t maxValue = 0, minValue = 0, stride = 0;
    110  int64_t choice = 0;
    111  };
    112 
    114  int64_t idx = -1;
    115  int64_t numKnobs = 0;
    116  std::array<ManagedOpaqueDescriptor, CUDNN_KNOB_TYPE_COUNTS> bKnobs = {};
    117  std::vector<Knob> knobs;
    118  std::string opGraphTag;
    119 
    121  void
    123  cudnnStatus_t status;
    124  for (auto i = 0; i < numKnobs; i++) {
    125  auto bKnob = bKnobs[i]->get_backend_descriptor();
    126  cudnnBackendKnobType_t type;
    127  int64_t maxValue, minValue, stride, elemCount;
    128  status =
    129  cudnnBackendGetAttribute(bKnob, CUDNN_ATTR_KNOB_INFO_TYPE, CUDNN_TYPE_KNOB_TYPE, 1, &elemCount, &type);
    130  if (status != CUDNN_STATUS_SUCCESS) {
    132  status,
    133  "CUDNN_BACKEND_ENGINE_DESCRIPTOR: CUDNN_BACKEND_KNOB_INFO_DESCRIPTOR "
    134  "GetAttribute CUDNN_ATTR_KNOB_INFO_TYPE failed");
    135  }
    136  status = cudnnBackendGetAttribute(
    137  bKnob, CUDNN_ATTR_KNOB_INFO_MAXIMUM_VALUE, CUDNN_TYPE_INT64, 1, &elemCount, &maxValue);
    138  if (status != CUDNN_STATUS_SUCCESS) {
    140  status,
    141  "CUDNN_BACKEND_ENGINE_DESCRIPTOR: CUDNN_BACKEND_KNOB_INFO_DESCRIPTOR "
    142  "GetAttribute CUDNN_ATTR_KNOB_INFO_MAXIMUM_VALUE Failed");
    143  }
    144  status = cudnnBackendGetAttribute(
    145  bKnob, CUDNN_ATTR_KNOB_INFO_MINIMUM_VALUE, CUDNN_TYPE_INT64, 1, &elemCount, &minValue);
    146  if (status != CUDNN_STATUS_SUCCESS) {
    148  status,
    149  "CUDNN_BACKEND_ENGINE_DESCRIPTOR: CUDNN_BACKEND_KNOB_INFO_DESCRIPTOR "
    150  "GetAttribute CUDNN_ATTR_KNOB_INFO_MINIMUM_VALUE Failed");
    151  }
    152  status =
    153  cudnnBackendGetAttribute(bKnob, CUDNN_ATTR_KNOB_INFO_STRIDE, CUDNN_TYPE_INT64, 1, &elemCount, &stride);
    154  if (status != CUDNN_STATUS_SUCCESS) {
    156  status,
    157  "CUDNN_BACKEND_ENGINE_DESCRIPTOR: CUDNN_BACKEND_KNOB_INFO_DESCRIPTOR "
    158  "GetAttribute CUDNN_ATTR_KNOB_INFO_STRIDE Failed");
    159  }
    160  knobs.emplace_back(Knob(type, maxValue, minValue, stride));
    161  }
    162  }
    163 
    164  public:
    165  friend class EngineBuilder_v8;
    166  std::string
    167  describe() const override {
    168  std::stringstream ss;
    169  ss << "CUDNN_BACKEND_ENGINE_DESCRIPTOR :";
    170  ss << " ID: " << idx;
    171  ss << " Has " << numKnobs << " knobs";
    172  return ss.str();
    173  }
    175  : BackendDescriptor(from.get_desc(), from.get_status(), from.get_error()),
    176  opGraph(from.opGraph),
    177  idx(from.idx),
    178  opGraphTag(from.opGraphTag) {
    179  cudnnStatus_t status;
    180  for (uint64_t i = 0; i < bKnobs.size(); i++) {
    181  bKnobs[i] = make_shared_backend_pointer(CUDNN_BACKEND_KNOB_INFO_DESCRIPTOR);
    182  if (bKnobs[i]->is_good() == false) {
    183  status = bKnobs[i]->get_status();
    185  this,
    186  status,
    187  "CUDNN_BACKEND_ENGINE_DESCRIPTOR: CUDNN_BACKEND_KNOB_INFO_DESCRIPTOR cudnnCreate Failed");
    188  }
    189  }
    190 
    191  std::array<cudnnBackendDescriptor_t, CUDNN_KNOB_TYPE_COUNTS> bKnobs_ =
    192  {};
    193  for (std::uint32_t i = 0; i < bKnobs.size(); i++) {
    194  bKnobs_[i] = bKnobs[i]->get_backend_descriptor();
    195  }
    196  status = cudnnBackendGetAttribute(pointer->get_backend_descriptor(),
    197  CUDNN_ATTR_ENGINE_KNOB_INFO,
    198  CUDNN_TYPE_BACKEND_DESCRIPTOR,
    199  CUDNN_KNOB_TYPE_COUNTS,
    200  &numKnobs,
    201  bKnobs_.data());
    202  if (status != CUDNN_STATUS_SUCCESS) {
    204  this, status, "CUDNN_BACKEND_ENGINE_DESCRIPTOR: GetAttribute CUDNN_ATTR_ENGINE_KNOB_INFO Query Failed");
    205  }
    206  buildKnobs();
    207  }
    208  ~Engine_v8() = default;
    209 
    210  std::string const &
    211  getTag() const {
    212  return opGraphTag;
    213  }
    214 
    216  std::vector<Knob> &
    218  return knobs;
    219  }
    220 
    222  std::vector<Knob> const &
    224  return knobs;
    225  }
    226 };
    227 
    232  public:
    237  auto
    240  m_engine.opGraph = opGraph_.get_desc();
    241  m_engine.opGraphTag = opGraph_.getTag();
    242  return *this;
    243  }
    244 
    246  auto
    248  m_engine.opGraph = desc_;
    249  return *this;
    250  }
    252  auto
    254  m_engine.idx = idx_;
    255  return *this;
    256  }
    259  Engine_v8 &&
    262  build() {
    263  if (m_engine.idx < 0) {
    265  &m_engine,
    266  CUDNN_STATUS_BAD_PARAM,
    267  "CUDNN_BACKEND_ENGINE_DESCRIPTOR: Check and Set the CUDNN_ATTR_ENGINE_GLOBAL_INDEX to valid value");
    268  return std::move(m_engine);
    269  }
    270  if (m_engine.opGraph == nullptr) {
    272  &m_engine,
    273  CUDNN_STATUS_BAD_PARAM,
    274  "CUDNN_BACKEND_ENGINE_DESCRIPTOR: Check and Set CUDNN_ATTR_ENGINE_OPERATION_GRAPH to valid value");
    275  return std::move(m_engine);
    276  }
    277 
    278  // Create a descriptor. Memory allocation happens here.
    279  auto status = m_engine.initialize_managed_backend_pointer(CUDNN_BACKEND_ENGINE_DESCRIPTOR);
    280  if (status != CUDNN_STATUS_SUCCESS) {
    282  &m_engine, status, "CUDNN_BACKEND_ENGINE_DESCRIPTOR: cudnnCreate Descriptor Failed");
    283  return std::move(m_engine);
    284  }
    285 
    286  status = cudnnBackendSetAttribute(m_engine.pointer->get_backend_descriptor(),
    287  CUDNN_ATTR_ENGINE_OPERATION_GRAPH,
    288  CUDNN_TYPE_BACKEND_DESCRIPTOR,
    289  1,
    290  &(m_engine.opGraph->get_backend_descriptor()));
    291  if (status != CUDNN_STATUS_SUCCESS) {
    293  &m_engine,
    294  status,
    295  "CUDNN_BACKEND_ENGINE_DESCRIPTOR: SetAttribute CUDNN_ATTR_ENGINE_OPERATION_GRAPH Failed");
    296  return std::move(m_engine);
    297  }
    298 
    299  status = cudnnBackendSetAttribute(m_engine.pointer->get_backend_descriptor(),
    300  CUDNN_ATTR_ENGINE_GLOBAL_INDEX,
    301  CUDNN_TYPE_INT64,
    302  1,
    303  &m_engine.idx);
    304  if (status != CUDNN_STATUS_SUCCESS) {
    306  &m_engine,
    307  status,
    308  "CUDNN_BACKEND_ENGINE_DESCRIPTOR: SetAttribute CUDNN_ATTR_ENGINE_GLOBAL_INDEX Failed");
    309  return std::move(m_engine);
    310  }
    311 
    312  // Finalizing the descriptor
    313  status = cudnnBackendFinalize(m_engine.pointer->get_backend_descriptor());
    314  if (status != CUDNN_STATUS_SUCCESS) {
    315  set_error_and_throw_exception(&m_engine, status, "CUDNN_BACKEND_ENGINE_DESCRIPTOR: cudnnFinalize Failed");
    316  return std::move(m_engine);
    317  }
    318 
    319  return std::move(m_engine);
    320  }
    321 
    322  explicit EngineBuilder_v8() = default;
    323  ~EngineBuilder_v8() = default;
    324  EngineBuilder_v8(EngineBuilder_v8 &&) = delete;
    325  EngineBuilder_v8(EngineBuilder_v8 const &) = delete;
    327  operator=(EngineBuilder_v8 const &) = delete;
    328 
    329  private:
    331 };
    332 }
    int64_t choice
    Choice set by the user.
    Engine_v8 & operator=(Engine_v8 const &)=delete
    - -
    auto setOperationGraph(ManagedOpaqueDescriptor desc_) -> EngineBuilder_v8 &
    Set operationGraph for the engine.
    +
    auto setOperationGraph(ManagedOpaqueDescriptor desc_) -> EngineBuilder_v8 &
    Set operationGraph for the engine.
    int64_t stride
    min, max and stride of the knob value
    static void set_error_and_throw_exception(BackendDescriptor const *desc, cudnnStatus_t status, const char *message)
    - -
    auto setGlobalEngineIdx(int64_t idx_) -> EngineBuilder_v8 &
    Set engine index for the engine.
    +
    cudnnBackendKnobType_t getKnobType() const
    +
    auto setGlobalEngineIdx(int64_t idx_) -> EngineBuilder_v8 &
    Set engine index for the engine.
    - +
    std::string const & getTag() const
    int64_t idx
    Global Index of the engine for the given operationGraph.
    -
    static ManagedOpaqueDescriptor make_shared_backend_pointer(cudnnBackendDescriptorType_t type)
    - + +
    void buildKnobs()
    Called from the constructor builds the internal knobs vector.
    ManagedOpaqueDescriptor opGraph
    @@ -111,10 +110,10 @@
    std::array< ManagedOpaqueDescriptor, CUDNN_KNOB_TYPE_COUNTS > bKnobs
    Opaque pointer to the backend knobs.
    -
    const cudnnBackendKnobType_t getKnobType() const
    auto setOperationGraph(OperationGraph_v8 const &opGraph_) -> EngineBuilder_v8 &
    Set operationGraph for the engine.
    -
    auto setOperationGraph(cudnnBackendDescriptor_t desc_) -> EngineBuilder_v8 &
    Set operationGraph for the engine.
    + +
    cudnnStatus_t get_status() const
    Current status of the descriptor.
    std::vector< Knob > const & getFinalizedKnobs() const
    Returns a final vector of knobs. Used in EngineConfigBuilder.
    std::vector< Knob > & getSupportedKnobs()
    Returns a vector of knobs to the user for modification.
    @@ -126,7 +125,7 @@
    const char * get_error() const
    Diagonistic error message if any.
    - + diff --git a/docs/de/dcb/classcudnn__frontend_1_1VariantPackBuilder__v8-members.html b/docs/de/dcb/classcudnn__frontend_1_1VariantPackBuilder__v8-members.html index 2c9433567..cb45f8e42 100644 --- a/docs/de/dcb/classcudnn__frontend_1_1VariantPackBuilder__v8-members.html +++ b/docs/de/dcb/classcudnn__frontend_1_1VariantPackBuilder__v8-members.html @@ -5,7 +5,7 @@ -CUDNN API: Member List +CUDNN Frontend API: Member List @@ -28,8 +28,8 @@ -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    diff --git a/docs/de/dd9/classcudnn__frontend_1_1OperationGraph__v8.html b/docs/de/dd9/classcudnn__frontend_1_1OperationGraph__v8.html index d9d80b377..3298fe403 100644 --- a/docs/de/dd9/classcudnn__frontend_1_1OperationGraph__v8.html +++ b/docs/de/dd9/classcudnn__frontend_1_1OperationGraph__v8.html @@ -5,7 +5,7 @@ -CUDNN API: cudnn_frontend::OperationGraph_v8 Class Reference +CUDNN Frontend API: cudnn_frontend::OperationGraph_v8 Class Reference @@ -28,8 +28,8 @@ -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    diff --git a/docs/de/dec/cudnn__frontend__OperationGraph_8h__dep__incl.md5 b/docs/de/dec/cudnn__frontend__OperationGraph_8h__dep__incl.md5 index 8a4044300..7e8eebc64 100644 --- a/docs/de/dec/cudnn__frontend__OperationGraph_8h__dep__incl.md5 +++ b/docs/de/dec/cudnn__frontend__OperationGraph_8h__dep__incl.md5 @@ -1 +1 @@ -62db5bf3f39084781faa3b4c46aadafe \ No newline at end of file +815692d134641c7cd63bc5ee01f2c9d8 \ No newline at end of file diff --git a/docs/df/d17/cudnn__frontend__utils_8h.html b/docs/df/d17/cudnn__frontend__utils_8h.html index 451cbb4fb..fd17b5fbf 100644 --- a/docs/df/d17/cudnn__frontend__utils_8h.html +++ b/docs/df/d17/cudnn__frontend__utils_8h.html @@ -5,7 +5,7 @@ -CUDNN API: cudnn_frontend_utils.h File Reference +CUDNN Frontend API: cudnn_frontend_utils.h File Reference @@ -28,8 +28,8 @@ -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    @@ -105,19 +105,20 @@
    - - - - - - + + + + + + - - - - - - + + + + + + +
    diff --git a/docs/df/d17/cudnn__frontend__utils_8h_source.html b/docs/df/d17/cudnn__frontend__utils_8h_source.html index fa29c74dd..66514f528 100644 --- a/docs/df/d17/cudnn__frontend__utils_8h_source.html +++ b/docs/df/d17/cudnn__frontend__utils_8h_source.html @@ -5,7 +5,7 @@ -CUDNN API: cudnn_frontend_utils.h Source File +CUDNN Frontend API: cudnn_frontend_utils.h Source File @@ -28,8 +28,8 @@ -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    diff --git a/docs/df/d32/cudnn__frontend__Operation_8h__incl.map b/docs/df/d32/cudnn__frontend__Operation_8h__incl.map index 173a8c4ef..eeeb603cf 100644 --- a/docs/df/d32/cudnn__frontend__Operation_8h__incl.map +++ b/docs/df/d32/cudnn__frontend__Operation_8h__incl.map @@ -1,7 +1,8 @@ - - - - - + + + + + + diff --git a/docs/df/d32/cudnn__frontend__Operation_8h__incl.md5 b/docs/df/d32/cudnn__frontend__Operation_8h__incl.md5 index 1f857240c..c0a8852d9 100644 --- a/docs/df/d32/cudnn__frontend__Operation_8h__incl.md5 +++ b/docs/df/d32/cudnn__frontend__Operation_8h__incl.md5 @@ -1 +1 @@ -6fa866aa0c8f7a768bc14d58fb8f415e \ No newline at end of file +0ea6dce512ff33052843e4be3f74655d \ No newline at end of file diff --git a/docs/df/d32/cudnn__frontend__Operation_8h__incl.png b/docs/df/d32/cudnn__frontend__Operation_8h__incl.png index c157d95eb..59918737a 100644 Binary files a/docs/df/d32/cudnn__frontend__Operation_8h__incl.png and b/docs/df/d32/cudnn__frontend__Operation_8h__incl.png differ diff --git a/docs/df/d3e/cudnn__frontend__EngineFallbackList_8h.html b/docs/df/d3e/cudnn__frontend__EngineFallbackList_8h.html index dfdd8c095..0095a4a96 100644 --- a/docs/df/d3e/cudnn__frontend__EngineFallbackList_8h.html +++ b/docs/df/d3e/cudnn__frontend__EngineFallbackList_8h.html @@ -5,7 +5,7 @@ -CUDNN API: cudnn_frontend_EngineFallbackList.h File Reference +CUDNN Frontend API: cudnn_frontend_EngineFallbackList.h File Reference @@ -28,8 +28,8 @@ -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    @@ -94,8 +94,6 @@ Include dependency graph for cudnn_frontend_EngineFallbackList.h:
    - -
    This graph shows which files directly or indirectly include this file:
    diff --git a/docs/df/d3e/cudnn__frontend__EngineFallbackList_8h_source.html b/docs/df/d3e/cudnn__frontend__EngineFallbackList_8h_source.html index b2d8b9cf3..eaedc71b1 100644 --- a/docs/df/d3e/cudnn__frontend__EngineFallbackList_8h_source.html +++ b/docs/df/d3e/cudnn__frontend__EngineFallbackList_8h_source.html @@ -5,7 +5,7 @@ -CUDNN API: cudnn_frontend_EngineFallbackList.h Source File +CUDNN Frontend API: cudnn_frontend_EngineFallbackList.h Source File @@ -28,8 +28,8 @@ -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    @@ -84,8 +84,8 @@
    cudnn_frontend_EngineFallbackList.h
    -Go to the documentation of this file.
    1 /*
    2  * Copyright (c) 2021, NVIDIA CORPORATION. All rights reserved.
    3  *
    4  * Permission is hereby granted, free of charge, to any person obtaining a
    5  * copy of this software and associated documentation files (the "Software"),
    6  * to deal in the Software without restriction, including without limitation
    7  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
    8  * and/or sell copies of the Software, and to permit persons to whom the
    9  * Software is furnished to do so, subject to the following conditions:
    10  *
    11  * The above copyright notice and this permission notice shall be included in
    12  * all copies or substantial portions of the Software.
    13  *
    14  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    15  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    16  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
    17  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    18  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
    19  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
    20  * DEALINGS IN THE SOFTWARE.
    21  */
    22 
    23 #pragma once
    24 
    25 #include <cudnn.h>
    26 #include <numeric>
    27 
    28 namespace cudnn_frontend {
    29 
    30 auto static get_fallback_engine_list(cudnnBackendDescriptorType_t mode) -> std::vector<int> {
    31  auto major_version = cudnnGetVersion() / 1000;
    32  ;
    33  auto minor_version = (cudnnGetVersion() / 100) % 10;
    34  if (major_version >= 8) {
    35  if (minor_version == 0) {
    36  if (mode == CUDNN_BACKEND_OPERATION_CONVOLUTION_FORWARD_DESCRIPTOR) {
    37  return {0, 1, 28};
    38  } else if (mode == CUDNN_BACKEND_OPERATION_CONVOLUTION_BACKWARD_DATA_DESCRIPTOR) {
    39  return {0, 1, 25};
    40  } else if (mode == CUDNN_BACKEND_OPERATION_CONVOLUTION_BACKWARD_FILTER_DESCRIPTOR) {
    41  return {0, 1, 20};
    42  } else {
    43  return {};
    44  }
    45  } else if (minor_version == 1) {
    46  if (mode == CUDNN_BACKEND_OPERATION_CONVOLUTION_FORWARD_DESCRIPTOR) {
    47  std::vector<int> engine_list(50);
    48  std::iota(engine_list.begin(), engine_list.end(), 0);
    49  return engine_list;
    50  } else if (mode == CUDNN_BACKEND_OPERATION_CONVOLUTION_BACKWARD_DATA_DESCRIPTOR) {
    51  std::vector<int> engine_list(61);
    52  std::iota(engine_list.begin(), engine_list.end(), 0);
    53  return engine_list;
    54  } else if (mode == CUDNN_BACKEND_OPERATION_CONVOLUTION_BACKWARD_FILTER_DESCRIPTOR) {
    55  return {0, 1, 20};
    56  } else {
    57  return {};
    58  }
    59  } else {
    60  return {};
    61  }
    62  } else {
    63  return {};
    64  }
    65 }
    66 
    68  public:
    70 
    71  std::string
    72  describe() const override {
    73  std::stringstream ss;
    74  ss << "CUDNN_BACKEND_FALLBACK ENGINES :";
    75  return ss.str();
    76  }
    77 
    78  auto
    79  getFallbackList() -> std::vector<ManagedOpaqueDescriptor> & {
    80  return m_engine_configs;
    81  }
    82 
    83  ~EngineFallbackList_v8() = default;
    84 
    86  : BackendDescriptor(from.get_desc(), from.get_status(), from.get_error()),
    87  mode(from.mode),
    88  opGraph(from.opGraph),
    89  opGraphTag(from.opGraphTag) {
    90  m_engine_configs.swap(from.m_engine_configs);
    91  }
    92 
    93  private:
    94  EngineFallbackList_v8() = default;
    97  operator=(EngineFallbackList_v8 const &) = delete;
    98 
    100  cudnnBackendDescriptorType_t mode;
    101  std::vector<ManagedOpaqueDescriptor> m_engine_configs;
    102  std::string opGraphTag;
    103 };
    104 
    109  public:
    114  auto
    117  m_fallback_list.opGraph = opGraph_.get_desc();
    118  m_fallback_list.opGraphTag = opGraph_.getTag();
    119  return *this;
    120  }
    121  auto
    122  setOperation(cudnnBackendDescriptorType_t mode) -> EngineFallbackListBuilder_v8 & {
    123  m_fallback_list.mode = mode;
    124  return *this;
    125  }
    131  build() {
    132  if (m_fallback_list.opGraph == nullptr) {
    133  set_error_and_throw_exception(&m_fallback_list,
    134  CUDNN_STATUS_BAD_PARAM,
    135  "CUDNN_BACKEND_ENGINEHEUR_DESCRIPTOR: Check and Set the "
    136  "CUDNN_ATTR_ENGINEHEUR_OPERATION_GRAPH field for heuristic");
    137  return std::move(m_fallback_list);
    138  };
    139  auto fallback_engine_list = get_fallback_engine_list(m_fallback_list.mode);
    140  for (auto i = 0; i < fallback_engine_list.size(); i++) {
    141 #ifndef NV_CUDNN_DISABLE_EXCEPTION
    142  try {
    143 #endif
    144  auto engine = cudnn_frontend::EngineBuilder_v8()
    145  .setGlobalEngineIdx(fallback_engine_list[i])
    146  .setOperationGraph(m_fallback_list.opGraph)
    147  .build();
    148  auto engine_config = cudnn_frontend::EngineConfigBuilder_v8().setEngine(engine).build();
    149  m_fallback_list.m_engine_configs.emplace_back(engine_config.get_desc());
    150 #ifndef NV_CUDNN_DISABLE_EXCEPTION
    152  continue;
    153  }
    154 #endif
    155  }
    156  return std::move(m_fallback_list);
    157  }
    158 
    159  explicit EngineFallbackListBuilder_v8() = default;
    160  ~EngineFallbackListBuilder_v8() = default;
    164  operator=(EngineFallbackListBuilder_v8 const &) = delete;
    165 
    166  private:
    168 };
    169 }
    static void set_error_and_throw_exception(BackendDescriptor const *desc, cudnnStatus_t status, const char *message)
    -
    auto setGlobalEngineIdx(int64_t idx_) -> EngineBuilder_v8 &
    Set engine index for the engine.
    +Go to the documentation of this file.
    1 /*
    2  * Copyright (c) 2021, NVIDIA CORPORATION. All rights reserved.
    3  *
    4  * Permission is hereby granted, free of charge, to any person obtaining a
    5  * copy of this software and associated documentation files (the "Software"),
    6  * to deal in the Software without restriction, including without limitation
    7  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
    8  * and/or sell copies of the Software, and to permit persons to whom the
    9  * Software is furnished to do so, subject to the following conditions:
    10  *
    11  * The above copyright notice and this permission notice shall be included in
    12  * all copies or substantial portions of the Software.
    13  *
    14  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    15  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    16  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
    17  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    18  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
    19  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
    20  * DEALINGS IN THE SOFTWARE.
    21  */
    22 
    23 #pragma once
    24 
    25 #include <cudnn.h>
    26 #include <numeric>
    27 
    28 namespace cudnn_frontend {
    29 
    30 auto static get_fallback_engine_list(cudnnBackendDescriptorType_t mode) -> std::vector<int> {
    31  auto major_version = cudnnGetVersion() / 1000;
    32  ;
    33  auto minor_version = (cudnnGetVersion() / 100) % 10;
    34  if (major_version >= 8) {
    35  if (minor_version == 0) {
    36  if (mode == CUDNN_BACKEND_OPERATION_CONVOLUTION_FORWARD_DESCRIPTOR) {
    37  return {0, 1, 28};
    38  } else if (mode == CUDNN_BACKEND_OPERATION_CONVOLUTION_BACKWARD_DATA_DESCRIPTOR) {
    39  return {0, 1, 25};
    40  } else if (mode == CUDNN_BACKEND_OPERATION_CONVOLUTION_BACKWARD_FILTER_DESCRIPTOR) {
    41  return {0, 1, 20};
    42  } else {
    43  return {};
    44  }
    45  } else if (minor_version <= 2) {
    46  if (mode == CUDNN_BACKEND_OPERATION_CONVOLUTION_FORWARD_DESCRIPTOR) {
    47  std::vector<int> engine_list(50);
    48  std::iota(engine_list.begin(), engine_list.end(), 0);
    49  return engine_list;
    50  } else if (mode == CUDNN_BACKEND_OPERATION_CONVOLUTION_BACKWARD_DATA_DESCRIPTOR) {
    51  std::vector<int> engine_list(61);
    52  std::iota(engine_list.begin(), engine_list.end(), 0);
    53  return engine_list;
    54  } else if (mode == CUDNN_BACKEND_OPERATION_CONVOLUTION_BACKWARD_FILTER_DESCRIPTOR) {
    55  return {0, 1, 20};
    56  } else {
    57  return {};
    58  }
    59  } else {
    60  return {};
    61  }
    62  } else {
    63  return {};
    64  }
    65 }
    66 
    68  public:
    70 
    71  std::string
    72  describe() const override {
    73  std::stringstream ss;
    74  ss << "CUDNN_BACKEND_FALLBACK ENGINES :";
    75  return ss.str();
    76  }
    77 
    78  auto
    79  getFallbackList() -> std::vector<ManagedOpaqueDescriptor> & {
    80  return m_engine_configs;
    81  }
    82 
    83  ~EngineFallbackList_v8() = default;
    84 
    86  : BackendDescriptor(from.get_desc(), from.get_status(), from.get_error()),
    87  opGraph(from.opGraph),
    88  mode(from.mode),
    89  opGraphTag(from.opGraphTag) {
    90  m_engine_configs.swap(from.m_engine_configs);
    91  }
    92 
    93  private:
    94  EngineFallbackList_v8() = default;
    97  operator=(EngineFallbackList_v8 const &) = delete;
    98 
    100  cudnnBackendDescriptorType_t mode;
    101  std::vector<ManagedOpaqueDescriptor> m_engine_configs;
    102  std::string opGraphTag;
    103 };
    104 
    109  public:
    114  auto
    117  m_fallback_list.opGraph = opGraph_.get_desc();
    118  m_fallback_list.opGraphTag = opGraph_.getTag();
    119  return *this;
    120  }
    121  auto
    122  setOperation(cudnnBackendDescriptorType_t mode) -> EngineFallbackListBuilder_v8 & {
    123  m_fallback_list.mode = mode;
    124  return *this;
    125  }
    131  build() {
    132  if (m_fallback_list.opGraph == nullptr) {
    133  set_error_and_throw_exception(&m_fallback_list,
    134  CUDNN_STATUS_BAD_PARAM,
    135  "CUDNN_BACKEND_ENGINEHEUR_DESCRIPTOR: Check and Set the "
    136  "CUDNN_ATTR_ENGINEHEUR_OPERATION_GRAPH field for heuristic");
    137  return std::move(m_fallback_list);
    138  };
    139  auto fallback_engine_list = get_fallback_engine_list(m_fallback_list.mode);
    140  for (std::uint32_t i = 0; i < fallback_engine_list.size(); i++) {
    141 #ifndef NV_CUDNN_DISABLE_EXCEPTION
    142  try {
    143 #endif
    144  auto engine = cudnn_frontend::EngineBuilder_v8()
    145  .setGlobalEngineIdx(fallback_engine_list[i])
    146  .setOperationGraph(m_fallback_list.opGraph)
    147  .build();
    148  auto engine_config = cudnn_frontend::EngineConfigBuilder_v8().setEngine(engine).build();
    149  m_fallback_list.m_engine_configs.emplace_back(engine_config.get_desc());
    150 #ifndef NV_CUDNN_DISABLE_EXCEPTION
    152  continue;
    153  }
    154 #endif
    155  }
    156  return std::move(m_fallback_list);
    157  }
    158 
    159  explicit EngineFallbackListBuilder_v8() = default;
    160  ~EngineFallbackListBuilder_v8() = default;
    164  operator=(EngineFallbackListBuilder_v8 const &) = delete;
    165 
    166  private:
    168 };
    169 }
    static void set_error_and_throw_exception(BackendDescriptor const *desc, cudnnStatus_t status, const char *message)
    +
    auto setGlobalEngineIdx(int64_t idx_) -> EngineBuilder_v8 &
    Set engine index for the engine.
    std::string describe() const override
    Return a string describing the backend Descriptor.
    diff --git a/docs/df/d4e/classcudnn__frontend_1_1BackendDescriptor__coll__graph.md5 b/docs/df/d4e/classcudnn__frontend_1_1BackendDescriptor__coll__graph.md5 index 47e02eac1..5b5df34e3 100644 --- a/docs/df/d4e/classcudnn__frontend_1_1BackendDescriptor__coll__graph.md5 +++ b/docs/df/d4e/classcudnn__frontend_1_1BackendDescriptor__coll__graph.md5 @@ -1 +1 @@ -e729e7db8cb3a481032f44a63921ad18 \ No newline at end of file +59bdf73092a1351c65cc1606ca33f7e8 \ No newline at end of file diff --git a/docs/df/d72/classcudnn__frontend_1_1OperationBuilder__v8-members.html b/docs/df/d72/classcudnn__frontend_1_1OperationBuilder__v8-members.html index 668ae1d2f..234318719 100644 --- a/docs/df/d72/classcudnn__frontend_1_1OperationBuilder__v8-members.html +++ b/docs/df/d72/classcudnn__frontend_1_1OperationBuilder__v8-members.html @@ -5,7 +5,7 @@ -CUDNN API: Member List +CUDNN Frontend API: Member List @@ -28,8 +28,8 @@ -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    @@ -89,16 +89,26 @@ + + - - - + + + + + + + + + + + diff --git a/docs/df/d83/classcudnn__frontend_1_1EngineConfig__v8.html b/docs/df/d83/classcudnn__frontend_1_1EngineConfig__v8.html index f71feafc0..3c13c5326 100644 --- a/docs/df/d83/classcudnn__frontend_1_1EngineConfig__v8.html +++ b/docs/df/d83/classcudnn__frontend_1_1EngineConfig__v8.html @@ -5,7 +5,7 @@ -CUDNN API: cudnn_frontend::EngineConfig_v8 Class Reference +CUDNN Frontend API: cudnn_frontend::EngineConfig_v8 Class Reference @@ -28,8 +28,8 @@ diff --git a/docs/df/d93/cudnn__frontend__EngineConfig_8h__incl.map b/docs/df/d93/cudnn__frontend__EngineConfig_8h__incl.map index 52923794b..2184185d7 100644 --- a/docs/df/d93/cudnn__frontend__EngineConfig_8h__incl.map +++ b/docs/df/d93/cudnn__frontend__EngineConfig_8h__incl.map @@ -1,10 +1,11 @@ - - - - - - - - + + + + + + + + + diff --git a/docs/df/d93/cudnn__frontend__EngineConfig_8h__incl.md5 b/docs/df/d93/cudnn__frontend__EngineConfig_8h__incl.md5 index 1c1e00e52..3d1d45faf 100644 --- a/docs/df/d93/cudnn__frontend__EngineConfig_8h__incl.md5 +++ b/docs/df/d93/cudnn__frontend__EngineConfig_8h__incl.md5 @@ -1 +1 @@ -17237cc57444a4d2239e28fa4a856a4b \ No newline at end of file +03d4493f5a034f6b81a628896712c4b8 \ No newline at end of file diff --git a/docs/df/d93/cudnn__frontend__EngineConfig_8h__incl.png b/docs/df/d93/cudnn__frontend__EngineConfig_8h__incl.png index d27eae7f2..7855ad5ab 100644 Binary files a/docs/df/d93/cudnn__frontend__EngineConfig_8h__incl.png and b/docs/df/d93/cudnn__frontend__EngineConfig_8h__incl.png differ diff --git a/docs/df/dc0/cudnn__frontend__VariantPack_8h.html b/docs/df/dc0/cudnn__frontend__VariantPack_8h.html index 4b273f065..7bf17056f 100644 --- a/docs/df/dc0/cudnn__frontend__VariantPack_8h.html +++ b/docs/df/dc0/cudnn__frontend__VariantPack_8h.html @@ -5,7 +5,7 @@ -CUDNN API: cudnn_frontend_VariantPack.h File Reference +CUDNN Frontend API: cudnn_frontend_VariantPack.h File Reference @@ -28,8 +28,8 @@ diff --git a/docs/df/dc0/cudnn__frontend__VariantPack_8h_source.html b/docs/df/dc0/cudnn__frontend__VariantPack_8h_source.html index c811c4bbd..be1f4bd7f 100644 --- a/docs/df/dc0/cudnn__frontend__VariantPack_8h_source.html +++ b/docs/df/dc0/cudnn__frontend__VariantPack_8h_source.html @@ -5,7 +5,7 @@ -CUDNN API: cudnn_frontend_VariantPack.h Source File +CUDNN Frontend API: cudnn_frontend_VariantPack.h Source File @@ -28,8 +28,8 @@ diff --git a/docs/df/de1/namespacecudnn__frontend.html b/docs/df/de1/namespacecudnn__frontend.html index 5759a5e57..14ca79dd4 100644 --- a/docs/df/de1/namespacecudnn__frontend.html +++ b/docs/df/de1/namespacecudnn__frontend.html @@ -5,7 +5,7 @@ -CUDNN API: cudnn_frontend Namespace Reference +CUDNN Frontend API: cudnn_frontend Namespace Reference @@ -28,8 +28,8 @@ @@ -124,6 +124,10 @@ + + + + @@ -163,6 +167,10 @@ + + + + @@ -255,7 +263,7 @@

    -

    Definition at line 41 of file cudnn_frontend.h.

    +

    Definition at line 115 of file cudnn_frontend.h.

    @@ -271,7 +279,7 @@

    -

    Definition at line 42 of file cudnn_frontend.h.

    +

    Definition at line 116 of file cudnn_frontend.h.

    @@ -287,7 +295,7 @@

    -

    Definition at line 52 of file cudnn_frontend.h.

    +

    Definition at line 128 of file cudnn_frontend.h.

    @@ -303,7 +311,7 @@

    -

    Definition at line 51 of file cudnn_frontend.h.

    +

    Definition at line 127 of file cudnn_frontend.h.

    @@ -319,7 +327,7 @@

    -

    Definition at line 53 of file cudnn_frontend.h.

    +

    Definition at line 129 of file cudnn_frontend.h.

    @@ -335,7 +343,7 @@

    -

    Definition at line 54 of file cudnn_frontend.h.

    +

    Definition at line 130 of file cudnn_frontend.h.

    @@ -368,7 +376,7 @@

    -

    Definition at line 59 of file cudnn_frontend.h.

    +

    Definition at line 135 of file cudnn_frontend.h.

    @@ -384,7 +392,7 @@

    -

    Definition at line 60 of file cudnn_frontend.h.

    +

    Definition at line 136 of file cudnn_frontend.h.

    @@ -400,7 +408,7 @@

    -

    Definition at line 50 of file cudnn_frontend.h.

    +

    Definition at line 126 of file cudnn_frontend.h.

    @@ -416,7 +424,7 @@

    -

    Definition at line 49 of file cudnn_frontend.h.

    +

    Definition at line 125 of file cudnn_frontend.h.

    @@ -450,7 +458,7 @@

    -

    Definition at line 55 of file cudnn_frontend.h.

    +

    Definition at line 131 of file cudnn_frontend.h.

    @@ -466,7 +474,7 @@

    -

    Definition at line 56 of file cudnn_frontend.h.

    +

    Definition at line 132 of file cudnn_frontend.h.

    @@ -516,6 +524,38 @@

    Definition at line 82 of file cudnn_backend_base.h.

    + + + +

    ◆ MatMulDesc

    + +
    +
    +

    build()cudnn_frontend::OperationBuilder_v8inline
    is_convolution_opcudnn_frontend::OperationBuilder_v8private
    is_matmul_opcudnn_frontend::OperationBuilder_v8private
    is_pointwise_opcudnn_frontend::OperationBuilder_v8private
    m_operationcudnn_frontend::OperationBuilder_v8private
    OperationBuilder_v8(cudnnBackendDescriptorType_t mode)cudnn_frontend::OperationBuilder_v8inline
    setAlpha(float alpha) -> OperationBuilder_v8 &cudnn_frontend::OperationBuilder_v8inline
    setAlpha(double alpha) -> OperationBuilder_v8 &cudnn_frontend::OperationBuilder_v8inline
    setAlpha2(float alpha) -> OperationBuilder_v8 &cudnn_frontend::OperationBuilder_v8inline
    setAlpha2(double alpha) -> OperationBuilder_v8 &cudnn_frontend::OperationBuilder_v8inline
    setbDesc(Tensor_v8 const &tensor) -> OperationBuilder_v8 &cudnn_frontend::OperationBuilder_v8inline
    setBeta(float beta) -> OperationBuilder_v8 &cudnn_frontend::OperationBuilder_v8inline
    setBeta(double beta) -> OperationBuilder_v8 &cudnn_frontend::OperationBuilder_v8inline
    setaMatDesc(Tensor_v8 const &tensor) -> OperationBuilder_v8 &cudnn_frontend::OperationBuilder_v8inline
    setbDesc(Tensor_v8 const &tensor) -> OperationBuilder_v8 &cudnn_frontend::OperationBuilder_v8inline
    setBeta(float beta) -> OperationBuilder_v8 &cudnn_frontend::OperationBuilder_v8inline
    setBeta(double beta) -> OperationBuilder_v8 &cudnn_frontend::OperationBuilder_v8inline
    setbMatDesc(Tensor_v8 const &tensor) -> OperationBuilder_v8 &cudnn_frontend::OperationBuilder_v8inline
    setcDesc(ConvDesc_v8 const &conv) -> OperationBuilder_v8 &cudnn_frontend::OperationBuilder_v8inline
    setcMatDesc(Tensor_v8 const &tensor) -> OperationBuilder_v8 &cudnn_frontend::OperationBuilder_v8inline
    setdwDesc(Tensor_v8 const &tensor) -> OperationBuilder_v8 &cudnn_frontend::OperationBuilder_v8inline
    setdxDesc(Tensor_v8 const &tensor) -> OperationBuilder_v8 &cudnn_frontend::OperationBuilder_v8inline
    setdyDesc(ManagedOpaqueDescriptor const &raw_tensor) -> OperationBuilder_v8 &cudnn_frontend::OperationBuilder_v8inline
    setdyDesc(Tensor_v8 const &tensor) -> OperationBuilder_v8 &cudnn_frontend::OperationBuilder_v8inline
    setmatmulDesc(MatMulDesc_v8 const &matmulDesc) -> OperationBuilder_v8 &cudnn_frontend::OperationBuilder_v8inline
    setpwDesc(PointWiseDesc_v8 const &pointWiseDesc) -> OperationBuilder_v8 &cudnn_frontend::OperationBuilder_v8inline
    setwDesc(Tensor_v8 const &tensor) -> OperationBuilder_v8 &cudnn_frontend::OperationBuilder_v8inline
    setxDesc(ManagedOpaqueDescriptor const &raw_tensor) -> OperationBuilder_v8 &cudnn_frontend::OperationBuilder_v8inline
    -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
     
    class  ExecutionPlanBuilder_v8
     
    class  MatMulDesc_v8
     
    class  MatMulDescBuilder_v8
     
    class  OpaqueBackendPointer
     
    class  Operation_v8
     
    using PointWiseDesc = PointWiseDesc_v8
     
    using MatMulDesc = MatMulDesc_v8
     
    using MatMulDescBuilder = MatMulDescBuilder_v8
     
    using Operation = Operation_v8
     
    using OperationBuilder = OperationBuilder_v8
    + + + +
    using cudnn_frontend::MatMulDesc = typedef MatMulDesc_v8
    +
    + +

    Definition at line 119 of file cudnn_frontend.h.

    + +
    +
    + +

    ◆ MatMulDescBuilder

    + +
    +
    + +

    Definition at line 120 of file cudnn_frontend.h.

    +
    @@ -530,7 +570,7 @@

    -

    Definition at line 45 of file cudnn_frontend.h.

    +

    Definition at line 121 of file cudnn_frontend.h.

    @@ -546,7 +586,7 @@

    -

    Definition at line 46 of file cudnn_frontend.h.

    +

    Definition at line 122 of file cudnn_frontend.h.

    @@ -562,7 +602,7 @@

    -

    Definition at line 47 of file cudnn_frontend.h.

    +

    Definition at line 123 of file cudnn_frontend.h.

    @@ -578,7 +618,7 @@

    -

    Definition at line 48 of file cudnn_frontend.h.

    +

    Definition at line 124 of file cudnn_frontend.h.

    @@ -594,7 +634,7 @@

    -

    Definition at line 44 of file cudnn_frontend.h.

    +

    Definition at line 118 of file cudnn_frontend.h.

    @@ -610,7 +650,7 @@

    -

    Definition at line 43 of file cudnn_frontend.h.

    +

    Definition at line 117 of file cudnn_frontend.h.

    @@ -642,7 +682,7 @@

    -

    Definition at line 39 of file cudnn_frontend.h.

    +

    Definition at line 113 of file cudnn_frontend.h.

    @@ -658,7 +698,7 @@

    -

    Definition at line 40 of file cudnn_frontend.h.

    +

    Definition at line 114 of file cudnn_frontend.h.

    @@ -674,7 +714,7 @@

    -

    Definition at line 57 of file cudnn_frontend.h.

    +

    Definition at line 133 of file cudnn_frontend.h.

    @@ -690,7 +730,7 @@

    -

    Definition at line 58 of file cudnn_frontend.h.

    +

    Definition at line 134 of file cudnn_frontend.h.

    @@ -935,7 +975,7 @@

    References cudnn_frontend::cudnnException::cudnnException(), cudnn_frontend::BackendDescriptor::set_error(), and cudnn_frontend::BackendDescriptor::set_status().

    -

    Referenced by cudnn_frontend::VariantPackBuilder_v8::build(), cudnn_frontend::EngineFallbackListBuilder_v8::build(), cudnn_frontend::OperationGraphBuilder_v8::build(), cudnn_frontend::PointWiseDescBuilder_v8::build(), cudnn_frontend::TensorBuilder_v8::build(), cudnn_frontend::EngineConfigBuilder_v8::build(), cudnn_frontend::EngineHeuristicsBuilder_v8::build(), cudnn_frontend::ConvDescBuilder_v8::build(), cudnn_frontend::ExecutionPlanBuilder_v8::build(), cudnn_frontend::OperationBuilder_v8::build(), cudnn_frontend::EngineBuilder_v8::build(), cudnn_frontend::Engine_v8::buildKnobs(), cudnn_frontend::ExecutionPlan_v8::computeTag(), cudnn_frontend::Engine_v8::Engine_v8(), cudnn_frontend::EngineConfig_v8::EngineConfig_v8(), cudnn_frontend::EngineHeuristics_v8::getEngineConfig(), cudnn_frontend::EngineHeuristics_v8::getEngineConfigCount(), cudnn_frontend::OperationGraph_v8::getEngineCount(), cudnn_frontend::ExecutionPlan_v8::getWorkspaceSize(), cudnn_frontend::OperationBuilder_v8::setbDesc(), cudnn_frontend::OperationBuilder_v8::setcDesc(), cudnn_frontend::EngineConfigBuilder_v8::setEngine(), cudnn_frontend::OperationBuilder_v8::setpwDesc(), and cudnn_frontend::OperationBuilder_v8::setwDesc().

    +

    Referenced by cudnn_frontend::MatMulDescBuilder_v8::build(), cudnn_frontend::VariantPackBuilder_v8::build(), cudnn_frontend::EngineFallbackListBuilder_v8::build(), cudnn_frontend::OperationGraphBuilder_v8::build(), cudnn_frontend::TensorBuilder_v8::build(), cudnn_frontend::EngineConfigBuilder_v8::build(), cudnn_frontend::EngineHeuristicsBuilder_v8::build(), cudnn_frontend::ConvDescBuilder_v8::build(), cudnn_frontend::PointWiseDescBuilder_v8::build(), cudnn_frontend::ExecutionPlanBuilder_v8::build(), cudnn_frontend::EngineBuilder_v8::build(), cudnn_frontend::OperationBuilder_v8::build(), cudnn_frontend::Engine_v8::buildKnobs(), cudnn_frontend::ExecutionPlan_v8::computeTag(), cudnn_frontend::Engine_v8::Engine_v8(), cudnn_frontend::EngineConfig_v8::EngineConfig_v8(), cudnn_frontend::EngineHeuristics_v8::getEngineConfig(), cudnn_frontend::EngineHeuristics_v8::getEngineConfigCount(), cudnn_frontend::OperationGraph_v8::getEngineCount(), cudnn_frontend::ExecutionPlan_v8::getWorkspaceSize(), cudnn_frontend::OperationBuilder_v8::setaMatDesc(), cudnn_frontend::OperationBuilder_v8::setbDesc(), cudnn_frontend::OperationBuilder_v8::setbMatDesc(), cudnn_frontend::OperationBuilder_v8::setcDesc(), cudnn_frontend::OperationBuilder_v8::setcMatDesc(), cudnn_frontend::EngineConfigBuilder_v8::setEngine(), cudnn_frontend::OperationBuilder_v8::setmatmulDesc(), cudnn_frontend::OperationBuilder_v8::setpwDesc(), and cudnn_frontend::OperationBuilder_v8::setwDesc().

    diff --git a/docs/df/de1/namespacecudnn__frontend.js b/docs/df/de1/namespacecudnn__frontend.js index 4040b4a20..aa3b5a6ff 100644 --- a/docs/df/de1/namespacecudnn__frontend.js +++ b/docs/df/de1/namespacecudnn__frontend.js @@ -16,6 +16,8 @@ var namespacecudnn__frontend = [ "executionOption", "d6/d1b/structcudnn__frontend_1_1executionOption.html", "d6/d1b/structcudnn__frontend_1_1executionOption" ], [ "ExecutionPlan_v8", "d5/d06/classcudnn__frontend_1_1ExecutionPlan__v8.html", "d5/d06/classcudnn__frontend_1_1ExecutionPlan__v8" ], [ "ExecutionPlanBuilder_v8", "d1/d74/classcudnn__frontend_1_1ExecutionPlanBuilder__v8.html", "d1/d74/classcudnn__frontend_1_1ExecutionPlanBuilder__v8" ], + [ "MatMulDesc_v8", "d6/db7/classcudnn__frontend_1_1MatMulDesc__v8.html", "d6/db7/classcudnn__frontend_1_1MatMulDesc__v8" ], + [ "MatMulDescBuilder_v8", "de/d00/classcudnn__frontend_1_1MatMulDescBuilder__v8.html", "de/d00/classcudnn__frontend_1_1MatMulDescBuilder__v8" ], [ "OpaqueBackendPointer", "d5/d14/classcudnn__frontend_1_1OpaqueBackendPointer.html", "d5/d14/classcudnn__frontend_1_1OpaqueBackendPointer" ], [ "Operation_v8", "d4/d30/classcudnn__frontend_1_1Operation__v8.html", "d4/d30/classcudnn__frontend_1_1Operation__v8" ], [ "OperationBuilder_v8", "d1/d29/classcudnn__frontend_1_1OperationBuilder__v8.html", "d1/d29/classcudnn__frontend_1_1OperationBuilder__v8" ], diff --git a/docs/dir_d44c64559bbebec7f509842c48db8b23.html b/docs/dir_d44c64559bbebec7f509842c48db8b23.html index 8654dd695..e334eb6a3 100644 --- a/docs/dir_d44c64559bbebec7f509842c48db8b23.html +++ b/docs/dir_d44c64559bbebec7f509842c48db8b23.html @@ -5,7 +5,7 @@ -CUDNN API: include Directory Reference +CUDNN Frontend API: include Directory Reference @@ -28,8 +28,8 @@ -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    @@ -111,6 +111,8 @@   file  cudnn_frontend_Heuristics.h [code]   +file  cudnn_frontend_MatMulDesc.h [code] +  file  cudnn_frontend_Operation.h [code]   file  cudnn_frontend_OperationGraph.h [code] diff --git a/docs/files.html b/docs/files.html index 5a1fad2ef..af09fb0ba 100644 --- a/docs/files.html +++ b/docs/files.html @@ -5,7 +5,7 @@ -CUDNN API: File List +CUDNN Frontend API: File List @@ -28,8 +28,8 @@ -
    diff --git a/docs/files.js b/docs/files.js index eb8ad289d..4e7416cc5 100644 --- a/docs/files.js +++ b/docs/files.js @@ -25,6 +25,10 @@ var files = [ "EngineHeuristics_v8", "db/ddb/classcudnn__frontend_1_1EngineHeuristics__v8.html", "db/ddb/classcudnn__frontend_1_1EngineHeuristics__v8" ], [ "EngineHeuristicsBuilder_v8", "d1/d28/classcudnn__frontend_1_1EngineHeuristicsBuilder__v8.html", "d1/d28/classcudnn__frontend_1_1EngineHeuristicsBuilder__v8" ] ] ], + [ "cudnn_frontend_MatMulDesc.h", "d6/d32/cudnn__frontend__MatMulDesc_8h.html", [ + [ "MatMulDesc_v8", "d6/db7/classcudnn__frontend_1_1MatMulDesc__v8.html", "d6/db7/classcudnn__frontend_1_1MatMulDesc__v8" ], + [ "MatMulDescBuilder_v8", "de/d00/classcudnn__frontend_1_1MatMulDescBuilder__v8.html", "de/d00/classcudnn__frontend_1_1MatMulDescBuilder__v8" ] + ] ], [ "cudnn_frontend_Operation.h", "da/d5a/cudnn__frontend__Operation_8h.html", [ [ "Operation_v8", "d4/d30/classcudnn__frontend_1_1Operation__v8.html", "d4/d30/classcudnn__frontend_1_1Operation__v8" ], [ "OperationBuilder_v8", "d1/d29/classcudnn__frontend_1_1OperationBuilder__v8.html", "d1/d29/classcudnn__frontend_1_1OperationBuilder__v8" ] diff --git a/docs/functions.html b/docs/functions.html index 1265ad140..fe273bcd9 100644 --- a/docs/functions.html +++ b/docs/functions.html @@ -5,7 +5,7 @@ -CUDNN API: Class Members +CUDNN Frontend API: Class Members @@ -28,8 +28,8 @@ -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    @@ -101,6 +101,9 @@

    - a -

    diff --git a/docs/functions_0x7e.html b/docs/functions_0x7e.html index 937ac40b0..ee4440f1e 100644 --- a/docs/functions_0x7e.html +++ b/docs/functions_0x7e.html @@ -5,7 +5,7 @@ -CUDNN API: Class Members +CUDNN Frontend API: Class Members @@ -28,8 +28,8 @@ -
    CUDNN API -  8 +
    CUDNN Frontend API +  8.2.0
    @@ -119,6 +119,12 @@

    - ~ -

    • ~ExecutionPlanBuilder_v8() : cudnn_frontend::ExecutionPlanBuilder_v8
    • +
    • ~MatMulDesc_v8() +: cudnn_frontend::MatMulDesc_v8 +
    • +
    • ~MatMulDescBuilder_v8() +: cudnn_frontend::MatMulDescBuilder_v8 +
    • ~OpaqueBackendPointer() : cudnn_frontend::OpaqueBackendPointer
    • diff --git a/docs/functions_b.html b/docs/functions_b.html index ec6e13d73..a33e4434d 100644 --- a/docs/functions_b.html +++ b/docs/functions_b.html @@ -5,7 +5,7 @@ -CUDNN API: Class Members +CUDNN Frontend API: Class Members @@ -28,8 +28,8 @@ -
      CUDNN API -  8 +
      CUDNN Frontend API +  8.2.0
      @@ -101,6 +101,9 @@

      - b -

      • bKnobs : cudnn_frontend::Engine_v8
      • +
      • bmatdesc +: cudnn_frontend::Operation_v8 +
      • btensor_dimA : cudnn_frontend::Tensor_v8
      • @@ -114,6 +117,7 @@

        - b -

          , cudnn_frontend::EngineFallbackListBuilder_v8 , cudnn_frontend::EngineHeuristicsBuilder_v8 , cudnn_frontend::ExecutionPlanBuilder_v8 +, cudnn_frontend::MatMulDescBuilder_v8 , cudnn_frontend::OperationBuilder_v8 , cudnn_frontend::OperationGraphBuilder_v8 , cudnn_frontend::PointWiseDescBuilder_v8 diff --git a/docs/functions_c.html b/docs/functions_c.html index 878460a29..5e7e85d28 100644 --- a/docs/functions_c.html +++ b/docs/functions_c.html @@ -5,7 +5,7 @@ -CUDNN API: Class Members +CUDNN Frontend API: Class Members @@ -28,8 +28,8 @@ -
          CUDNN API -  8 +
          CUDNN Frontend API +  8.2.0
          @@ -89,6 +89,9 @@

          - c -

          diff --git a/docs/functions_e.html b/docs/functions_e.html index e54f9e77a..c8d8f405f 100644 --- a/docs/functions_e.html +++ b/docs/functions_e.html @@ -5,7 +5,7 @@ -CUDNN API: Class Members +CUDNN Frontend API: Class Members @@ -28,8 +28,8 @@ -
          CUDNN API -  8 +
          CUDNN Frontend API +  8.2.0
          @@ -83,6 +83,9 @@
          Here is a list of all class members with links to the classes they belong to:

          - e -

          diff --git a/docs/functions_func.html b/docs/functions_func.html index e20411ba2..a82e57efa 100644 --- a/docs/functions_func.html +++ b/docs/functions_func.html @@ -5,7 +5,7 @@ -CUDNN API: Class Members - Functions +CUDNN Frontend API: Class Members - Functions @@ -28,8 +28,8 @@ -
          CUDNN API -  8 +
          CUDNN Frontend API +  8.2.0
          @@ -93,6 +93,7 @@

          - b -

            , cudnn_frontend::EngineFallbackListBuilder_v8 , cudnn_frontend::EngineHeuristicsBuilder_v8 , cudnn_frontend::ExecutionPlanBuilder_v8 +, cudnn_frontend::MatMulDescBuilder_v8 , cudnn_frontend::OperationBuilder_v8 , cudnn_frontend::OperationGraphBuilder_v8 , cudnn_frontend::PointWiseDescBuilder_v8 diff --git a/docs/functions_func.js b/docs/functions_func.js index b9b17fed1..a855a1330 100644 --- a/docs/functions_func.js +++ b/docs/functions_func.js @@ -7,6 +7,7 @@ var functions_func = [ "g", "functions_func_g.html", null ], [ "i", "functions_func_i.html", null ], [ "k", "functions_func_k.html", null ], + [ "m", "functions_func_m.html", null ], [ "o", "functions_func_o.html", null ], [ "p", "functions_func_p.html", null ], [ "s", "functions_func_s.html", null ], diff --git a/docs/functions_func_0x7e.html b/docs/functions_func_0x7e.html index e7a4b5841..044f22269 100644 --- a/docs/functions_func_0x7e.html +++ b/docs/functions_func_0x7e.html @@ -5,7 +5,7 @@ -CUDNN API: Class Members - Functions +CUDNN Frontend API: Class Members - Functions @@ -28,8 +28,8 @@ -
            CUDNN API -  8 +
            CUDNN Frontend API +  8.2.0
            @@ -119,6 +119,12 @@

            - ~ -

            • ~ExecutionPlanBuilder_v8() : cudnn_frontend::ExecutionPlanBuilder_v8
            • +
            • ~MatMulDesc_v8() +: cudnn_frontend::MatMulDesc_v8 +
            • +
            • ~MatMulDescBuilder_v8() +: cudnn_frontend::MatMulDescBuilder_v8 +
            • ~OpaqueBackendPointer() : cudnn_frontend::OpaqueBackendPointer
            • diff --git a/docs/functions_func_c.html b/docs/functions_func_c.html index 98a72d663..0b8642ea5 100644 --- a/docs/functions_func_c.html +++ b/docs/functions_func_c.html @@ -5,7 +5,7 @@ -CUDNN API: Class Members - Functions +CUDNN Frontend API: Class Members - Functions @@ -28,8 +28,8 @@ -
              CUDNN API -  8 +
              CUDNN Frontend API +  8.2.0
              diff --git a/docs/functions_func_d.html b/docs/functions_func_d.html index 21db7c910..ad381b284 100644 --- a/docs/functions_func_d.html +++ b/docs/functions_func_d.html @@ -5,7 +5,7 @@ -CUDNN API: Class Members - Functions +CUDNN Frontend API: Class Members - Functions @@ -28,8 +28,8 @@ -
              CUDNN API -  8 +
              CUDNN Frontend API +  8.2.0
              @@ -92,6 +92,7 @@

              - d -

                , cudnn_frontend::EngineFallbackList_v8 , cudnn_frontend::EngineHeuristics_v8 , cudnn_frontend::ExecutionPlan_v8 +, cudnn_frontend::MatMulDesc_v8 , cudnn_frontend::Operation_v8 , cudnn_frontend::OperationGraph_v8 , cudnn_frontend::PointWiseDesc_v8 diff --git a/docs/functions_func_e.html b/docs/functions_func_e.html index fb032cb67..50fd3977a 100644 --- a/docs/functions_func_e.html +++ b/docs/functions_func_e.html @@ -5,7 +5,7 @@ -CUDNN API: Class Members - Functions +CUDNN Frontend API: Class Members - Functions @@ -28,8 +28,8 @@ -
                CUDNN API -  8 +
                CUDNN Frontend API +  8.2.0
                diff --git a/docs/functions_func_g.html b/docs/functions_func_g.html index a600c15a3..147abdcc4 100644 --- a/docs/functions_func_g.html +++ b/docs/functions_func_g.html @@ -5,7 +5,7 @@ -CUDNN API: Class Members - Functions +CUDNN Frontend API: Class Members - Functions @@ -28,8 +28,8 @@ -
                CUDNN API -  8 +
                CUDNN Frontend API +  8.2.0
                @@ -103,7 +103,7 @@

                - g -

                  , cudnn_frontend::OpaqueBackendPointer
                • getChoice() -: cudnn_frontend::Engine_v8::Knob +: cudnn_frontend::Engine_v8::Knob
                • getEngineConfig() : cudnn_frontend::EngineHeuristics_v8 @@ -121,13 +121,13 @@

                  - g -

                    : cudnn_frontend::Engine_v8
                  • getKnobType() -: cudnn_frontend::Engine_v8::Knob +: cudnn_frontend::Engine_v8::Knob
                  • getMaxValue() -: cudnn_frontend::Engine_v8::Knob +: cudnn_frontend::Engine_v8::Knob
                  • getMinValue() -: cudnn_frontend::Engine_v8::Knob +: cudnn_frontend::Engine_v8::Knob
                  • getOutputTensor() : cudnn_frontend::Operation_v8 @@ -139,7 +139,7 @@

                    - g -

                      : cudnn_frontend::PointWiseDesc_v8
                    • getStride() -: cudnn_frontend::Engine_v8::Knob +: cudnn_frontend::Engine_v8::Knob
                    • getSupportedKnobs() : cudnn_frontend::Engine_v8 diff --git a/docs/functions_func_i.html b/docs/functions_func_i.html index c9363d98b..1db0a9e87 100644 --- a/docs/functions_func_i.html +++ b/docs/functions_func_i.html @@ -5,7 +5,7 @@ -CUDNN API: Class Members - Functions +CUDNN Frontend API: Class Members - Functions @@ -28,8 +28,8 @@ -
                      CUDNN API -  8 +
                      CUDNN Frontend API +  8.2.0
                      diff --git a/docs/functions_func_k.html b/docs/functions_func_k.html index 544b145ed..e893fe4ca 100644 --- a/docs/functions_func_k.html +++ b/docs/functions_func_k.html @@ -5,7 +5,7 @@ -CUDNN API: Class Members - Functions +CUDNN Frontend API: Class Members - Functions @@ -28,8 +28,8 @@ -
                      CUDNN API -  8 +
                      CUDNN Frontend API +  8.2.0
                      diff --git a/docs/functions_func_m.html b/docs/functions_func_m.html new file mode 100644 index 000000000..dfe5939c4 --- /dev/null +++ b/docs/functions_func_m.html @@ -0,0 +1,104 @@ + + + + + + + +CUDNN Frontend API: Class Members - Functions + + + + + + + + + + + + + + +
                      +
                      + + + + + + +
                      +
                      CUDNN Frontend API +  8.2.0 +
                      +
                      +
                      + + + + + + + +
                      +
                      + +
                      +
                      +
                      + +
                      + +
                      +
                      + + +
                      + +
                      + +
                      +  + +

                      - m -

                      +
                      +
                      + + + + diff --git a/docs/functions_func_o.html b/docs/functions_func_o.html index d0f2a1414..72ad4cfcc 100644 --- a/docs/functions_func_o.html +++ b/docs/functions_func_o.html @@ -5,7 +5,7 @@ -CUDNN API: Class Members - Functions +CUDNN Frontend API: Class Members - Functions @@ -28,8 +28,8 @@ -
                      CUDNN API -  8 +
                      CUDNN Frontend API +  8.2.0
                      @@ -111,6 +111,8 @@

                      - o -

                        , cudnn_frontend::EngineHeuristicsBuilder_v8 , cudnn_frontend::ExecutionPlan_v8 , cudnn_frontend::ExecutionPlanBuilder_v8 +, cudnn_frontend::MatMulDesc_v8 +, cudnn_frontend::MatMulDescBuilder_v8 , cudnn_frontend::OpaqueBackendPointer , cudnn_frontend::Operation_v8 , cudnn_frontend::OperationGraph_v8 diff --git a/docs/functions_func_p.html b/docs/functions_func_p.html index 7ddc2029d..a22051532 100644 --- a/docs/functions_func_p.html +++ b/docs/functions_func_p.html @@ -5,7 +5,7 @@ -CUDNN API: Class Members - Functions +CUDNN Frontend API: Class Members - Functions @@ -28,8 +28,8 @@ -
                        CUDNN API -  8 +
                        CUDNN Frontend API +  8.2.0
                        diff --git a/docs/functions_func_s.html b/docs/functions_func_s.html index 140ad1d04..0cdab264d 100644 --- a/docs/functions_func_s.html +++ b/docs/functions_func_s.html @@ -5,7 +5,7 @@ -CUDNN API: Class Members - Functions +CUDNN Frontend API: Class Members - Functions @@ -28,8 +28,8 @@ -
                        CUDNN API -  8 +
                        CUDNN Frontend API +  8.2.0
                        @@ -98,12 +98,18 @@

                        - s -

                        • setAlpha2() : cudnn_frontend::OperationBuilder_v8
                        • +
                        • setaMatDesc() +: cudnn_frontend::OperationBuilder_v8 +
                        • setbDesc() : cudnn_frontend::OperationBuilder_v8
                        • setBeta() : cudnn_frontend::OperationBuilder_v8
                        • +
                        • setbMatDesc() +: cudnn_frontend::OperationBuilder_v8 +
                        • setcDesc() : cudnn_frontend::OperationBuilder_v8
                        • @@ -113,6 +119,9 @@

                          - s -

                          • setClipping() : cudnn_frontend::PointWiseDescBuilder_v8
                          • +
                          • setcMatDesc() +: cudnn_frontend::OperationBuilder_v8 +
                          • setDataPointers() : cudnn_frontend::VariantPackBuilder_v8
                          • @@ -126,6 +135,18 @@

                            - s -

                            • setDim() : cudnn_frontend::TensorBuilder_v8
                            • +
                            • setdwDesc() +: cudnn_frontend::OperationBuilder_v8 +
                            • +
                            • setdxDesc() +: cudnn_frontend::OperationBuilder_v8 +
                            • +
                            • setdyDesc() +: cudnn_frontend::OperationBuilder_v8 +
                            • +
                            • setEluAlpha() +: cudnn_frontend::PointWiseDescBuilder_v8 +
                            • setEngine() : cudnn_frontend::EngineConfigBuilder_v8
                            • @@ -149,7 +170,11 @@

                              - s -

                                : cudnn_frontend::ConvDescBuilder_v8
                              • setMathPrecision() -: cudnn_frontend::PointWiseDescBuilder_v8 +: cudnn_frontend::MatMulDescBuilder_v8 +, cudnn_frontend::PointWiseDescBuilder_v8 +
                              • +
                              • setmatmulDesc() +: cudnn_frontend::OperationBuilder_v8
                              • setMode() : cudnn_frontend::PointWiseDescBuilder_v8 @@ -161,7 +186,7 @@

                                - s -

                                  : cudnn_frontend::EngineFallbackListBuilder_v8
                                • setOperationGraph() -: cudnn_frontend::EngineBuilder_v8 +: cudnn_frontend::EngineBuilder_v8 , cudnn_frontend::EngineFallbackListBuilder_v8 , cudnn_frontend::EngineHeuristicsBuilder_v8 , cudnn_frontend::OperationGraphBuilder_v8 @@ -175,10 +200,25 @@

                                  - s -

                                  • setpwDesc() : cudnn_frontend::OperationBuilder_v8
                                  • +
                                  • setReluLowerClip() +: cudnn_frontend::PointWiseDescBuilder_v8 +
                                  • +
                                  • setReluLowerClipSlope() +: cudnn_frontend::PointWiseDescBuilder_v8 +
                                  • +
                                  • setReluUpperClip() +: cudnn_frontend::PointWiseDescBuilder_v8 +
                                  • +
                                  • setSoftplusBeta() +: cudnn_frontend::PointWiseDescBuilder_v8 +
                                  • setStrides() : cudnn_frontend::ConvDescBuilder_v8 , cudnn_frontend::TensorBuilder_v8
                                  • +
                                  • setSwishBeta() +: cudnn_frontend::PointWiseDescBuilder_v8 +
                                  • setUids() : cudnn_frontend::VariantPackBuilder_v8
                                  • diff --git a/docs/functions_func_t.html b/docs/functions_func_t.html index 177d69d87..df1c7fa1c 100644 --- a/docs/functions_func_t.html +++ b/docs/functions_func_t.html @@ -5,7 +5,7 @@ -CUDNN API: Class Members - Functions +CUDNN Frontend API: Class Members - Functions @@ -28,8 +28,8 @@ -
                                    CUDNN API -  8 +
                                    CUDNN Frontend API +  8.2.0
                                    diff --git a/docs/functions_func_v.html b/docs/functions_func_v.html index 18ca74a25..5aafb162f 100644 --- a/docs/functions_func_v.html +++ b/docs/functions_func_v.html @@ -5,7 +5,7 @@ -CUDNN API: Class Members - Functions +CUDNN Frontend API: Class Members - Functions @@ -28,8 +28,8 @@ -
                                    CUDNN API -  8 +
                                    CUDNN Frontend API +  8.2.0
                                    diff --git a/docs/functions_func_w.html b/docs/functions_func_w.html index 15e67f3b3..e1e576b14 100644 --- a/docs/functions_func_w.html +++ b/docs/functions_func_w.html @@ -5,7 +5,7 @@ -CUDNN API: Class Members - Functions +CUDNN Frontend API: Class Members - Functions @@ -28,8 +28,8 @@ -
                                    CUDNN API -  8 +
                                    CUDNN Frontend API +  8.2.0
                                    diff --git a/docs/functions_g.html b/docs/functions_g.html index 6ff700793..5be8217d2 100644 --- a/docs/functions_g.html +++ b/docs/functions_g.html @@ -5,7 +5,7 @@ -CUDNN API: Class Members +CUDNN Frontend API: Class Members @@ -28,8 +28,8 @@ -
                                    CUDNN API -  8 +
                                    CUDNN Frontend API +  8.2.0
                                    @@ -103,7 +103,7 @@

                                    - g -

                                      , cudnn_frontend::OpaqueBackendPointer
                                    • getChoice() -: cudnn_frontend::Engine_v8::Knob +: cudnn_frontend::Engine_v8::Knob
                                    • getEngineConfig() : cudnn_frontend::EngineHeuristics_v8 @@ -121,13 +121,13 @@

                                      - g -

                                        : cudnn_frontend::Engine_v8
                                      • getKnobType() -: cudnn_frontend::Engine_v8::Knob +: cudnn_frontend::Engine_v8::Knob
                                      • getMaxValue() -: cudnn_frontend::Engine_v8::Knob +: cudnn_frontend::Engine_v8::Knob
                                      • getMinValue() -: cudnn_frontend::Engine_v8::Knob +: cudnn_frontend::Engine_v8::Knob
                                      • getOutputTensor() : cudnn_frontend::Operation_v8 @@ -139,7 +139,7 @@

                                        - g -

                                          : cudnn_frontend::PointWiseDesc_v8
                                        • getStride() -: cudnn_frontend::Engine_v8::Knob +: cudnn_frontend::Engine_v8::Knob
                                        • getSupportedKnobs() : cudnn_frontend::Engine_v8 diff --git a/docs/functions_h.html b/docs/functions_h.html index 71b485402..6d3f7ff5a 100644 --- a/docs/functions_h.html +++ b/docs/functions_h.html @@ -5,7 +5,7 @@ -CUDNN API: Class Members +CUDNN Frontend API: Class Members @@ -28,8 +28,8 @@ -
                                          CUDNN API -  8 +
                                          CUDNN Frontend API +  8.2.0
                                          diff --git a/docs/functions_i.html b/docs/functions_i.html index 81c9cd6bb..2e50a9360 100644 --- a/docs/functions_i.html +++ b/docs/functions_i.html @@ -5,7 +5,7 @@ -CUDNN API: Class Members +CUDNN Frontend API: Class Members @@ -28,8 +28,8 @@ -
                                          CUDNN API -  8 +
                                          CUDNN Frontend API +  8.2.0
                                          @@ -98,6 +98,21 @@

                                          - i -

                                          • is_good() : cudnn_frontend::OpaqueBackendPointer
                                          • +
                                          • is_matmul_op +: cudnn_frontend::OperationBuilder_v8 +
                                          • +
                                          • is_pointwise_activation_bwd_op +: cudnn_frontend::Operation_v8 +
                                          • +
                                          • is_pointwise_activation_fwd_op +: cudnn_frontend::Operation_v8 +
                                          • +
                                          • is_pointwise_math_op +: cudnn_frontend::Operation_v8 +
                                          • +
                                          • is_pointwise_op +: cudnn_frontend::OperationBuilder_v8 +
                                          • isVirtual : cudnn_frontend::Tensor_v8
                                          • diff --git a/docs/functions_k.html b/docs/functions_k.html index 9147df751..74c1a0261 100644 --- a/docs/functions_k.html +++ b/docs/functions_k.html @@ -5,7 +5,7 @@ -CUDNN API: Class Members +CUDNN Frontend API: Class Members @@ -28,8 +28,8 @@ -
                                            CUDNN API -  8 +
                                            CUDNN Frontend API +  8.2.0
                                            diff --git a/docs/functions_l.html b/docs/functions_l.html index b6562fba1..31d16cda9 100644 --- a/docs/functions_l.html +++ b/docs/functions_l.html @@ -5,7 +5,7 @@ -CUDNN API: Class Members +CUDNN Frontend API: Class Members @@ -28,8 +28,8 @@ -
                                            CUDNN API -  8 +
                                            CUDNN Frontend API +  8.2.0
                                            @@ -86,6 +86,9 @@

                                            - l -

                                            diff --git a/docs/functions_m.html b/docs/functions_m.html index 0372bfd87..357988378 100644 --- a/docs/functions_m.html +++ b/docs/functions_m.html @@ -5,7 +5,7 @@ -CUDNN API: Class Members +CUDNN Frontend API: Class Members @@ -28,8 +28,8 @@ -
                                            CUDNN API -  8 +
                                            CUDNN Frontend API +  8.2.0
                                            @@ -110,6 +110,9 @@

                                            - m -

                                            • m_heuristics : cudnn_frontend::EngineHeuristicsBuilder_v8
                                            • +
                                            • m_matMulDesc +: cudnn_frontend::MatMulDescBuilder_v8 +
                                            • m_operation : cudnn_frontend::OperationBuilder_v8
                                            • @@ -126,7 +129,18 @@

                                              - m -

                                                : cudnn_frontend::VariantPackBuilder_v8
                                              • math_precision -: cudnn_frontend::PointWiseDesc_v8 +: cudnn_frontend::MatMulDesc_v8 +, cudnn_frontend::PointWiseDesc_v8 +
                                              • +
                                              • matmuldesc +: cudnn_frontend::Operation_v8 +
                                              • +
                                              • MatMulDesc_v8() +: cudnn_frontend::MatMulDesc_v8 +
                                              • +
                                              • MatMulDescBuilder_v8 +: cudnn_frontend::MatMulDesc_v8 +, cudnn_frontend::MatMulDescBuilder_v8
                                              • maxValue : cudnn_frontend::Engine_v8::Knob diff --git a/docs/functions_n.html b/docs/functions_n.html index b38404d5e..8267e7cbc 100644 --- a/docs/functions_n.html +++ b/docs/functions_n.html @@ -5,7 +5,7 @@ -CUDNN API: Class Members +CUDNN Frontend API: Class Members @@ -28,8 +28,8 @@ -
                                                CUDNN API -  8 +
                                                CUDNN Frontend API +  8.2.0
                                                diff --git a/docs/functions_o.html b/docs/functions_o.html index d56f67c8a..49a93d2e1 100644 --- a/docs/functions_o.html +++ b/docs/functions_o.html @@ -5,7 +5,7 @@ -CUDNN API: Class Members +CUDNN Frontend API: Class Members @@ -28,8 +28,8 @@ -
                                                CUDNN API -  8 +
                                                CUDNN Frontend API +  8.2.0
                                                @@ -119,6 +119,8 @@

                                                - o -

                                                  , cudnn_frontend::EngineHeuristicsBuilder_v8 , cudnn_frontend::ExecutionPlan_v8 , cudnn_frontend::ExecutionPlanBuilder_v8 +, cudnn_frontend::MatMulDesc_v8 +, cudnn_frontend::MatMulDescBuilder_v8 , cudnn_frontend::OpaqueBackendPointer , cudnn_frontend::Operation_v8 , cudnn_frontend::OperationGraph_v8 diff --git a/docs/functions_p.html b/docs/functions_p.html index d811a7634..03a7f4188 100644 --- a/docs/functions_p.html +++ b/docs/functions_p.html @@ -5,7 +5,7 @@ -CUDNN API: Class Members +CUDNN Frontend API: Class Members @@ -28,8 +28,8 @@ -
                                                  CUDNN API -  8 +
                                                  CUDNN Frontend API +  8.2.0
                                                  diff --git a/docs/functions_rela.html b/docs/functions_rela.html index 57af9ef29..5da8078b5 100644 --- a/docs/functions_rela.html +++ b/docs/functions_rela.html @@ -5,7 +5,7 @@ -CUDNN API: Class Members - Related Functions +CUDNN Frontend API: Class Members - Related Functions @@ -28,8 +28,8 @@ -
                                                  CUDNN API -  8 +
                                                  CUDNN Frontend API +  8.2.0
                                                  @@ -99,6 +99,9 @@
                                                • ExecutionPlanBuilder_v8 : cudnn_frontend::ExecutionPlan_v8
                                                • +
                                                • MatMulDescBuilder_v8 +: cudnn_frontend::MatMulDesc_v8 +
                                                • OperationBuilder_v8 : cudnn_frontend::Operation_v8
                                                • diff --git a/docs/functions_s.html b/docs/functions_s.html index 33882a900..707fee08d 100644 --- a/docs/functions_s.html +++ b/docs/functions_s.html @@ -5,7 +5,7 @@ -CUDNN API: Class Members +CUDNN Frontend API: Class Members @@ -28,8 +28,8 @@ -
                                                  CUDNN API -  8 +
                                                  CUDNN Frontend API +  8.2.0
                                                  @@ -98,12 +98,18 @@

                                                  - s -

                                                  diff --git a/docs/functions_t.html b/docs/functions_t.html index b37cfbd3f..1dd477fa8 100644 --- a/docs/functions_t.html +++ b/docs/functions_t.html @@ -5,7 +5,7 @@ -CUDNN API: Class Members +CUDNN Frontend API: Class Members @@ -28,8 +28,8 @@ -
                                                  CUDNN API -  8 +
                                                  CUDNN Frontend API +  8.2.0
                                                  diff --git a/docs/functions_u.html b/docs/functions_u.html index 17f1c4dde..c5bc757b9 100644 --- a/docs/functions_u.html +++ b/docs/functions_u.html @@ -5,7 +5,7 @@ -CUDNN API: Class Members +CUDNN Frontend API: Class Members @@ -28,8 +28,8 @@ -
                                                  CUDNN API -  8 +
                                                  CUDNN Frontend API +  8.2.0
                                                  diff --git a/docs/functions_v.html b/docs/functions_v.html index e22a6e2e8..58aeeb6f4 100644 --- a/docs/functions_v.html +++ b/docs/functions_v.html @@ -5,7 +5,7 @@ -CUDNN API: Class Members +CUDNN Frontend API: Class Members @@ -28,8 +28,8 @@ -
                                                  CUDNN API -  8 +
                                                  CUDNN Frontend API +  8.2.0
                                                  diff --git a/docs/functions_vars.html b/docs/functions_vars.html index f44692536..533bfc939 100644 --- a/docs/functions_vars.html +++ b/docs/functions_vars.html @@ -5,7 +5,7 @@ -CUDNN API: Class Members - Variables +CUDNN Frontend API: Class Members - Variables @@ -28,8 +28,8 @@ -
                                                  CUDNN API -  8 +
                                                  CUDNN Frontend API +  8.2.0
                                                  @@ -101,6 +101,9 @@

                                                  - a -

                                                  @@ -120,6 +123,9 @@

                                                  - b -

                                                  • bKnobs : cudnn_frontend::Engine_v8
                                                  • +
                                                  • bmatdesc +: cudnn_frontend::Operation_v8 +
                                                  • btensor_dimA : cudnn_frontend::Tensor_v8
                                                  • @@ -136,6 +142,9 @@

                                                    - c -

                                                    @@ -150,10 +159,22 @@

                                                    - d -

                                                    - e -

                                                      +
                                                    • elu_alpha +: cudnn_frontend::PointWiseDesc_v8 +
                                                    • engine : cudnn_frontend::EngineConfig_v8
                                                    • @@ -187,6 +208,21 @@

                                                      - i -

                                                      • is_convolution_op : cudnn_frontend::OperationBuilder_v8
                                                      • +
                                                      • is_matmul_op +: cudnn_frontend::OperationBuilder_v8 +
                                                      • +
                                                      • is_pointwise_activation_bwd_op +: cudnn_frontend::Operation_v8 +
                                                      • +
                                                      • is_pointwise_activation_fwd_op +: cudnn_frontend::Operation_v8 +
                                                      • +
                                                      • is_pointwise_math_op +: cudnn_frontend::Operation_v8 +
                                                      • +
                                                      • is_pointwise_op +: cudnn_frontend::OperationBuilder_v8 +
                                                      • isVirtual : cudnn_frontend::Tensor_v8
                                                      • @@ -207,6 +243,9 @@

                                                        - l -

                                                        @@ -238,6 +277,9 @@

                                                        - m -

                                                        • m_heuristics : cudnn_frontend::EngineHeuristicsBuilder_v8
                                                        • +
                                                        • m_matMulDesc +: cudnn_frontend::MatMulDescBuilder_v8 +
                                                        • m_operation : cudnn_frontend::OperationBuilder_v8
                                                        • @@ -254,7 +296,11 @@

                                                          - m -

                                                            : cudnn_frontend::VariantPackBuilder_v8
                                                          • math_precision -: cudnn_frontend::PointWiseDesc_v8 +: cudnn_frontend::MatMulDesc_v8 +, cudnn_frontend::PointWiseDesc_v8 +
                                                          • +
                                                          • matmuldesc +: cudnn_frontend::Operation_v8
                                                          • maxValue : cudnn_frontend::Engine_v8::Knob @@ -346,6 +392,9 @@

                                                            - p -

                                                              - s -

                                                                +
                                                              • softplus_beta +: cudnn_frontend::PointWiseDesc_v8 +
                                                              • status : cudnn_frontend::BackendDescriptor , cudnn_frontend::OpaqueBackendPointer @@ -354,6 +403,9 @@

                                                                - s -

                                                                diff --git a/docs/functions_w.html b/docs/functions_w.html index 904262e1d..1173fed9d 100644 --- a/docs/functions_w.html +++ b/docs/functions_w.html @@ -5,7 +5,7 @@ -CUDNN API: Class Members +CUDNN Frontend API: Class Members @@ -28,8 +28,8 @@ -
                                                                CUDNN API -  8 +
                                                                CUDNN Frontend API +  8.2.0
                                                                diff --git a/docs/functions_x.html b/docs/functions_x.html index 4cc5119b0..a868370eb 100644 --- a/docs/functions_x.html +++ b/docs/functions_x.html @@ -5,7 +5,7 @@ -CUDNN API: Class Members +CUDNN Frontend API: Class Members @@ -28,8 +28,8 @@ -
                                                                CUDNN API -  8 +
                                                                CUDNN Frontend API +  8.2.0
                                                                diff --git a/docs/functions_y.html b/docs/functions_y.html index 4e2ec24bb..4bcf1bbd8 100644 --- a/docs/functions_y.html +++ b/docs/functions_y.html @@ -5,7 +5,7 @@ -CUDNN API: Class Members +CUDNN Frontend API: Class Members @@ -28,8 +28,8 @@ -
                                                                CUDNN API -  8 +
                                                                CUDNN Frontend API +  8.2.0
                                                                diff --git a/docs/graph_legend.html b/docs/graph_legend.html index a3700abbd..332b01b21 100644 --- a/docs/graph_legend.html +++ b/docs/graph_legend.html @@ -5,7 +5,7 @@ -CUDNN API: Graph Legend +CUDNN Frontend API: Graph Legend @@ -28,8 +28,8 @@ -
                                                                CUDNN API -  8 +
                                                                CUDNN Frontend API +  8.2.0
                                                                diff --git a/docs/hierarchy.html b/docs/hierarchy.html index e4a6dc50e..46d5fc407 100644 --- a/docs/hierarchy.html +++ b/docs/hierarchy.html @@ -5,7 +5,7 @@ -CUDNN API: Class Hierarchy +CUDNN Frontend API: Class Hierarchy @@ -28,8 +28,8 @@ -
                                                                CUDNN API -  8 +
                                                                CUDNN Frontend API +  8.2.0
                                                                @@ -95,29 +95,31 @@  Ccudnn_frontend::EngineFallbackList_v8  Ccudnn_frontend::EngineHeuristics_v8  Ccudnn_frontend::ExecutionPlan_v8 - Ccudnn_frontend::Operation_v8 - Ccudnn_frontend::OperationGraph_v8 - Ccudnn_frontend::PointWiseDesc_v8 - Ccudnn_frontend::Tensor_v8 - Ccudnn_frontend::VariantPack_v8 - Ccudnn_frontend::ConvDescBuilder_v8 - Ccudnn_frontend::EngineBuilder_v8 - Ccudnn_frontend::EngineConfigBuilder_v8 - Ccudnn_frontend::EngineConfigGenerator - Ccudnn_frontend::EngineFallbackListBuilder_v8 - Ccudnn_frontend::EngineHeuristicsBuilder_v8 - Cstd::exceptionSTL class - Cstd::runtime_errorSTL class - Ccudnn_frontend::cudnnException - Ccudnn_frontend::executionOption - Ccudnn_frontend::ExecutionPlanBuilder_v8 - Ccudnn_frontend::Engine_v8::Knob - Ccudnn_frontend::OpaqueBackendPointer - Ccudnn_frontend::OperationBuilder_v8 - Ccudnn_frontend::OperationGraphBuilder_v8 - Ccudnn_frontend::PointWiseDescBuilder_v8 - Ccudnn_frontend::TensorBuilder_v8 - Ccudnn_frontend::VariantPackBuilder_v8 + Ccudnn_frontend::MatMulDesc_v8 + Ccudnn_frontend::Operation_v8 + Ccudnn_frontend::OperationGraph_v8 + Ccudnn_frontend::PointWiseDesc_v8 + Ccudnn_frontend::Tensor_v8 + Ccudnn_frontend::VariantPack_v8 + Ccudnn_frontend::ConvDescBuilder_v8 + Ccudnn_frontend::EngineBuilder_v8 + Ccudnn_frontend::EngineConfigBuilder_v8 + Ccudnn_frontend::EngineConfigGenerator + Ccudnn_frontend::EngineFallbackListBuilder_v8 + Ccudnn_frontend::EngineHeuristicsBuilder_v8 + Cstd::exceptionSTL class + Cstd::runtime_errorSTL class + Ccudnn_frontend::cudnnException + Ccudnn_frontend::executionOption + Ccudnn_frontend::ExecutionPlanBuilder_v8 + Ccudnn_frontend::Engine_v8::Knob + Ccudnn_frontend::MatMulDescBuilder_v8 + Ccudnn_frontend::OpaqueBackendPointer + Ccudnn_frontend::OperationBuilder_v8 + Ccudnn_frontend::OperationGraphBuilder_v8 + Ccudnn_frontend::PointWiseDescBuilder_v8 + Ccudnn_frontend::TensorBuilder_v8 + Ccudnn_frontend::VariantPackBuilder_v8
                                                                diff --git a/docs/hierarchy.js b/docs/hierarchy.js index a1ab33c05..d294d1b59 100644 --- a/docs/hierarchy.js +++ b/docs/hierarchy.js @@ -7,6 +7,7 @@ var hierarchy = [ "cudnn_frontend::EngineFallbackList_v8", "db/d99/classcudnn__frontend_1_1EngineFallbackList__v8.html", null ], [ "cudnn_frontend::EngineHeuristics_v8", "db/ddb/classcudnn__frontend_1_1EngineHeuristics__v8.html", null ], [ "cudnn_frontend::ExecutionPlan_v8", "d5/d06/classcudnn__frontend_1_1ExecutionPlan__v8.html", null ], + [ "cudnn_frontend::MatMulDesc_v8", "d6/db7/classcudnn__frontend_1_1MatMulDesc__v8.html", null ], [ "cudnn_frontend::Operation_v8", "d4/d30/classcudnn__frontend_1_1Operation__v8.html", null ], [ "cudnn_frontend::OperationGraph_v8", "de/dd9/classcudnn__frontend_1_1OperationGraph__v8.html", null ], [ "cudnn_frontend::PointWiseDesc_v8", "d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html", null ], @@ -27,6 +28,7 @@ var hierarchy = [ "cudnn_frontend::executionOption", "d6/d1b/structcudnn__frontend_1_1executionOption.html", null ], [ "cudnn_frontend::ExecutionPlanBuilder_v8", "d1/d74/classcudnn__frontend_1_1ExecutionPlanBuilder__v8.html", null ], [ "cudnn_frontend::Engine_v8::Knob", "dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html", null ], + [ "cudnn_frontend::MatMulDescBuilder_v8", "de/d00/classcudnn__frontend_1_1MatMulDescBuilder__v8.html", null ], [ "cudnn_frontend::OpaqueBackendPointer", "d5/d14/classcudnn__frontend_1_1OpaqueBackendPointer.html", null ], [ "cudnn_frontend::OperationBuilder_v8", "d1/d29/classcudnn__frontend_1_1OperationBuilder__v8.html", null ], [ "cudnn_frontend::OperationGraphBuilder_v8", "d4/d39/classcudnn__frontend_1_1OperationGraphBuilder__v8.html", null ], diff --git a/docs/index.html b/docs/index.html index 5aaf2078b..20d74464e 100644 --- a/docs/index.html +++ b/docs/index.html @@ -5,7 +5,7 @@ -CUDNN API: Main Page +CUDNN Frontend API: CUDNN FRONTEND API @@ -28,8 +28,8 @@ -
                                                                CUDNN API -  8 +
                                                                CUDNN Frontend API +  8.2.0
                                                                @@ -81,10 +81,30 @@
                                                                -
                                                                CUDNN API Documentation
                                                                +
                                                                CUDNN FRONTEND API
                                                                -
                                                                +

                                                                +Introduction

                                                                +

                                                                The cuDNN Frontend API is a C++ header-only library that demonstrates how to use the cuDNN C backend API. The cuDNN C backend API is documented in the cuDNN developer guide.

                                                                +

                                                                +Why use Frontend API

                                                                +

                                                                Consider the following code snippet which showcases cudnnBackendTensor creation using the backend API and its equivalent front-end API code. Many among the backend constructs follow similar pattern.

                                                                +
                                                                ===========================================================================================
                                                                auto check_status = [](cudnnStatus_t status) { assert (status == CUDNN_STATUS_SUCCESS); };
                                                                ===========================================================================================
                                                                // Backend code for Tensor Creation.
                                                                cudnnBackendDescriptor_t tensor;
                                                                check_status (cudnnBackendCreateDescriptor(CUDNN_BACKEND_TENSOR_DESCRIPTOR, &tensor));
                                                                check_status (cudnnBackendSetAttribute(tensor,
                                                                CUDNN_ATTR_TENSOR_DATA_TYPE,
                                                                CUDNN_TYPE_DATA_TYPE,
                                                                1,
                                                                &data_type));
                                                                check_status (cudnnBackendSetAttribute(tensor,
                                                                CUDNN_ATTR_TENSOR_DIMENSIONS,
                                                                CUDNN_TYPE_INT64,
                                                                tensor_dim.size(),
                                                                tensor_dim.data()));
                                                                check_status (cudnnBackendSetAttribute(tensor,
                                                                CUDNN_ATTR_TENSOR_STRIDES,
                                                                CUDNN_TYPE_INT64,
                                                                tensor_str.size(),
                                                                tensor_str.data()));
                                                                check_status (cudnnBackendSetAttribute(tensor,
                                                                CUDNN_ATTR_TENSOR_UNIQUE_ID,
                                                                CUDNN_TYPE_INT64,
                                                                1,
                                                                &id));
                                                                check_status (cudnnBackendSetAttribute(tensor,
                                                                CUDNN_ATTR_TENSOR_BYTE_ALIGNMENT,
                                                                CUDNN_TYPE_INT64,
                                                                1,
                                                                &alignment));
                                                                check_status (cudnnBackendFinalize(tensor));
                                                                check_status (cudnnBackendDestroyDescriptor(tensor));
                                                                ===========================================================================================
                                                                // FrontEnd equivalent code.
                                                                .setDim(tensor_dim.size(), tensor_dim.data())
                                                                .setStrides(tensor_str.size(), tensor_str.data())
                                                                .setId(id)
                                                                .setAlignment(alignment)
                                                                .setDataType(data_type)
                                                                .build();
                                                                check_status(tensor.get_status());
                                                                ===========================================================================================

                                                                Frontend API serves two major purpose as a companion to the backend API.

                                                                  +
                                                                • Functional additions:
                                                                    +
                                                                  • Support for auto-tuning. (cudnnGet and cudnnFind)
                                                                  • +
                                                                  • Errata filters.
                                                                  • +
                                                                  +
                                                                • +
                                                                • Programmatic ease:
                                                                    +
                                                                  • Easy memory management for the cudnnBackendDescriptor_t (RAII based classes).
                                                                  • +
                                                                  • Error handling with optional exception support. Better error messages.
                                                                  • +
                                                                  • Fewer lines of code (5-10x reduction in LOC).
                                                                  • +
                                                                  • Simpler samples on how to use the new API.
                                                                  • +
                                                                  +
                                                                • +
                                                                +
                                                                diff --git a/docs/modules.js b/docs/modules.js index 2d2a87fc6..43391766c 100644 --- a/docs/modules.js +++ b/docs/modules.js @@ -7,6 +7,7 @@ var modules = [ "ExecutionPlanQuery", "d7/d0d/group__ExecutionPlanQuery.html", "d7/d0d/group__ExecutionPlanQuery" ], [ "EngineHeuristicsQuery", "d6/d46/group__EngineHeuristicsQuery.html", "d6/d46/group__EngineHeuristicsQuery" ], [ "EngineHeuristicsBuilder_v8", "dc/d99/group__EngineHeuristicsBuilder__v8.html", "dc/d99/group__EngineHeuristicsBuilder__v8" ], + [ "MatMulDescBuilder_v8", "d9/d08/group__MatMulDescBuilder__v8.html", "d9/d08/group__MatMulDescBuilder__v8" ], [ "OperationBuilder_v8", "d3/d92/group__OperationBuilder__v8.html", "d3/d92/group__OperationBuilder__v8" ], [ "OperationGraphQuery", "d1/df7/group__OperationGraphQuery.html", "d1/df7/group__OperationGraphQuery" ], [ "OperationGraphBuilder_v8", "d2/df5/group__OperationGraphBuilder__v8.html", "d2/df5/group__OperationGraphBuilder__v8" ], diff --git a/docs/namespacemembers.html b/docs/namespacemembers.html index c288b61a2..65c765e4c 100644 --- a/docs/namespacemembers.html +++ b/docs/namespacemembers.html @@ -5,7 +5,7 @@ -CUDNN API: Namespace Members +CUDNN Frontend API: Namespace Members @@ -28,8 +28,8 @@ -
                                                                CUDNN API -  8 +
                                                                CUDNN Frontend API +  8.2.0
                                                                @@ -169,6 +169,12 @@

                                                                - m -

                                                                diff --git a/docs/namespacemembers_enum.html b/docs/namespacemembers_enum.html index 3fb272e48..3ef57ddab 100644 --- a/docs/namespacemembers_enum.html +++ b/docs/namespacemembers_enum.html @@ -5,7 +5,7 @@ -CUDNN API: Namespace Members +CUDNN Frontend API: Namespace Members @@ -28,8 +28,8 @@ -
                                                                CUDNN API -  8 +
                                                                CUDNN Frontend API +  8.2.0
                                                                diff --git a/docs/namespacemembers_func.html b/docs/namespacemembers_func.html index 99801c36d..766220ef8 100644 --- a/docs/namespacemembers_func.html +++ b/docs/namespacemembers_func.html @@ -5,7 +5,7 @@ -CUDNN API: Namespace Members +CUDNN Frontend API: Namespace Members @@ -28,8 +28,8 @@ -
                                                                CUDNN API -  8 +
                                                                CUDNN Frontend API +  8.2.0
                                                                diff --git a/docs/namespacemembers_type.html b/docs/namespacemembers_type.html index 85f94c412..96caa24cf 100644 --- a/docs/namespacemembers_type.html +++ b/docs/namespacemembers_type.html @@ -5,7 +5,7 @@ -CUDNN API: Namespace Members +CUDNN Frontend API: Namespace Members @@ -28,8 +28,8 @@ -
                                                                CUDNN API -  8 +
                                                                CUDNN Frontend API +  8.2.0
                                                                @@ -132,6 +132,12 @@
                                                              • ManagedOpaqueDescriptor : cudnn_frontend
                                                              • +
                                                              • MatMulDesc +: cudnn_frontend +
                                                              • +
                                                              • MatMulDescBuilder +: cudnn_frontend +
                                                              • Operation : cudnn_frontend
                                                              • diff --git a/docs/namespaces.html b/docs/namespaces.html index 4f45c1132..2b108ad8b 100644 --- a/docs/namespaces.html +++ b/docs/namespaces.html @@ -5,7 +5,7 @@ -CUDNN API: Namespace List +CUDNN Frontend API: Namespace List @@ -28,8 +28,8 @@ -
                                                                CUDNN API -  8 +
                                                                CUDNN Frontend API +  8.2.0
                                                                diff --git a/docs/navtreedata.js b/docs/navtreedata.js index bfdbc665d..6a81332dc 100644 --- a/docs/navtreedata.js +++ b/docs/navtreedata.js @@ -1,6 +1,8 @@ var NAVTREE = [ - [ "CUDNN API", "index.html", [ + [ "CUDNN Frontend API", "index.html", [ + [ "Introduction", "index.html#Introduction", null ], + [ "Why use Frontend API", "index.html#Need", null ], [ "Modules", "modules.html", "modules" ], [ "Namespaces", null, [ [ "Namespace List", "namespaces.html", "namespaces" ], @@ -31,8 +33,8 @@ var NAVTREE = var NAVTREEINDEX = [ "annotated.html", -"d6/d73/classcudnn__frontend_1_1ConvDesc__v8.html#a592e3a28fd7a8b2553789801d9bd276c", -"df/d3e/cudnn__frontend__EngineFallbackList_8h.html" +"d5/d14/classcudnn__frontend_1_1OpaqueBackendPointer.html#adf5bf20f5bdfbfdecd05360830b34b89", +"de/d00/classcudnn__frontend_1_1MatMulDescBuilder__v8.html#afea76414fa5c0c5f38a551afcf11391c" ]; var SYNCONMSG = 'click to disable panel synchronisation'; diff --git a/docs/navtreeindex0.js b/docs/navtreeindex0.js index c7e4b32dc..ac212fb77 100644 --- a/docs/navtreeindex0.js +++ b/docs/navtreeindex0.js @@ -1,253 +1,253 @@ var NAVTREEINDEX0 = { -"annotated.html":[2,0], -"classes.html":[2,1], -"d0/d20/classcudnn__frontend_1_1VariantPack__v8.html":[2,0,0,25], -"d0/d20/classcudnn__frontend_1_1VariantPack__v8.html#a0f8d91939842bb9003fe71280f0b230c":[2,0,0,25,10], -"d0/d20/classcudnn__frontend_1_1VariantPack__v8.html#a3a03ddd893f41a9ce6ca674bbfae7434":[2,0,0,25,7], -"d0/d20/classcudnn__frontend_1_1VariantPack__v8.html#a3f85d13ac1341b67d85f18761f8dcb35":[2,0,0,25,5], -"d0/d20/classcudnn__frontend_1_1VariantPack__v8.html#a55a7b12efe39ed7a24631ed05630721d":[2,0,0,25,1], -"d0/d20/classcudnn__frontend_1_1VariantPack__v8.html#a5c3371913fd88b20557bcc4d8ef93219":[2,0,0,25,9], -"d0/d20/classcudnn__frontend_1_1VariantPack__v8.html#a7ba1c4736d3b0f187dc06344ca4e2032":[2,0,0,25,4], -"d0/d20/classcudnn__frontend_1_1VariantPack__v8.html#a7d3416a4e2f6a67e1988e3b3cb77e88b":[2,0,0,25,3], -"d0/d20/classcudnn__frontend_1_1VariantPack__v8.html#a8fcb5ec8a09de5a6f1f326f2e623cbdf":[2,0,0,25,6], -"d0/d20/classcudnn__frontend_1_1VariantPack__v8.html#aa9ce6c30e5e3c2df4d1e9fe2fb4cd6f5":[2,0,0,25,0], -"d0/d20/classcudnn__frontend_1_1VariantPack__v8.html#ab2712c9ad5eeaf561408d7245938d0c6":[2,0,0,25,2], -"d0/d20/classcudnn__frontend_1_1VariantPack__v8.html#afeaea07e176fa0c943704285f258ba28":[2,0,0,25,8], -"d1/d28/classcudnn__frontend_1_1EngineHeuristicsBuilder__v8.html":[2,0,0,12], -"d1/d28/classcudnn__frontend_1_1EngineHeuristicsBuilder__v8.html#a19d632b9f96c91bad2b18446cf32f491":[2,0,0,12,3], -"d1/d28/classcudnn__frontend_1_1EngineHeuristicsBuilder__v8.html#a5228a4a3af391fad0141f30a24be730b":[2,0,0,12,5], -"d1/d28/classcudnn__frontend_1_1EngineHeuristicsBuilder__v8.html#a5667e4567520189eaa96fcd6e934cb29":[2,0,0,12,0], -"d1/d28/classcudnn__frontend_1_1EngineHeuristicsBuilder__v8.html#a8740e967b981abf94dc2c53eb8786ceb":[2,0,0,12,1], -"d1/d28/classcudnn__frontend_1_1EngineHeuristicsBuilder__v8.html#aa046a778075f260f7950ee5a51c2addb":[2,0,0,12,8], -"d1/d28/classcudnn__frontend_1_1EngineHeuristicsBuilder__v8.html#ab3ff1b538521fdea588d8ac155f6e88c":[2,0,0,12,4], -"d1/d28/classcudnn__frontend_1_1EngineHeuristicsBuilder__v8.html#af5318bb3e2700f53e299f8526e7a524f":[2,0,0,12,2], -"d1/d29/classcudnn__frontend_1_1OperationBuilder__v8.html":[2,0,0,18], -"d1/d29/classcudnn__frontend_1_1OperationBuilder__v8.html#a8724628060c71b17e7458c01338b234a":[2,0,0,18,16], -"d1/d29/classcudnn__frontend_1_1OperationBuilder__v8.html#aa0df558c603d8316dd3eb2d5bfd67c9d":[2,0,0,18,1], -"d1/d29/classcudnn__frontend_1_1OperationBuilder__v8.html#ad82e287889be2ebef348a00479ce3bc0":[2,0,0,18,15], -"d1/d74/classcudnn__frontend_1_1ExecutionPlanBuilder__v8.html":[2,0,0,15], -"d1/de7/cudnn__frontend__ConvDesc_8h.html":[3,0,2], -"d1/de7/cudnn__frontend__ConvDesc_8h_source.html":[3,0,2], -"d1/df7/group__OperationGraphQuery.html":[0,8], -"d1/df7/group__OperationGraphQuery.html#ga7a7a8d03f5a3aa54f14b83be4abe2a26":[0,8,0], -"d1/df7/group__OperationGraphQuery.html#ga7a7a8d03f5a3aa54f14b83be4abe2a26":[2,0,0,19,5], -"d2/d3b/cudnn__frontend__get__plan_8h.html":[3,0,10], -"d2/d3b/cudnn__frontend__get__plan_8h_source.html":[3,0,10], -"d2/db5/group__PointWiseDescBuilder__v8.html":[0,10], -"d2/db5/group__PointWiseDescBuilder__v8.html#ga124ebb4a416c645cd0b68f59545c62a8":[0,10,0], -"d2/db5/group__PointWiseDescBuilder__v8.html#ga124ebb4a416c645cd0b68f59545c62a8":[2,0,0,22,6], -"d2/db5/group__PointWiseDescBuilder__v8.html#ga3efa065fc125c5af06bd0a9c543bdb9f":[0,10,1], -"d2/db5/group__PointWiseDescBuilder__v8.html#ga3efa065fc125c5af06bd0a9c543bdb9f":[2,0,0,22,7], -"d2/db5/group__PointWiseDescBuilder__v8.html#ga48264536e68f952e92a0bdbaa84d9363":[0,10,2], -"d2/db5/group__PointWiseDescBuilder__v8.html#ga48264536e68f952e92a0bdbaa84d9363":[2,0,0,22,8], -"d2/db5/group__PointWiseDescBuilder__v8.html#gae5240136e19e0a4094036d48c6b1a3b7":[0,10,3], -"d2/db5/group__PointWiseDescBuilder__v8.html#gae5240136e19e0a4094036d48c6b1a3b7":[2,0,0,22,9], -"d2/dbb/group__EngineConfigBuilder__v8.html":[0,2], -"d2/dbb/group__EngineConfigBuilder__v8.html#ga9673b31268901dfcb97896958687a42a":[0,2,0], -"d2/dbb/group__EngineConfigBuilder__v8.html#ga9673b31268901dfcb97896958687a42a":[2,0,0,7,6], -"d2/df5/group__OperationGraphBuilder__v8.html":[0,9], -"d2/df5/group__OperationGraphBuilder__v8.html#ga4e4cee8d631471478d5de420077a2182":[0,9,1], -"d2/df5/group__OperationGraphBuilder__v8.html#ga4e4cee8d631471478d5de420077a2182":[2,0,0,20,7], -"d2/df5/group__OperationGraphBuilder__v8.html#ga5b5d8a3121e92a8a7d47341b424298f8":[0,9,0], -"d2/df5/group__OperationGraphBuilder__v8.html#ga5b5d8a3121e92a8a7d47341b424298f8":[2,0,0,20,6], -"d3/d09/group__EngineBuilder__v8.html":[0,1], -"d3/d09/group__EngineBuilder__v8.html#ga0ceef322363405504dbdc4d1f3c9949a":[2,0,0,5,7], -"d3/d09/group__EngineBuilder__v8.html#ga0ceef322363405504dbdc4d1f3c9949a":[0,1,1], -"d3/d09/group__EngineBuilder__v8.html#ga27466cecb45496d001cfbe4de4b5c5a9":[2,0,0,5,8], -"d3/d09/group__EngineBuilder__v8.html#ga27466cecb45496d001cfbe4de4b5c5a9":[0,1,2], -"d3/d09/group__EngineBuilder__v8.html#ga2b171d44da46865d536236bb01103005":[2,0,0,5,6], -"d3/d09/group__EngineBuilder__v8.html#ga2b171d44da46865d536236bb01103005":[0,1,0], -"d3/d09/group__EngineBuilder__v8.html#ga7220dab88f9fed1704c9d78d9771be5f":[0,1,3], -"d3/d09/group__EngineBuilder__v8.html#ga7220dab88f9fed1704c9d78d9771be5f":[2,0,0,5,9], -"d3/d3c/group__TensorBuilder__v8.html":[0,11], -"d3/d3c/group__TensorBuilder__v8.html#ga385ec2c39e6386af7421f27330ed128b":[0,11,0], -"d3/d3c/group__TensorBuilder__v8.html#ga385ec2c39e6386af7421f27330ed128b":[2,0,0,24,6], -"d3/d3c/group__TensorBuilder__v8.html#ga3de3d95beb2234dc2a741d23703f8ed2":[0,11,4], -"d3/d3c/group__TensorBuilder__v8.html#ga3de3d95beb2234dc2a741d23703f8ed2":[2,0,0,24,10], -"d3/d3c/group__TensorBuilder__v8.html#ga6bdaeab1bff548d375e57936b64fb05a":[0,11,3], -"d3/d3c/group__TensorBuilder__v8.html#ga6bdaeab1bff548d375e57936b64fb05a":[2,0,0,24,9], -"d3/d3c/group__TensorBuilder__v8.html#ga7d5d978de243e47938eb1f224a38d02d":[0,11,5], -"d3/d3c/group__TensorBuilder__v8.html#ga7d5d978de243e47938eb1f224a38d02d":[2,0,0,24,11], -"d3/d3c/group__TensorBuilder__v8.html#ga98275e4d36e37ef5d73f13bd80f164a3":[0,11,1], -"d3/d3c/group__TensorBuilder__v8.html#ga98275e4d36e37ef5d73f13bd80f164a3":[2,0,0,24,7], -"d3/d3c/group__TensorBuilder__v8.html#gae828806e2d76ca3eb6c4e289f2e93a96":[0,11,2], -"d3/d3c/group__TensorBuilder__v8.html#gae828806e2d76ca3eb6c4e289f2e93a96":[2,0,0,24,8], -"d3/d6b/cudnn__frontend__find__plan_8h.html":[3,0,9], -"d3/d6b/cudnn__frontend__find__plan_8h.html#a148478701949f58a44912cc61dbda1e4":[3,0,9,0], -"d3/d6b/cudnn__frontend__find__plan_8h_source.html":[3,0,9], -"d3/d92/group__OperationBuilder__v8.html":[0,7], -"d3/d92/group__OperationBuilder__v8.html#ga04c2492a5376f1a74a57fb49fa7b3599":[0,7,12], -"d3/d92/group__OperationBuilder__v8.html#ga04c2492a5376f1a74a57fb49fa7b3599":[2,0,0,18,13], -"d3/d92/group__OperationBuilder__v8.html#ga06cdcfeda1b702412be41addd73bb947":[2,0,0,18,4], -"d3/d92/group__OperationBuilder__v8.html#ga06cdcfeda1b702412be41addd73bb947":[0,7,3], -"d3/d92/group__OperationBuilder__v8.html#ga17475846760b10ffdfa536cd92a5b135":[2,0,0,18,6], -"d3/d92/group__OperationBuilder__v8.html#ga17475846760b10ffdfa536cd92a5b135":[0,7,5], -"d3/d92/group__OperationBuilder__v8.html#ga29752062b7308c8da0e625eb35431652":[2,0,0,18,8], -"d3/d92/group__OperationBuilder__v8.html#ga29752062b7308c8da0e625eb35431652":[0,7,7], -"d3/d92/group__OperationBuilder__v8.html#ga3c63744504f65383ce0b847bea804e3f":[2,0,0,18,3], -"d3/d92/group__OperationBuilder__v8.html#ga3c63744504f65383ce0b847bea804e3f":[0,7,2], -"d3/d92/group__OperationBuilder__v8.html#ga425dd00708eaaadffe1c83ef356dc333":[2,0,0,18,0], -"d3/d92/group__OperationBuilder__v8.html#ga425dd00708eaaadffe1c83ef356dc333":[0,7,0], -"d3/d92/group__OperationBuilder__v8.html#ga459671e9d26640528fcf683aaeef05df":[2,0,0,18,5], -"d3/d92/group__OperationBuilder__v8.html#ga459671e9d26640528fcf683aaeef05df":[0,7,4], -"d3/d92/group__OperationBuilder__v8.html#ga5910bc2209e1b648c1aa0edce7f11e01":[0,7,13], -"d3/d92/group__OperationBuilder__v8.html#ga5910bc2209e1b648c1aa0edce7f11e01":[2,0,0,18,14], -"d3/d92/group__OperationBuilder__v8.html#ga65a9ad73912ff46becc93ee451da6af5":[2,0,0,18,7], -"d3/d92/group__OperationBuilder__v8.html#ga65a9ad73912ff46becc93ee451da6af5":[0,7,6], -"d3/d92/group__OperationBuilder__v8.html#ga80466e517e980ba4953e085b3d4e3498":[2,0,0,18,11], -"d3/d92/group__OperationBuilder__v8.html#ga80466e517e980ba4953e085b3d4e3498":[0,7,10], -"d3/d92/group__OperationBuilder__v8.html#gaa82e018b6a9d514ad912b922f43adad2":[2,0,0,18,9], -"d3/d92/group__OperationBuilder__v8.html#gaa82e018b6a9d514ad912b922f43adad2":[0,7,8], -"d3/d92/group__OperationBuilder__v8.html#gab4241b96e7374d821681e97259d39d83":[2,0,0,18,2], -"d3/d92/group__OperationBuilder__v8.html#gab4241b96e7374d821681e97259d39d83":[0,7,1], -"d3/d92/group__OperationBuilder__v8.html#gae6b06877b2e675b2a390f0b122100669":[2,0,0,18,10], -"d3/d92/group__OperationBuilder__v8.html#gae6b06877b2e675b2a390f0b122100669":[0,7,9], -"d3/d92/group__OperationBuilder__v8.html#gaefa06fdaae3b28c6ef08a0189e2a3d3a":[2,0,0,18,12], -"d3/d92/group__OperationBuilder__v8.html#gaefa06fdaae3b28c6ef08a0189e2a3d3a":[0,7,11], -"d3/d98/cudnn__frontend__Tensor_8h.html":[3,0,15], -"d3/d98/cudnn__frontend__Tensor_8h_source.html":[3,0,15], -"d3/ddd/group__ConvDescBuilder__v8.html":[0,0], -"d3/ddd/group__ConvDescBuilder__v8.html#ga2c481d46d71fe909247f50ba2772b7ce":[0,0,6], -"d3/ddd/group__ConvDescBuilder__v8.html#ga2c481d46d71fe909247f50ba2772b7ce":[2,0,0,2,12], -"d3/ddd/group__ConvDescBuilder__v8.html#ga3b752afba659c8e92e7ad1ca71d62f2f":[2,0,0,2,8], -"d3/ddd/group__ConvDescBuilder__v8.html#ga3b752afba659c8e92e7ad1ca71d62f2f":[0,0,2], -"d3/ddd/group__ConvDescBuilder__v8.html#ga44915183cb4dddcf23222faca3f84bba":[0,0,4], -"d3/ddd/group__ConvDescBuilder__v8.html#ga44915183cb4dddcf23222faca3f84bba":[2,0,0,2,10], -"d3/ddd/group__ConvDescBuilder__v8.html#gaa41e2cbbebc9d2fd19fa990a48b39d08":[2,0,0,2,7], -"d3/ddd/group__ConvDescBuilder__v8.html#gaa41e2cbbebc9d2fd19fa990a48b39d08":[0,0,1], -"d3/ddd/group__ConvDescBuilder__v8.html#gaacfcf20b0ed61e89bc92970f7bb7a258":[2,0,0,2,9], -"d3/ddd/group__ConvDescBuilder__v8.html#gaacfcf20b0ed61e89bc92970f7bb7a258":[0,0,3], -"d3/ddd/group__ConvDescBuilder__v8.html#gab07bf6292e69d19e6324d3073a86d58c":[2,0,0,2,11], -"d3/ddd/group__ConvDescBuilder__v8.html#gab07bf6292e69d19e6324d3073a86d58c":[0,0,5], -"d3/ddd/group__ConvDescBuilder__v8.html#gad8de00b0e7a86bdda61749e7572a35ac":[2,0,0,2,6], -"d3/ddd/group__ConvDescBuilder__v8.html#gad8de00b0e7a86bdda61749e7572a35ac":[0,0,0], -"d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html":[2,0,0,21], -"d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#a1407b6ad40df9af7b191fdf636c2c508":[2,0,0,21,8], -"d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#a26f1b0f84dc331ca9f1330cf6f425d36":[2,0,0,21,9], -"d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#a44917fdd66ea262687c0f0af3ef3b424":[2,0,0,21,1], -"d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#a66ada0a9313ced7ed2801097ef523de8":[2,0,0,21,4], -"d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#a740aed43da4ed8ab351d926cee6bfc6a":[2,0,0,21,12], -"d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#a7f1bee44a57b6dad1ce493cd18ffbc18":[2,0,0,21,10], -"d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#a81b0fa4b9ff8bfd2c23ae704f7211962":[2,0,0,21,6], -"d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#a963d8bd60aa5d7c5385d5d41595c2cf3":[2,0,0,21,5], -"d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#ac00ed56ba83a04edca3f55125332646b":[2,0,0,21,2], -"d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#ac2e07a514ec114222b65948960ba76a3":[2,0,0,21,0], -"d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#ad6d99d57f2a5b345fe5af5bc777b8d1c":[2,0,0,21,11], -"d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#ae3cd0c0051c7e29a9ad86b80308429f3":[2,0,0,21,7], -"d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#ae4f638eb928772c13c314f4a022d4978":[2,0,0,21,3], -"d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#afcb75336d3b99afcec3bb947c1f1a0e8":[2,0,0,21,13], -"d4/d30/classcudnn__frontend_1_1Operation__v8.html":[2,0,0,17], -"d4/d30/classcudnn__frontend_1_1Operation__v8.html#a01d1997ae84b86c0565351910bba3416":[2,0,0,17,24], -"d4/d30/classcudnn__frontend_1_1Operation__v8.html#a0414d5eb022c25584d60491f416e6449":[2,0,0,17,13], -"d4/d30/classcudnn__frontend_1_1Operation__v8.html#a091bf74144eaec6149d610faa289160e":[2,0,0,17,3], -"d4/d30/classcudnn__frontend_1_1Operation__v8.html#a09f5151a90f805d81550a30617bcec0c":[2,0,0,17,20], -"d4/d30/classcudnn__frontend_1_1Operation__v8.html#a0f14ddfbaae6e62375c46dd0d5ed993d":[2,0,0,17,16], -"d4/d30/classcudnn__frontend_1_1Operation__v8.html#a1118f19807c9f58cc1d0892bdb1f8c94":[2,0,0,17,15], -"d4/d30/classcudnn__frontend_1_1Operation__v8.html#a1305e0cdaeb029fd52eb189254afe18c":[2,0,0,17,14], -"d4/d30/classcudnn__frontend_1_1Operation__v8.html#a19856fbb973574342efedc43134af3a7":[2,0,0,17,17], -"d4/d30/classcudnn__frontend_1_1Operation__v8.html#a3425a8550eb9f622dc4101d3d5d2c0e1":[2,0,0,17,4], -"d4/d30/classcudnn__frontend_1_1Operation__v8.html#a4003061754cc4b0003a72cc474fca8d9":[2,0,0,17,10], -"d4/d30/classcudnn__frontend_1_1Operation__v8.html#a43cbfcab995a238e2001c4ec6543ae50":[2,0,0,17,18], -"d4/d30/classcudnn__frontend_1_1Operation__v8.html#a4a71d73a1231c39e51a74f750586a733":[2,0,0,17,12], -"d4/d30/classcudnn__frontend_1_1Operation__v8.html#a4f533db7bc67978d1ec1a475f4ab9e1c":[2,0,0,17,9], -"d4/d30/classcudnn__frontend_1_1Operation__v8.html#a5012e920483271f655bc04d6f52dc41f":[2,0,0,17,7], -"d4/d30/classcudnn__frontend_1_1Operation__v8.html#a5c6b2986d2d703c672b5fc461f2eee05":[2,0,0,17,21], -"d4/d30/classcudnn__frontend_1_1Operation__v8.html#a67d82f53ecbdfe2416d2a26410138d78":[2,0,0,17,1], -"d4/d30/classcudnn__frontend_1_1Operation__v8.html#a736317246d52e774170bc60511870932":[2,0,0,17,19], -"d4/d30/classcudnn__frontend_1_1Operation__v8.html#a810b2f50d53d6655c2048d3c3afbcfc4":[2,0,0,17,2], -"d4/d30/classcudnn__frontend_1_1Operation__v8.html#a81e9b10c7231ba9ffba37f7fab531a69":[2,0,0,17,25], -"d4/d30/classcudnn__frontend_1_1Operation__v8.html#aac54965185417e264093156b143a3751":[2,0,0,17,22], -"d4/d30/classcudnn__frontend_1_1Operation__v8.html#ab2692d9f28861a73d590a53f979d26fa":[2,0,0,17,6], -"d4/d30/classcudnn__frontend_1_1Operation__v8.html#ac708bb46683440effd2f46b3888e378f":[2,0,0,17,8], -"d4/d30/classcudnn__frontend_1_1Operation__v8.html#ad26bd872d417f6a9bff65768bb02e05f":[2,0,0,17,23], -"d4/d30/classcudnn__frontend_1_1Operation__v8.html#ad45e7200660f993615e34ceeb9ec49c6":[2,0,0,17,0], -"d4/d30/classcudnn__frontend_1_1Operation__v8.html#ae5cba10d789e4d08b45339a702ba75f3":[2,0,0,17,5], -"d4/d30/classcudnn__frontend_1_1Operation__v8.html#aee00f6897786ce0f16963a7d2f57a2f8":[2,0,0,17,11], -"d4/d39/classcudnn__frontend_1_1OperationGraphBuilder__v8.html":[2,0,0,20], -"d4/d39/classcudnn__frontend_1_1OperationGraphBuilder__v8.html#a101b6c9515fdb333cdd3499f08774cf4":[2,0,0,20,0], -"d4/d39/classcudnn__frontend_1_1OperationGraphBuilder__v8.html#a40e8f7825f75c35c40d9938532a81d02":[2,0,0,20,2], -"d4/d39/classcudnn__frontend_1_1OperationGraphBuilder__v8.html#a45e8a324d62146f592b049f51d2e4552":[2,0,0,20,1], -"d4/d39/classcudnn__frontend_1_1OperationGraphBuilder__v8.html#a589dedb418679abda7f64e6b9e2800a1":[2,0,0,20,3], -"d4/d39/classcudnn__frontend_1_1OperationGraphBuilder__v8.html#a75dae8a911e005b960565d4a1a0024ba":[2,0,0,20,5], -"d4/d39/classcudnn__frontend_1_1OperationGraphBuilder__v8.html#ac78945f424f254f0060d4c2e1184cf1f":[2,0,0,20,4], -"d4/d39/classcudnn__frontend_1_1OperationGraphBuilder__v8.html#ad9cb3e166ab001b3b0c60ed2198cd6d9":[2,0,0,20,8], -"d4/d6b/group__EngineFallbackListBuilder__v8.html":[0,3], -"d4/d6b/group__EngineFallbackListBuilder__v8.html#ga45c7c761a47a7731055ad0f943449610":[0,3,1], -"d4/d6b/group__EngineFallbackListBuilder__v8.html#ga45c7c761a47a7731055ad0f943449610":[2,0,0,10,7], -"d4/d6b/group__EngineFallbackListBuilder__v8.html#gaf66485fe1a0faccab971edd0c70f04b4":[0,3,0], -"d4/d6b/group__EngineFallbackListBuilder__v8.html#gaf66485fe1a0faccab971edd0c70f04b4":[2,0,0,10,6], -"d4/dce/classcudnn__frontend_1_1VariantPackBuilder__v8.html":[2,0,0,26], -"d4/dce/classcudnn__frontend_1_1VariantPackBuilder__v8.html#a16d853685d603472bf260e500f55c145":[2,0,0,26,2], -"d4/dce/classcudnn__frontend_1_1VariantPackBuilder__v8.html#a27a6e5a2602262c35a8ea8533ef5a635":[2,0,0,26,1], -"d4/dce/classcudnn__frontend_1_1VariantPackBuilder__v8.html#a41a6e8afb46228fea2310f5cad75badc":[2,0,0,26,10], -"d4/dce/classcudnn__frontend_1_1VariantPackBuilder__v8.html#a7690f854d9e6fc2d4df059fca0e91c6a":[2,0,0,26,0], -"d4/dce/classcudnn__frontend_1_1VariantPackBuilder__v8.html#abf794751941aa252c19e1879306375d3":[2,0,0,26,4], -"d4/dce/classcudnn__frontend_1_1VariantPackBuilder__v8.html#ac7a523746975d15fd8dc54af0764dcb0":[2,0,0,26,3], -"d4/dce/classcudnn__frontend_1_1VariantPackBuilder__v8.html#acee84ffc33b41807cdcb18425e9fced1":[2,0,0,26,5], -"d4/de1/group__ExecutionPlanBuilder__v8.html":[0,4,0], -"d4/de1/group__ExecutionPlanBuilder__v8.html#ga4166679391fc2df54e25964c03ae6e8e":[2,0,0,15,9], -"d4/de1/group__ExecutionPlanBuilder__v8.html#ga4166679391fc2df54e25964c03ae6e8e":[0,4,0,3], -"d4/de1/group__ExecutionPlanBuilder__v8.html#gac5c23cff8c1424f71ef2cee2dc66cd3c":[2,0,0,15,6], -"d4/de1/group__ExecutionPlanBuilder__v8.html#gac5c23cff8c1424f71ef2cee2dc66cd3c":[0,4,0,0], -"d4/de1/group__ExecutionPlanBuilder__v8.html#gae0f92d5445da53253ff3460ac6aefffa":[2,0,0,15,8], -"d4/de1/group__ExecutionPlanBuilder__v8.html#gae0f92d5445da53253ff3460ac6aefffa":[0,4,0,2], -"d4/de1/group__ExecutionPlanBuilder__v8.html#gaf7010781cc8c0583a2d841ac6d9ed521":[2,0,0,15,7], -"d4/de1/group__ExecutionPlanBuilder__v8.html#gaf7010781cc8c0583a2d841ac6d9ed521":[0,4,0,1], -"d5/d02/classcudnn__frontend_1_1PointWiseDescBuilder__v8.html":[2,0,0,22], -"d5/d02/classcudnn__frontend_1_1PointWiseDescBuilder__v8.html#a5de642e4141705f8e06c4bf566f1d332":[2,0,0,22,4], -"d5/d02/classcudnn__frontend_1_1PointWiseDescBuilder__v8.html#a6f5605f25897bba7afc6baf76228828c":[2,0,0,22,0], -"d5/d02/classcudnn__frontend_1_1PointWiseDescBuilder__v8.html#a804a2b5438f464185b16a4652fc14cf5":[2,0,0,22,10], -"d5/d02/classcudnn__frontend_1_1PointWiseDescBuilder__v8.html#ac0d140493e21b164bc21dd0bcbeeaa65":[2,0,0,22,5], -"d5/d02/classcudnn__frontend_1_1PointWiseDescBuilder__v8.html#ad6a7549d62410d3de87040586b49b815":[2,0,0,22,2], -"d5/d02/classcudnn__frontend_1_1PointWiseDescBuilder__v8.html#aeccd727adb1d3b0b8d9d95b7f6e1b9ce":[2,0,0,22,3], -"d5/d02/classcudnn__frontend_1_1PointWiseDescBuilder__v8.html#af976fab4a7726609a1b10dc2a8bcdf65":[2,0,0,22,1], -"d5/d06/classcudnn__frontend_1_1ExecutionPlan__v8.html":[2,0,0,14], -"d5/d06/classcudnn__frontend_1_1ExecutionPlan__v8.html#a00c29ad02430927df9260c7e57ae7c7a":[2,0,0,14,9], -"d5/d06/classcudnn__frontend_1_1ExecutionPlan__v8.html#a8a8ac13b1c639dd9b87c280a598446af":[2,0,0,14,1], -"d5/d06/classcudnn__frontend_1_1ExecutionPlan__v8.html#ac388ed7f6911f704ed2618a3867fad72":[2,0,0,14,0], -"d5/d14/classcudnn__frontend_1_1OpaqueBackendPointer.html":[2,0,0,16], -"d5/d14/classcudnn__frontend_1_1OpaqueBackendPointer.html#a10487abe0a45d35824ec75b0d3894f21":[2,0,0,16,9], -"d5/d14/classcudnn__frontend_1_1OpaqueBackendPointer.html#a42a928eb5b2524d1c3f67b7200dd53c9":[2,0,0,16,0], -"d5/d14/classcudnn__frontend_1_1OpaqueBackendPointer.html#a47968d641c0da8d33882f86d8afa30b4":[2,0,0,16,8], -"d5/d14/classcudnn__frontend_1_1OpaqueBackendPointer.html#a997d733607e747516eb2334c51c48f29":[2,0,0,16,1], -"d5/d14/classcudnn__frontend_1_1OpaqueBackendPointer.html#a9f549dd95873ac3a02689ef97f4a6c75":[2,0,0,16,3], -"d5/d14/classcudnn__frontend_1_1OpaqueBackendPointer.html#aa9059097bb9161d454c6e17b03ca236c":[2,0,0,16,6], -"d5/d14/classcudnn__frontend_1_1OpaqueBackendPointer.html#aadf0c53d7aedb1c6c121b2736e98b2dd":[2,0,0,16,2], -"d5/d14/classcudnn__frontend_1_1OpaqueBackendPointer.html#abd4f69554da364008f3780e9dc3a5bfc":[2,0,0,16,5], -"d5/d14/classcudnn__frontend_1_1OpaqueBackendPointer.html#ac1700c7d96af0250e5721f5e5f9d95bc":[2,0,0,16,4], -"d5/d14/classcudnn__frontend_1_1OpaqueBackendPointer.html#adf5bf20f5bdfbfdecd05360830b34b89":[2,0,0,16,7], -"d5/d36/cudnn__frontend__Filters_8h.html":[3,0,8], -"d5/d36/cudnn__frontend__Filters_8h.html#a4d18e44a57e30f9bf29157f742ba9c65":[3,0,8,0], -"d5/d36/cudnn__frontend__Filters_8h.html#a75bb541476d93b039f5fd9f9d29242e6":[3,0,8,1], -"d5/d36/cudnn__frontend__Filters_8h_source.html":[3,0,8], -"d5/def/group__VariantPackBuilder__v8.html":[0,12], -"d5/def/group__VariantPackBuilder__v8.html#ga14d3ac479fd01c48a97583adfb567090":[0,12,1], -"d5/def/group__VariantPackBuilder__v8.html#ga14d3ac479fd01c48a97583adfb567090":[2,0,0,26,7], -"d5/def/group__VariantPackBuilder__v8.html#ga3a7b9ac8c714db202a8f89a6110675b6":[0,12,3], -"d5/def/group__VariantPackBuilder__v8.html#ga3a7b9ac8c714db202a8f89a6110675b6":[2,0,0,26,9], -"d5/def/group__VariantPackBuilder__v8.html#ga79c6def790139cb04aff8c600559b802":[0,12,0], -"d5/def/group__VariantPackBuilder__v8.html#ga79c6def790139cb04aff8c600559b802":[2,0,0,26,6], -"d5/def/group__VariantPackBuilder__v8.html#gad6dc5c5087c2724ca88cc2668d7f829d":[0,12,2], -"d5/def/group__VariantPackBuilder__v8.html#gad6dc5c5087c2724ca88cc2668d7f829d":[2,0,0,26,8], -"d6/d1b/structcudnn__frontend_1_1executionOption.html":[2,0,0,13], -"d6/d1b/structcudnn__frontend_1_1executionOption.html#a56b496b09272c352b557d793adc3acf1":[2,0,0,13,1], -"d6/d1b/structcudnn__frontend_1_1executionOption.html#ae84235aee01c4556303b39961e1e1c5e":[2,0,0,13,0], -"d6/d46/group__EngineHeuristicsQuery.html":[0,5], -"d6/d46/group__EngineHeuristicsQuery.html#ga10121605fc82ed225537210825fa3836":[0,5,1], -"d6/d46/group__EngineHeuristicsQuery.html#ga10121605fc82ed225537210825fa3836":[2,0,0,11,6], -"d6/d46/group__EngineHeuristicsQuery.html#ga1171cb5ce50baf0fab19fc458d4565b5":[0,5,0], -"d6/d46/group__EngineHeuristicsQuery.html#ga1171cb5ce50baf0fab19fc458d4565b5":[2,0,0,11,5], -"d6/d51/cudnn__frontend__ExecutionPlan_8h.html":[3,0,7], -"d6/d51/cudnn__frontend__ExecutionPlan_8h_source.html":[3,0,7], -"d6/d67/cudnn__frontend__EngineConfig_8h.html":[3,0,4], -"d6/d67/cudnn__frontend__EngineConfig_8h.html#a84a5f004bdf17747bf7cf45d6fc754cd":[3,0,4,2], -"d6/d67/cudnn__frontend__EngineConfig_8h_source.html":[3,0,4], -"d6/d73/classcudnn__frontend_1_1ConvDesc__v8.html":[2,0,0,1], -"d6/d73/classcudnn__frontend_1_1ConvDesc__v8.html#a00c454e18392653a023f75275553a4e7":[2,0,0,1,6], -"d6/d73/classcudnn__frontend_1_1ConvDesc__v8.html#a061ef887bdf383d416ee143a35d5c334":[2,0,0,1,3], -"d6/d73/classcudnn__frontend_1_1ConvDesc__v8.html#a0d36a97abb2d36a0148ce8e8833baff8":[2,0,0,1,4], -"d6/d73/classcudnn__frontend_1_1ConvDesc__v8.html#a0d930ada709a855c86b2857a1b155d02":[2,0,0,1,1], -"d6/d73/classcudnn__frontend_1_1ConvDesc__v8.html#a28e6ad906bf25653c87525f9f8e90a28":[2,0,0,1,12], -"d6/d73/classcudnn__frontend_1_1ConvDesc__v8.html#a4a0249ac1d094f9a70967dd69b824f2e":[2,0,0,1,7] +"annotated.html":[4,0], +"classes.html":[4,1], +"d0/d20/classcudnn__frontend_1_1VariantPack__v8.html":[4,0,0,27], +"d0/d20/classcudnn__frontend_1_1VariantPack__v8.html#a0f8d91939842bb9003fe71280f0b230c":[4,0,0,27,10], +"d0/d20/classcudnn__frontend_1_1VariantPack__v8.html#a3a03ddd893f41a9ce6ca674bbfae7434":[4,0,0,27,7], +"d0/d20/classcudnn__frontend_1_1VariantPack__v8.html#a3f85d13ac1341b67d85f18761f8dcb35":[4,0,0,27,5], +"d0/d20/classcudnn__frontend_1_1VariantPack__v8.html#a55a7b12efe39ed7a24631ed05630721d":[4,0,0,27,1], +"d0/d20/classcudnn__frontend_1_1VariantPack__v8.html#a5c3371913fd88b20557bcc4d8ef93219":[4,0,0,27,9], +"d0/d20/classcudnn__frontend_1_1VariantPack__v8.html#a7ba1c4736d3b0f187dc06344ca4e2032":[4,0,0,27,4], +"d0/d20/classcudnn__frontend_1_1VariantPack__v8.html#a7d3416a4e2f6a67e1988e3b3cb77e88b":[4,0,0,27,3], +"d0/d20/classcudnn__frontend_1_1VariantPack__v8.html#a8fcb5ec8a09de5a6f1f326f2e623cbdf":[4,0,0,27,6], +"d0/d20/classcudnn__frontend_1_1VariantPack__v8.html#aa9ce6c30e5e3c2df4d1e9fe2fb4cd6f5":[4,0,0,27,0], +"d0/d20/classcudnn__frontend_1_1VariantPack__v8.html#ab2712c9ad5eeaf561408d7245938d0c6":[4,0,0,27,2], +"d0/d20/classcudnn__frontend_1_1VariantPack__v8.html#afeaea07e176fa0c943704285f258ba28":[4,0,0,27,8], +"d1/d28/classcudnn__frontend_1_1EngineHeuristicsBuilder__v8.html":[4,0,0,12], +"d1/d28/classcudnn__frontend_1_1EngineHeuristicsBuilder__v8.html#a19d632b9f96c91bad2b18446cf32f491":[4,0,0,12,3], +"d1/d28/classcudnn__frontend_1_1EngineHeuristicsBuilder__v8.html#a5228a4a3af391fad0141f30a24be730b":[4,0,0,12,5], +"d1/d28/classcudnn__frontend_1_1EngineHeuristicsBuilder__v8.html#a5667e4567520189eaa96fcd6e934cb29":[4,0,0,12,0], +"d1/d28/classcudnn__frontend_1_1EngineHeuristicsBuilder__v8.html#a8740e967b981abf94dc2c53eb8786ceb":[4,0,0,12,1], +"d1/d28/classcudnn__frontend_1_1EngineHeuristicsBuilder__v8.html#aa046a778075f260f7950ee5a51c2addb":[4,0,0,12,8], +"d1/d28/classcudnn__frontend_1_1EngineHeuristicsBuilder__v8.html#ab3ff1b538521fdea588d8ac155f6e88c":[4,0,0,12,4], +"d1/d28/classcudnn__frontend_1_1EngineHeuristicsBuilder__v8.html#af5318bb3e2700f53e299f8526e7a524f":[4,0,0,12,2], +"d1/d29/classcudnn__frontend_1_1OperationBuilder__v8.html":[4,0,0,20], +"d1/d29/classcudnn__frontend_1_1OperationBuilder__v8.html#a8724628060c71b17e7458c01338b234a":[4,0,0,20,26], +"d1/d29/classcudnn__frontend_1_1OperationBuilder__v8.html#a98044359c005b796e35fba1a5b689f3d":[4,0,0,20,25], +"d1/d29/classcudnn__frontend_1_1OperationBuilder__v8.html#aa0df558c603d8316dd3eb2d5bfd67c9d":[4,0,0,20,1], +"d1/d29/classcudnn__frontend_1_1OperationBuilder__v8.html#ac806a488b58cc78e338ba96eccee70fd":[4,0,0,20,24], +"d1/d29/classcudnn__frontend_1_1OperationBuilder__v8.html#ad82e287889be2ebef348a00479ce3bc0":[4,0,0,20,23], +"d1/d74/classcudnn__frontend_1_1ExecutionPlanBuilder__v8.html":[4,0,0,15], +"d1/de7/cudnn__frontend__ConvDesc_8h.html":[5,0,2], +"d1/de7/cudnn__frontend__ConvDesc_8h_source.html":[5,0,2], +"d1/df7/group__OperationGraphQuery.html":[2,9], +"d1/df7/group__OperationGraphQuery.html#ga7a7a8d03f5a3aa54f14b83be4abe2a26":[2,9,0], +"d1/df7/group__OperationGraphQuery.html#ga7a7a8d03f5a3aa54f14b83be4abe2a26":[4,0,0,21,5], +"d2/d3b/cudnn__frontend__get__plan_8h.html":[5,0,10], +"d2/d3b/cudnn__frontend__get__plan_8h_source.html":[5,0,10], +"d2/db5/group__PointWiseDescBuilder__v8.html":[2,11], +"d2/db5/group__PointWiseDescBuilder__v8.html#ga124ebb4a416c645cd0b68f59545c62a8":[2,11,0], +"d2/db5/group__PointWiseDescBuilder__v8.html#ga124ebb4a416c645cd0b68f59545c62a8":[4,0,0,24,6], +"d2/db5/group__PointWiseDescBuilder__v8.html#ga3efa065fc125c5af06bd0a9c543bdb9f":[2,11,1], +"d2/db5/group__PointWiseDescBuilder__v8.html#ga3efa065fc125c5af06bd0a9c543bdb9f":[4,0,0,24,8], +"d2/db5/group__PointWiseDescBuilder__v8.html#ga48264536e68f952e92a0bdbaa84d9363":[2,11,2], +"d2/db5/group__PointWiseDescBuilder__v8.html#ga48264536e68f952e92a0bdbaa84d9363":[4,0,0,24,9], +"d2/db5/group__PointWiseDescBuilder__v8.html#gae5240136e19e0a4094036d48c6b1a3b7":[2,11,3], +"d2/db5/group__PointWiseDescBuilder__v8.html#gae5240136e19e0a4094036d48c6b1a3b7":[4,0,0,24,10], +"d2/dbb/group__EngineConfigBuilder__v8.html":[2,2], +"d2/dbb/group__EngineConfigBuilder__v8.html#ga9673b31268901dfcb97896958687a42a":[2,2,0], +"d2/dbb/group__EngineConfigBuilder__v8.html#ga9673b31268901dfcb97896958687a42a":[4,0,0,7,6], +"d2/df5/group__OperationGraphBuilder__v8.html":[2,10], +"d2/df5/group__OperationGraphBuilder__v8.html#ga4e4cee8d631471478d5de420077a2182":[2,10,1], +"d2/df5/group__OperationGraphBuilder__v8.html#ga4e4cee8d631471478d5de420077a2182":[4,0,0,22,7], +"d2/df5/group__OperationGraphBuilder__v8.html#ga5b5d8a3121e92a8a7d47341b424298f8":[2,10,0], +"d2/df5/group__OperationGraphBuilder__v8.html#ga5b5d8a3121e92a8a7d47341b424298f8":[4,0,0,22,6], +"d3/d09/group__EngineBuilder__v8.html":[2,1], +"d3/d09/group__EngineBuilder__v8.html#ga0ceef322363405504dbdc4d1f3c9949a":[2,1,1], +"d3/d09/group__EngineBuilder__v8.html#ga0ceef322363405504dbdc4d1f3c9949a":[4,0,0,5,7], +"d3/d09/group__EngineBuilder__v8.html#ga2b171d44da46865d536236bb01103005":[2,1,0], +"d3/d09/group__EngineBuilder__v8.html#ga2b171d44da46865d536236bb01103005":[4,0,0,5,6], +"d3/d09/group__EngineBuilder__v8.html#ga7220dab88f9fed1704c9d78d9771be5f":[2,1,2], +"d3/d09/group__EngineBuilder__v8.html#ga7220dab88f9fed1704c9d78d9771be5f":[4,0,0,5,8], +"d3/d3c/group__TensorBuilder__v8.html":[2,12], +"d3/d3c/group__TensorBuilder__v8.html#ga385ec2c39e6386af7421f27330ed128b":[2,12,0], +"d3/d3c/group__TensorBuilder__v8.html#ga385ec2c39e6386af7421f27330ed128b":[4,0,0,26,6], +"d3/d3c/group__TensorBuilder__v8.html#ga3de3d95beb2234dc2a741d23703f8ed2":[2,12,4], +"d3/d3c/group__TensorBuilder__v8.html#ga3de3d95beb2234dc2a741d23703f8ed2":[4,0,0,26,10], +"d3/d3c/group__TensorBuilder__v8.html#ga6bdaeab1bff548d375e57936b64fb05a":[2,12,3], +"d3/d3c/group__TensorBuilder__v8.html#ga6bdaeab1bff548d375e57936b64fb05a":[4,0,0,26,9], +"d3/d3c/group__TensorBuilder__v8.html#ga7d5d978de243e47938eb1f224a38d02d":[2,12,5], +"d3/d3c/group__TensorBuilder__v8.html#ga7d5d978de243e47938eb1f224a38d02d":[4,0,0,26,11], +"d3/d3c/group__TensorBuilder__v8.html#ga98275e4d36e37ef5d73f13bd80f164a3":[2,12,1], +"d3/d3c/group__TensorBuilder__v8.html#ga98275e4d36e37ef5d73f13bd80f164a3":[4,0,0,26,7], +"d3/d3c/group__TensorBuilder__v8.html#gae828806e2d76ca3eb6c4e289f2e93a96":[2,12,2], +"d3/d3c/group__TensorBuilder__v8.html#gae828806e2d76ca3eb6c4e289f2e93a96":[4,0,0,26,8], +"d3/d6b/cudnn__frontend__find__plan_8h.html":[5,0,9], +"d3/d6b/cudnn__frontend__find__plan_8h.html#a148478701949f58a44912cc61dbda1e4":[5,0,9,0], +"d3/d6b/cudnn__frontend__find__plan_8h_source.html":[5,0,9], +"d3/d92/group__OperationBuilder__v8.html":[2,8], +"d3/d92/group__OperationBuilder__v8.html#ga04c2492a5376f1a74a57fb49fa7b3599":[2,8,20], +"d3/d92/group__OperationBuilder__v8.html#ga04c2492a5376f1a74a57fb49fa7b3599":[4,0,0,20,21], +"d3/d92/group__OperationBuilder__v8.html#ga06cdcfeda1b702412be41addd73bb947":[4,0,0,20,4], +"d3/d92/group__OperationBuilder__v8.html#ga06cdcfeda1b702412be41addd73bb947":[2,8,3], +"d3/d92/group__OperationBuilder__v8.html#ga08f3d4cb5138174127d0f6899f7bc53b":[2,8,14], +"d3/d92/group__OperationBuilder__v8.html#ga08f3d4cb5138174127d0f6899f7bc53b":[4,0,0,20,15], +"d3/d92/group__OperationBuilder__v8.html#ga095c52c8f1b01ebb224265f9000195c0":[4,0,0,20,6], +"d3/d92/group__OperationBuilder__v8.html#ga095c52c8f1b01ebb224265f9000195c0":[2,8,5], +"d3/d92/group__OperationBuilder__v8.html#ga17475846760b10ffdfa536cd92a5b135":[4,0,0,20,7], +"d3/d92/group__OperationBuilder__v8.html#ga17475846760b10ffdfa536cd92a5b135":[2,8,6], +"d3/d92/group__OperationBuilder__v8.html#ga29752062b7308c8da0e625eb35431652":[4,0,0,20,9], +"d3/d92/group__OperationBuilder__v8.html#ga29752062b7308c8da0e625eb35431652":[2,8,8], +"d3/d92/group__OperationBuilder__v8.html#ga35fa5c453a6cd989f35e47c29e6ec665":[2,8,13], +"d3/d92/group__OperationBuilder__v8.html#ga35fa5c453a6cd989f35e47c29e6ec665":[4,0,0,20,14], +"d3/d92/group__OperationBuilder__v8.html#ga3c63744504f65383ce0b847bea804e3f":[4,0,0,20,3], +"d3/d92/group__OperationBuilder__v8.html#ga3c63744504f65383ce0b847bea804e3f":[2,8,2], +"d3/d92/group__OperationBuilder__v8.html#ga3ca1f62832f998566c1b07b4b3c71db4":[2,8,16], +"d3/d92/group__OperationBuilder__v8.html#ga3ca1f62832f998566c1b07b4b3c71db4":[4,0,0,20,17], +"d3/d92/group__OperationBuilder__v8.html#ga425dd00708eaaadffe1c83ef356dc333":[4,0,0,20,0], +"d3/d92/group__OperationBuilder__v8.html#ga425dd00708eaaadffe1c83ef356dc333":[2,8,0], +"d3/d92/group__OperationBuilder__v8.html#ga459671e9d26640528fcf683aaeef05df":[4,0,0,20,5], +"d3/d92/group__OperationBuilder__v8.html#ga459671e9d26640528fcf683aaeef05df":[2,8,4], +"d3/d92/group__OperationBuilder__v8.html#ga5910bc2209e1b648c1aa0edce7f11e01":[2,8,21], +"d3/d92/group__OperationBuilder__v8.html#ga5910bc2209e1b648c1aa0edce7f11e01":[4,0,0,20,22], +"d3/d92/group__OperationBuilder__v8.html#ga5e5d463d5531a9378280fa4b1aee6f63":[2,8,12], +"d3/d92/group__OperationBuilder__v8.html#ga5e5d463d5531a9378280fa4b1aee6f63":[4,0,0,20,13], +"d3/d92/group__OperationBuilder__v8.html#ga65a9ad73912ff46becc93ee451da6af5":[4,0,0,20,8], +"d3/d92/group__OperationBuilder__v8.html#ga65a9ad73912ff46becc93ee451da6af5":[2,8,7], +"d3/d92/group__OperationBuilder__v8.html#ga80466e517e980ba4953e085b3d4e3498":[2,8,18], +"d3/d92/group__OperationBuilder__v8.html#ga80466e517e980ba4953e085b3d4e3498":[4,0,0,20,19], +"d3/d92/group__OperationBuilder__v8.html#ga9e4a1e9a233b44cca5b65f0af172b001":[2,8,15], +"d3/d92/group__OperationBuilder__v8.html#ga9e4a1e9a233b44cca5b65f0af172b001":[4,0,0,20,16], +"d3/d92/group__OperationBuilder__v8.html#gaa82e018b6a9d514ad912b922f43adad2":[2,8,10], +"d3/d92/group__OperationBuilder__v8.html#gaa82e018b6a9d514ad912b922f43adad2":[4,0,0,20,11], +"d3/d92/group__OperationBuilder__v8.html#gaa8eed29a0181e044ea0263ba655127ec":[4,0,0,20,10], +"d3/d92/group__OperationBuilder__v8.html#gaa8eed29a0181e044ea0263ba655127ec":[2,8,9], +"d3/d92/group__OperationBuilder__v8.html#gaaf9d7cbc65c7c7526a6f15d4ad2952fa":[2,8,11], +"d3/d92/group__OperationBuilder__v8.html#gaaf9d7cbc65c7c7526a6f15d4ad2952fa":[4,0,0,20,12], +"d3/d92/group__OperationBuilder__v8.html#gab4241b96e7374d821681e97259d39d83":[4,0,0,20,2], +"d3/d92/group__OperationBuilder__v8.html#gab4241b96e7374d821681e97259d39d83":[2,8,1], +"d3/d92/group__OperationBuilder__v8.html#gae6b06877b2e675b2a390f0b122100669":[2,8,17], +"d3/d92/group__OperationBuilder__v8.html#gae6b06877b2e675b2a390f0b122100669":[4,0,0,20,18], +"d3/d92/group__OperationBuilder__v8.html#gaefa06fdaae3b28c6ef08a0189e2a3d3a":[2,8,19], +"d3/d92/group__OperationBuilder__v8.html#gaefa06fdaae3b28c6ef08a0189e2a3d3a":[4,0,0,20,20], +"d3/d98/cudnn__frontend__Tensor_8h.html":[5,0,16], +"d3/d98/cudnn__frontend__Tensor_8h_source.html":[5,0,16], +"d3/ddd/group__ConvDescBuilder__v8.html":[2,0], +"d3/ddd/group__ConvDescBuilder__v8.html#ga2c481d46d71fe909247f50ba2772b7ce":[4,0,0,2,12], +"d3/ddd/group__ConvDescBuilder__v8.html#ga2c481d46d71fe909247f50ba2772b7ce":[2,0,6], +"d3/ddd/group__ConvDescBuilder__v8.html#ga3b752afba659c8e92e7ad1ca71d62f2f":[2,0,2], +"d3/ddd/group__ConvDescBuilder__v8.html#ga3b752afba659c8e92e7ad1ca71d62f2f":[4,0,0,2,8], +"d3/ddd/group__ConvDescBuilder__v8.html#ga44915183cb4dddcf23222faca3f84bba":[4,0,0,2,10], +"d3/ddd/group__ConvDescBuilder__v8.html#ga44915183cb4dddcf23222faca3f84bba":[2,0,4], +"d3/ddd/group__ConvDescBuilder__v8.html#gaa41e2cbbebc9d2fd19fa990a48b39d08":[2,0,1], +"d3/ddd/group__ConvDescBuilder__v8.html#gaa41e2cbbebc9d2fd19fa990a48b39d08":[4,0,0,2,7], +"d3/ddd/group__ConvDescBuilder__v8.html#gaacfcf20b0ed61e89bc92970f7bb7a258":[4,0,0,2,9], +"d3/ddd/group__ConvDescBuilder__v8.html#gaacfcf20b0ed61e89bc92970f7bb7a258":[2,0,3], +"d3/ddd/group__ConvDescBuilder__v8.html#gab07bf6292e69d19e6324d3073a86d58c":[4,0,0,2,11], +"d3/ddd/group__ConvDescBuilder__v8.html#gab07bf6292e69d19e6324d3073a86d58c":[2,0,5], +"d3/ddd/group__ConvDescBuilder__v8.html#gad8de00b0e7a86bdda61749e7572a35ac":[4,0,0,2,6], +"d3/ddd/group__ConvDescBuilder__v8.html#gad8de00b0e7a86bdda61749e7572a35ac":[2,0,0], +"d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html":[4,0,0,23], +"d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#a1407b6ad40df9af7b191fdf636c2c508":[4,0,0,23,8], +"d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#a246795e9bc43f846f701ae4214953412":[4,0,0,23,9], +"d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#a26f1b0f84dc331ca9f1330cf6f425d36":[4,0,0,23,10], +"d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#a346bf4a4ca5e45b0f19dc8f2fb6b6148":[4,0,0,23,15], +"d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#a44917fdd66ea262687c0f0af3ef3b424":[4,0,0,23,1], +"d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#a66ada0a9313ced7ed2801097ef523de8":[4,0,0,23,4], +"d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#a740aed43da4ed8ab351d926cee6bfc6a":[4,0,0,23,14], +"d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#a7f1bee44a57b6dad1ce493cd18ffbc18":[4,0,0,23,12], +"d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#a81b0fa4b9ff8bfd2c23ae704f7211962":[4,0,0,23,6], +"d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#a963d8bd60aa5d7c5385d5d41595c2cf3":[4,0,0,23,5], +"d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#ac00ed56ba83a04edca3f55125332646b":[4,0,0,23,2], +"d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#ac2e07a514ec114222b65948960ba76a3":[4,0,0,23,0], +"d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#ad6d99d57f2a5b345fe5af5bc777b8d1c":[4,0,0,23,13], +"d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#ad8731460bbcf7cb2804dd3a9840f276e":[4,0,0,23,11], +"d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#ae3cd0c0051c7e29a9ad86b80308429f3":[4,0,0,23,7], +"d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#ae4f638eb928772c13c314f4a022d4978":[4,0,0,23,3], +"d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#afcb75336d3b99afcec3bb947c1f1a0e8":[4,0,0,23,17], +"d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#aff19ca9077ac2dca8a9f78df586e11db":[4,0,0,23,16], +"d4/d30/classcudnn__frontend_1_1Operation__v8.html":[4,0,0,19], +"d4/d30/classcudnn__frontend_1_1Operation__v8.html#a01d1997ae84b86c0565351910bba3416":[4,0,0,19,34], +"d4/d30/classcudnn__frontend_1_1Operation__v8.html#a0414d5eb022c25584d60491f416e6449":[4,0,0,19,13], +"d4/d30/classcudnn__frontend_1_1Operation__v8.html#a091bf74144eaec6149d610faa289160e":[4,0,0,19,3], +"d4/d30/classcudnn__frontend_1_1Operation__v8.html#a0945c6296efc14ffc41122aaae3946b8":[4,0,0,19,18], +"d4/d30/classcudnn__frontend_1_1Operation__v8.html#a09f5151a90f805d81550a30617bcec0c":[4,0,0,19,30], +"d4/d30/classcudnn__frontend_1_1Operation__v8.html#a0f14ddfbaae6e62375c46dd0d5ed993d":[4,0,0,19,17], +"d4/d30/classcudnn__frontend_1_1Operation__v8.html#a1118f19807c9f58cc1d0892bdb1f8c94":[4,0,0,19,16], +"d4/d30/classcudnn__frontend_1_1Operation__v8.html#a12d0d0fa40152f5205570f40e681795f":[4,0,0,19,25], +"d4/d30/classcudnn__frontend_1_1Operation__v8.html#a1305e0cdaeb029fd52eb189254afe18c":[4,0,0,19,15], +"d4/d30/classcudnn__frontend_1_1Operation__v8.html#a19856fbb973574342efedc43134af3a7":[4,0,0,19,19], +"d4/d30/classcudnn__frontend_1_1Operation__v8.html#a2e1e0fb15b7df300945cae2347db635a":[4,0,0,19,26], +"d4/d30/classcudnn__frontend_1_1Operation__v8.html#a3425a8550eb9f622dc4101d3d5d2c0e1":[4,0,0,19,4], +"d4/d30/classcudnn__frontend_1_1Operation__v8.html#a4003061754cc4b0003a72cc474fca8d9":[4,0,0,19,10], +"d4/d30/classcudnn__frontend_1_1Operation__v8.html#a43cbfcab995a238e2001c4ec6543ae50":[4,0,0,19,28], +"d4/d30/classcudnn__frontend_1_1Operation__v8.html#a4a71d73a1231c39e51a74f750586a733":[4,0,0,19,12], +"d4/d30/classcudnn__frontend_1_1Operation__v8.html#a4f30409838436d0c4dea5271af86f9b7":[4,0,0,19,22], +"d4/d30/classcudnn__frontend_1_1Operation__v8.html#a4f533db7bc67978d1ec1a475f4ab9e1c":[4,0,0,19,9], +"d4/d30/classcudnn__frontend_1_1Operation__v8.html#a4f565db1b8b85ea43d60631cd3414f47":[4,0,0,19,21], +"d4/d30/classcudnn__frontend_1_1Operation__v8.html#a5012e920483271f655bc04d6f52dc41f":[4,0,0,19,7], +"d4/d30/classcudnn__frontend_1_1Operation__v8.html#a5c6b2986d2d703c672b5fc461f2eee05":[4,0,0,19,31], +"d4/d30/classcudnn__frontend_1_1Operation__v8.html#a67d82f53ecbdfe2416d2a26410138d78":[4,0,0,19,1], +"d4/d30/classcudnn__frontend_1_1Operation__v8.html#a736317246d52e774170bc60511870932":[4,0,0,19,29], +"d4/d30/classcudnn__frontend_1_1Operation__v8.html#a810b2f50d53d6655c2048d3c3afbcfc4":[4,0,0,19,2], +"d4/d30/classcudnn__frontend_1_1Operation__v8.html#a81e9b10c7231ba9ffba37f7fab531a69":[4,0,0,19,35], +"d4/d30/classcudnn__frontend_1_1Operation__v8.html#aac54965185417e264093156b143a3751":[4,0,0,19,32], +"d4/d30/classcudnn__frontend_1_1Operation__v8.html#ab2692d9f28861a73d590a53f979d26fa":[4,0,0,19,6], +"d4/d30/classcudnn__frontend_1_1Operation__v8.html#ab8c4c8c81e8cebc44cb725f4a4b4add9":[4,0,0,19,24], +"d4/d30/classcudnn__frontend_1_1Operation__v8.html#ac4b85cbb9ba522c98eb524a7712721af":[4,0,0,19,27], +"d4/d30/classcudnn__frontend_1_1Operation__v8.html#ac708bb46683440effd2f46b3888e378f":[4,0,0,19,8], +"d4/d30/classcudnn__frontend_1_1Operation__v8.html#ad26bd872d417f6a9bff65768bb02e05f":[4,0,0,19,33], +"d4/d30/classcudnn__frontend_1_1Operation__v8.html#ad45e7200660f993615e34ceeb9ec49c6":[4,0,0,19,0], +"d4/d30/classcudnn__frontend_1_1Operation__v8.html#adea4f5ef82e61fc375fd2c3ee8e92147":[4,0,0,19,20], +"d4/d30/classcudnn__frontend_1_1Operation__v8.html#adf6b55205eac4c52c0ab70e4758e33da":[4,0,0,19,23], +"d4/d30/classcudnn__frontend_1_1Operation__v8.html#ae0e0256b292acd560accc1c02a6e393b":[4,0,0,19,14], +"d4/d30/classcudnn__frontend_1_1Operation__v8.html#ae5cba10d789e4d08b45339a702ba75f3":[4,0,0,19,5], +"d4/d30/classcudnn__frontend_1_1Operation__v8.html#aee00f6897786ce0f16963a7d2f57a2f8":[4,0,0,19,11], +"d4/d39/classcudnn__frontend_1_1OperationGraphBuilder__v8.html":[4,0,0,22], +"d4/d39/classcudnn__frontend_1_1OperationGraphBuilder__v8.html#a101b6c9515fdb333cdd3499f08774cf4":[4,0,0,22,0], +"d4/d39/classcudnn__frontend_1_1OperationGraphBuilder__v8.html#a40e8f7825f75c35c40d9938532a81d02":[4,0,0,22,2], +"d4/d39/classcudnn__frontend_1_1OperationGraphBuilder__v8.html#a45e8a324d62146f592b049f51d2e4552":[4,0,0,22,1], +"d4/d39/classcudnn__frontend_1_1OperationGraphBuilder__v8.html#a589dedb418679abda7f64e6b9e2800a1":[4,0,0,22,3], +"d4/d39/classcudnn__frontend_1_1OperationGraphBuilder__v8.html#a75dae8a911e005b960565d4a1a0024ba":[4,0,0,22,5], +"d4/d39/classcudnn__frontend_1_1OperationGraphBuilder__v8.html#ac78945f424f254f0060d4c2e1184cf1f":[4,0,0,22,4], +"d4/d39/classcudnn__frontend_1_1OperationGraphBuilder__v8.html#ad9cb3e166ab001b3b0c60ed2198cd6d9":[4,0,0,22,8], +"d4/d6b/group__EngineFallbackListBuilder__v8.html":[2,3], +"d4/d6b/group__EngineFallbackListBuilder__v8.html#ga45c7c761a47a7731055ad0f943449610":[2,3,1], +"d4/d6b/group__EngineFallbackListBuilder__v8.html#ga45c7c761a47a7731055ad0f943449610":[4,0,0,10,7], +"d4/d6b/group__EngineFallbackListBuilder__v8.html#gaf66485fe1a0faccab971edd0c70f04b4":[2,3,0], +"d4/d6b/group__EngineFallbackListBuilder__v8.html#gaf66485fe1a0faccab971edd0c70f04b4":[4,0,0,10,6], +"d4/dce/classcudnn__frontend_1_1VariantPackBuilder__v8.html":[4,0,0,28], +"d4/dce/classcudnn__frontend_1_1VariantPackBuilder__v8.html#a16d853685d603472bf260e500f55c145":[4,0,0,28,2], +"d4/dce/classcudnn__frontend_1_1VariantPackBuilder__v8.html#a27a6e5a2602262c35a8ea8533ef5a635":[4,0,0,28,1], +"d4/dce/classcudnn__frontend_1_1VariantPackBuilder__v8.html#a41a6e8afb46228fea2310f5cad75badc":[4,0,0,28,10], +"d4/dce/classcudnn__frontend_1_1VariantPackBuilder__v8.html#a7690f854d9e6fc2d4df059fca0e91c6a":[4,0,0,28,0], +"d4/dce/classcudnn__frontend_1_1VariantPackBuilder__v8.html#abf794751941aa252c19e1879306375d3":[4,0,0,28,4], +"d4/dce/classcudnn__frontend_1_1VariantPackBuilder__v8.html#ac7a523746975d15fd8dc54af0764dcb0":[4,0,0,28,3], +"d4/dce/classcudnn__frontend_1_1VariantPackBuilder__v8.html#acee84ffc33b41807cdcb18425e9fced1":[4,0,0,28,5], +"d4/de1/group__ExecutionPlanBuilder__v8.html":[2,4,0], +"d4/de1/group__ExecutionPlanBuilder__v8.html#ga4166679391fc2df54e25964c03ae6e8e":[4,0,0,15,8], +"d4/de1/group__ExecutionPlanBuilder__v8.html#ga4166679391fc2df54e25964c03ae6e8e":[2,4,0,2], +"d4/de1/group__ExecutionPlanBuilder__v8.html#gac5c23cff8c1424f71ef2cee2dc66cd3c":[4,0,0,15,6], +"d4/de1/group__ExecutionPlanBuilder__v8.html#gac5c23cff8c1424f71ef2cee2dc66cd3c":[2,4,0,0], +"d4/de1/group__ExecutionPlanBuilder__v8.html#gae0f92d5445da53253ff3460ac6aefffa":[4,0,0,15,7], +"d4/de1/group__ExecutionPlanBuilder__v8.html#gae0f92d5445da53253ff3460ac6aefffa":[2,4,0,1], +"d5/d02/classcudnn__frontend_1_1PointWiseDescBuilder__v8.html":[4,0,0,24], +"d5/d02/classcudnn__frontend_1_1PointWiseDescBuilder__v8.html#a0514e70d05a21a9c46bc66d1e61c28f5":[4,0,0,24,13], +"d5/d02/classcudnn__frontend_1_1PointWiseDescBuilder__v8.html#a5de642e4141705f8e06c4bf566f1d332":[4,0,0,24,4], +"d5/d02/classcudnn__frontend_1_1PointWiseDescBuilder__v8.html#a6f5605f25897bba7afc6baf76228828c":[4,0,0,24,0], +"d5/d02/classcudnn__frontend_1_1PointWiseDescBuilder__v8.html#a804a2b5438f464185b16a4652fc14cf5":[4,0,0,24,16], +"d5/d02/classcudnn__frontend_1_1PointWiseDescBuilder__v8.html#a8bdbf27c37334f5b61a65eb1bd4b6a98":[4,0,0,24,7], +"d5/d02/classcudnn__frontend_1_1PointWiseDescBuilder__v8.html#aa93615adf69e7a87a06d0cea687794a6":[4,0,0,24,12], +"d5/d02/classcudnn__frontend_1_1PointWiseDescBuilder__v8.html#aad41d0f7b6667383fd9012bc492a13c3":[4,0,0,24,15], +"d5/d02/classcudnn__frontend_1_1PointWiseDescBuilder__v8.html#ab692e5a2b3970346f68af33530ef98e8":[4,0,0,24,14], +"d5/d02/classcudnn__frontend_1_1PointWiseDescBuilder__v8.html#ac0d140493e21b164bc21dd0bcbeeaa65":[4,0,0,24,5], +"d5/d02/classcudnn__frontend_1_1PointWiseDescBuilder__v8.html#ad6a7549d62410d3de87040586b49b815":[4,0,0,24,2], +"d5/d02/classcudnn__frontend_1_1PointWiseDescBuilder__v8.html#aeccd727adb1d3b0b8d9d95b7f6e1b9ce":[4,0,0,24,3], +"d5/d02/classcudnn__frontend_1_1PointWiseDescBuilder__v8.html#af976fab4a7726609a1b10dc2a8bcdf65":[4,0,0,24,1], +"d5/d02/classcudnn__frontend_1_1PointWiseDescBuilder__v8.html#afdbe0ce3f7fb2f0d23251ccb7507bc69":[4,0,0,24,11], +"d5/d06/classcudnn__frontend_1_1ExecutionPlan__v8.html":[4,0,0,14], +"d5/d06/classcudnn__frontend_1_1ExecutionPlan__v8.html#a00c29ad02430927df9260c7e57ae7c7a":[4,0,0,14,9], +"d5/d06/classcudnn__frontend_1_1ExecutionPlan__v8.html#a8a8ac13b1c639dd9b87c280a598446af":[4,0,0,14,1], +"d5/d06/classcudnn__frontend_1_1ExecutionPlan__v8.html#ac388ed7f6911f704ed2618a3867fad72":[4,0,0,14,0], +"d5/d14/classcudnn__frontend_1_1OpaqueBackendPointer.html":[4,0,0,18], +"d5/d14/classcudnn__frontend_1_1OpaqueBackendPointer.html#a10487abe0a45d35824ec75b0d3894f21":[4,0,0,18,9], +"d5/d14/classcudnn__frontend_1_1OpaqueBackendPointer.html#a42a928eb5b2524d1c3f67b7200dd53c9":[4,0,0,18,0], +"d5/d14/classcudnn__frontend_1_1OpaqueBackendPointer.html#a47968d641c0da8d33882f86d8afa30b4":[4,0,0,18,8], +"d5/d14/classcudnn__frontend_1_1OpaqueBackendPointer.html#a997d733607e747516eb2334c51c48f29":[4,0,0,18,1], +"d5/d14/classcudnn__frontend_1_1OpaqueBackendPointer.html#a9f549dd95873ac3a02689ef97f4a6c75":[4,0,0,18,3], +"d5/d14/classcudnn__frontend_1_1OpaqueBackendPointer.html#aa9059097bb9161d454c6e17b03ca236c":[4,0,0,18,6], +"d5/d14/classcudnn__frontend_1_1OpaqueBackendPointer.html#aadf0c53d7aedb1c6c121b2736e98b2dd":[4,0,0,18,2], +"d5/d14/classcudnn__frontend_1_1OpaqueBackendPointer.html#abd4f69554da364008f3780e9dc3a5bfc":[4,0,0,18,5], +"d5/d14/classcudnn__frontend_1_1OpaqueBackendPointer.html#ac1700c7d96af0250e5721f5e5f9d95bc":[4,0,0,18,4] }; diff --git a/docs/navtreeindex1.js b/docs/navtreeindex1.js index 279d171ba..9c4fa7620 100644 --- a/docs/navtreeindex1.js +++ b/docs/navtreeindex1.js @@ -1,253 +1,253 @@ var NAVTREEINDEX1 = { -"d6/d73/classcudnn__frontend_1_1ConvDesc__v8.html#a592e3a28fd7a8b2553789801d9bd276c":[2,0,0,1,0], -"d6/d73/classcudnn__frontend_1_1ConvDesc__v8.html#a5c892fb76fbf9e4bfffdb5288f9d60ad":[2,0,0,1,2], -"d6/d73/classcudnn__frontend_1_1ConvDesc__v8.html#a81e03a2a385d24a2faaf3db249580ac6":[2,0,0,1,8], -"d6/d73/classcudnn__frontend_1_1ConvDesc__v8.html#a9b478d1207d8241ff67cc931754cd6cf":[2,0,0,1,10], -"d6/d73/classcudnn__frontend_1_1ConvDesc__v8.html#aa8ea272eaf26ae7f7ad2d625253ea62f":[2,0,0,1,5], -"d6/d73/classcudnn__frontend_1_1ConvDesc__v8.html#ac513728c785a54ef86612a0bd6fa0f1a":[2,0,0,1,13], -"d6/d73/classcudnn__frontend_1_1ConvDesc__v8.html#adcb7e5f546b83bbdab63773030e3b909":[2,0,0,1,9], -"d6/d73/classcudnn__frontend_1_1ConvDesc__v8.html#aff824fb1cf44c188a7400b017458327e":[2,0,0,1,11], -"d6/d88/classcudnn__frontend_1_1BackendDescriptor.html":[2,0,0,0], -"d6/d88/classcudnn__frontend_1_1BackendDescriptor.html#a070df0d11a52793ce9480dbdcee0c24e":[2,0,0,0,7], -"d6/d88/classcudnn__frontend_1_1BackendDescriptor.html#a0d416655dab2b5a675fecb5df9ea8521":[2,0,0,0,10], -"d6/d88/classcudnn__frontend_1_1BackendDescriptor.html#a1748a5c560905314930c37b2ed1a54d2":[2,0,0,0,8], -"d6/d88/classcudnn__frontend_1_1BackendDescriptor.html#a3aa1ab42ab96471092185f15e22c1e9f":[2,0,0,0,5], -"d6/d88/classcudnn__frontend_1_1BackendDescriptor.html#a3ef02443f20b90223baf5f1922505eab":[2,0,0,0,9], -"d6/d88/classcudnn__frontend_1_1BackendDescriptor.html#a5765369a5739c2ea81c4f39ce2d1c46e":[2,0,0,0,1], -"d6/d88/classcudnn__frontend_1_1BackendDescriptor.html#a57c83e78374bac747b5660fb271b947a":[2,0,0,0,3], -"d6/d88/classcudnn__frontend_1_1BackendDescriptor.html#a62312f29dbbc7c11c1da54a2ad41c52f":[2,0,0,0,11], -"d6/d88/classcudnn__frontend_1_1BackendDescriptor.html#a8a5466c444f2de721118334ac876c6ba":[2,0,0,0,12], -"d6/d88/classcudnn__frontend_1_1BackendDescriptor.html#a8aa93686ca88410fc048b05155148183":[2,0,0,0,0], -"d6/d88/classcudnn__frontend_1_1BackendDescriptor.html#ab652fb3e9a58092fbb137b0e959a9478":[2,0,0,0,2], -"d6/d88/classcudnn__frontend_1_1BackendDescriptor.html#abfde0f34b0bf49c45d3d9c0408284f6f":[2,0,0,0,4], -"d6/d88/classcudnn__frontend_1_1BackendDescriptor.html#af34344e365e6422ee86955349bf80b49":[2,0,0,0,6], -"d6/da7/classcudnn__frontend_1_1Tensor__v8.html":[2,0,0,23], -"d6/da7/classcudnn__frontend_1_1Tensor__v8.html#a062e54efdec89943fcb0602cc06dfd28":[2,0,0,23,11], -"d6/da7/classcudnn__frontend_1_1Tensor__v8.html#a1370de050fc91e9d992995fae5f22011":[2,0,0,23,13], -"d6/da7/classcudnn__frontend_1_1Tensor__v8.html#a14f9c4498f4be5b3c2b0a94c708891fb":[2,0,0,23,6], -"d6/da7/classcudnn__frontend_1_1Tensor__v8.html#a1f41a9f80b8a3b35aed7948e264b0d79":[2,0,0,23,7], -"d6/da7/classcudnn__frontend_1_1Tensor__v8.html#a4f5c1e95de9419cb1904e0cbad570c63":[2,0,0,23,5], -"d6/da7/classcudnn__frontend_1_1Tensor__v8.html#a5a402bf5c68021711d9d9ec8fd4c1001":[2,0,0,23,1], -"d6/da7/classcudnn__frontend_1_1Tensor__v8.html#a5f2703668235c18d063174ccca285457":[2,0,0,23,3], -"d6/da7/classcudnn__frontend_1_1Tensor__v8.html#a611fc05f3c7b6ca90d0e3c0f6ef07d84":[2,0,0,23,12], -"d6/da7/classcudnn__frontend_1_1Tensor__v8.html#a7419041bb3bf934f8e9f851fa63acabd":[2,0,0,23,8], -"d6/da7/classcudnn__frontend_1_1Tensor__v8.html#a79cc1a752e6df2001b853f8c189b1f1f":[2,0,0,23,4], -"d6/da7/classcudnn__frontend_1_1Tensor__v8.html#a9df78edb662e32a63680281eb33a14a8":[2,0,0,23,0], -"d6/da7/classcudnn__frontend_1_1Tensor__v8.html#ab48b1728d6978407f0bdbf0227de6f82":[2,0,0,23,2], -"d6/da7/classcudnn__frontend_1_1Tensor__v8.html#ae4842fc7fcb87f5b60228fb6fa391b61":[2,0,0,23,9], -"d6/da7/classcudnn__frontend_1_1Tensor__v8.html#ae9a3d128db54fa92d392e77044f30ca9":[2,0,0,23,10], -"d7/d0d/group__ExecutionPlanQuery.html":[0,4], -"d7/d0d/group__ExecutionPlanQuery.html#ga00d10a076c22e86354a789852c56c22f":[2,0,0,14,7], -"d7/d0d/group__ExecutionPlanQuery.html#ga00d10a076c22e86354a789852c56c22f":[0,4,10], -"d7/d0d/group__ExecutionPlanQuery.html#ga0705e60cee62d3d196751517d545a7b0":[0,4,11], -"d7/d0d/group__ExecutionPlanQuery.html#ga0705e60cee62d3d196751517d545a7b0":[2,0,0,14,8], -"d7/d0d/group__ExecutionPlanQuery.html#ga2b84d3619b5bd9ca0faa30c126deb43c":[0,4,8], -"d7/d0d/group__ExecutionPlanQuery.html#ga2b84d3619b5bd9ca0faa30c126deb43c":[2,0,0,15,3], -"d7/d0d/group__ExecutionPlanQuery.html#ga2c011aa14563ef96417ce599f0c83d89":[2,0,0,14,2], -"d7/d0d/group__ExecutionPlanQuery.html#ga2c011aa14563ef96417ce599f0c83d89":[0,4,4], -"d7/d0d/group__ExecutionPlanQuery.html#ga2ff1340409f8834fe9ae68ff4c00281a":[0,4,9], -"d7/d0d/group__ExecutionPlanQuery.html#ga2ff1340409f8834fe9ae68ff4c00281a":[2,0,0,14,6], -"d7/d0d/group__ExecutionPlanQuery.html#ga4c36108c6511420d81fcda5292761726":[2,0,0,14,11], -"d7/d0d/group__ExecutionPlanQuery.html#ga4c36108c6511420d81fcda5292761726":[0,4,15], -"d7/d0d/group__ExecutionPlanQuery.html#ga51c4b75729ab066f0686729896741c5d":[0,4,5], -"d7/d0d/group__ExecutionPlanQuery.html#ga51c4b75729ab066f0686729896741c5d":[2,0,0,14,3], -"d7/d0d/group__ExecutionPlanQuery.html#ga5e3dd6d441474ac5ab94aaaf9c45bc5b":[2,0,0,14,10], -"d7/d0d/group__ExecutionPlanQuery.html#ga5e3dd6d441474ac5ab94aaaf9c45bc5b":[0,4,14], -"d7/d0d/group__ExecutionPlanQuery.html#ga5f757c2da8c90645c34637dde4aed8f8":[2,0,0,15,5], -"d7/d0d/group__ExecutionPlanQuery.html#ga5f757c2da8c90645c34637dde4aed8f8":[0,4,12], -"d7/d0d/group__ExecutionPlanQuery.html#ga5ff39f2019a5a3fe8062bf887707877c":[2,0,0,15,4], -"d7/d0d/group__ExecutionPlanQuery.html#ga5ff39f2019a5a3fe8062bf887707877c":[0,4,1], -"d7/d0d/group__ExecutionPlanQuery.html#ga60147aa715352906e32cbb87558cb0ae":[0,4,7], -"d7/d0d/group__ExecutionPlanQuery.html#ga60147aa715352906e32cbb87558cb0ae":[2,0,0,15,2], -"d7/d0d/group__ExecutionPlanQuery.html#ga8a6517102f5c12e63e4417324a03180b":[2,0,0,14,4], -"d7/d0d/group__ExecutionPlanQuery.html#ga8a6517102f5c12e63e4417324a03180b":[0,4,2], -"d7/d0d/group__ExecutionPlanQuery.html#ga8e48fb375271599c83f57922d9f8c89e":[0,4,6], -"d7/d0d/group__ExecutionPlanQuery.html#ga8e48fb375271599c83f57922d9f8c89e":[2,0,0,15,0], -"d7/d0d/group__ExecutionPlanQuery.html#gad80aa2980d915449d05db4c71041e2e0":[2,0,0,14,5], -"d7/d0d/group__ExecutionPlanQuery.html#gad80aa2980d915449d05db4c71041e2e0":[0,4,3], -"d7/d0d/group__ExecutionPlanQuery.html#gae1a2e3dd89dbe455e7067531ec5b5562":[2,0,0,15,10], -"d7/d0d/group__ExecutionPlanQuery.html#gae1a2e3dd89dbe455e7067531ec5b5562":[0,4,16], -"d7/d0d/group__ExecutionPlanQuery.html#gae3f841de1b6461b31bf7967734a70a8a":[0,4,13], -"d7/d0d/group__ExecutionPlanQuery.html#gae3f841de1b6461b31bf7967734a70a8a":[2,0,0,15,1], -"d7/d0d/group__ExecutionPlanQuery.html#gaf732b37c9c05a2a8bd1a76289c740c4a":[2,0,0,14,12], -"d7/d0d/group__ExecutionPlanQuery.html#gaf732b37c9c05a2a8bd1a76289c740c4a":[0,4,17], -"d9/dca/classcudnn__frontend_1_1cudnnException.html":[2,0,0,3], -"d9/dca/classcudnn__frontend_1_1cudnnException.html#a4f35e3466ff6ce0875631b810364364b":[2,0,0,3,1], -"d9/dca/classcudnn__frontend_1_1cudnnException.html#aa80c45a57ca091770572aaa5a1f7e322":[2,0,0,3,0], -"d9/df1/classcudnn__frontend_1_1EngineFallbackListBuilder__v8.html":[2,0,0,10], -"d9/df1/classcudnn__frontend_1_1EngineFallbackListBuilder__v8.html#a1effb794c90cbe7ad2e7649d400cb2dd":[2,0,0,10,5], -"d9/df1/classcudnn__frontend_1_1EngineFallbackListBuilder__v8.html#a28651c04cd22f3ebe037b99627ddbd62":[2,0,0,10,1], -"d9/df1/classcudnn__frontend_1_1EngineFallbackListBuilder__v8.html#a3dda7b1b97beb027718b7809702967b5":[2,0,0,10,2], -"d9/df1/classcudnn__frontend_1_1EngineFallbackListBuilder__v8.html#a56f2014918d259c53a2ebb3e815073e9":[2,0,0,10,8], -"d9/df1/classcudnn__frontend_1_1EngineFallbackListBuilder__v8.html#aae1a36ace3278dbedcf0d743a7744d98":[2,0,0,10,4], -"d9/df1/classcudnn__frontend_1_1EngineFallbackListBuilder__v8.html#ad3e10ca860311b1b554507615c46b9ad":[2,0,0,10,3], -"d9/df1/classcudnn__frontend_1_1EngineFallbackListBuilder__v8.html#ae955fa571b31ffc3da0ca6293d089642":[2,0,0,10,0], -"d9/dfd/classcudnn__frontend_1_1EngineBuilder__v8.html":[2,0,0,5], -"d9/dfd/classcudnn__frontend_1_1EngineBuilder__v8.html#a010b99c39d63121be78ec847fff433f8":[2,0,0,5,4], -"d9/dfd/classcudnn__frontend_1_1EngineBuilder__v8.html#a033fb0022860f23e76ca1529da165bfc":[2,0,0,5,2], -"d9/dfd/classcudnn__frontend_1_1EngineBuilder__v8.html#a21b687e5455f4bc727210ac2da46d7b3":[2,0,0,5,0], -"d9/dfd/classcudnn__frontend_1_1EngineBuilder__v8.html#a7f5a24e27ff497bd44fd93fb700d5424":[2,0,0,5,3], -"d9/dfd/classcudnn__frontend_1_1EngineBuilder__v8.html#a8a300ec39fc764b86058acf8a9406d89":[2,0,0,5,1], -"d9/dfd/classcudnn__frontend_1_1EngineBuilder__v8.html#a9d29a91186f6baa215b61340a386ec6d":[2,0,0,5,5], -"d9/dfd/classcudnn__frontend_1_1EngineBuilder__v8.html#adc25c468425d9b6b71b9592b80ea715d":[2,0,0,5,10], -"da/d5a/cudnn__frontend__Operation_8h.html":[3,0,12], -"da/d5a/cudnn__frontend__Operation_8h_source.html":[3,0,12], -"da/d5f/cudnn__frontend__PointWiseDesc_8h.html":[3,0,14], -"da/d5f/cudnn__frontend__PointWiseDesc_8h_source.html":[3,0,14], -"db/d66/cudnn__frontend__Heuristics_8h.html":[3,0,11], -"db/d66/cudnn__frontend__Heuristics_8h_source.html":[3,0,11], -"db/d7d/cudnn__frontend__OperationGraph_8h.html":[3,0,13], -"db/d7d/cudnn__frontend__OperationGraph_8h_source.html":[3,0,13], -"db/d99/classcudnn__frontend_1_1EngineFallbackList__v8.html":[2,0,0,9], -"db/d99/classcudnn__frontend_1_1EngineFallbackList__v8.html#a22ef505758a33415d01e3a9a8843fe22":[2,0,0,9,6], -"db/d99/classcudnn__frontend_1_1EngineFallbackList__v8.html#a3509dd7589fed7a699874170cec6dd9f":[2,0,0,9,4], -"db/d99/classcudnn__frontend_1_1EngineFallbackList__v8.html#a56ad23cee30cbe70209ce6399a69d541":[2,0,0,9,5], -"db/d99/classcudnn__frontend_1_1EngineFallbackList__v8.html#a62dd89e142b11917507a48b2ac3dd047":[2,0,0,9,0], -"db/d99/classcudnn__frontend_1_1EngineFallbackList__v8.html#a71e6146b18a0aa4de8fbc6ba457efbb9":[2,0,0,9,8], -"db/d99/classcudnn__frontend_1_1EngineFallbackList__v8.html#a9a557db46e3559fcaa0e800d976d6238":[2,0,0,9,9], -"db/d99/classcudnn__frontend_1_1EngineFallbackList__v8.html#a9c9a8cc39a38b449b1f044d407168905":[2,0,0,9,3], -"db/d99/classcudnn__frontend_1_1EngineFallbackList__v8.html#a9f8070f063b1c0564297260ebe812506":[2,0,0,9,11], -"db/d99/classcudnn__frontend_1_1EngineFallbackList__v8.html#abb40ba38f035c1e9bd20304f32f90256":[2,0,0,9,2], -"db/d99/classcudnn__frontend_1_1EngineFallbackList__v8.html#adfa074bcaaf2b0297a9c740a3e3706b7":[2,0,0,9,1], -"db/d99/classcudnn__frontend_1_1EngineFallbackList__v8.html#ae2c71646b56855f59ed1a267f06d5a7c":[2,0,0,9,7], -"db/d99/classcudnn__frontend_1_1EngineFallbackList__v8.html#ae8995303eac50633f6320f5949a045bb":[2,0,0,9,10], -"db/dae/classcudnn__frontend_1_1TensorBuilder__v8.html":[2,0,0,24], -"db/dae/classcudnn__frontend_1_1TensorBuilder__v8.html#a2c9dcbe8acfe079ad14801c7cda0fe29":[2,0,0,24,1], -"db/dae/classcudnn__frontend_1_1TensorBuilder__v8.html#a32876941f964b3fad2d123b9081b0af7":[2,0,0,24,4], -"db/dae/classcudnn__frontend_1_1TensorBuilder__v8.html#a3a33c9ba58f393d231e05a1bcc5706d8":[2,0,0,24,5], -"db/dae/classcudnn__frontend_1_1TensorBuilder__v8.html#a87c53bd36c748fe2327743bd852fb144":[2,0,0,24,12], -"db/dae/classcudnn__frontend_1_1TensorBuilder__v8.html#a8f8b7d7da3675d69e7f09bec21735656":[2,0,0,24,2], -"db/dae/classcudnn__frontend_1_1TensorBuilder__v8.html#a9d57810fb6d58f5152e5a1bbc55fc5dd":[2,0,0,24,0], -"db/dae/classcudnn__frontend_1_1TensorBuilder__v8.html#abcc771bbe9e1791afc10c686f90c2188":[2,0,0,24,3], -"db/ddb/classcudnn__frontend_1_1EngineHeuristics__v8.html":[2,0,0,11], -"db/ddb/classcudnn__frontend_1_1EngineHeuristics__v8.html#a081860775bfc5626bd57066066eb4299":[2,0,0,11,11], -"db/ddb/classcudnn__frontend_1_1EngineHeuristics__v8.html#a2261e27dacfdad755d625692aa20f290":[2,0,0,11,1], -"db/ddb/classcudnn__frontend_1_1EngineHeuristics__v8.html#a2301c5b006fa6e341bc88ece066f8ea2":[2,0,0,11,7], -"db/ddb/classcudnn__frontend_1_1EngineHeuristics__v8.html#a298d4a89c8e9ed80526a6cccf33d716c":[2,0,0,11,0], -"db/ddb/classcudnn__frontend_1_1EngineHeuristics__v8.html#a44df29e58afe4b8fdc894574eb5efb9e":[2,0,0,11,8], -"db/ddb/classcudnn__frontend_1_1EngineHeuristics__v8.html#a496a7e3160046bdf73289fbec51423a3":[2,0,0,11,3], -"db/ddb/classcudnn__frontend_1_1EngineHeuristics__v8.html#a71e7822002502874f6b2dfec4ede7e01":[2,0,0,11,10], -"db/ddb/classcudnn__frontend_1_1EngineHeuristics__v8.html#a7a1e931b0f7910db6e6f5d5bfbfe3511":[2,0,0,11,9], -"db/ddb/classcudnn__frontend_1_1EngineHeuristics__v8.html#a7c958bd4b97b4a77694d2bee01acec4c":[2,0,0,11,12], -"db/ddb/classcudnn__frontend_1_1EngineHeuristics__v8.html#aaa983e31e1a22bfebb639865e4514d82":[2,0,0,11,2], -"db/ddb/classcudnn__frontend_1_1EngineHeuristics__v8.html#ac223cc9438a0442bd3b48881f71a4b40":[2,0,0,11,4], -"db/de1/classcudnn__frontend_1_1ConvDescBuilder__v8.html":[2,0,0,2], -"db/de1/classcudnn__frontend_1_1ConvDescBuilder__v8.html#a01f709a3efafaca70de6565817c43beb":[2,0,0,2,4], -"db/de1/classcudnn__frontend_1_1ConvDescBuilder__v8.html#a314369f1ea702c92d184b3ba66085468":[2,0,0,2,2], -"db/de1/classcudnn__frontend_1_1ConvDescBuilder__v8.html#a5fba7029429a093b36fd201219315a1f":[2,0,0,2,5], -"db/de1/classcudnn__frontend_1_1ConvDescBuilder__v8.html#a67e82b4d8b94b55ecc50a9151799fff9":[2,0,0,2,13], -"db/de1/classcudnn__frontend_1_1ConvDescBuilder__v8.html#a99c1c90149cee07a26124fe32bdcfe03":[2,0,0,2,3], -"db/de1/classcudnn__frontend_1_1ConvDescBuilder__v8.html#ae75d5fd1c3fb6b51072f2c9b211477eb":[2,0,0,2,1], -"db/de1/classcudnn__frontend_1_1ConvDescBuilder__v8.html#ae7b3fb50c7866c50ac1a170e137f38af":[2,0,0,2,0], -"dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html":[2,0,0,4,0], -"dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#a1a4287f2767654ef28b3a5f1925e7ff1":[2,0,0,4,0,3], -"dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#a210061280cc6df1431d1c464a65d9a02":[2,0,0,4,0,5], -"dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#a2403145dcb4bc55f970c6d07c1ed796e":[2,0,0,4,0,11], -"dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#a3f60f9ba0e35cb0bccbf3524def69db2":[2,0,0,4,0,1], -"dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#a542f95d42a6d118e3de1726720c12278":[2,0,0,4,0,7], -"dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#a8342ab30dbe0e86d8d060983f14aba87":[2,0,0,4,0,12], -"dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#a92040bb78e1f2b4ecb3cc6768a3946df":[2,0,0,4,0,6], -"dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#aaf0d313c5491b599537422694eb83b82":[2,0,0,4,0,0], -"dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#ac16f2f536d5d813d52eb74825b6dff64":[2,0,0,4,0,4], -"dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#ad2fbb6103c61dfa6fa1800dccadb5f38":[2,0,0,4,0,2], -"dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#adc13c98616305cd23d86dc5dc1dfe86e":[2,0,0,4,0,9], -"dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#aecda8659b5a5d1dbb21b540a73141fb9":[2,0,0,4,0,10], -"dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#aee3bbc2a558893309d6882a0e30d439a":[2,0,0,4,0,8], -"dc/d11/cudnn__backend__base_8h.html":[3,0,0], -"dc/d11/cudnn__backend__base_8h.html#ac94d582cdfa2adf3d68a4e675e5d69aa":[3,0,0,2], -"dc/d11/cudnn__backend__base_8h.html#aee9c79eb8972c944de14ccd70bf5db43":[3,0,0,3], -"dc/d11/cudnn__backend__base_8h_source.html":[3,0,0], -"dc/d3c/classcudnn__frontend_1_1Engine__v8.html":[2,0,0,4], -"dc/d3c/classcudnn__frontend_1_1Engine__v8.html#a052463f45fef3bb98e2822ba0fccdb8e":[2,0,0,4,6], -"dc/d3c/classcudnn__frontend_1_1Engine__v8.html#a0e6d7c12c261ad6c2f08e1249397b696":[2,0,0,4,5], -"dc/d3c/classcudnn__frontend_1_1Engine__v8.html#a6053f049f393faebc7188bfa1e8c2d38":[2,0,0,4,16], -"dc/d3c/classcudnn__frontend_1_1Engine__v8.html#a620ad17c3560e87d5a859d7f0eb121d4":[2,0,0,4,17], -"dc/d3c/classcudnn__frontend_1_1Engine__v8.html#a63620960db3192066b7eb5f563841f1b":[2,0,0,4,2], -"dc/d3c/classcudnn__frontend_1_1Engine__v8.html#a6804e842fb698ebc12fccfece3f33b01":[2,0,0,4,8], -"dc/d3c/classcudnn__frontend_1_1Engine__v8.html#a7609e82ac3dc04b67e9e73beb0f7cdae":[2,0,0,4,3], -"dc/d3c/classcudnn__frontend_1_1Engine__v8.html#a837d8adc86f08ca31f42437512a30752":[2,0,0,4,7], -"dc/d3c/classcudnn__frontend_1_1Engine__v8.html#aae4b49a84f8ecb114449784e43496521":[2,0,0,4,13], -"dc/d3c/classcudnn__frontend_1_1Engine__v8.html#ab2d9ce46cd037407a5c9ec655ad0a25d":[2,0,0,4,12], -"dc/d3c/classcudnn__frontend_1_1Engine__v8.html#ad3966b20d080c0fb9930b8a2018da2f8":[2,0,0,4,10], -"dc/d3c/classcudnn__frontend_1_1Engine__v8.html#add2d5998a38944fd0dba03fce96fe7aa":[2,0,0,4,14], -"dc/d3c/classcudnn__frontend_1_1Engine__v8.html#ae5d0c105971ce443fe6fb62884d7b2d2":[2,0,0,4,11], -"dc/d3c/classcudnn__frontend_1_1Engine__v8.html#aed64863b9d73b7f6f3a7e16dc6e7eb04":[2,0,0,4,15], -"dc/d3c/classcudnn__frontend_1_1Engine__v8.html#af299a1692584215c649b3563fdb3abae":[2,0,0,4,9], -"dc/d3c/classcudnn__frontend_1_1Engine__v8.html#af58a8aa09f22e048d51e619e36b4cbef":[2,0,0,4,4], -"dc/d3c/classcudnn__frontend_1_1Engine__v8.html#afc5da140bcc7be57dc81f7fc5a589744":[2,0,0,4,1], -"dc/d99/group__EngineHeuristicsBuilder__v8.html":[0,6], -"dc/d99/group__EngineHeuristicsBuilder__v8.html#ga0554ac9347b7409e46f960b30f18dc68":[2,0,0,12,7], -"dc/d99/group__EngineHeuristicsBuilder__v8.html#ga0554ac9347b7409e46f960b30f18dc68":[0,6,1], -"dc/d99/group__EngineHeuristicsBuilder__v8.html#gaf2d783ca6a663aa50ffed2ccbc164812":[2,0,0,12,6], -"dc/d99/group__EngineHeuristicsBuilder__v8.html#gaf2d783ca6a663aa50ffed2ccbc164812":[0,6,0], -"dc/da3/classcudnn__frontend_1_1EngineConfigGenerator.html":[2,0,0,8], -"dc/da3/classcudnn__frontend_1_1EngineConfigGenerator.html#a1a06febdf947e151276bf09947c62436":[2,0,0,8,4], -"dc/da3/classcudnn__frontend_1_1EngineConfigGenerator.html#a322221ec9a28f1f48c5a3edf60adff1d":[2,0,0,8,0], -"dc/da3/classcudnn__frontend_1_1EngineConfigGenerator.html#a4b07b958f03daf033c30b9182fee372b":[2,0,0,8,3], -"dc/da3/classcudnn__frontend_1_1EngineConfigGenerator.html#abd7cdd3a218623ffc5dfcbf9343aef85":[2,0,0,8,1], -"dc/da3/classcudnn__frontend_1_1EngineConfigGenerator.html#ad6ca7e7263ed9b7597f94ca45505642f":[2,0,0,8,2], -"dd/d72/classcudnn__frontend_1_1EngineConfigBuilder__v8.html":[2,0,0,7], -"dd/d72/classcudnn__frontend_1_1EngineConfigBuilder__v8.html#a17fca0597527c1f6acffa73ddaeedc03":[2,0,0,7,3], -"dd/d72/classcudnn__frontend_1_1EngineConfigBuilder__v8.html#a3deb5e1f20c028b8bb39406cca743e43":[2,0,0,7,2], -"dd/d72/classcudnn__frontend_1_1EngineConfigBuilder__v8.html#a49a8a25759e78e7a2c77c55f0b54696b":[2,0,0,7,0], -"dd/d72/classcudnn__frontend_1_1EngineConfigBuilder__v8.html#a49eedc731d95df1f21e353a9a9511cfd":[2,0,0,7,1], -"dd/d72/classcudnn__frontend_1_1EngineConfigBuilder__v8.html#a639e1514ea8f283720e49fc18d7ad673":[2,0,0,7,4], -"dd/d72/classcudnn__frontend_1_1EngineConfigBuilder__v8.html#a8d4cb5ab44b076c71afd5f49e6df94f7":[2,0,0,7,5], -"dd/d72/classcudnn__frontend_1_1EngineConfigBuilder__v8.html#a8dc6947bf5dac837ea233bfaec4bf03f":[2,0,0,7,7], -"de/d0c/cudnn__frontend_8h.html":[3,0,1], -"de/d0c/cudnn__frontend_8h.html#a0b7ba1175801c56d07d26785bcd8fb70":[3,0,1,15], -"de/d0c/cudnn__frontend_8h.html#a147bbd62e1c7c6b3fbc6869ab776b125":[3,0,1,8], -"de/d0c/cudnn__frontend_8h.html#a1ed8c535fea949a10acd26e279cc28a1":[3,0,1,2], -"de/d0c/cudnn__frontend_8h.html#a2559dec72130bbdc95c02fb0df79fd42":[3,0,1,4], -"de/d0c/cudnn__frontend_8h.html#a2f1497702504947953a0f5a69b6eeb2a":[3,0,1,12], -"de/d0c/cudnn__frontend_8h.html#a4f90ec150d149f8f0751daa3ad625839":[3,0,1,3], -"de/d0c/cudnn__frontend_8h.html#a61fbd4506f1249c686164fb33d858999":[3,0,1,6], -"de/d0c/cudnn__frontend_8h.html#a7f878662c40c287736343affc43f25dc":[3,0,1,17], -"de/d0c/cudnn__frontend_8h.html#a91b5e4e82a18d2212ad6be6d5398752c":[3,0,1,1], -"de/d0c/cudnn__frontend_8h.html#a984c10aa29daac796444bda66bdef26e":[3,0,1,10], -"de/d0c/cudnn__frontend_8h.html#a9fea2e22198aaf2ea11a0df46abd0749":[3,0,1,19], -"de/d0c/cudnn__frontend_8h.html#aa20fd945a531e0a3a5007e65fe917770":[3,0,1,18], -"de/d0c/cudnn__frontend_8h.html#aa508b66c4de02f4aacae8029dbe422eb":[3,0,1,11], -"de/d0c/cudnn__frontend_8h.html#aae6a627b67858b15afbc5656afa88123":[3,0,1,9], -"de/d0c/cudnn__frontend_8h.html#ab5b844f5de8ad3c056f0cb1cd0fb3ac1":[3,0,1,21], -"de/d0c/cudnn__frontend_8h.html#ac46e1785757fde7c10e3d527f697fde8":[3,0,1,5], -"de/d0c/cudnn__frontend_8h.html#ac86ce924df5209c4ce1bc25856eea6e6":[3,0,1,14], -"de/d0c/cudnn__frontend_8h.html#ad6ac8113b406ee2b6f20eff4dd2b4e01":[3,0,1,20], -"de/d0c/cudnn__frontend_8h.html#ada5353494ce649fc915154ced52dcceb":[3,0,1,16], -"de/d0c/cudnn__frontend_8h.html#ae24bc7541c87c642cdef8eaf83c8eacc":[3,0,1,0], -"de/d0c/cudnn__frontend_8h.html#ae6d02ff4c7922673ed3862145a4019d4":[3,0,1,13], -"de/d0c/cudnn__frontend_8h.html#aeb6699f494fa895d402898dae554f5a9":[3,0,1,7], -"de/d0c/cudnn__frontend_8h_source.html":[3,0,1], -"de/d1e/cudnn__frontend__EngineConfigGenerator_8h.html":[3,0,5], -"de/d1e/cudnn__frontend__EngineConfigGenerator_8h.html#a0f52559baeb4e9ee8835d95ea50a875e":[3,0,5,7], -"de/d1e/cudnn__frontend__EngineConfigGenerator_8h.html#a53716729f10b4064fb41dec9dd32ffd6":[3,0,5,4], -"de/d1e/cudnn__frontend__EngineConfigGenerator_8h.html#a560644a5c1e6016c509a379ca6e03f05":[3,0,5,3], -"de/d1e/cudnn__frontend__EngineConfigGenerator_8h.html#ab3748fa00b36beec790db7201fdd2ef3":[3,0,5,6], -"de/d1e/cudnn__frontend__EngineConfigGenerator_8h.html#ab3748fa00b36beec790db7201fdd2ef3a8199dfa6701edb38f52a74d9e229b43d":[3,0,5,6,2], -"de/d1e/cudnn__frontend__EngineConfigGenerator_8h.html#ab3748fa00b36beec790db7201fdd2ef3a903bfd2e4d1b8ab2a7197be752c618a6":[3,0,5,6,1], -"de/d1e/cudnn__frontend__EngineConfigGenerator_8h.html#ab3748fa00b36beec790db7201fdd2ef3ac8ab707d81df65503b6b0ecc67675158":[3,0,5,6,0], -"de/d1e/cudnn__frontend__EngineConfigGenerator_8h.html#ad31f040777311d1d1a7a2490f23e026e":[3,0,5,5], -"de/d1e/cudnn__frontend__EngineConfigGenerator_8h.html#ad5f0f0c892b009e34aa59f67de1b5535":[3,0,5,2], -"de/d1e/cudnn__frontend__EngineConfigGenerator_8h_source.html":[3,0,5], -"de/d6d/cudnn__frontend__Engine_8h.html":[3,0,3], -"de/d6d/cudnn__frontend__Engine_8h_source.html":[3,0,3], -"de/dd9/classcudnn__frontend_1_1OperationGraph__v8.html":[2,0,0,19], -"de/dd9/classcudnn__frontend_1_1OperationGraph__v8.html#a0b3b76a619160671c45c733eb1a13455":[2,0,0,19,3], -"de/dd9/classcudnn__frontend_1_1OperationGraph__v8.html#a19fd5ed99ab4053c8a178bd33843460a":[2,0,0,19,6], -"de/dd9/classcudnn__frontend_1_1OperationGraph__v8.html#a52c12bb0014a899c4c5201fb66301eb2":[2,0,0,19,10], -"de/dd9/classcudnn__frontend_1_1OperationGraph__v8.html#a5af59a099cc90eda429563e285b2907f":[2,0,0,19,8], -"de/dd9/classcudnn__frontend_1_1OperationGraph__v8.html#a5c029cff12e0e91406a8f88fd8a830f4":[2,0,0,19,2], -"de/dd9/classcudnn__frontend_1_1OperationGraph__v8.html#a85e65daf5a2db5aba0207ccad367457d":[2,0,0,19,0], -"de/dd9/classcudnn__frontend_1_1OperationGraph__v8.html#a87704bb46bb12bba977a21ed579a4ef3":[2,0,0,19,7], -"de/dd9/classcudnn__frontend_1_1OperationGraph__v8.html#ab2570d81fc01c1b6b9a76220b0abd717":[2,0,0,19,12], -"de/dd9/classcudnn__frontend_1_1OperationGraph__v8.html#abd35d4e84bb6ee70e8df38de093fc376":[2,0,0,19,9], -"de/dd9/classcudnn__frontend_1_1OperationGraph__v8.html#ac8ca1ba29ac3f8e68ba1bf3e5e500338":[2,0,0,19,11], -"de/dd9/classcudnn__frontend_1_1OperationGraph__v8.html#acd0b5f47407184b0b26bf4d4b5d0ce32":[2,0,0,19,4], -"de/dd9/classcudnn__frontend_1_1OperationGraph__v8.html#aeb42611a38c4951e66cd23108d53353c":[2,0,0,19,1], -"df/d17/cudnn__frontend__utils_8h.html":[3,0,16], -"df/d17/cudnn__frontend__utils_8h.html#a011f392961f07ab6de46a080e9a652a2":[3,0,16,1], -"df/d17/cudnn__frontend__utils_8h.html#a1690523b8a133acefaeabc725032e21c":[3,0,16,2], -"df/d17/cudnn__frontend__utils_8h.html#a6b0bb5ee1f6d6491a7d53a01ae947dee":[3,0,16,3], -"df/d17/cudnn__frontend__utils_8h_source.html":[3,0,16] +"d5/d14/classcudnn__frontend_1_1OpaqueBackendPointer.html#adf5bf20f5bdfbfdecd05360830b34b89":[4,0,0,18,7], +"d5/d36/cudnn__frontend__Filters_8h.html":[5,0,8], +"d5/d36/cudnn__frontend__Filters_8h.html#a4d18e44a57e30f9bf29157f742ba9c65":[5,0,8,0], +"d5/d36/cudnn__frontend__Filters_8h.html#a75bb541476d93b039f5fd9f9d29242e6":[5,0,8,1], +"d5/d36/cudnn__frontend__Filters_8h_source.html":[5,0,8], +"d5/def/group__VariantPackBuilder__v8.html":[2,13], +"d5/def/group__VariantPackBuilder__v8.html#ga14d3ac479fd01c48a97583adfb567090":[2,13,1], +"d5/def/group__VariantPackBuilder__v8.html#ga14d3ac479fd01c48a97583adfb567090":[4,0,0,28,7], +"d5/def/group__VariantPackBuilder__v8.html#ga3a7b9ac8c714db202a8f89a6110675b6":[2,13,3], +"d5/def/group__VariantPackBuilder__v8.html#ga3a7b9ac8c714db202a8f89a6110675b6":[4,0,0,28,9], +"d5/def/group__VariantPackBuilder__v8.html#ga79c6def790139cb04aff8c600559b802":[4,0,0,28,6], +"d5/def/group__VariantPackBuilder__v8.html#ga79c6def790139cb04aff8c600559b802":[2,13,0], +"d5/def/group__VariantPackBuilder__v8.html#gad6dc5c5087c2724ca88cc2668d7f829d":[2,13,2], +"d5/def/group__VariantPackBuilder__v8.html#gad6dc5c5087c2724ca88cc2668d7f829d":[4,0,0,28,8], +"d6/d1b/structcudnn__frontend_1_1executionOption.html":[4,0,0,13], +"d6/d1b/structcudnn__frontend_1_1executionOption.html#a56b496b09272c352b557d793adc3acf1":[4,0,0,13,1], +"d6/d1b/structcudnn__frontend_1_1executionOption.html#ae84235aee01c4556303b39961e1e1c5e":[4,0,0,13,0], +"d6/d32/cudnn__frontend__MatMulDesc_8h.html":[5,0,12], +"d6/d32/cudnn__frontend__MatMulDesc_8h_source.html":[5,0,12], +"d6/d46/group__EngineHeuristicsQuery.html":[2,5], +"d6/d46/group__EngineHeuristicsQuery.html#ga10121605fc82ed225537210825fa3836":[2,5,1], +"d6/d46/group__EngineHeuristicsQuery.html#ga10121605fc82ed225537210825fa3836":[4,0,0,11,6], +"d6/d46/group__EngineHeuristicsQuery.html#ga1171cb5ce50baf0fab19fc458d4565b5":[4,0,0,11,5], +"d6/d46/group__EngineHeuristicsQuery.html#ga1171cb5ce50baf0fab19fc458d4565b5":[2,5,0], +"d6/d51/cudnn__frontend__ExecutionPlan_8h.html":[5,0,7], +"d6/d51/cudnn__frontend__ExecutionPlan_8h_source.html":[5,0,7], +"d6/d67/cudnn__frontend__EngineConfig_8h.html":[5,0,4], +"d6/d67/cudnn__frontend__EngineConfig_8h.html#a84a5f004bdf17747bf7cf45d6fc754cd":[5,0,4,2], +"d6/d67/cudnn__frontend__EngineConfig_8h_source.html":[5,0,4], +"d6/d73/classcudnn__frontend_1_1ConvDesc__v8.html":[4,0,0,1], +"d6/d73/classcudnn__frontend_1_1ConvDesc__v8.html#a00c454e18392653a023f75275553a4e7":[4,0,0,1,6], +"d6/d73/classcudnn__frontend_1_1ConvDesc__v8.html#a061ef887bdf383d416ee143a35d5c334":[4,0,0,1,3], +"d6/d73/classcudnn__frontend_1_1ConvDesc__v8.html#a0d36a97abb2d36a0148ce8e8833baff8":[4,0,0,1,4], +"d6/d73/classcudnn__frontend_1_1ConvDesc__v8.html#a0d930ada709a855c86b2857a1b155d02":[4,0,0,1,1], +"d6/d73/classcudnn__frontend_1_1ConvDesc__v8.html#a28e6ad906bf25653c87525f9f8e90a28":[4,0,0,1,12], +"d6/d73/classcudnn__frontend_1_1ConvDesc__v8.html#a4a0249ac1d094f9a70967dd69b824f2e":[4,0,0,1,7], +"d6/d73/classcudnn__frontend_1_1ConvDesc__v8.html#a592e3a28fd7a8b2553789801d9bd276c":[4,0,0,1,0], +"d6/d73/classcudnn__frontend_1_1ConvDesc__v8.html#a5c892fb76fbf9e4bfffdb5288f9d60ad":[4,0,0,1,2], +"d6/d73/classcudnn__frontend_1_1ConvDesc__v8.html#a81e03a2a385d24a2faaf3db249580ac6":[4,0,0,1,8], +"d6/d73/classcudnn__frontend_1_1ConvDesc__v8.html#a9b478d1207d8241ff67cc931754cd6cf":[4,0,0,1,10], +"d6/d73/classcudnn__frontend_1_1ConvDesc__v8.html#aa8ea272eaf26ae7f7ad2d625253ea62f":[4,0,0,1,5], +"d6/d73/classcudnn__frontend_1_1ConvDesc__v8.html#ac513728c785a54ef86612a0bd6fa0f1a":[4,0,0,1,13], +"d6/d73/classcudnn__frontend_1_1ConvDesc__v8.html#adcb7e5f546b83bbdab63773030e3b909":[4,0,0,1,9], +"d6/d73/classcudnn__frontend_1_1ConvDesc__v8.html#aff824fb1cf44c188a7400b017458327e":[4,0,0,1,11], +"d6/d88/classcudnn__frontend_1_1BackendDescriptor.html":[4,0,0,0], +"d6/d88/classcudnn__frontend_1_1BackendDescriptor.html#a070df0d11a52793ce9480dbdcee0c24e":[4,0,0,0,7], +"d6/d88/classcudnn__frontend_1_1BackendDescriptor.html#a0d416655dab2b5a675fecb5df9ea8521":[4,0,0,0,10], +"d6/d88/classcudnn__frontend_1_1BackendDescriptor.html#a1748a5c560905314930c37b2ed1a54d2":[4,0,0,0,8], +"d6/d88/classcudnn__frontend_1_1BackendDescriptor.html#a3aa1ab42ab96471092185f15e22c1e9f":[4,0,0,0,5], +"d6/d88/classcudnn__frontend_1_1BackendDescriptor.html#a3ef02443f20b90223baf5f1922505eab":[4,0,0,0,9], +"d6/d88/classcudnn__frontend_1_1BackendDescriptor.html#a5765369a5739c2ea81c4f39ce2d1c46e":[4,0,0,0,1], +"d6/d88/classcudnn__frontend_1_1BackendDescriptor.html#a57c83e78374bac747b5660fb271b947a":[4,0,0,0,3], +"d6/d88/classcudnn__frontend_1_1BackendDescriptor.html#a62312f29dbbc7c11c1da54a2ad41c52f":[4,0,0,0,11], +"d6/d88/classcudnn__frontend_1_1BackendDescriptor.html#a8a5466c444f2de721118334ac876c6ba":[4,0,0,0,12], +"d6/d88/classcudnn__frontend_1_1BackendDescriptor.html#a8aa93686ca88410fc048b05155148183":[4,0,0,0,0], +"d6/d88/classcudnn__frontend_1_1BackendDescriptor.html#ab652fb3e9a58092fbb137b0e959a9478":[4,0,0,0,2], +"d6/d88/classcudnn__frontend_1_1BackendDescriptor.html#abfde0f34b0bf49c45d3d9c0408284f6f":[4,0,0,0,4], +"d6/d88/classcudnn__frontend_1_1BackendDescriptor.html#af34344e365e6422ee86955349bf80b49":[4,0,0,0,6], +"d6/da7/classcudnn__frontend_1_1Tensor__v8.html":[4,0,0,25], +"d6/da7/classcudnn__frontend_1_1Tensor__v8.html#a062e54efdec89943fcb0602cc06dfd28":[4,0,0,25,11], +"d6/da7/classcudnn__frontend_1_1Tensor__v8.html#a1370de050fc91e9d992995fae5f22011":[4,0,0,25,13], +"d6/da7/classcudnn__frontend_1_1Tensor__v8.html#a14f9c4498f4be5b3c2b0a94c708891fb":[4,0,0,25,6], +"d6/da7/classcudnn__frontend_1_1Tensor__v8.html#a1f41a9f80b8a3b35aed7948e264b0d79":[4,0,0,25,7], +"d6/da7/classcudnn__frontend_1_1Tensor__v8.html#a4f5c1e95de9419cb1904e0cbad570c63":[4,0,0,25,5], +"d6/da7/classcudnn__frontend_1_1Tensor__v8.html#a5a402bf5c68021711d9d9ec8fd4c1001":[4,0,0,25,1], +"d6/da7/classcudnn__frontend_1_1Tensor__v8.html#a5f2703668235c18d063174ccca285457":[4,0,0,25,3], +"d6/da7/classcudnn__frontend_1_1Tensor__v8.html#a611fc05f3c7b6ca90d0e3c0f6ef07d84":[4,0,0,25,12], +"d6/da7/classcudnn__frontend_1_1Tensor__v8.html#a7419041bb3bf934f8e9f851fa63acabd":[4,0,0,25,8], +"d6/da7/classcudnn__frontend_1_1Tensor__v8.html#a79cc1a752e6df2001b853f8c189b1f1f":[4,0,0,25,4], +"d6/da7/classcudnn__frontend_1_1Tensor__v8.html#a9df78edb662e32a63680281eb33a14a8":[4,0,0,25,0], +"d6/da7/classcudnn__frontend_1_1Tensor__v8.html#ab48b1728d6978407f0bdbf0227de6f82":[4,0,0,25,2], +"d6/da7/classcudnn__frontend_1_1Tensor__v8.html#ae4842fc7fcb87f5b60228fb6fa391b61":[4,0,0,25,9], +"d6/da7/classcudnn__frontend_1_1Tensor__v8.html#ae9a3d128db54fa92d392e77044f30ca9":[4,0,0,25,10], +"d6/db7/classcudnn__frontend_1_1MatMulDesc__v8.html":[4,0,0,16], +"d6/db7/classcudnn__frontend_1_1MatMulDesc__v8.html#a1dd13143c85b67f2c0da90f02884fab1":[4,0,0,16,7], +"d6/db7/classcudnn__frontend_1_1MatMulDesc__v8.html#a2931e4d0b21e6986a3f5a1697ca4bae0":[4,0,0,16,4], +"d6/db7/classcudnn__frontend_1_1MatMulDesc__v8.html#a48aa29d5df9a717e63c5146ac48c4543":[4,0,0,16,3], +"d6/db7/classcudnn__frontend_1_1MatMulDesc__v8.html#a5e060b83ea1e1ed59a66e15fdba91227":[4,0,0,16,2], +"d6/db7/classcudnn__frontend_1_1MatMulDesc__v8.html#aa99cc0548322d7298b9ca664a976281f":[4,0,0,16,6], +"d6/db7/classcudnn__frontend_1_1MatMulDesc__v8.html#ab725a8e47331aca6310155f6d55c0a02":[4,0,0,16,0], +"d6/db7/classcudnn__frontend_1_1MatMulDesc__v8.html#ac1257a1ca1261961fc99123988552911":[4,0,0,16,5], +"d6/db7/classcudnn__frontend_1_1MatMulDesc__v8.html#ad27b038b19b218067bd30e60d94fd672":[4,0,0,16,1], +"d7/d0d/group__ExecutionPlanQuery.html":[2,4], +"d7/d0d/group__ExecutionPlanQuery.html#ga00d10a076c22e86354a789852c56c22f":[4,0,0,14,7], +"d7/d0d/group__ExecutionPlanQuery.html#ga00d10a076c22e86354a789852c56c22f":[2,4,10], +"d7/d0d/group__ExecutionPlanQuery.html#ga0705e60cee62d3d196751517d545a7b0":[4,0,0,14,8], +"d7/d0d/group__ExecutionPlanQuery.html#ga0705e60cee62d3d196751517d545a7b0":[2,4,11], +"d7/d0d/group__ExecutionPlanQuery.html#ga2b84d3619b5bd9ca0faa30c126deb43c":[2,4,8], +"d7/d0d/group__ExecutionPlanQuery.html#ga2b84d3619b5bd9ca0faa30c126deb43c":[4,0,0,15,3], +"d7/d0d/group__ExecutionPlanQuery.html#ga2c011aa14563ef96417ce599f0c83d89":[4,0,0,14,2], +"d7/d0d/group__ExecutionPlanQuery.html#ga2c011aa14563ef96417ce599f0c83d89":[2,4,4], +"d7/d0d/group__ExecutionPlanQuery.html#ga2ff1340409f8834fe9ae68ff4c00281a":[4,0,0,14,6], +"d7/d0d/group__ExecutionPlanQuery.html#ga2ff1340409f8834fe9ae68ff4c00281a":[2,4,9], +"d7/d0d/group__ExecutionPlanQuery.html#ga4c36108c6511420d81fcda5292761726":[4,0,0,14,11], +"d7/d0d/group__ExecutionPlanQuery.html#ga4c36108c6511420d81fcda5292761726":[2,4,15], +"d7/d0d/group__ExecutionPlanQuery.html#ga51c4b75729ab066f0686729896741c5d":[2,4,5], +"d7/d0d/group__ExecutionPlanQuery.html#ga51c4b75729ab066f0686729896741c5d":[4,0,0,14,3], +"d7/d0d/group__ExecutionPlanQuery.html#ga5e3dd6d441474ac5ab94aaaf9c45bc5b":[4,0,0,14,10], +"d7/d0d/group__ExecutionPlanQuery.html#ga5e3dd6d441474ac5ab94aaaf9c45bc5b":[2,4,14], +"d7/d0d/group__ExecutionPlanQuery.html#ga5f757c2da8c90645c34637dde4aed8f8":[4,0,0,15,5], +"d7/d0d/group__ExecutionPlanQuery.html#ga5f757c2da8c90645c34637dde4aed8f8":[2,4,12], +"d7/d0d/group__ExecutionPlanQuery.html#ga5ff39f2019a5a3fe8062bf887707877c":[4,0,0,15,4], +"d7/d0d/group__ExecutionPlanQuery.html#ga5ff39f2019a5a3fe8062bf887707877c":[2,4,1], +"d7/d0d/group__ExecutionPlanQuery.html#ga60147aa715352906e32cbb87558cb0ae":[2,4,7], +"d7/d0d/group__ExecutionPlanQuery.html#ga60147aa715352906e32cbb87558cb0ae":[4,0,0,15,2], +"d7/d0d/group__ExecutionPlanQuery.html#ga8a6517102f5c12e63e4417324a03180b":[4,0,0,14,4], +"d7/d0d/group__ExecutionPlanQuery.html#ga8a6517102f5c12e63e4417324a03180b":[2,4,2], +"d7/d0d/group__ExecutionPlanQuery.html#ga8e48fb375271599c83f57922d9f8c89e":[2,4,6], +"d7/d0d/group__ExecutionPlanQuery.html#ga8e48fb375271599c83f57922d9f8c89e":[4,0,0,15,0], +"d7/d0d/group__ExecutionPlanQuery.html#gad80aa2980d915449d05db4c71041e2e0":[4,0,0,14,5], +"d7/d0d/group__ExecutionPlanQuery.html#gad80aa2980d915449d05db4c71041e2e0":[2,4,3], +"d7/d0d/group__ExecutionPlanQuery.html#gae1a2e3dd89dbe455e7067531ec5b5562":[4,0,0,15,9], +"d7/d0d/group__ExecutionPlanQuery.html#gae1a2e3dd89dbe455e7067531ec5b5562":[2,4,16], +"d7/d0d/group__ExecutionPlanQuery.html#gae3f841de1b6461b31bf7967734a70a8a":[4,0,0,15,1], +"d7/d0d/group__ExecutionPlanQuery.html#gae3f841de1b6461b31bf7967734a70a8a":[2,4,13], +"d7/d0d/group__ExecutionPlanQuery.html#gaf732b37c9c05a2a8bd1a76289c740c4a":[4,0,0,14,12], +"d7/d0d/group__ExecutionPlanQuery.html#gaf732b37c9c05a2a8bd1a76289c740c4a":[2,4,17], +"d9/d08/group__MatMulDescBuilder__v8.html":[2,7], +"d9/d08/group__MatMulDescBuilder__v8.html#ga5885f3eb7580cbe0cbe7243c4711c0f2":[4,0,0,17,6], +"d9/d08/group__MatMulDescBuilder__v8.html#ga5885f3eb7580cbe0cbe7243c4711c0f2":[2,7,0], +"d9/dca/classcudnn__frontend_1_1cudnnException.html":[4,0,0,3], +"d9/dca/classcudnn__frontend_1_1cudnnException.html#a4f35e3466ff6ce0875631b810364364b":[4,0,0,3,1], +"d9/dca/classcudnn__frontend_1_1cudnnException.html#aa80c45a57ca091770572aaa5a1f7e322":[4,0,0,3,0], +"d9/df1/classcudnn__frontend_1_1EngineFallbackListBuilder__v8.html":[4,0,0,10], +"d9/df1/classcudnn__frontend_1_1EngineFallbackListBuilder__v8.html#a1effb794c90cbe7ad2e7649d400cb2dd":[4,0,0,10,5], +"d9/df1/classcudnn__frontend_1_1EngineFallbackListBuilder__v8.html#a28651c04cd22f3ebe037b99627ddbd62":[4,0,0,10,1], +"d9/df1/classcudnn__frontend_1_1EngineFallbackListBuilder__v8.html#a3dda7b1b97beb027718b7809702967b5":[4,0,0,10,2], +"d9/df1/classcudnn__frontend_1_1EngineFallbackListBuilder__v8.html#a56f2014918d259c53a2ebb3e815073e9":[4,0,0,10,8], +"d9/df1/classcudnn__frontend_1_1EngineFallbackListBuilder__v8.html#aae1a36ace3278dbedcf0d743a7744d98":[4,0,0,10,4], +"d9/df1/classcudnn__frontend_1_1EngineFallbackListBuilder__v8.html#ad3e10ca860311b1b554507615c46b9ad":[4,0,0,10,3], +"d9/df1/classcudnn__frontend_1_1EngineFallbackListBuilder__v8.html#ae955fa571b31ffc3da0ca6293d089642":[4,0,0,10,0], +"d9/dfd/classcudnn__frontend_1_1EngineBuilder__v8.html":[4,0,0,5], +"d9/dfd/classcudnn__frontend_1_1EngineBuilder__v8.html#a010b99c39d63121be78ec847fff433f8":[4,0,0,5,4], +"d9/dfd/classcudnn__frontend_1_1EngineBuilder__v8.html#a033fb0022860f23e76ca1529da165bfc":[4,0,0,5,2], +"d9/dfd/classcudnn__frontend_1_1EngineBuilder__v8.html#a21b687e5455f4bc727210ac2da46d7b3":[4,0,0,5,0], +"d9/dfd/classcudnn__frontend_1_1EngineBuilder__v8.html#a7f5a24e27ff497bd44fd93fb700d5424":[4,0,0,5,3], +"d9/dfd/classcudnn__frontend_1_1EngineBuilder__v8.html#a8a300ec39fc764b86058acf8a9406d89":[4,0,0,5,1], +"d9/dfd/classcudnn__frontend_1_1EngineBuilder__v8.html#a9d29a91186f6baa215b61340a386ec6d":[4,0,0,5,5], +"d9/dfd/classcudnn__frontend_1_1EngineBuilder__v8.html#adc25c468425d9b6b71b9592b80ea715d":[4,0,0,5,9], +"da/d5a/cudnn__frontend__Operation_8h.html":[5,0,13], +"da/d5a/cudnn__frontend__Operation_8h_source.html":[5,0,13], +"da/d5f/cudnn__frontend__PointWiseDesc_8h.html":[5,0,15], +"da/d5f/cudnn__frontend__PointWiseDesc_8h_source.html":[5,0,15], +"db/d66/cudnn__frontend__Heuristics_8h.html":[5,0,11], +"db/d66/cudnn__frontend__Heuristics_8h_source.html":[5,0,11], +"db/d7d/cudnn__frontend__OperationGraph_8h.html":[5,0,14], +"db/d7d/cudnn__frontend__OperationGraph_8h_source.html":[5,0,14], +"db/d99/classcudnn__frontend_1_1EngineFallbackList__v8.html":[4,0,0,9], +"db/d99/classcudnn__frontend_1_1EngineFallbackList__v8.html#a22ef505758a33415d01e3a9a8843fe22":[4,0,0,9,6], +"db/d99/classcudnn__frontend_1_1EngineFallbackList__v8.html#a3509dd7589fed7a699874170cec6dd9f":[4,0,0,9,4], +"db/d99/classcudnn__frontend_1_1EngineFallbackList__v8.html#a56ad23cee30cbe70209ce6399a69d541":[4,0,0,9,5], +"db/d99/classcudnn__frontend_1_1EngineFallbackList__v8.html#a62dd89e142b11917507a48b2ac3dd047":[4,0,0,9,0], +"db/d99/classcudnn__frontend_1_1EngineFallbackList__v8.html#a71e6146b18a0aa4de8fbc6ba457efbb9":[4,0,0,9,8], +"db/d99/classcudnn__frontend_1_1EngineFallbackList__v8.html#a9a557db46e3559fcaa0e800d976d6238":[4,0,0,9,9], +"db/d99/classcudnn__frontend_1_1EngineFallbackList__v8.html#a9c9a8cc39a38b449b1f044d407168905":[4,0,0,9,3], +"db/d99/classcudnn__frontend_1_1EngineFallbackList__v8.html#a9f8070f063b1c0564297260ebe812506":[4,0,0,9,11], +"db/d99/classcudnn__frontend_1_1EngineFallbackList__v8.html#abb40ba38f035c1e9bd20304f32f90256":[4,0,0,9,2], +"db/d99/classcudnn__frontend_1_1EngineFallbackList__v8.html#adfa074bcaaf2b0297a9c740a3e3706b7":[4,0,0,9,1], +"db/d99/classcudnn__frontend_1_1EngineFallbackList__v8.html#ae2c71646b56855f59ed1a267f06d5a7c":[4,0,0,9,7], +"db/d99/classcudnn__frontend_1_1EngineFallbackList__v8.html#ae8995303eac50633f6320f5949a045bb":[4,0,0,9,10], +"db/dae/classcudnn__frontend_1_1TensorBuilder__v8.html":[4,0,0,26], +"db/dae/classcudnn__frontend_1_1TensorBuilder__v8.html#a2c9dcbe8acfe079ad14801c7cda0fe29":[4,0,0,26,1], +"db/dae/classcudnn__frontend_1_1TensorBuilder__v8.html#a32876941f964b3fad2d123b9081b0af7":[4,0,0,26,4], +"db/dae/classcudnn__frontend_1_1TensorBuilder__v8.html#a3a33c9ba58f393d231e05a1bcc5706d8":[4,0,0,26,5], +"db/dae/classcudnn__frontend_1_1TensorBuilder__v8.html#a87c53bd36c748fe2327743bd852fb144":[4,0,0,26,12], +"db/dae/classcudnn__frontend_1_1TensorBuilder__v8.html#a8f8b7d7da3675d69e7f09bec21735656":[4,0,0,26,2], +"db/dae/classcudnn__frontend_1_1TensorBuilder__v8.html#a9d57810fb6d58f5152e5a1bbc55fc5dd":[4,0,0,26,0], +"db/dae/classcudnn__frontend_1_1TensorBuilder__v8.html#abcc771bbe9e1791afc10c686f90c2188":[4,0,0,26,3], +"db/ddb/classcudnn__frontend_1_1EngineHeuristics__v8.html":[4,0,0,11], +"db/ddb/classcudnn__frontend_1_1EngineHeuristics__v8.html#a081860775bfc5626bd57066066eb4299":[4,0,0,11,11], +"db/ddb/classcudnn__frontend_1_1EngineHeuristics__v8.html#a2261e27dacfdad755d625692aa20f290":[4,0,0,11,1], +"db/ddb/classcudnn__frontend_1_1EngineHeuristics__v8.html#a2301c5b006fa6e341bc88ece066f8ea2":[4,0,0,11,7], +"db/ddb/classcudnn__frontend_1_1EngineHeuristics__v8.html#a298d4a89c8e9ed80526a6cccf33d716c":[4,0,0,11,0], +"db/ddb/classcudnn__frontend_1_1EngineHeuristics__v8.html#a44df29e58afe4b8fdc894574eb5efb9e":[4,0,0,11,8], +"db/ddb/classcudnn__frontend_1_1EngineHeuristics__v8.html#a496a7e3160046bdf73289fbec51423a3":[4,0,0,11,3], +"db/ddb/classcudnn__frontend_1_1EngineHeuristics__v8.html#a71e7822002502874f6b2dfec4ede7e01":[4,0,0,11,10], +"db/ddb/classcudnn__frontend_1_1EngineHeuristics__v8.html#a7a1e931b0f7910db6e6f5d5bfbfe3511":[4,0,0,11,9], +"db/ddb/classcudnn__frontend_1_1EngineHeuristics__v8.html#a7c958bd4b97b4a77694d2bee01acec4c":[4,0,0,11,12], +"db/ddb/classcudnn__frontend_1_1EngineHeuristics__v8.html#aaa983e31e1a22bfebb639865e4514d82":[4,0,0,11,2], +"db/ddb/classcudnn__frontend_1_1EngineHeuristics__v8.html#ac223cc9438a0442bd3b48881f71a4b40":[4,0,0,11,4], +"db/de1/classcudnn__frontend_1_1ConvDescBuilder__v8.html":[4,0,0,2], +"db/de1/classcudnn__frontend_1_1ConvDescBuilder__v8.html#a01f709a3efafaca70de6565817c43beb":[4,0,0,2,4], +"db/de1/classcudnn__frontend_1_1ConvDescBuilder__v8.html#a314369f1ea702c92d184b3ba66085468":[4,0,0,2,2], +"db/de1/classcudnn__frontend_1_1ConvDescBuilder__v8.html#a5fba7029429a093b36fd201219315a1f":[4,0,0,2,5], +"db/de1/classcudnn__frontend_1_1ConvDescBuilder__v8.html#a67e82b4d8b94b55ecc50a9151799fff9":[4,0,0,2,13], +"db/de1/classcudnn__frontend_1_1ConvDescBuilder__v8.html#a99c1c90149cee07a26124fe32bdcfe03":[4,0,0,2,3], +"db/de1/classcudnn__frontend_1_1ConvDescBuilder__v8.html#ae75d5fd1c3fb6b51072f2c9b211477eb":[4,0,0,2,1], +"db/de1/classcudnn__frontend_1_1ConvDescBuilder__v8.html#ae7b3fb50c7866c50ac1a170e137f38af":[4,0,0,2,0], +"dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html":[4,0,0,4,0], +"dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#a2403145dcb4bc55f970c6d07c1ed796e":[4,0,0,4,0,11], +"dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#a3f60f9ba0e35cb0bccbf3524def69db2":[4,0,0,4,0,1], +"dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#a4c0a920d14a719e99fce3d64a6eb0980":[4,0,0,4,0,2], +"dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#a4fe794b42a0ee5ba71b8ca8c797d1dbe":[4,0,0,4,0,4], +"dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#a542f95d42a6d118e3de1726720c12278":[4,0,0,4,0,7], +"dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#a75ea7ec76b08688da99e6bd3664083c8":[4,0,0,4,0,3], +"dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#a8342ab30dbe0e86d8d060983f14aba87":[4,0,0,4,0,12], +"dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#aaf0d313c5491b599537422694eb83b82":[4,0,0,4,0,0], +"dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#adc0dd9d11771a040a8f5191bef00cdb5":[4,0,0,4,0,6], +"dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#adc13c98616305cd23d86dc5dc1dfe86e":[4,0,0,4,0,9], +"dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#aecda8659b5a5d1dbb21b540a73141fb9":[4,0,0,4,0,10], +"dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#aee3bbc2a558893309d6882a0e30d439a":[4,0,0,4,0,8], +"dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#af3fdf6b0da493544a003913bdf524449":[4,0,0,4,0,5], +"dc/d11/cudnn__backend__base_8h.html":[5,0,0], +"dc/d11/cudnn__backend__base_8h.html#ac94d582cdfa2adf3d68a4e675e5d69aa":[5,0,0,2], +"dc/d11/cudnn__backend__base_8h.html#aee9c79eb8972c944de14ccd70bf5db43":[5,0,0,3], +"dc/d11/cudnn__backend__base_8h_source.html":[5,0,0], +"dc/d3c/classcudnn__frontend_1_1Engine__v8.html":[4,0,0,4], +"dc/d3c/classcudnn__frontend_1_1Engine__v8.html#a052463f45fef3bb98e2822ba0fccdb8e":[4,0,0,4,6], +"dc/d3c/classcudnn__frontend_1_1Engine__v8.html#a0e6d7c12c261ad6c2f08e1249397b696":[4,0,0,4,5], +"dc/d3c/classcudnn__frontend_1_1Engine__v8.html#a6053f049f393faebc7188bfa1e8c2d38":[4,0,0,4,16], +"dc/d3c/classcudnn__frontend_1_1Engine__v8.html#a620ad17c3560e87d5a859d7f0eb121d4":[4,0,0,4,17], +"dc/d3c/classcudnn__frontend_1_1Engine__v8.html#a63620960db3192066b7eb5f563841f1b":[4,0,0,4,2], +"dc/d3c/classcudnn__frontend_1_1Engine__v8.html#a6804e842fb698ebc12fccfece3f33b01":[4,0,0,4,8], +"dc/d3c/classcudnn__frontend_1_1Engine__v8.html#a7609e82ac3dc04b67e9e73beb0f7cdae":[4,0,0,4,3], +"dc/d3c/classcudnn__frontend_1_1Engine__v8.html#a837d8adc86f08ca31f42437512a30752":[4,0,0,4,7], +"dc/d3c/classcudnn__frontend_1_1Engine__v8.html#aae4b49a84f8ecb114449784e43496521":[4,0,0,4,13], +"dc/d3c/classcudnn__frontend_1_1Engine__v8.html#ab2d9ce46cd037407a5c9ec655ad0a25d":[4,0,0,4,12], +"dc/d3c/classcudnn__frontend_1_1Engine__v8.html#ad3966b20d080c0fb9930b8a2018da2f8":[4,0,0,4,10], +"dc/d3c/classcudnn__frontend_1_1Engine__v8.html#add2d5998a38944fd0dba03fce96fe7aa":[4,0,0,4,14], +"dc/d3c/classcudnn__frontend_1_1Engine__v8.html#ae5d0c105971ce443fe6fb62884d7b2d2":[4,0,0,4,11], +"dc/d3c/classcudnn__frontend_1_1Engine__v8.html#aed64863b9d73b7f6f3a7e16dc6e7eb04":[4,0,0,4,15], +"dc/d3c/classcudnn__frontend_1_1Engine__v8.html#af299a1692584215c649b3563fdb3abae":[4,0,0,4,9], +"dc/d3c/classcudnn__frontend_1_1Engine__v8.html#af58a8aa09f22e048d51e619e36b4cbef":[4,0,0,4,4], +"dc/d3c/classcudnn__frontend_1_1Engine__v8.html#afc5da140bcc7be57dc81f7fc5a589744":[4,0,0,4,1], +"dc/d99/group__EngineHeuristicsBuilder__v8.html":[2,6], +"dc/d99/group__EngineHeuristicsBuilder__v8.html#ga0554ac9347b7409e46f960b30f18dc68":[4,0,0,12,7], +"dc/d99/group__EngineHeuristicsBuilder__v8.html#ga0554ac9347b7409e46f960b30f18dc68":[2,6,1], +"dc/d99/group__EngineHeuristicsBuilder__v8.html#gaf2d783ca6a663aa50ffed2ccbc164812":[4,0,0,12,6], +"dc/d99/group__EngineHeuristicsBuilder__v8.html#gaf2d783ca6a663aa50ffed2ccbc164812":[2,6,0], +"dc/da3/classcudnn__frontend_1_1EngineConfigGenerator.html":[4,0,0,8], +"dc/da3/classcudnn__frontend_1_1EngineConfigGenerator.html#a1a06febdf947e151276bf09947c62436":[4,0,0,8,4], +"dc/da3/classcudnn__frontend_1_1EngineConfigGenerator.html#a322221ec9a28f1f48c5a3edf60adff1d":[4,0,0,8,0], +"dc/da3/classcudnn__frontend_1_1EngineConfigGenerator.html#a4b07b958f03daf033c30b9182fee372b":[4,0,0,8,3], +"dc/da3/classcudnn__frontend_1_1EngineConfigGenerator.html#abd7cdd3a218623ffc5dfcbf9343aef85":[4,0,0,8,1], +"dc/da3/classcudnn__frontend_1_1EngineConfigGenerator.html#ad6ca7e7263ed9b7597f94ca45505642f":[4,0,0,8,2], +"dd/d72/classcudnn__frontend_1_1EngineConfigBuilder__v8.html":[4,0,0,7], +"dd/d72/classcudnn__frontend_1_1EngineConfigBuilder__v8.html#a17fca0597527c1f6acffa73ddaeedc03":[4,0,0,7,3], +"dd/d72/classcudnn__frontend_1_1EngineConfigBuilder__v8.html#a3deb5e1f20c028b8bb39406cca743e43":[4,0,0,7,2], +"dd/d72/classcudnn__frontend_1_1EngineConfigBuilder__v8.html#a49a8a25759e78e7a2c77c55f0b54696b":[4,0,0,7,0], +"dd/d72/classcudnn__frontend_1_1EngineConfigBuilder__v8.html#a49eedc731d95df1f21e353a9a9511cfd":[4,0,0,7,1], +"dd/d72/classcudnn__frontend_1_1EngineConfigBuilder__v8.html#a639e1514ea8f283720e49fc18d7ad673":[4,0,0,7,4], +"dd/d72/classcudnn__frontend_1_1EngineConfigBuilder__v8.html#a8d4cb5ab44b076c71afd5f49e6df94f7":[4,0,0,7,5], +"dd/d72/classcudnn__frontend_1_1EngineConfigBuilder__v8.html#a8dc6947bf5dac837ea233bfaec4bf03f":[4,0,0,7,7], +"de/d00/classcudnn__frontend_1_1MatMulDescBuilder__v8.html":[4,0,0,17], +"de/d00/classcudnn__frontend_1_1MatMulDescBuilder__v8.html#a02ee327bae65fc44c140d7bb6a0b4991":[4,0,0,17,5], +"de/d00/classcudnn__frontend_1_1MatMulDescBuilder__v8.html#a287154397d78c528465a949ab0242068":[4,0,0,17,3], +"de/d00/classcudnn__frontend_1_1MatMulDescBuilder__v8.html#a3f5790e5ada9a1785d9daf4246ea8de3":[4,0,0,17,1], +"de/d00/classcudnn__frontend_1_1MatMulDescBuilder__v8.html#a75af51fa2937a7df6787d3181ef22cf2":[4,0,0,17,2], +"de/d00/classcudnn__frontend_1_1MatMulDescBuilder__v8.html#aa71bc8242df4035ff5d6b4d54083db4b":[4,0,0,17,7], +"de/d00/classcudnn__frontend_1_1MatMulDescBuilder__v8.html#addc153acf5600781659a1a2ba891e59c":[4,0,0,17,4] }; diff --git a/docs/navtreeindex2.js b/docs/navtreeindex2.js index daf4e3e28..ca074d5d2 100644 --- a/docs/navtreeindex2.js +++ b/docs/navtreeindex2.js @@ -1,73 +1,134 @@ var NAVTREEINDEX2 = { -"df/d3e/cudnn__frontend__EngineFallbackList_8h.html":[3,0,6], -"df/d3e/cudnn__frontend__EngineFallbackList_8h.html#ad365eee23138df472d716d9dbf119f0e":[3,0,6,2], -"df/d3e/cudnn__frontend__EngineFallbackList_8h_source.html":[3,0,6], -"df/d83/classcudnn__frontend_1_1EngineConfig__v8.html":[2,0,0,6], -"df/d83/classcudnn__frontend_1_1EngineConfig__v8.html#a04aedaff21f829caa98aacb68b51dcf1":[2,0,0,6,8], -"df/d83/classcudnn__frontend_1_1EngineConfig__v8.html#a058e432452f5cd570cbf4e69d7d53eea":[2,0,0,6,1], -"df/d83/classcudnn__frontend_1_1EngineConfig__v8.html#a16d46ab109f54fe4ef0863fddcc66e42":[2,0,0,6,0], -"df/d83/classcudnn__frontend_1_1EngineConfig__v8.html#a1c7175f7d3cc7224496f276df36036aa":[2,0,0,6,5], -"df/d83/classcudnn__frontend_1_1EngineConfig__v8.html#a37695c0659b489b06ff3b83194be59bb":[2,0,0,6,11], -"df/d83/classcudnn__frontend_1_1EngineConfig__v8.html#a9365e32afd0eae60e3d87a853dd24e33":[2,0,0,6,10], -"df/d83/classcudnn__frontend_1_1EngineConfig__v8.html#a9b1cd07d3023dc3130d5eae560558cdb":[2,0,0,6,7], -"df/d83/classcudnn__frontend_1_1EngineConfig__v8.html#ab761cb8a8a38495e913395fa872afb3e":[2,0,0,6,2], -"df/d83/classcudnn__frontend_1_1EngineConfig__v8.html#ac102dce4f496c358a15ca753362fc4b7":[2,0,0,6,9], -"df/d83/classcudnn__frontend_1_1EngineConfig__v8.html#acf7eccfed045156beab03a2db0c31dd8":[2,0,0,6,3], -"df/d83/classcudnn__frontend_1_1EngineConfig__v8.html#ad79aab6d69a2b4400259abd72af73c84":[2,0,0,6,6], -"df/d83/classcudnn__frontend_1_1EngineConfig__v8.html#aefd7d8d3da71ce0dddca0f6a85fd1c80":[2,0,0,6,4], -"df/dc0/cudnn__frontend__VariantPack_8h.html":[3,0,17], -"df/dc0/cudnn__frontend__VariantPack_8h_source.html":[3,0,17], -"df/de1/namespacecudnn__frontend.html":[1,0,0], -"df/de1/namespacecudnn__frontend.html":[2,0,0], -"files.html":[3,0], -"functions.html":[2,3,0], -"functions.html":[2,3,0,0], -"functions_0x7e.html":[2,3,0,21], -"functions_b.html":[2,3,0,1], -"functions_c.html":[2,3,0,2], -"functions_d.html":[2,3,0,3], -"functions_e.html":[2,3,0,4], -"functions_func.html":[2,3,1,0], -"functions_func.html":[2,3,1], -"functions_func_0x7e.html":[2,3,1,13], -"functions_func_c.html":[2,3,1,1], -"functions_func_d.html":[2,3,1,2], -"functions_func_e.html":[2,3,1,3], -"functions_func_g.html":[2,3,1,4], -"functions_func_i.html":[2,3,1,5], -"functions_func_k.html":[2,3,1,6], -"functions_func_o.html":[2,3,1,7], -"functions_func_p.html":[2,3,1,8], -"functions_func_s.html":[2,3,1,9], -"functions_func_t.html":[2,3,1,10], -"functions_func_v.html":[2,3,1,11], -"functions_func_w.html":[2,3,1,12], -"functions_g.html":[2,3,0,5], -"functions_h.html":[2,3,0,6], -"functions_i.html":[2,3,0,7], -"functions_k.html":[2,3,0,8], -"functions_l.html":[2,3,0,9], -"functions_m.html":[2,3,0,10], -"functions_n.html":[2,3,0,11], -"functions_o.html":[2,3,0,12], -"functions_p.html":[2,3,0,13], -"functions_rela.html":[2,3,3], -"functions_s.html":[2,3,0,14], -"functions_t.html":[2,3,0,15], -"functions_u.html":[2,3,0,16], -"functions_v.html":[2,3,0,17], -"functions_vars.html":[2,3,2], -"functions_w.html":[2,3,0,18], -"functions_x.html":[2,3,0,19], -"functions_y.html":[2,3,0,20], -"hierarchy.html":[2,2], +"de/d00/classcudnn__frontend_1_1MatMulDescBuilder__v8.html#afea76414fa5c0c5f38a551afcf11391c":[4,0,0,17,0], +"de/d0c/cudnn__frontend_8h.html":[5,0,1], +"de/d0c/cudnn__frontend_8h.html#a0b7ba1175801c56d07d26785bcd8fb70":[5,0,1,17], +"de/d0c/cudnn__frontend_8h.html#a0c344e3bc1f332aa9f5b213eb1ae9ee6":[5,0,1,13], +"de/d0c/cudnn__frontend_8h.html#a147bbd62e1c7c6b3fbc6869ab776b125":[5,0,1,8], +"de/d0c/cudnn__frontend_8h.html#a1ed8c535fea949a10acd26e279cc28a1":[5,0,1,2], +"de/d0c/cudnn__frontend_8h.html#a2559dec72130bbdc95c02fb0df79fd42":[5,0,1,4], +"de/d0c/cudnn__frontend_8h.html#a2f1497702504947953a0f5a69b6eeb2a":[5,0,1,14], +"de/d0c/cudnn__frontend_8h.html#a4f90ec150d149f8f0751daa3ad625839":[5,0,1,3], +"de/d0c/cudnn__frontend_8h.html#a61fbd4506f1249c686164fb33d858999":[5,0,1,6], +"de/d0c/cudnn__frontend_8h.html#a7f878662c40c287736343affc43f25dc":[5,0,1,19], +"de/d0c/cudnn__frontend_8h.html#a91b5e4e82a18d2212ad6be6d5398752c":[5,0,1,1], +"de/d0c/cudnn__frontend_8h.html#a984c10aa29daac796444bda66bdef26e":[5,0,1,10], +"de/d0c/cudnn__frontend_8h.html#a9fea2e22198aaf2ea11a0df46abd0749":[5,0,1,21], +"de/d0c/cudnn__frontend_8h.html#aa20fd945a531e0a3a5007e65fe917770":[5,0,1,20], +"de/d0c/cudnn__frontend_8h.html#aa508b66c4de02f4aacae8029dbe422eb":[5,0,1,11], +"de/d0c/cudnn__frontend_8h.html#aae6a627b67858b15afbc5656afa88123":[5,0,1,9], +"de/d0c/cudnn__frontend_8h.html#ab5b844f5de8ad3c056f0cb1cd0fb3ac1":[5,0,1,23], +"de/d0c/cudnn__frontend_8h.html#ac46e1785757fde7c10e3d527f697fde8":[5,0,1,5], +"de/d0c/cudnn__frontend_8h.html#ac86ce924df5209c4ce1bc25856eea6e6":[5,0,1,16], +"de/d0c/cudnn__frontend_8h.html#ad6ac8113b406ee2b6f20eff4dd2b4e01":[5,0,1,22], +"de/d0c/cudnn__frontend_8h.html#ad809552e9ec400bcbfcfc0ea5acd4e56":[5,0,1,12], +"de/d0c/cudnn__frontend_8h.html#ada5353494ce649fc915154ced52dcceb":[5,0,1,18], +"de/d0c/cudnn__frontend_8h.html#ae24bc7541c87c642cdef8eaf83c8eacc":[5,0,1,0], +"de/d0c/cudnn__frontend_8h.html#ae6d02ff4c7922673ed3862145a4019d4":[5,0,1,15], +"de/d0c/cudnn__frontend_8h.html#aeb6699f494fa895d402898dae554f5a9":[5,0,1,7], +"de/d0c/cudnn__frontend_8h_source.html":[5,0,1], +"de/d1e/cudnn__frontend__EngineConfigGenerator_8h.html":[5,0,5], +"de/d1e/cudnn__frontend__EngineConfigGenerator_8h.html#a0f52559baeb4e9ee8835d95ea50a875e":[5,0,5,7], +"de/d1e/cudnn__frontend__EngineConfigGenerator_8h.html#a53716729f10b4064fb41dec9dd32ffd6":[5,0,5,4], +"de/d1e/cudnn__frontend__EngineConfigGenerator_8h.html#a560644a5c1e6016c509a379ca6e03f05":[5,0,5,3], +"de/d1e/cudnn__frontend__EngineConfigGenerator_8h.html#ab3748fa00b36beec790db7201fdd2ef3":[5,0,5,6], +"de/d1e/cudnn__frontend__EngineConfigGenerator_8h.html#ab3748fa00b36beec790db7201fdd2ef3a8199dfa6701edb38f52a74d9e229b43d":[5,0,5,6,2], +"de/d1e/cudnn__frontend__EngineConfigGenerator_8h.html#ab3748fa00b36beec790db7201fdd2ef3a903bfd2e4d1b8ab2a7197be752c618a6":[5,0,5,6,1], +"de/d1e/cudnn__frontend__EngineConfigGenerator_8h.html#ab3748fa00b36beec790db7201fdd2ef3ac8ab707d81df65503b6b0ecc67675158":[5,0,5,6,0], +"de/d1e/cudnn__frontend__EngineConfigGenerator_8h.html#ad31f040777311d1d1a7a2490f23e026e":[5,0,5,5], +"de/d1e/cudnn__frontend__EngineConfigGenerator_8h.html#ad5f0f0c892b009e34aa59f67de1b5535":[5,0,5,2], +"de/d1e/cudnn__frontend__EngineConfigGenerator_8h_source.html":[5,0,5], +"de/d6d/cudnn__frontend__Engine_8h.html":[5,0,3], +"de/d6d/cudnn__frontend__Engine_8h_source.html":[5,0,3], +"de/dd9/classcudnn__frontend_1_1OperationGraph__v8.html":[4,0,0,21], +"de/dd9/classcudnn__frontend_1_1OperationGraph__v8.html#a0b3b76a619160671c45c733eb1a13455":[4,0,0,21,3], +"de/dd9/classcudnn__frontend_1_1OperationGraph__v8.html#a19fd5ed99ab4053c8a178bd33843460a":[4,0,0,21,6], +"de/dd9/classcudnn__frontend_1_1OperationGraph__v8.html#a52c12bb0014a899c4c5201fb66301eb2":[4,0,0,21,10], +"de/dd9/classcudnn__frontend_1_1OperationGraph__v8.html#a5af59a099cc90eda429563e285b2907f":[4,0,0,21,8], +"de/dd9/classcudnn__frontend_1_1OperationGraph__v8.html#a5c029cff12e0e91406a8f88fd8a830f4":[4,0,0,21,2], +"de/dd9/classcudnn__frontend_1_1OperationGraph__v8.html#a85e65daf5a2db5aba0207ccad367457d":[4,0,0,21,0], +"de/dd9/classcudnn__frontend_1_1OperationGraph__v8.html#a87704bb46bb12bba977a21ed579a4ef3":[4,0,0,21,7], +"de/dd9/classcudnn__frontend_1_1OperationGraph__v8.html#ab2570d81fc01c1b6b9a76220b0abd717":[4,0,0,21,12], +"de/dd9/classcudnn__frontend_1_1OperationGraph__v8.html#abd35d4e84bb6ee70e8df38de093fc376":[4,0,0,21,9], +"de/dd9/classcudnn__frontend_1_1OperationGraph__v8.html#ac8ca1ba29ac3f8e68ba1bf3e5e500338":[4,0,0,21,11], +"de/dd9/classcudnn__frontend_1_1OperationGraph__v8.html#acd0b5f47407184b0b26bf4d4b5d0ce32":[4,0,0,21,4], +"de/dd9/classcudnn__frontend_1_1OperationGraph__v8.html#aeb42611a38c4951e66cd23108d53353c":[4,0,0,21,1], +"df/d17/cudnn__frontend__utils_8h.html":[5,0,17], +"df/d17/cudnn__frontend__utils_8h.html#a011f392961f07ab6de46a080e9a652a2":[5,0,17,1], +"df/d17/cudnn__frontend__utils_8h.html#a1690523b8a133acefaeabc725032e21c":[5,0,17,2], +"df/d17/cudnn__frontend__utils_8h.html#a6b0bb5ee1f6d6491a7d53a01ae947dee":[5,0,17,3], +"df/d17/cudnn__frontend__utils_8h_source.html":[5,0,17], +"df/d3e/cudnn__frontend__EngineFallbackList_8h.html":[5,0,6], +"df/d3e/cudnn__frontend__EngineFallbackList_8h.html#ad365eee23138df472d716d9dbf119f0e":[5,0,6,2], +"df/d3e/cudnn__frontend__EngineFallbackList_8h_source.html":[5,0,6], +"df/d83/classcudnn__frontend_1_1EngineConfig__v8.html":[4,0,0,6], +"df/d83/classcudnn__frontend_1_1EngineConfig__v8.html#a04aedaff21f829caa98aacb68b51dcf1":[4,0,0,6,8], +"df/d83/classcudnn__frontend_1_1EngineConfig__v8.html#a058e432452f5cd570cbf4e69d7d53eea":[4,0,0,6,1], +"df/d83/classcudnn__frontend_1_1EngineConfig__v8.html#a16d46ab109f54fe4ef0863fddcc66e42":[4,0,0,6,0], +"df/d83/classcudnn__frontend_1_1EngineConfig__v8.html#a1c7175f7d3cc7224496f276df36036aa":[4,0,0,6,5], +"df/d83/classcudnn__frontend_1_1EngineConfig__v8.html#a37695c0659b489b06ff3b83194be59bb":[4,0,0,6,11], +"df/d83/classcudnn__frontend_1_1EngineConfig__v8.html#a9365e32afd0eae60e3d87a853dd24e33":[4,0,0,6,10], +"df/d83/classcudnn__frontend_1_1EngineConfig__v8.html#a9b1cd07d3023dc3130d5eae560558cdb":[4,0,0,6,7], +"df/d83/classcudnn__frontend_1_1EngineConfig__v8.html#ab761cb8a8a38495e913395fa872afb3e":[4,0,0,6,2], +"df/d83/classcudnn__frontend_1_1EngineConfig__v8.html#ac102dce4f496c358a15ca753362fc4b7":[4,0,0,6,9], +"df/d83/classcudnn__frontend_1_1EngineConfig__v8.html#acf7eccfed045156beab03a2db0c31dd8":[4,0,0,6,3], +"df/d83/classcudnn__frontend_1_1EngineConfig__v8.html#ad79aab6d69a2b4400259abd72af73c84":[4,0,0,6,6], +"df/d83/classcudnn__frontend_1_1EngineConfig__v8.html#aefd7d8d3da71ce0dddca0f6a85fd1c80":[4,0,0,6,4], +"df/dc0/cudnn__frontend__VariantPack_8h.html":[5,0,18], +"df/dc0/cudnn__frontend__VariantPack_8h_source.html":[5,0,18], +"df/de1/namespacecudnn__frontend.html":[3,0,0], +"df/de1/namespacecudnn__frontend.html":[4,0,0], +"files.html":[5,0], +"functions.html":[4,3,0,0], +"functions.html":[4,3,0], +"functions_0x7e.html":[4,3,0,21], +"functions_b.html":[4,3,0,1], +"functions_c.html":[4,3,0,2], +"functions_d.html":[4,3,0,3], +"functions_e.html":[4,3,0,4], +"functions_func.html":[4,3,1,0], +"functions_func.html":[4,3,1], +"functions_func_0x7e.html":[4,3,1,14], +"functions_func_c.html":[4,3,1,1], +"functions_func_d.html":[4,3,1,2], +"functions_func_e.html":[4,3,1,3], +"functions_func_g.html":[4,3,1,4], +"functions_func_i.html":[4,3,1,5], +"functions_func_k.html":[4,3,1,6], +"functions_func_m.html":[4,3,1,7], +"functions_func_o.html":[4,3,1,8], +"functions_func_p.html":[4,3,1,9], +"functions_func_s.html":[4,3,1,10], +"functions_func_t.html":[4,3,1,11], +"functions_func_v.html":[4,3,1,12], +"functions_func_w.html":[4,3,1,13], +"functions_g.html":[4,3,0,5], +"functions_h.html":[4,3,0,6], +"functions_i.html":[4,3,0,7], +"functions_k.html":[4,3,0,8], +"functions_l.html":[4,3,0,9], +"functions_m.html":[4,3,0,10], +"functions_n.html":[4,3,0,11], +"functions_o.html":[4,3,0,12], +"functions_p.html":[4,3,0,13], +"functions_rela.html":[4,3,3], +"functions_s.html":[4,3,0,14], +"functions_t.html":[4,3,0,15], +"functions_u.html":[4,3,0,16], +"functions_v.html":[4,3,0,17], +"functions_vars.html":[4,3,2], +"functions_w.html":[4,3,0,18], +"functions_x.html":[4,3,0,19], +"functions_y.html":[4,3,0,20], +"hierarchy.html":[4,2], "index.html":[], -"modules.html":[0], -"namespacemembers.html":[1,1,0], -"namespacemembers_enum.html":[1,1,3], -"namespacemembers_func.html":[1,1,1], -"namespacemembers_type.html":[1,1,2], -"namespaces.html":[1,0], +"index.html#Introduction":[0], +"index.html#Need":[1], +"modules.html":[2], +"namespacemembers.html":[3,1,0], +"namespacemembers_enum.html":[3,1,3], +"namespacemembers_func.html":[3,1,1], +"namespacemembers_type.html":[3,1,2], +"namespaces.html":[3,0], "pages.html":[] }; diff --git a/docs/search/all_0.js b/docs/search/all_0.js index 1656a01c1..d04a2cea8 100644 --- a/docs/search/all_0.js +++ b/docs/search/all_0.js @@ -5,5 +5,6 @@ var searchData= ['alpha2_5fs',['alpha2_s',['../d4/d30/classcudnn__frontend_1_1Operation__v8.html#a4003061754cc4b0003a72cc474fca8d9',1,'cudnn_frontend::Operation_v8']]], ['alpha_5fd',['alpha_d',['../d4/d30/classcudnn__frontend_1_1Operation__v8.html#aee00f6897786ce0f16963a7d2f57a2f8',1,'cudnn_frontend::Operation_v8']]], ['alpha_5fs',['alpha_s',['../d4/d30/classcudnn__frontend_1_1Operation__v8.html#a4a71d73a1231c39e51a74f750586a733',1,'cudnn_frontend::Operation_v8']]], - ['alphabetatype',['alphabetaType',['../d4/d30/classcudnn__frontend_1_1Operation__v8.html#a0414d5eb022c25584d60491f416e6449',1,'cudnn_frontend::Operation_v8']]] + ['alphabetatype',['alphabetaType',['../d4/d30/classcudnn__frontend_1_1Operation__v8.html#a0414d5eb022c25584d60491f416e6449',1,'cudnn_frontend::Operation_v8']]], + ['amatdesc',['amatdesc',['../d4/d30/classcudnn__frontend_1_1Operation__v8.html#ae0e0256b292acd560accc1c02a6e393b',1,'cudnn_frontend::Operation_v8']]] ]; diff --git a/docs/search/all_1.js b/docs/search/all_1.js index 843e8f1e2..c37e8ff5f 100644 --- a/docs/search/all_1.js +++ b/docs/search/all_1.js @@ -6,8 +6,9 @@ var searchData= ['beta_5fd',['beta_d',['../d4/d30/classcudnn__frontend_1_1Operation__v8.html#a1118f19807c9f58cc1d0892bdb1f8c94',1,'cudnn_frontend::Operation_v8']]], ['beta_5fs',['beta_s',['../d4/d30/classcudnn__frontend_1_1Operation__v8.html#a0f14ddfbaae6e62375c46dd0d5ed993d',1,'cudnn_frontend::Operation_v8']]], ['bknobs',['bKnobs',['../dc/d3c/classcudnn__frontend_1_1Engine__v8.html#ab2d9ce46cd037407a5c9ec655ad0a25d',1,'cudnn_frontend::Engine_v8']]], + ['bmatdesc',['bmatdesc',['../d4/d30/classcudnn__frontend_1_1Operation__v8.html#a0945c6296efc14ffc41122aaae3946b8',1,'cudnn_frontend::Operation_v8']]], ['btensor_5fdima',['btensor_dimA',['../d6/da7/classcudnn__frontend_1_1Tensor__v8.html#a7419041bb3bf934f8e9f851fa63acabd',1,'cudnn_frontend::Tensor_v8']]], ['btensor_5fstra',['btensor_strA',['../d6/da7/classcudnn__frontend_1_1Tensor__v8.html#ae4842fc7fcb87f5b60228fb6fa391b61',1,'cudnn_frontend::Tensor_v8']]], - ['build',['build',['../db/de1/classcudnn__frontend_1_1ConvDescBuilder__v8.html#a01f709a3efafaca70de6565817c43beb',1,'cudnn_frontend::ConvDescBuilder_v8::build()'],['../d9/dfd/classcudnn__frontend_1_1EngineBuilder__v8.html#a010b99c39d63121be78ec847fff433f8',1,'cudnn_frontend::EngineBuilder_v8::build()'],['../dd/d72/classcudnn__frontend_1_1EngineConfigBuilder__v8.html#a639e1514ea8f283720e49fc18d7ad673',1,'cudnn_frontend::EngineConfigBuilder_v8::build()'],['../d9/df1/classcudnn__frontend_1_1EngineFallbackListBuilder__v8.html#aae1a36ace3278dbedcf0d743a7744d98',1,'cudnn_frontend::EngineFallbackListBuilder_v8::build()'],['../d7/d0d/group__ExecutionPlanQuery.html#ga5ff39f2019a5a3fe8062bf887707877c',1,'cudnn_frontend::ExecutionPlanBuilder_v8::build()'],['../d1/d28/classcudnn__frontend_1_1EngineHeuristicsBuilder__v8.html#ab3ff1b538521fdea588d8ac155f6e88c',1,'cudnn_frontend::EngineHeuristicsBuilder_v8::build()'],['../d1/d29/classcudnn__frontend_1_1OperationBuilder__v8.html#aa0df558c603d8316dd3eb2d5bfd67c9d',1,'cudnn_frontend::OperationBuilder_v8::build()'],['../d4/d39/classcudnn__frontend_1_1OperationGraphBuilder__v8.html#ac78945f424f254f0060d4c2e1184cf1f',1,'cudnn_frontend::OperationGraphBuilder_v8::build()'],['../d5/d02/classcudnn__frontend_1_1PointWiseDescBuilder__v8.html#a5de642e4141705f8e06c4bf566f1d332',1,'cudnn_frontend::PointWiseDescBuilder_v8::build()'],['../db/dae/classcudnn__frontend_1_1TensorBuilder__v8.html#a32876941f964b3fad2d123b9081b0af7',1,'cudnn_frontend::TensorBuilder_v8::build()'],['../d4/dce/classcudnn__frontend_1_1VariantPackBuilder__v8.html#abf794751941aa252c19e1879306375d3',1,'cudnn_frontend::VariantPackBuilder_v8::build()']]], + ['build',['build',['../db/de1/classcudnn__frontend_1_1ConvDescBuilder__v8.html#a01f709a3efafaca70de6565817c43beb',1,'cudnn_frontend::ConvDescBuilder_v8::build()'],['../d9/dfd/classcudnn__frontend_1_1EngineBuilder__v8.html#a010b99c39d63121be78ec847fff433f8',1,'cudnn_frontend::EngineBuilder_v8::build()'],['../dd/d72/classcudnn__frontend_1_1EngineConfigBuilder__v8.html#a639e1514ea8f283720e49fc18d7ad673',1,'cudnn_frontend::EngineConfigBuilder_v8::build()'],['../d9/df1/classcudnn__frontend_1_1EngineFallbackListBuilder__v8.html#aae1a36ace3278dbedcf0d743a7744d98',1,'cudnn_frontend::EngineFallbackListBuilder_v8::build()'],['../d7/d0d/group__ExecutionPlanQuery.html#ga5ff39f2019a5a3fe8062bf887707877c',1,'cudnn_frontend::ExecutionPlanBuilder_v8::build()'],['../d1/d28/classcudnn__frontend_1_1EngineHeuristicsBuilder__v8.html#ab3ff1b538521fdea588d8ac155f6e88c',1,'cudnn_frontend::EngineHeuristicsBuilder_v8::build()'],['../de/d00/classcudnn__frontend_1_1MatMulDescBuilder__v8.html#addc153acf5600781659a1a2ba891e59c',1,'cudnn_frontend::MatMulDescBuilder_v8::build()'],['../d1/d29/classcudnn__frontend_1_1OperationBuilder__v8.html#aa0df558c603d8316dd3eb2d5bfd67c9d',1,'cudnn_frontend::OperationBuilder_v8::build()'],['../d4/d39/classcudnn__frontend_1_1OperationGraphBuilder__v8.html#ac78945f424f254f0060d4c2e1184cf1f',1,'cudnn_frontend::OperationGraphBuilder_v8::build()'],['../d5/d02/classcudnn__frontend_1_1PointWiseDescBuilder__v8.html#a5de642e4141705f8e06c4bf566f1d332',1,'cudnn_frontend::PointWiseDescBuilder_v8::build()'],['../db/dae/classcudnn__frontend_1_1TensorBuilder__v8.html#a32876941f964b3fad2d123b9081b0af7',1,'cudnn_frontend::TensorBuilder_v8::build()'],['../d4/dce/classcudnn__frontend_1_1VariantPackBuilder__v8.html#abf794751941aa252c19e1879306375d3',1,'cudnn_frontend::VariantPackBuilder_v8::build()']]], ['buildknobs',['buildKnobs',['../dc/d3c/classcudnn__frontend_1_1Engine__v8.html#a0e6d7c12c261ad6c2f08e1249397b696',1,'cudnn_frontend::Engine_v8']]] ]; diff --git a/docs/search/all_16.js b/docs/search/all_16.js index 4eecf109c..89884ee00 100644 --- a/docs/search/all_16.js +++ b/docs/search/all_16.js @@ -12,6 +12,8 @@ var searchData= ['_7eengineheuristicsbuilder_5fv8',['~EngineHeuristicsBuilder_v8',['../d1/d28/classcudnn__frontend_1_1EngineHeuristicsBuilder__v8.html#a8740e967b981abf94dc2c53eb8786ceb',1,'cudnn_frontend::EngineHeuristicsBuilder_v8']]], ['_7eexecutionplan_5fv8',['~ExecutionPlan_v8',['../d5/d06/classcudnn__frontend_1_1ExecutionPlan__v8.html#a8a8ac13b1c639dd9b87c280a598446af',1,'cudnn_frontend::ExecutionPlan_v8']]], ['_7eexecutionplanbuilder_5fv8',['~ExecutionPlanBuilder_v8',['../d7/d0d/group__ExecutionPlanQuery.html#gae3f841de1b6461b31bf7967734a70a8a',1,'cudnn_frontend::ExecutionPlanBuilder_v8']]], + ['_7ematmuldesc_5fv8',['~MatMulDesc_v8',['../d6/db7/classcudnn__frontend_1_1MatMulDesc__v8.html#ad27b038b19b218067bd30e60d94fd672',1,'cudnn_frontend::MatMulDesc_v8']]], + ['_7ematmuldescbuilder_5fv8',['~MatMulDescBuilder_v8',['../de/d00/classcudnn__frontend_1_1MatMulDescBuilder__v8.html#a3f5790e5ada9a1785d9daf4246ea8de3',1,'cudnn_frontend::MatMulDescBuilder_v8']]], ['_7eopaquebackendpointer',['~OpaqueBackendPointer',['../d5/d14/classcudnn__frontend_1_1OpaqueBackendPointer.html#a9f549dd95873ac3a02689ef97f4a6c75',1,'cudnn_frontend::OpaqueBackendPointer']]], ['_7eoperation_5fv8',['~Operation_v8',['../d4/d30/classcudnn__frontend_1_1Operation__v8.html#a67d82f53ecbdfe2416d2a26410138d78',1,'cudnn_frontend::Operation_v8']]], ['_7eoperationgraph_5fv8',['~OperationGraph_v8',['../de/dd9/classcudnn__frontend_1_1OperationGraph__v8.html#aeb42611a38c4951e66cd23108d53353c',1,'cudnn_frontend::OperationGraph_v8']]], diff --git a/docs/search/all_2.js b/docs/search/all_2.js index eeeff84e1..5aa0d03d6 100644 --- a/docs/search/all_2.js +++ b/docs/search/all_2.js @@ -2,6 +2,7 @@ var searchData= [ ['cdesc',['cdesc',['../d4/d30/classcudnn__frontend_1_1Operation__v8.html#a19856fbb973574342efedc43134af3a7',1,'cudnn_frontend::Operation_v8']]], ['choice',['choice',['../dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#aee3bbc2a558893309d6882a0e30d439a',1,'cudnn_frontend::Engine_v8::Knob']]], + ['cmatdesc',['cmatdesc',['../d4/d30/classcudnn__frontend_1_1Operation__v8.html#adea4f5ef82e61fc375fd2c3ee8e92147',1,'cudnn_frontend::Operation_v8']]], ['computetag',['computeTag',['../d7/d0d/group__ExecutionPlanQuery.html#ga8a6517102f5c12e63e4417324a03180b',1,'cudnn_frontend::ExecutionPlan_v8']]], ['convdesc',['ConvDesc',['../df/de1/namespacecudnn__frontend.html#ae24bc7541c87c642cdef8eaf83c8eacc',1,'cudnn_frontend']]], ['convdesc_5fv8',['ConvDesc_v8',['../d6/d73/classcudnn__frontend_1_1ConvDesc__v8.html',1,'cudnn_frontend::ConvDesc_v8'],['../d6/d73/classcudnn__frontend_1_1ConvDesc__v8.html#a592e3a28fd7a8b2553789801d9bd276c',1,'cudnn_frontend::ConvDesc_v8::ConvDesc_v8(ConvDesc_v8 &&from)'],['../d6/d73/classcudnn__frontend_1_1ConvDesc__v8.html#a5c892fb76fbf9e4bfffdb5288f9d60ad',1,'cudnn_frontend::ConvDesc_v8::ConvDesc_v8()=default'],['../d6/d73/classcudnn__frontend_1_1ConvDesc__v8.html#a061ef887bdf383d416ee143a35d5c334',1,'cudnn_frontend::ConvDesc_v8::ConvDesc_v8(ConvDesc_v8 const &)=delete']]], @@ -23,6 +24,7 @@ var searchData= ['cudnn_5ffrontend_5ffind_5fplan_2eh',['cudnn_frontend_find_plan.h',['../d3/d6b/cudnn__frontend__find__plan_8h.html',1,'']]], ['cudnn_5ffrontend_5fget_5fplan_2eh',['cudnn_frontend_get_plan.h',['../d2/d3b/cudnn__frontend__get__plan_8h.html',1,'']]], ['cudnn_5ffrontend_5fheuristics_2eh',['cudnn_frontend_Heuristics.h',['../db/d66/cudnn__frontend__Heuristics_8h.html',1,'']]], + ['cudnn_5ffrontend_5fmatmuldesc_2eh',['cudnn_frontend_MatMulDesc.h',['../d6/d32/cudnn__frontend__MatMulDesc_8h.html',1,'']]], ['cudnn_5ffrontend_5foperation_2eh',['cudnn_frontend_Operation.h',['../da/d5a/cudnn__frontend__Operation_8h.html',1,'']]], ['cudnn_5ffrontend_5foperationgraph_2eh',['cudnn_frontend_OperationGraph.h',['../db/d7d/cudnn__frontend__OperationGraph_8h.html',1,'']]], ['cudnn_5ffrontend_5fpointwisedesc_2eh',['cudnn_frontend_PointWiseDesc.h',['../da/d5f/cudnn__frontend__PointWiseDesc_8h.html',1,'']]], @@ -32,5 +34,6 @@ var searchData= ['cudnnexception',['cudnnException',['../d9/dca/classcudnn__frontend_1_1cudnnException.html',1,'cudnn_frontend::cudnnException'],['../d9/dca/classcudnn__frontend_1_1cudnnException.html#aa80c45a57ca091770572aaa5a1f7e322',1,'cudnn_frontend::cudnnException::cudnnException()']]], ['cudnnfindplan',['cudnnFindPlan',['../dc/da3/classcudnn__frontend_1_1EngineConfigGenerator.html#abd7cdd3a218623ffc5dfcbf9343aef85',1,'cudnn_frontend::EngineConfigGenerator']]], ['cudnnfindsamplingtechnique',['CudnnFindSamplingTechnique',['../df/de1/namespacecudnn__frontend.html#ab3748fa00b36beec790db7201fdd2ef3',1,'cudnn_frontend']]], - ['cudnngetplan',['cudnnGetPlan',['../dc/da3/classcudnn__frontend_1_1EngineConfigGenerator.html#ad6ca7e7263ed9b7597f94ca45505642f',1,'cudnn_frontend::EngineConfigGenerator']]] + ['cudnngetplan',['cudnnGetPlan',['../dc/da3/classcudnn__frontend_1_1EngineConfigGenerator.html#ad6ca7e7263ed9b7597f94ca45505642f',1,'cudnn_frontend::EngineConfigGenerator']]], + ['cudnn_20frontend_20api',['CUDNN FRONTEND API',['../index.html',1,'']]] ]; diff --git a/docs/search/all_3.js b/docs/search/all_3.js index 68b611ca4..0c0eef254 100644 --- a/docs/search/all_3.js +++ b/docs/search/all_3.js @@ -2,6 +2,9 @@ var searchData= [ ['data_5fpointers',['data_pointers',['../d0/d20/classcudnn__frontend_1_1VariantPack__v8.html#a3a03ddd893f41a9ce6ca674bbfae7434',1,'cudnn_frontend::VariantPack_v8']]], ['data_5ftype',['data_type',['../d6/d73/classcudnn__frontend_1_1ConvDesc__v8.html#a4a0249ac1d094f9a70967dd69b824f2e',1,'cudnn_frontend::ConvDesc_v8::data_type()'],['../d6/da7/classcudnn__frontend_1_1Tensor__v8.html#ae9a3d128db54fa92d392e77044f30ca9',1,'cudnn_frontend::Tensor_v8::data_type()']]], - ['describe',['describe',['../d6/d88/classcudnn__frontend_1_1BackendDescriptor.html#ab652fb3e9a58092fbb137b0e959a9478',1,'cudnn_frontend::BackendDescriptor::describe()'],['../d6/d73/classcudnn__frontend_1_1ConvDesc__v8.html#a0d36a97abb2d36a0148ce8e8833baff8',1,'cudnn_frontend::ConvDesc_v8::describe()'],['../dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#a3f60f9ba0e35cb0bccbf3524def69db2',1,'cudnn_frontend::Engine_v8::Knob::describe()'],['../dc/d3c/classcudnn__frontend_1_1Engine__v8.html#a052463f45fef3bb98e2822ba0fccdb8e',1,'cudnn_frontend::Engine_v8::describe()'],['../df/d83/classcudnn__frontend_1_1EngineConfig__v8.html#aefd7d8d3da71ce0dddca0f6a85fd1c80',1,'cudnn_frontend::EngineConfig_v8::describe()'],['../db/d99/classcudnn__frontend_1_1EngineFallbackList__v8.html#a3509dd7589fed7a699874170cec6dd9f',1,'cudnn_frontend::EngineFallbackList_v8::describe()'],['../d7/d0d/group__ExecutionPlanQuery.html#gad80aa2980d915449d05db4c71041e2e0',1,'cudnn_frontend::ExecutionPlan_v8::describe()'],['../db/ddb/classcudnn__frontend_1_1EngineHeuristics__v8.html#ac223cc9438a0442bd3b48881f71a4b40',1,'cudnn_frontend::EngineHeuristics_v8::describe()'],['../d4/d30/classcudnn__frontend_1_1Operation__v8.html#a3425a8550eb9f622dc4101d3d5d2c0e1',1,'cudnn_frontend::Operation_v8::describe()'],['../de/dd9/classcudnn__frontend_1_1OperationGraph__v8.html#acd0b5f47407184b0b26bf4d4b5d0ce32',1,'cudnn_frontend::OperationGraph_v8::describe()'],['../d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#a66ada0a9313ced7ed2801097ef523de8',1,'cudnn_frontend::PointWiseDesc_v8::describe()'],['../d6/da7/classcudnn__frontend_1_1Tensor__v8.html#a79cc1a752e6df2001b853f8c189b1f1f',1,'cudnn_frontend::Tensor_v8::describe()'],['../d0/d20/classcudnn__frontend_1_1VariantPack__v8.html#a7ba1c4736d3b0f187dc06344ca4e2032',1,'cudnn_frontend::VariantPack_v8::describe()']]], - ['dilation',['dilation',['../d6/d73/classcudnn__frontend_1_1ConvDesc__v8.html#a81e03a2a385d24a2faaf3db249580ac6',1,'cudnn_frontend::ConvDesc_v8']]] + ['describe',['describe',['../d6/d88/classcudnn__frontend_1_1BackendDescriptor.html#ab652fb3e9a58092fbb137b0e959a9478',1,'cudnn_frontend::BackendDescriptor::describe()'],['../d6/d73/classcudnn__frontend_1_1ConvDesc__v8.html#a0d36a97abb2d36a0148ce8e8833baff8',1,'cudnn_frontend::ConvDesc_v8::describe()'],['../dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#a3f60f9ba0e35cb0bccbf3524def69db2',1,'cudnn_frontend::Engine_v8::Knob::describe()'],['../dc/d3c/classcudnn__frontend_1_1Engine__v8.html#a052463f45fef3bb98e2822ba0fccdb8e',1,'cudnn_frontend::Engine_v8::describe()'],['../df/d83/classcudnn__frontend_1_1EngineConfig__v8.html#aefd7d8d3da71ce0dddca0f6a85fd1c80',1,'cudnn_frontend::EngineConfig_v8::describe()'],['../db/d99/classcudnn__frontend_1_1EngineFallbackList__v8.html#a3509dd7589fed7a699874170cec6dd9f',1,'cudnn_frontend::EngineFallbackList_v8::describe()'],['../d7/d0d/group__ExecutionPlanQuery.html#gad80aa2980d915449d05db4c71041e2e0',1,'cudnn_frontend::ExecutionPlan_v8::describe()'],['../db/ddb/classcudnn__frontend_1_1EngineHeuristics__v8.html#ac223cc9438a0442bd3b48881f71a4b40',1,'cudnn_frontend::EngineHeuristics_v8::describe()'],['../d6/db7/classcudnn__frontend_1_1MatMulDesc__v8.html#a2931e4d0b21e6986a3f5a1697ca4bae0',1,'cudnn_frontend::MatMulDesc_v8::describe()'],['../d4/d30/classcudnn__frontend_1_1Operation__v8.html#a3425a8550eb9f622dc4101d3d5d2c0e1',1,'cudnn_frontend::Operation_v8::describe()'],['../de/dd9/classcudnn__frontend_1_1OperationGraph__v8.html#acd0b5f47407184b0b26bf4d4b5d0ce32',1,'cudnn_frontend::OperationGraph_v8::describe()'],['../d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#a66ada0a9313ced7ed2801097ef523de8',1,'cudnn_frontend::PointWiseDesc_v8::describe()'],['../d6/da7/classcudnn__frontend_1_1Tensor__v8.html#a79cc1a752e6df2001b853f8c189b1f1f',1,'cudnn_frontend::Tensor_v8::describe()'],['../d0/d20/classcudnn__frontend_1_1VariantPack__v8.html#a7ba1c4736d3b0f187dc06344ca4e2032',1,'cudnn_frontend::VariantPack_v8::describe()']]], + ['dilation',['dilation',['../d6/d73/classcudnn__frontend_1_1ConvDesc__v8.html#a81e03a2a385d24a2faaf3db249580ac6',1,'cudnn_frontend::ConvDesc_v8']]], + ['dwdesc',['dwdesc',['../d4/d30/classcudnn__frontend_1_1Operation__v8.html#a4f565db1b8b85ea43d60631cd3414f47',1,'cudnn_frontend::Operation_v8']]], + ['dxdesc',['dxdesc',['../d4/d30/classcudnn__frontend_1_1Operation__v8.html#a4f30409838436d0c4dea5271af86f9b7',1,'cudnn_frontend::Operation_v8']]], + ['dydesc',['dydesc',['../d4/d30/classcudnn__frontend_1_1Operation__v8.html#adf6b55205eac4c52c0ab70e4758e33da',1,'cudnn_frontend::Operation_v8']]] ]; diff --git a/docs/search/all_4.js b/docs/search/all_4.js index 78d64f7f5..814d74f2f 100644 --- a/docs/search/all_4.js +++ b/docs/search/all_4.js @@ -1,5 +1,6 @@ var searchData= [ + ['elu_5falpha',['elu_alpha',['../d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#a246795e9bc43f846f701ae4214953412',1,'cudnn_frontend::PointWiseDesc_v8']]], ['engine',['engine',['../df/d83/classcudnn__frontend_1_1EngineConfig__v8.html#ac102dce4f496c358a15ca753362fc4b7',1,'cudnn_frontend::EngineConfig_v8::engine()'],['../df/de1/namespacecudnn__frontend.html#a1ed8c535fea949a10acd26e279cc28a1',1,'cudnn_frontend::Engine()']]], ['engine_5fconfig',['engine_config',['../d7/d0d/group__ExecutionPlanQuery.html#ga5e3dd6d441474ac5ab94aaaf9c45bc5b',1,'cudnn_frontend::ExecutionPlan_v8']]], ['engine_5fconfig_5fgenerators',['engine_config_generators',['../dc/da3/classcudnn__frontend_1_1EngineConfigGenerator.html#a1a06febdf947e151276bf09947c62436',1,'cudnn_frontend::EngineConfigGenerator']]], diff --git a/docs/search/all_6.js b/docs/search/all_6.js index eb9ace600..c8bfbdad6 100644 --- a/docs/search/all_6.js +++ b/docs/search/all_6.js @@ -8,19 +8,19 @@ var searchData= ['get_5ffallback_5fengine_5flist',['get_fallback_engine_list',['../df/de1/namespacecudnn__frontend.html#ad365eee23138df472d716d9dbf119f0e',1,'cudnn_frontend']]], ['get_5fraw_5fdesc',['get_raw_desc',['../d6/d88/classcudnn__frontend_1_1BackendDescriptor.html#a3aa1ab42ab96471092185f15e22c1e9f',1,'cudnn_frontend::BackendDescriptor']]], ['get_5fstatus',['get_status',['../d5/d14/classcudnn__frontend_1_1OpaqueBackendPointer.html#abd4f69554da364008f3780e9dc3a5bfc',1,'cudnn_frontend::OpaqueBackendPointer::get_status()'],['../d6/d88/classcudnn__frontend_1_1BackendDescriptor.html#af34344e365e6422ee86955349bf80b49',1,'cudnn_frontend::BackendDescriptor::get_status()']]], - ['getchoice',['getChoice',['../dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#ad2fbb6103c61dfa6fa1800dccadb5f38',1,'cudnn_frontend::Engine_v8::Knob']]], + ['getchoice',['getChoice',['../dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#a4c0a920d14a719e99fce3d64a6eb0980',1,'cudnn_frontend::Engine_v8::Knob']]], ['getengineconfig',['getEngineConfig',['../d6/d46/group__EngineHeuristicsQuery.html#ga1171cb5ce50baf0fab19fc458d4565b5',1,'cudnn_frontend::EngineHeuristics_v8']]], ['getengineconfigcount',['getEngineConfigCount',['../d6/d46/group__EngineHeuristicsQuery.html#ga10121605fc82ed225537210825fa3836',1,'cudnn_frontend::EngineHeuristics_v8']]], ['getenginecount',['getEngineCount',['../d1/df7/group__OperationGraphQuery.html#ga7a7a8d03f5a3aa54f14b83be4abe2a26',1,'cudnn_frontend::OperationGraph_v8']]], ['getfallbacklist',['getFallbackList',['../db/d99/classcudnn__frontend_1_1EngineFallbackList__v8.html#a56ad23cee30cbe70209ce6399a69d541',1,'cudnn_frontend::EngineFallbackList_v8']]], ['getfinalizedknobs',['getFinalizedKnobs',['../dc/d3c/classcudnn__frontend_1_1Engine__v8.html#a837d8adc86f08ca31f42437512a30752',1,'cudnn_frontend::Engine_v8']]], - ['getknobtype',['getKnobType',['../dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#a1a4287f2767654ef28b3a5f1925e7ff1',1,'cudnn_frontend::Engine_v8::Knob']]], - ['getmaxvalue',['getMaxValue',['../dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#ac16f2f536d5d813d52eb74825b6dff64',1,'cudnn_frontend::Engine_v8::Knob']]], - ['getminvalue',['getMinValue',['../dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#a210061280cc6df1431d1c464a65d9a02',1,'cudnn_frontend::Engine_v8::Knob']]], + ['getknobtype',['getKnobType',['../dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#a75ea7ec76b08688da99e6bd3664083c8',1,'cudnn_frontend::Engine_v8::Knob']]], + ['getmaxvalue',['getMaxValue',['../dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#a4fe794b42a0ee5ba71b8ca8c797d1dbe',1,'cudnn_frontend::Engine_v8::Knob']]], + ['getminvalue',['getMinValue',['../dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#af3fdf6b0da493544a003913bdf524449',1,'cudnn_frontend::Engine_v8::Knob']]], ['getoutputtensor',['getOutputTensor',['../d4/d30/classcudnn__frontend_1_1Operation__v8.html#ae5cba10d789e4d08b45339a702ba75f3',1,'cudnn_frontend::Operation_v8']]], ['getpointwisemode',['getPointWiseMode',['../d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#a963d8bd60aa5d7c5385d5d41595c2cf3',1,'cudnn_frontend::PointWiseDesc_v8']]], ['getportcount',['getPortCount',['../d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#a81b0fa4b9ff8bfd2c23ae704f7211962',1,'cudnn_frontend::PointWiseDesc_v8']]], - ['getstride',['getStride',['../dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#a92040bb78e1f2b4ecb3cc6768a3946df',1,'cudnn_frontend::Engine_v8::Knob']]], + ['getstride',['getStride',['../dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#adc0dd9d11771a040a8f5191bef00cdb5',1,'cudnn_frontend::Engine_v8::Knob']]], ['getsupportedknobs',['getSupportedKnobs',['../dc/d3c/classcudnn__frontend_1_1Engine__v8.html#a6804e842fb698ebc12fccfece3f33b01',1,'cudnn_frontend::Engine_v8']]], ['gettag',['getTag',['../dc/d3c/classcudnn__frontend_1_1Engine__v8.html#af299a1692584215c649b3563fdb3abae',1,'cudnn_frontend::Engine_v8::getTag()'],['../df/d83/classcudnn__frontend_1_1EngineConfig__v8.html#a1c7175f7d3cc7224496f276df36036aa',1,'cudnn_frontend::EngineConfig_v8::getTag()'],['../d7/d0d/group__ExecutionPlanQuery.html#ga2ff1340409f8834fe9ae68ff4c00281a',1,'cudnn_frontend::ExecutionPlan_v8::getTag()'],['../d4/d30/classcudnn__frontend_1_1Operation__v8.html#ab2692d9f28861a73d590a53f979d26fa',1,'cudnn_frontend::Operation_v8::getTag()'],['../de/dd9/classcudnn__frontend_1_1OperationGraph__v8.html#a19fd5ed99ab4053c8a178bd33843460a',1,'cudnn_frontend::OperationGraph_v8::getTag()']]], ['getworkspacesize',['getWorkspaceSize',['../d7/d0d/group__ExecutionPlanQuery.html#ga00d10a076c22e86354a789852c56c22f',1,'cudnn_frontend::ExecutionPlan_v8']]] diff --git a/docs/search/all_8.js b/docs/search/all_8.js index 02f11bed7..77ab6a865 100644 --- a/docs/search/all_8.js +++ b/docs/search/all_8.js @@ -5,5 +5,10 @@ var searchData= ['initialize_5fmanaged_5fbackend_5fpointer',['initialize_managed_backend_pointer',['../d6/d88/classcudnn__frontend_1_1BackendDescriptor.html#a070df0d11a52793ce9480dbdcee0c24e',1,'cudnn_frontend::BackendDescriptor']]], ['is_5fconvolution_5fop',['is_convolution_op',['../d1/d29/classcudnn__frontend_1_1OperationBuilder__v8.html#ad82e287889be2ebef348a00479ce3bc0',1,'cudnn_frontend::OperationBuilder_v8']]], ['is_5fgood',['is_good',['../d5/d14/classcudnn__frontend_1_1OpaqueBackendPointer.html#aa9059097bb9161d454c6e17b03ca236c',1,'cudnn_frontend::OpaqueBackendPointer']]], + ['is_5fmatmul_5fop',['is_matmul_op',['../d1/d29/classcudnn__frontend_1_1OperationBuilder__v8.html#ac806a488b58cc78e338ba96eccee70fd',1,'cudnn_frontend::OperationBuilder_v8']]], + ['is_5fpointwise_5factivation_5fbwd_5fop',['is_pointwise_activation_bwd_op',['../d4/d30/classcudnn__frontend_1_1Operation__v8.html#ab8c4c8c81e8cebc44cb725f4a4b4add9',1,'cudnn_frontend::Operation_v8']]], + ['is_5fpointwise_5factivation_5ffwd_5fop',['is_pointwise_activation_fwd_op',['../d4/d30/classcudnn__frontend_1_1Operation__v8.html#a12d0d0fa40152f5205570f40e681795f',1,'cudnn_frontend::Operation_v8']]], + ['is_5fpointwise_5fmath_5fop',['is_pointwise_math_op',['../d4/d30/classcudnn__frontend_1_1Operation__v8.html#a2e1e0fb15b7df300945cae2347db635a',1,'cudnn_frontend::Operation_v8']]], + ['is_5fpointwise_5fop',['is_pointwise_op',['../d1/d29/classcudnn__frontend_1_1OperationBuilder__v8.html#a98044359c005b796e35fba1a5b689f3d',1,'cudnn_frontend::OperationBuilder_v8']]], ['isvirtual',['isVirtual',['../d6/da7/classcudnn__frontend_1_1Tensor__v8.html#a611fc05f3c7b6ca90d0e3c0f6ef07d84',1,'cudnn_frontend::Tensor_v8']]] ]; diff --git a/docs/search/all_a.js b/docs/search/all_a.js index 4e9c61ade..5b006f277 100644 --- a/docs/search/all_a.js +++ b/docs/search/all_a.js @@ -1,4 +1,5 @@ var searchData= [ - ['lower_5fclip',['lower_clip',['../d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#a26f1b0f84dc331ca9f1330cf6f425d36',1,'cudnn_frontend::PointWiseDesc_v8']]] + ['lower_5fclip',['lower_clip',['../d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#a26f1b0f84dc331ca9f1330cf6f425d36',1,'cudnn_frontend::PointWiseDesc_v8']]], + ['lower_5fclip_5fslope',['lower_clip_slope',['../d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#ad8731460bbcf7cb2804dd3a9840f276e',1,'cudnn_frontend::PointWiseDesc_v8']]] ]; diff --git a/docs/search/all_b.js b/docs/search/all_b.js index 6265b22a4..4cbfe92d4 100644 --- a/docs/search/all_b.js +++ b/docs/search/all_b.js @@ -9,6 +9,7 @@ var searchData= ['m_5ffallback_5flist',['m_fallback_list',['../d9/df1/classcudnn__frontend_1_1EngineFallbackListBuilder__v8.html#a56f2014918d259c53a2ebb3e815073e9',1,'cudnn_frontend::EngineFallbackListBuilder_v8']]], ['m_5fheuristic_5fresults',['m_heuristic_results',['../db/ddb/classcudnn__frontend_1_1EngineHeuristics__v8.html#a7a1e931b0f7910db6e6f5d5bfbfe3511',1,'cudnn_frontend::EngineHeuristics_v8']]], ['m_5fheuristics',['m_heuristics',['../d1/d28/classcudnn__frontend_1_1EngineHeuristicsBuilder__v8.html#aa046a778075f260f7950ee5a51c2addb',1,'cudnn_frontend::EngineHeuristicsBuilder_v8']]], + ['m_5fmatmuldesc',['m_matMulDesc',['../de/d00/classcudnn__frontend_1_1MatMulDescBuilder__v8.html#aa71bc8242df4035ff5d6b4d54083db4b',1,'cudnn_frontend::MatMulDescBuilder_v8']]], ['m_5foperation',['m_operation',['../d1/d29/classcudnn__frontend_1_1OperationBuilder__v8.html#a8724628060c71b17e7458c01338b234a',1,'cudnn_frontend::OperationBuilder_v8']]], ['m_5foperationgraph',['m_operationGraph',['../d4/d39/classcudnn__frontend_1_1OperationGraphBuilder__v8.html#ad9cb3e166ab001b3b0c60ed2198cd6d9',1,'cudnn_frontend::OperationGraphBuilder_v8']]], ['m_5fpointwisedesc',['m_pointWiseDesc',['../d5/d02/classcudnn__frontend_1_1PointWiseDescBuilder__v8.html#a804a2b5438f464185b16a4652fc14cf5',1,'cudnn_frontend::PointWiseDescBuilder_v8']]], @@ -16,7 +17,11 @@ var searchData= ['m_5fvariant_5fpack',['m_variant_pack',['../d4/dce/classcudnn__frontend_1_1VariantPackBuilder__v8.html#a41a6e8afb46228fea2310f5cad75badc',1,'cudnn_frontend::VariantPackBuilder_v8']]], ['make_5fshared_5fbackend_5fpointer',['make_shared_backend_pointer',['../df/de1/namespacecudnn__frontend.html#aee9c79eb8972c944de14ccd70bf5db43',1,'cudnn_frontend']]], ['managedopaquedescriptor',['ManagedOpaqueDescriptor',['../df/de1/namespacecudnn__frontend.html#ac94d582cdfa2adf3d68a4e675e5d69aa',1,'cudnn_frontend']]], - ['math_5fprecision',['math_precision',['../d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#a7f1bee44a57b6dad1ce493cd18ffbc18',1,'cudnn_frontend::PointWiseDesc_v8']]], + ['math_5fprecision',['math_precision',['../d6/db7/classcudnn__frontend_1_1MatMulDesc__v8.html#a1dd13143c85b67f2c0da90f02884fab1',1,'cudnn_frontend::MatMulDesc_v8::math_precision()'],['../d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#a7f1bee44a57b6dad1ce493cd18ffbc18',1,'cudnn_frontend::PointWiseDesc_v8::math_precision()']]], + ['matmuldesc',['matmuldesc',['../d4/d30/classcudnn__frontend_1_1Operation__v8.html#ac4b85cbb9ba522c98eb524a7712721af',1,'cudnn_frontend::Operation_v8::matmuldesc()'],['../df/de1/namespacecudnn__frontend.html#ad809552e9ec400bcbfcfc0ea5acd4e56',1,'cudnn_frontend::MatMulDesc()']]], + ['matmuldesc_5fv8',['MatMulDesc_v8',['../d6/db7/classcudnn__frontend_1_1MatMulDesc__v8.html',1,'cudnn_frontend::MatMulDesc_v8'],['../d6/db7/classcudnn__frontend_1_1MatMulDesc__v8.html#ab725a8e47331aca6310155f6d55c0a02',1,'cudnn_frontend::MatMulDesc_v8::MatMulDesc_v8(MatMulDesc_v8 &&from)'],['../d6/db7/classcudnn__frontend_1_1MatMulDesc__v8.html#a5e060b83ea1e1ed59a66e15fdba91227',1,'cudnn_frontend::MatMulDesc_v8::MatMulDesc_v8()=default'],['../d6/db7/classcudnn__frontend_1_1MatMulDesc__v8.html#a48aa29d5df9a717e63c5146ac48c4543',1,'cudnn_frontend::MatMulDesc_v8::MatMulDesc_v8(MatMulDesc_v8 const &)=delete']]], + ['matmuldescbuilder',['MatMulDescBuilder',['../df/de1/namespacecudnn__frontend.html#a0c344e3bc1f332aa9f5b213eb1ae9ee6',1,'cudnn_frontend']]], + ['matmuldescbuilder_5fv8',['MatMulDescBuilder_v8',['../de/d00/classcudnn__frontend_1_1MatMulDescBuilder__v8.html',1,'cudnn_frontend::MatMulDescBuilder_v8'],['../d6/db7/classcudnn__frontend_1_1MatMulDesc__v8.html#aa99cc0548322d7298b9ca664a976281f',1,'cudnn_frontend::MatMulDesc_v8::MatMulDescBuilder_v8()'],['../de/d00/classcudnn__frontend_1_1MatMulDescBuilder__v8.html#afea76414fa5c0c5f38a551afcf11391c',1,'cudnn_frontend::MatMulDescBuilder_v8::MatMulDescBuilder_v8()=default'],['../de/d00/classcudnn__frontend_1_1MatMulDescBuilder__v8.html#a75af51fa2937a7df6787d3181ef22cf2',1,'cudnn_frontend::MatMulDescBuilder_v8::MatMulDescBuilder_v8(MatMulDescBuilder_v8 &&)=delete'],['../de/d00/classcudnn__frontend_1_1MatMulDescBuilder__v8.html#a287154397d78c528465a949ab0242068',1,'cudnn_frontend::MatMulDescBuilder_v8::MatMulDescBuilder_v8(MatMulDescBuilder_v8 const &)=delete'],['../d9/d08/group__MatMulDescBuilder__v8.html',1,'(Global Namespace)']]], ['maxvalue',['maxValue',['../dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#aecda8659b5a5d1dbb21b540a73141fb9',1,'cudnn_frontend::Engine_v8::Knob']]], ['minvalue',['minValue',['../dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#a2403145dcb4bc55f970c6d07c1ed796e',1,'cudnn_frontend::Engine_v8::Knob']]], ['mode',['mode',['../d6/d73/classcudnn__frontend_1_1ConvDesc__v8.html#adcb7e5f546b83bbdab63773030e3b909',1,'cudnn_frontend::ConvDesc_v8::mode()'],['../db/d99/classcudnn__frontend_1_1EngineFallbackList__v8.html#a9a557db46e3559fcaa0e800d976d6238',1,'cudnn_frontend::EngineFallbackList_v8::mode()'],['../db/ddb/classcudnn__frontend_1_1EngineHeuristics__v8.html#a71e7822002502874f6b2dfec4ede7e01',1,'cudnn_frontend::EngineHeuristics_v8::mode()'],['../d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#ad6d99d57f2a5b345fe5af5bc777b8d1c',1,'cudnn_frontend::PointWiseDesc_v8::mode()']]] diff --git a/docs/search/all_d.js b/docs/search/all_d.js index 9977969f5..93fe004dd 100644 --- a/docs/search/all_d.js +++ b/docs/search/all_d.js @@ -12,7 +12,7 @@ var searchData= ['operationgraphbuilder_5fv8',['OperationGraphBuilder_v8',['../d4/d39/classcudnn__frontend_1_1OperationGraphBuilder__v8.html',1,'cudnn_frontend::OperationGraphBuilder_v8'],['../de/dd9/classcudnn__frontend_1_1OperationGraph__v8.html#a5af59a099cc90eda429563e285b2907f',1,'cudnn_frontend::OperationGraph_v8::OperationGraphBuilder_v8()'],['../d4/d39/classcudnn__frontend_1_1OperationGraphBuilder__v8.html#a101b6c9515fdb333cdd3499f08774cf4',1,'cudnn_frontend::OperationGraphBuilder_v8::OperationGraphBuilder_v8()=default'],['../d4/d39/classcudnn__frontend_1_1OperationGraphBuilder__v8.html#a40e8f7825f75c35c40d9938532a81d02',1,'cudnn_frontend::OperationGraphBuilder_v8::OperationGraphBuilder_v8(OperationGraphBuilder_v8 &&)=delete'],['../d4/d39/classcudnn__frontend_1_1OperationGraphBuilder__v8.html#a589dedb418679abda7f64e6b9e2800a1',1,'cudnn_frontend::OperationGraphBuilder_v8::OperationGraphBuilder_v8(OperationGraphBuilder_v8 const &)=delete'],['../d2/df5/group__OperationGraphBuilder__v8.html',1,'(Global Namespace)']]], ['operationgraphquery',['OperationGraphQuery',['../d1/df7/group__OperationGraphQuery.html',1,'']]], ['operationtag',['operationTag',['../d4/d30/classcudnn__frontend_1_1Operation__v8.html#a736317246d52e774170bc60511870932',1,'cudnn_frontend::Operation_v8']]], - ['operator_3d',['operator=',['../d5/d14/classcudnn__frontend_1_1OpaqueBackendPointer.html#adf5bf20f5bdfbfdecd05360830b34b89',1,'cudnn_frontend::OpaqueBackendPointer::operator=()'],['../d6/d73/classcudnn__frontend_1_1ConvDesc__v8.html#aa8ea272eaf26ae7f7ad2d625253ea62f',1,'cudnn_frontend::ConvDesc_v8::operator=()'],['../db/de1/classcudnn__frontend_1_1ConvDescBuilder__v8.html#a5fba7029429a093b36fd201219315a1f',1,'cudnn_frontend::ConvDescBuilder_v8::operator=()'],['../dc/d3c/classcudnn__frontend_1_1Engine__v8.html#ad3966b20d080c0fb9930b8a2018da2f8',1,'cudnn_frontend::Engine_v8::operator=()'],['../d9/dfd/classcudnn__frontend_1_1EngineBuilder__v8.html#a9d29a91186f6baa215b61340a386ec6d',1,'cudnn_frontend::EngineBuilder_v8::operator=()'],['../df/d83/classcudnn__frontend_1_1EngineConfig__v8.html#ad79aab6d69a2b4400259abd72af73c84',1,'cudnn_frontend::EngineConfig_v8::operator=()'],['../dd/d72/classcudnn__frontend_1_1EngineConfigBuilder__v8.html#a8d4cb5ab44b076c71afd5f49e6df94f7',1,'cudnn_frontend::EngineConfigBuilder_v8::operator=()'],['../db/d99/classcudnn__frontend_1_1EngineFallbackList__v8.html#a22ef505758a33415d01e3a9a8843fe22',1,'cudnn_frontend::EngineFallbackList_v8::operator=()'],['../d9/df1/classcudnn__frontend_1_1EngineFallbackListBuilder__v8.html#a1effb794c90cbe7ad2e7649d400cb2dd',1,'cudnn_frontend::EngineFallbackListBuilder_v8::operator=()'],['../d7/d0d/group__ExecutionPlanQuery.html#ga0705e60cee62d3d196751517d545a7b0',1,'cudnn_frontend::ExecutionPlan_v8::operator=()'],['../d7/d0d/group__ExecutionPlanQuery.html#ga5f757c2da8c90645c34637dde4aed8f8',1,'cudnn_frontend::ExecutionPlanBuilder_v8::operator=()'],['../db/ddb/classcudnn__frontend_1_1EngineHeuristics__v8.html#a2301c5b006fa6e341bc88ece066f8ea2',1,'cudnn_frontend::EngineHeuristics_v8::operator=()'],['../d1/d28/classcudnn__frontend_1_1EngineHeuristicsBuilder__v8.html#a5228a4a3af391fad0141f30a24be730b',1,'cudnn_frontend::EngineHeuristicsBuilder_v8::operator=()'],['../d4/d30/classcudnn__frontend_1_1Operation__v8.html#a5012e920483271f655bc04d6f52dc41f',1,'cudnn_frontend::Operation_v8::operator=()'],['../de/dd9/classcudnn__frontend_1_1OperationGraph__v8.html#a87704bb46bb12bba977a21ed579a4ef3',1,'cudnn_frontend::OperationGraph_v8::operator=()'],['../d4/d39/classcudnn__frontend_1_1OperationGraphBuilder__v8.html#a75dae8a911e005b960565d4a1a0024ba',1,'cudnn_frontend::OperationGraphBuilder_v8::operator=()'],['../d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#ae3cd0c0051c7e29a9ad86b80308429f3',1,'cudnn_frontend::PointWiseDesc_v8::operator=()'],['../d5/d02/classcudnn__frontend_1_1PointWiseDescBuilder__v8.html#ac0d140493e21b164bc21dd0bcbeeaa65',1,'cudnn_frontend::PointWiseDescBuilder_v8::operator=()'],['../d6/da7/classcudnn__frontend_1_1Tensor__v8.html#a4f5c1e95de9419cb1904e0cbad570c63',1,'cudnn_frontend::Tensor_v8::operator=()'],['../db/dae/classcudnn__frontend_1_1TensorBuilder__v8.html#a3a33c9ba58f393d231e05a1bcc5706d8',1,'cudnn_frontend::TensorBuilder_v8::operator=()'],['../d0/d20/classcudnn__frontend_1_1VariantPack__v8.html#a3f85d13ac1341b67d85f18761f8dcb35',1,'cudnn_frontend::VariantPack_v8::operator=()'],['../d4/dce/classcudnn__frontend_1_1VariantPackBuilder__v8.html#acee84ffc33b41807cdcb18425e9fced1',1,'cudnn_frontend::VariantPackBuilder_v8::operator=()']]], + ['operator_3d',['operator=',['../d5/d14/classcudnn__frontend_1_1OpaqueBackendPointer.html#adf5bf20f5bdfbfdecd05360830b34b89',1,'cudnn_frontend::OpaqueBackendPointer::operator=()'],['../d6/d73/classcudnn__frontend_1_1ConvDesc__v8.html#aa8ea272eaf26ae7f7ad2d625253ea62f',1,'cudnn_frontend::ConvDesc_v8::operator=()'],['../db/de1/classcudnn__frontend_1_1ConvDescBuilder__v8.html#a5fba7029429a093b36fd201219315a1f',1,'cudnn_frontend::ConvDescBuilder_v8::operator=()'],['../dc/d3c/classcudnn__frontend_1_1Engine__v8.html#ad3966b20d080c0fb9930b8a2018da2f8',1,'cudnn_frontend::Engine_v8::operator=()'],['../d9/dfd/classcudnn__frontend_1_1EngineBuilder__v8.html#a9d29a91186f6baa215b61340a386ec6d',1,'cudnn_frontend::EngineBuilder_v8::operator=()'],['../df/d83/classcudnn__frontend_1_1EngineConfig__v8.html#ad79aab6d69a2b4400259abd72af73c84',1,'cudnn_frontend::EngineConfig_v8::operator=()'],['../dd/d72/classcudnn__frontend_1_1EngineConfigBuilder__v8.html#a8d4cb5ab44b076c71afd5f49e6df94f7',1,'cudnn_frontend::EngineConfigBuilder_v8::operator=()'],['../db/d99/classcudnn__frontend_1_1EngineFallbackList__v8.html#a22ef505758a33415d01e3a9a8843fe22',1,'cudnn_frontend::EngineFallbackList_v8::operator=()'],['../d9/df1/classcudnn__frontend_1_1EngineFallbackListBuilder__v8.html#a1effb794c90cbe7ad2e7649d400cb2dd',1,'cudnn_frontend::EngineFallbackListBuilder_v8::operator=()'],['../d7/d0d/group__ExecutionPlanQuery.html#ga0705e60cee62d3d196751517d545a7b0',1,'cudnn_frontend::ExecutionPlan_v8::operator=()'],['../d7/d0d/group__ExecutionPlanQuery.html#ga5f757c2da8c90645c34637dde4aed8f8',1,'cudnn_frontend::ExecutionPlanBuilder_v8::operator=()'],['../db/ddb/classcudnn__frontend_1_1EngineHeuristics__v8.html#a2301c5b006fa6e341bc88ece066f8ea2',1,'cudnn_frontend::EngineHeuristics_v8::operator=()'],['../d1/d28/classcudnn__frontend_1_1EngineHeuristicsBuilder__v8.html#a5228a4a3af391fad0141f30a24be730b',1,'cudnn_frontend::EngineHeuristicsBuilder_v8::operator=()'],['../d6/db7/classcudnn__frontend_1_1MatMulDesc__v8.html#ac1257a1ca1261961fc99123988552911',1,'cudnn_frontend::MatMulDesc_v8::operator=()'],['../de/d00/classcudnn__frontend_1_1MatMulDescBuilder__v8.html#a02ee327bae65fc44c140d7bb6a0b4991',1,'cudnn_frontend::MatMulDescBuilder_v8::operator=()'],['../d4/d30/classcudnn__frontend_1_1Operation__v8.html#a5012e920483271f655bc04d6f52dc41f',1,'cudnn_frontend::Operation_v8::operator=()'],['../de/dd9/classcudnn__frontend_1_1OperationGraph__v8.html#a87704bb46bb12bba977a21ed579a4ef3',1,'cudnn_frontend::OperationGraph_v8::operator=()'],['../d4/d39/classcudnn__frontend_1_1OperationGraphBuilder__v8.html#a75dae8a911e005b960565d4a1a0024ba',1,'cudnn_frontend::OperationGraphBuilder_v8::operator=()'],['../d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#ae3cd0c0051c7e29a9ad86b80308429f3',1,'cudnn_frontend::PointWiseDesc_v8::operator=()'],['../d5/d02/classcudnn__frontend_1_1PointWiseDescBuilder__v8.html#ac0d140493e21b164bc21dd0bcbeeaa65',1,'cudnn_frontend::PointWiseDescBuilder_v8::operator=()'],['../d6/da7/classcudnn__frontend_1_1Tensor__v8.html#a4f5c1e95de9419cb1904e0cbad570c63',1,'cudnn_frontend::Tensor_v8::operator=()'],['../db/dae/classcudnn__frontend_1_1TensorBuilder__v8.html#a3a33c9ba58f393d231e05a1bcc5706d8',1,'cudnn_frontend::TensorBuilder_v8::operator=()'],['../d0/d20/classcudnn__frontend_1_1VariantPack__v8.html#a3f85d13ac1341b67d85f18761f8dcb35',1,'cudnn_frontend::VariantPack_v8::operator=()'],['../d4/dce/classcudnn__frontend_1_1VariantPackBuilder__v8.html#acee84ffc33b41807cdcb18425e9fced1',1,'cudnn_frontend::VariantPackBuilder_v8::operator=()']]], ['opgraph',['opGraph',['../dc/d3c/classcudnn__frontend_1_1Engine__v8.html#a6053f049f393faebc7188bfa1e8c2d38',1,'cudnn_frontend::Engine_v8::opGraph()'],['../db/d99/classcudnn__frontend_1_1EngineFallbackList__v8.html#ae8995303eac50633f6320f5949a045bb',1,'cudnn_frontend::EngineFallbackList_v8::opGraph()'],['../db/ddb/classcudnn__frontend_1_1EngineHeuristics__v8.html#a081860775bfc5626bd57066066eb4299',1,'cudnn_frontend::EngineHeuristics_v8::opGraph()']]], ['opgraphtag',['opGraphTag',['../dc/d3c/classcudnn__frontend_1_1Engine__v8.html#a620ad17c3560e87d5a859d7f0eb121d4',1,'cudnn_frontend::Engine_v8::opGraphTag()'],['../df/d83/classcudnn__frontend_1_1EngineConfig__v8.html#a37695c0659b489b06ff3b83194be59bb',1,'cudnn_frontend::EngineConfig_v8::opGraphTag()'],['../db/d99/classcudnn__frontend_1_1EngineFallbackList__v8.html#a9f8070f063b1c0564297260ebe812506',1,'cudnn_frontend::EngineFallbackList_v8::opGraphTag()'],['../db/ddb/classcudnn__frontend_1_1EngineHeuristics__v8.html#a7c958bd4b97b4a77694d2bee01acec4c',1,'cudnn_frontend::EngineHeuristics_v8::opGraphTag()'],['../de/dd9/classcudnn__frontend_1_1OperationGraph__v8.html#ac8ca1ba29ac3f8e68ba1bf3e5e500338',1,'cudnn_frontend::OperationGraph_v8::opGraphTag()']]], ['ops',['ops',['../de/dd9/classcudnn__frontend_1_1OperationGraph__v8.html#ab2570d81fc01c1b6b9a76220b0abd717',1,'cudnn_frontend::OperationGraph_v8']]] diff --git a/docs/search/all_f.js b/docs/search/all_f.js index 44789c2fb..e79afeec5 100644 --- a/docs/search/all_f.js +++ b/docs/search/all_f.js @@ -6,37 +6,52 @@ var searchData= ['setalignment',['setAlignment',['../d3/d3c/group__TensorBuilder__v8.html#ga385ec2c39e6386af7421f27330ed128b',1,'cudnn_frontend::TensorBuilder_v8']]], ['setalpha',['setAlpha',['../d3/d92/group__OperationBuilder__v8.html#gab4241b96e7374d821681e97259d39d83',1,'cudnn_frontend::OperationBuilder_v8::setAlpha(float alpha) -> OperationBuilder_v8 &'],['../d3/d92/group__OperationBuilder__v8.html#ga3c63744504f65383ce0b847bea804e3f',1,'cudnn_frontend::OperationBuilder_v8::setAlpha(double alpha) -> OperationBuilder_v8 &']]], ['setalpha2',['setAlpha2',['../d3/d92/group__OperationBuilder__v8.html#ga06cdcfeda1b702412be41addd73bb947',1,'cudnn_frontend::OperationBuilder_v8::setAlpha2(float alpha) -> OperationBuilder_v8 &'],['../d3/d92/group__OperationBuilder__v8.html#ga459671e9d26640528fcf683aaeef05df',1,'cudnn_frontend::OperationBuilder_v8::setAlpha2(double alpha) -> OperationBuilder_v8 &']]], + ['setamatdesc',['setaMatDesc',['../d3/d92/group__OperationBuilder__v8.html#ga095c52c8f1b01ebb224265f9000195c0',1,'cudnn_frontend::OperationBuilder_v8']]], ['setbdesc',['setbDesc',['../d3/d92/group__OperationBuilder__v8.html#ga17475846760b10ffdfa536cd92a5b135',1,'cudnn_frontend::OperationBuilder_v8']]], ['setbeta',['setBeta',['../d3/d92/group__OperationBuilder__v8.html#ga65a9ad73912ff46becc93ee451da6af5',1,'cudnn_frontend::OperationBuilder_v8::setBeta(float beta) -> OperationBuilder_v8 &'],['../d3/d92/group__OperationBuilder__v8.html#ga29752062b7308c8da0e625eb35431652',1,'cudnn_frontend::OperationBuilder_v8::setBeta(double beta) -> OperationBuilder_v8 &']]], + ['setbmatdesc',['setbMatDesc',['../d3/d92/group__OperationBuilder__v8.html#gaa8eed29a0181e044ea0263ba655127ec',1,'cudnn_frontend::OperationBuilder_v8']]], ['setcdesc',['setcDesc',['../d3/d92/group__OperationBuilder__v8.html#gaa82e018b6a9d514ad912b922f43adad2',1,'cudnn_frontend::OperationBuilder_v8']]], ['setchoice',['setChoice',['../dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#a542f95d42a6d118e3de1726720c12278',1,'cudnn_frontend::Engine_v8::Knob']]], ['setclipping',['setClipping',['../d2/db5/group__PointWiseDescBuilder__v8.html#ga124ebb4a416c645cd0b68f59545c62a8',1,'cudnn_frontend::PointWiseDescBuilder_v8']]], + ['setcmatdesc',['setcMatDesc',['../d3/d92/group__OperationBuilder__v8.html#gaaf9d7cbc65c7c7526a6f15d4ad2952fa',1,'cudnn_frontend::OperationBuilder_v8']]], ['setdatapointers',['setDataPointers',['../d5/def/group__VariantPackBuilder__v8.html#ga79c6def790139cb04aff8c600559b802',1,'cudnn_frontend::VariantPackBuilder_v8::setDataPointers(int64_t num_ptr, void **ptrs) -> VariantPackBuilder_v8 &'],['../d5/def/group__VariantPackBuilder__v8.html#ga14d3ac479fd01c48a97583adfb567090',1,'cudnn_frontend::VariantPackBuilder_v8::setDataPointers(std::set< std::pair< uint64_t, void *>> const &data_pointers) -> VariantPackBuilder_v8 &']]], ['setdatatype',['setDataType',['../d3/ddd/group__ConvDescBuilder__v8.html#gad8de00b0e7a86bdda61749e7572a35ac',1,'cudnn_frontend::ConvDescBuilder_v8::setDataType()'],['../d3/d3c/group__TensorBuilder__v8.html#ga98275e4d36e37ef5d73f13bd80f164a3',1,'cudnn_frontend::TensorBuilder_v8::setDataType()']]], ['setdilation',['setDilation',['../d3/ddd/group__ConvDescBuilder__v8.html#gaa41e2cbbebc9d2fd19fa990a48b39d08',1,'cudnn_frontend::ConvDescBuilder_v8']]], ['setdim',['setDim',['../d3/d3c/group__TensorBuilder__v8.html#gae828806e2d76ca3eb6c4e289f2e93a96',1,'cudnn_frontend::TensorBuilder_v8']]], + ['setdwdesc',['setdwDesc',['../d3/d92/group__OperationBuilder__v8.html#ga5e5d463d5531a9378280fa4b1aee6f63',1,'cudnn_frontend::OperationBuilder_v8']]], + ['setdxdesc',['setdxDesc',['../d3/d92/group__OperationBuilder__v8.html#ga35fa5c453a6cd989f35e47c29e6ec665',1,'cudnn_frontend::OperationBuilder_v8']]], + ['setdydesc',['setdyDesc',['../d3/d92/group__OperationBuilder__v8.html#ga08f3d4cb5138174127d0f6899f7bc53b',1,'cudnn_frontend::OperationBuilder_v8::setdyDesc(ManagedOpaqueDescriptor const &raw_tensor) -> OperationBuilder_v8 &'],['../d3/d92/group__OperationBuilder__v8.html#ga9e4a1e9a233b44cca5b65f0af172b001',1,'cudnn_frontend::OperationBuilder_v8::setdyDesc(Tensor_v8 const &tensor) -> OperationBuilder_v8 &']]], + ['setelualpha',['setEluAlpha',['../d5/d02/classcudnn__frontend_1_1PointWiseDescBuilder__v8.html#a8bdbf27c37334f5b61a65eb1bd4b6a98',1,'cudnn_frontend::PointWiseDescBuilder_v8']]], ['setengine',['setEngine',['../d2/dbb/group__EngineConfigBuilder__v8.html#ga9673b31268901dfcb97896958687a42a',1,'cudnn_frontend::EngineConfigBuilder_v8']]], - ['setengineconfig',['setEngineConfig',['../d4/de1/group__ExecutionPlanBuilder__v8.html#gac5c23cff8c1424f71ef2cee2dc66cd3c',1,'cudnn_frontend::ExecutionPlanBuilder_v8::setEngineConfig(EngineConfig_v8 const &engine_config_) -> ExecutionPlanBuilder_v8 &'],['../d4/de1/group__ExecutionPlanBuilder__v8.html#gaf7010781cc8c0583a2d841ac6d9ed521',1,'cudnn_frontend::ExecutionPlanBuilder_v8::setEngineConfig(cudnnBackendDescriptor_t &desc, std::string const &opGraphTag_="") -> ExecutionPlanBuilder_v8 &'],['../d4/de1/group__ExecutionPlanBuilder__v8.html#gae0f92d5445da53253ff3460ac6aefffa',1,'cudnn_frontend::ExecutionPlanBuilder_v8::setEngineConfig(ManagedOpaqueDescriptor &desc, std::string const &opGraphTag_="") -> ExecutionPlanBuilder_v8 &']]], + ['setengineconfig',['setEngineConfig',['../d4/de1/group__ExecutionPlanBuilder__v8.html#gac5c23cff8c1424f71ef2cee2dc66cd3c',1,'cudnn_frontend::ExecutionPlanBuilder_v8::setEngineConfig(EngineConfig_v8 const &engine_config_) -> ExecutionPlanBuilder_v8 &'],['../d4/de1/group__ExecutionPlanBuilder__v8.html#gae0f92d5445da53253ff3460ac6aefffa',1,'cudnn_frontend::ExecutionPlanBuilder_v8::setEngineConfig(ManagedOpaqueDescriptor &desc, std::string const &opGraphTag_="") -> ExecutionPlanBuilder_v8 &']]], ['setglobalengineidx',['setGlobalEngineIdx',['../d3/d09/group__EngineBuilder__v8.html#ga2b171d44da46865d536236bb01103005',1,'cudnn_frontend::EngineBuilder_v8']]], ['sethandle',['setHandle',['../d4/de1/group__ExecutionPlanBuilder__v8.html#ga4166679391fc2df54e25964c03ae6e8e',1,'cudnn_frontend::ExecutionPlanBuilder_v8::setHandle()'],['../d2/df5/group__OperationGraphBuilder__v8.html#ga5b5d8a3121e92a8a7d47341b424298f8',1,'cudnn_frontend::OperationGraphBuilder_v8::setHandle()']]], ['setheurmode',['setHeurMode',['../dc/d99/group__EngineHeuristicsBuilder__v8.html#gaf2d783ca6a663aa50ffed2ccbc164812',1,'cudnn_frontend::EngineHeuristicsBuilder_v8']]], ['setid',['setId',['../d3/d3c/group__TensorBuilder__v8.html#ga6bdaeab1bff548d375e57936b64fb05a',1,'cudnn_frontend::TensorBuilder_v8']]], ['setmathmode',['setMathMode',['../d3/ddd/group__ConvDescBuilder__v8.html#ga3b752afba659c8e92e7ad1ca71d62f2f',1,'cudnn_frontend::ConvDescBuilder_v8']]], - ['setmathprecision',['setMathPrecision',['../d2/db5/group__PointWiseDescBuilder__v8.html#ga3efa065fc125c5af06bd0a9c543bdb9f',1,'cudnn_frontend::PointWiseDescBuilder_v8']]], + ['setmathprecision',['setMathPrecision',['../d9/d08/group__MatMulDescBuilder__v8.html#ga5885f3eb7580cbe0cbe7243c4711c0f2',1,'cudnn_frontend::MatMulDescBuilder_v8::setMathPrecision()'],['../d2/db5/group__PointWiseDescBuilder__v8.html#ga3efa065fc125c5af06bd0a9c543bdb9f',1,'cudnn_frontend::PointWiseDescBuilder_v8::setMathPrecision()']]], + ['setmatmuldesc',['setmatmulDesc',['../d3/d92/group__OperationBuilder__v8.html#ga3ca1f62832f998566c1b07b4b3c71db4',1,'cudnn_frontend::OperationBuilder_v8']]], ['setmode',['setMode',['../d2/db5/group__PointWiseDescBuilder__v8.html#ga48264536e68f952e92a0bdbaa84d9363',1,'cudnn_frontend::PointWiseDescBuilder_v8::setMode(cudnnPointwiseMode_t mode_) -> PointWiseDescBuilder_v8 &'],['../d2/db5/group__PointWiseDescBuilder__v8.html#gae5240136e19e0a4094036d48c6b1a3b7',1,'cudnn_frontend::PointWiseDescBuilder_v8::setMode(cudnnNanPropagation_t nan_mode_) -> PointWiseDescBuilder_v8 &']]], ['setndims',['setNDims',['../d3/ddd/group__ConvDescBuilder__v8.html#gaacfcf20b0ed61e89bc92970f7bb7a258',1,'cudnn_frontend::ConvDescBuilder_v8']]], ['setoperation',['setOperation',['../d4/d6b/group__EngineFallbackListBuilder__v8.html#gaf66485fe1a0faccab971edd0c70f04b4',1,'cudnn_frontend::EngineFallbackListBuilder_v8']]], - ['setoperationgraph',['setOperationGraph',['../d3/d09/group__EngineBuilder__v8.html#ga0ceef322363405504dbdc4d1f3c9949a',1,'cudnn_frontend::EngineBuilder_v8::setOperationGraph(OperationGraph_v8 const &opGraph_) -> EngineBuilder_v8 &'],['../d3/d09/group__EngineBuilder__v8.html#ga27466cecb45496d001cfbe4de4b5c5a9',1,'cudnn_frontend::EngineBuilder_v8::setOperationGraph(cudnnBackendDescriptor_t desc_) -> EngineBuilder_v8 &'],['../d3/d09/group__EngineBuilder__v8.html#ga7220dab88f9fed1704c9d78d9771be5f',1,'cudnn_frontend::EngineBuilder_v8::setOperationGraph(ManagedOpaqueDescriptor desc_) -> EngineBuilder_v8 &'],['../d4/d6b/group__EngineFallbackListBuilder__v8.html#ga45c7c761a47a7731055ad0f943449610',1,'cudnn_frontend::EngineFallbackListBuilder_v8::setOperationGraph()'],['../dc/d99/group__EngineHeuristicsBuilder__v8.html#ga0554ac9347b7409e46f960b30f18dc68',1,'cudnn_frontend::EngineHeuristicsBuilder_v8::setOperationGraph()'],['../d2/df5/group__OperationGraphBuilder__v8.html#ga4e4cee8d631471478d5de420077a2182',1,'cudnn_frontend::OperationGraphBuilder_v8::setOperationGraph()']]], + ['setoperationgraph',['setOperationGraph',['../d3/d09/group__EngineBuilder__v8.html#ga0ceef322363405504dbdc4d1f3c9949a',1,'cudnn_frontend::EngineBuilder_v8::setOperationGraph(OperationGraph_v8 const &opGraph_) -> EngineBuilder_v8 &'],['../d3/d09/group__EngineBuilder__v8.html#ga7220dab88f9fed1704c9d78d9771be5f',1,'cudnn_frontend::EngineBuilder_v8::setOperationGraph(ManagedOpaqueDescriptor desc_) -> EngineBuilder_v8 &'],['../d4/d6b/group__EngineFallbackListBuilder__v8.html#ga45c7c761a47a7731055ad0f943449610',1,'cudnn_frontend::EngineFallbackListBuilder_v8::setOperationGraph()'],['../dc/d99/group__EngineHeuristicsBuilder__v8.html#ga0554ac9347b7409e46f960b30f18dc68',1,'cudnn_frontend::EngineHeuristicsBuilder_v8::setOperationGraph()'],['../d2/df5/group__OperationGraphBuilder__v8.html#ga4e4cee8d631471478d5de420077a2182',1,'cudnn_frontend::OperationGraphBuilder_v8::setOperationGraph()']]], ['setpostpadding',['setPostPadding',['../d3/ddd/group__ConvDescBuilder__v8.html#ga44915183cb4dddcf23222faca3f84bba',1,'cudnn_frontend::ConvDescBuilder_v8']]], ['setprepadding',['setPrePadding',['../d3/ddd/group__ConvDescBuilder__v8.html#gab07bf6292e69d19e6324d3073a86d58c',1,'cudnn_frontend::ConvDescBuilder_v8']]], ['setpwdesc',['setpwDesc',['../d3/d92/group__OperationBuilder__v8.html#gae6b06877b2e675b2a390f0b122100669',1,'cudnn_frontend::OperationBuilder_v8']]], + ['setrelulowerclip',['setReluLowerClip',['../d5/d02/classcudnn__frontend_1_1PointWiseDescBuilder__v8.html#afdbe0ce3f7fb2f0d23251ccb7507bc69',1,'cudnn_frontend::PointWiseDescBuilder_v8']]], + ['setrelulowerclipslope',['setReluLowerClipSlope',['../d5/d02/classcudnn__frontend_1_1PointWiseDescBuilder__v8.html#aa93615adf69e7a87a06d0cea687794a6',1,'cudnn_frontend::PointWiseDescBuilder_v8']]], + ['setreluupperclip',['setReluUpperClip',['../d5/d02/classcudnn__frontend_1_1PointWiseDescBuilder__v8.html#a0514e70d05a21a9c46bc66d1e61c28f5',1,'cudnn_frontend::PointWiseDescBuilder_v8']]], + ['setsoftplusbeta',['setSoftplusBeta',['../d5/d02/classcudnn__frontend_1_1PointWiseDescBuilder__v8.html#ab692e5a2b3970346f68af33530ef98e8',1,'cudnn_frontend::PointWiseDescBuilder_v8']]], ['setstrides',['setStrides',['../d3/ddd/group__ConvDescBuilder__v8.html#ga2c481d46d71fe909247f50ba2772b7ce',1,'cudnn_frontend::ConvDescBuilder_v8::setStrides()'],['../d3/d3c/group__TensorBuilder__v8.html#ga3de3d95beb2234dc2a741d23703f8ed2',1,'cudnn_frontend::TensorBuilder_v8::setStrides()']]], + ['setswishbeta',['setSwishBeta',['../d5/d02/classcudnn__frontend_1_1PointWiseDescBuilder__v8.html#aad41d0f7b6667383fd9012bc492a13c3',1,'cudnn_frontend::PointWiseDescBuilder_v8']]], ['setuids',['setUids',['../d5/def/group__VariantPackBuilder__v8.html#gad6dc5c5087c2724ca88cc2668d7f829d',1,'cudnn_frontend::VariantPackBuilder_v8']]], ['setvirtual',['setVirtual',['../d3/d3c/group__TensorBuilder__v8.html#ga7d5d978de243e47938eb1f224a38d02d',1,'cudnn_frontend::TensorBuilder_v8']]], ['setwdesc',['setwDesc',['../d3/d92/group__OperationBuilder__v8.html#ga80466e517e980ba4953e085b3d4e3498',1,'cudnn_frontend::OperationBuilder_v8']]], ['setworkspacepointer',['setWorkspacePointer',['../d5/def/group__VariantPackBuilder__v8.html#ga3a7b9ac8c714db202a8f89a6110675b6',1,'cudnn_frontend::VariantPackBuilder_v8']]], ['setxdesc',['setxDesc',['../d3/d92/group__OperationBuilder__v8.html#gaefa06fdaae3b28c6ef08a0189e2a3d3a',1,'cudnn_frontend::OperationBuilder_v8::setxDesc(ManagedOpaqueDescriptor const &raw_tensor) -> OperationBuilder_v8 &'],['../d3/d92/group__OperationBuilder__v8.html#ga04c2492a5376f1a74a57fb49fa7b3599',1,'cudnn_frontend::OperationBuilder_v8::setxDesc(Tensor_v8 const &tensor) -> OperationBuilder_v8 &']]], ['setydesc',['setyDesc',['../d3/d92/group__OperationBuilder__v8.html#ga5910bc2209e1b648c1aa0edce7f11e01',1,'cudnn_frontend::OperationBuilder_v8']]], + ['softplus_5fbeta',['softplus_beta',['../d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#a346bf4a4ca5e45b0f19dc8f2fb6b6148',1,'cudnn_frontend::PointWiseDesc_v8']]], ['status',['status',['../d5/d14/classcudnn__frontend_1_1OpaqueBackendPointer.html#a10487abe0a45d35824ec75b0d3894f21',1,'cudnn_frontend::OpaqueBackendPointer::status()'],['../d6/d88/classcudnn__frontend_1_1BackendDescriptor.html#a8a5466c444f2de721118334ac876c6ba',1,'cudnn_frontend::BackendDescriptor::status()']]], - ['stride',['stride',['../d6/d73/classcudnn__frontend_1_1ConvDesc__v8.html#ac513728c785a54ef86612a0bd6fa0f1a',1,'cudnn_frontend::ConvDesc_v8::stride()'],['../dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#a8342ab30dbe0e86d8d060983f14aba87',1,'cudnn_frontend::Engine_v8::Knob::stride()']]] + ['stride',['stride',['../d6/d73/classcudnn__frontend_1_1ConvDesc__v8.html#ac513728c785a54ef86612a0bd6fa0f1a',1,'cudnn_frontend::ConvDesc_v8::stride()'],['../dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#a8342ab30dbe0e86d8d060983f14aba87',1,'cudnn_frontend::Engine_v8::Knob::stride()']]], + ['swish_5fbeta',['swish_beta',['../d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#aff19ca9077ac2dca8a9f78df586e11db',1,'cudnn_frontend::PointWiseDesc_v8']]] ]; diff --git a/docs/search/classes_4.js b/docs/search/classes_4.js index 98a74fe00..7a73cdf5a 100644 --- a/docs/search/classes_4.js +++ b/docs/search/classes_4.js @@ -1,8 +1,5 @@ var searchData= [ - ['opaquebackendpointer',['OpaqueBackendPointer',['../d5/d14/classcudnn__frontend_1_1OpaqueBackendPointer.html',1,'cudnn_frontend']]], - ['operation_5fv8',['Operation_v8',['../d4/d30/classcudnn__frontend_1_1Operation__v8.html',1,'cudnn_frontend']]], - ['operationbuilder_5fv8',['OperationBuilder_v8',['../d1/d29/classcudnn__frontend_1_1OperationBuilder__v8.html',1,'cudnn_frontend']]], - ['operationgraph_5fv8',['OperationGraph_v8',['../de/dd9/classcudnn__frontend_1_1OperationGraph__v8.html',1,'cudnn_frontend']]], - ['operationgraphbuilder_5fv8',['OperationGraphBuilder_v8',['../d4/d39/classcudnn__frontend_1_1OperationGraphBuilder__v8.html',1,'cudnn_frontend']]] + ['matmuldesc_5fv8',['MatMulDesc_v8',['../d6/db7/classcudnn__frontend_1_1MatMulDesc__v8.html',1,'cudnn_frontend']]], + ['matmuldescbuilder_5fv8',['MatMulDescBuilder_v8',['../de/d00/classcudnn__frontend_1_1MatMulDescBuilder__v8.html',1,'cudnn_frontend']]] ]; diff --git a/docs/search/classes_5.js b/docs/search/classes_5.js index 4ef6a087e..98a74fe00 100644 --- a/docs/search/classes_5.js +++ b/docs/search/classes_5.js @@ -1,5 +1,8 @@ var searchData= [ - ['pointwisedesc_5fv8',['PointWiseDesc_v8',['../d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html',1,'cudnn_frontend']]], - ['pointwisedescbuilder_5fv8',['PointWiseDescBuilder_v8',['../d5/d02/classcudnn__frontend_1_1PointWiseDescBuilder__v8.html',1,'cudnn_frontend']]] + ['opaquebackendpointer',['OpaqueBackendPointer',['../d5/d14/classcudnn__frontend_1_1OpaqueBackendPointer.html',1,'cudnn_frontend']]], + ['operation_5fv8',['Operation_v8',['../d4/d30/classcudnn__frontend_1_1Operation__v8.html',1,'cudnn_frontend']]], + ['operationbuilder_5fv8',['OperationBuilder_v8',['../d1/d29/classcudnn__frontend_1_1OperationBuilder__v8.html',1,'cudnn_frontend']]], + ['operationgraph_5fv8',['OperationGraph_v8',['../de/dd9/classcudnn__frontend_1_1OperationGraph__v8.html',1,'cudnn_frontend']]], + ['operationgraphbuilder_5fv8',['OperationGraphBuilder_v8',['../d4/d39/classcudnn__frontend_1_1OperationGraphBuilder__v8.html',1,'cudnn_frontend']]] ]; diff --git a/docs/search/classes_6.js b/docs/search/classes_6.js index 761b83fd2..4ef6a087e 100644 --- a/docs/search/classes_6.js +++ b/docs/search/classes_6.js @@ -1,5 +1,5 @@ var searchData= [ - ['tensor_5fv8',['Tensor_v8',['../d6/da7/classcudnn__frontend_1_1Tensor__v8.html',1,'cudnn_frontend']]], - ['tensorbuilder_5fv8',['TensorBuilder_v8',['../db/dae/classcudnn__frontend_1_1TensorBuilder__v8.html',1,'cudnn_frontend']]] + ['pointwisedesc_5fv8',['PointWiseDesc_v8',['../d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html',1,'cudnn_frontend']]], + ['pointwisedescbuilder_5fv8',['PointWiseDescBuilder_v8',['../d5/d02/classcudnn__frontend_1_1PointWiseDescBuilder__v8.html',1,'cudnn_frontend']]] ]; diff --git a/docs/search/classes_7.js b/docs/search/classes_7.js index 0919d5f73..761b83fd2 100644 --- a/docs/search/classes_7.js +++ b/docs/search/classes_7.js @@ -1,5 +1,5 @@ var searchData= [ - ['variantpack_5fv8',['VariantPack_v8',['../d0/d20/classcudnn__frontend_1_1VariantPack__v8.html',1,'cudnn_frontend']]], - ['variantpackbuilder_5fv8',['VariantPackBuilder_v8',['../d4/dce/classcudnn__frontend_1_1VariantPackBuilder__v8.html',1,'cudnn_frontend']]] + ['tensor_5fv8',['Tensor_v8',['../d6/da7/classcudnn__frontend_1_1Tensor__v8.html',1,'cudnn_frontend']]], + ['tensorbuilder_5fv8',['TensorBuilder_v8',['../db/dae/classcudnn__frontend_1_1TensorBuilder__v8.html',1,'cudnn_frontend']]] ]; diff --git a/docs/search/classes_8.html b/docs/search/classes_8.html new file mode 100644 index 000000000..5a443d9d5 --- /dev/null +++ b/docs/search/classes_8.html @@ -0,0 +1,26 @@ + + + + + + + + + +
                                                                +
                                                                Loading...
                                                                +
                                                                + +
                                                                Searching...
                                                                +
                                                                No Matches
                                                                + +
                                                                + + diff --git a/docs/search/classes_8.js b/docs/search/classes_8.js new file mode 100644 index 000000000..0919d5f73 --- /dev/null +++ b/docs/search/classes_8.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['variantpack_5fv8',['VariantPack_v8',['../d0/d20/classcudnn__frontend_1_1VariantPack__v8.html',1,'cudnn_frontend']]], + ['variantpackbuilder_5fv8',['VariantPackBuilder_v8',['../d4/dce/classcudnn__frontend_1_1VariantPackBuilder__v8.html',1,'cudnn_frontend']]] +]; diff --git a/docs/search/files_0.js b/docs/search/files_0.js index 800dd13d4..73c6bf6c2 100644 --- a/docs/search/files_0.js +++ b/docs/search/files_0.js @@ -12,6 +12,7 @@ var searchData= ['cudnn_5ffrontend_5ffind_5fplan_2eh',['cudnn_frontend_find_plan.h',['../d3/d6b/cudnn__frontend__find__plan_8h.html',1,'']]], ['cudnn_5ffrontend_5fget_5fplan_2eh',['cudnn_frontend_get_plan.h',['../d2/d3b/cudnn__frontend__get__plan_8h.html',1,'']]], ['cudnn_5ffrontend_5fheuristics_2eh',['cudnn_frontend_Heuristics.h',['../db/d66/cudnn__frontend__Heuristics_8h.html',1,'']]], + ['cudnn_5ffrontend_5fmatmuldesc_2eh',['cudnn_frontend_MatMulDesc.h',['../d6/d32/cudnn__frontend__MatMulDesc_8h.html',1,'']]], ['cudnn_5ffrontend_5foperation_2eh',['cudnn_frontend_Operation.h',['../da/d5a/cudnn__frontend__Operation_8h.html',1,'']]], ['cudnn_5ffrontend_5foperationgraph_2eh',['cudnn_frontend_OperationGraph.h',['../db/d7d/cudnn__frontend__OperationGraph_8h.html',1,'']]], ['cudnn_5ffrontend_5fpointwisedesc_2eh',['cudnn_frontend_PointWiseDesc.h',['../da/d5f/cudnn__frontend__PointWiseDesc_8h.html',1,'']]], diff --git a/docs/search/functions_0.js b/docs/search/functions_0.js index e2ee916dd..df8200269 100644 --- a/docs/search/functions_0.js +++ b/docs/search/functions_0.js @@ -1,6 +1,6 @@ var searchData= [ ['backenddescriptor',['BackendDescriptor',['../d6/d88/classcudnn__frontend_1_1BackendDescriptor.html#a8aa93686ca88410fc048b05155148183',1,'cudnn_frontend::BackendDescriptor::BackendDescriptor(ManagedOpaqueDescriptor pointer_, cudnnStatus_t status_, std::string err_msg_)'],['../d6/d88/classcudnn__frontend_1_1BackendDescriptor.html#a5765369a5739c2ea81c4f39ce2d1c46e',1,'cudnn_frontend::BackendDescriptor::BackendDescriptor()=default']]], - ['build',['build',['../db/de1/classcudnn__frontend_1_1ConvDescBuilder__v8.html#a01f709a3efafaca70de6565817c43beb',1,'cudnn_frontend::ConvDescBuilder_v8::build()'],['../d9/dfd/classcudnn__frontend_1_1EngineBuilder__v8.html#a010b99c39d63121be78ec847fff433f8',1,'cudnn_frontend::EngineBuilder_v8::build()'],['../dd/d72/classcudnn__frontend_1_1EngineConfigBuilder__v8.html#a639e1514ea8f283720e49fc18d7ad673',1,'cudnn_frontend::EngineConfigBuilder_v8::build()'],['../d9/df1/classcudnn__frontend_1_1EngineFallbackListBuilder__v8.html#aae1a36ace3278dbedcf0d743a7744d98',1,'cudnn_frontend::EngineFallbackListBuilder_v8::build()'],['../d7/d0d/group__ExecutionPlanQuery.html#ga5ff39f2019a5a3fe8062bf887707877c',1,'cudnn_frontend::ExecutionPlanBuilder_v8::build()'],['../d1/d28/classcudnn__frontend_1_1EngineHeuristicsBuilder__v8.html#ab3ff1b538521fdea588d8ac155f6e88c',1,'cudnn_frontend::EngineHeuristicsBuilder_v8::build()'],['../d1/d29/classcudnn__frontend_1_1OperationBuilder__v8.html#aa0df558c603d8316dd3eb2d5bfd67c9d',1,'cudnn_frontend::OperationBuilder_v8::build()'],['../d4/d39/classcudnn__frontend_1_1OperationGraphBuilder__v8.html#ac78945f424f254f0060d4c2e1184cf1f',1,'cudnn_frontend::OperationGraphBuilder_v8::build()'],['../d5/d02/classcudnn__frontend_1_1PointWiseDescBuilder__v8.html#a5de642e4141705f8e06c4bf566f1d332',1,'cudnn_frontend::PointWiseDescBuilder_v8::build()'],['../db/dae/classcudnn__frontend_1_1TensorBuilder__v8.html#a32876941f964b3fad2d123b9081b0af7',1,'cudnn_frontend::TensorBuilder_v8::build()'],['../d4/dce/classcudnn__frontend_1_1VariantPackBuilder__v8.html#abf794751941aa252c19e1879306375d3',1,'cudnn_frontend::VariantPackBuilder_v8::build()']]], + ['build',['build',['../db/de1/classcudnn__frontend_1_1ConvDescBuilder__v8.html#a01f709a3efafaca70de6565817c43beb',1,'cudnn_frontend::ConvDescBuilder_v8::build()'],['../d9/dfd/classcudnn__frontend_1_1EngineBuilder__v8.html#a010b99c39d63121be78ec847fff433f8',1,'cudnn_frontend::EngineBuilder_v8::build()'],['../dd/d72/classcudnn__frontend_1_1EngineConfigBuilder__v8.html#a639e1514ea8f283720e49fc18d7ad673',1,'cudnn_frontend::EngineConfigBuilder_v8::build()'],['../d9/df1/classcudnn__frontend_1_1EngineFallbackListBuilder__v8.html#aae1a36ace3278dbedcf0d743a7744d98',1,'cudnn_frontend::EngineFallbackListBuilder_v8::build()'],['../d7/d0d/group__ExecutionPlanQuery.html#ga5ff39f2019a5a3fe8062bf887707877c',1,'cudnn_frontend::ExecutionPlanBuilder_v8::build()'],['../d1/d28/classcudnn__frontend_1_1EngineHeuristicsBuilder__v8.html#ab3ff1b538521fdea588d8ac155f6e88c',1,'cudnn_frontend::EngineHeuristicsBuilder_v8::build()'],['../de/d00/classcudnn__frontend_1_1MatMulDescBuilder__v8.html#addc153acf5600781659a1a2ba891e59c',1,'cudnn_frontend::MatMulDescBuilder_v8::build()'],['../d1/d29/classcudnn__frontend_1_1OperationBuilder__v8.html#aa0df558c603d8316dd3eb2d5bfd67c9d',1,'cudnn_frontend::OperationBuilder_v8::build()'],['../d4/d39/classcudnn__frontend_1_1OperationGraphBuilder__v8.html#ac78945f424f254f0060d4c2e1184cf1f',1,'cudnn_frontend::OperationGraphBuilder_v8::build()'],['../d5/d02/classcudnn__frontend_1_1PointWiseDescBuilder__v8.html#a5de642e4141705f8e06c4bf566f1d332',1,'cudnn_frontend::PointWiseDescBuilder_v8::build()'],['../db/dae/classcudnn__frontend_1_1TensorBuilder__v8.html#a32876941f964b3fad2d123b9081b0af7',1,'cudnn_frontend::TensorBuilder_v8::build()'],['../d4/dce/classcudnn__frontend_1_1VariantPackBuilder__v8.html#abf794751941aa252c19e1879306375d3',1,'cudnn_frontend::VariantPackBuilder_v8::build()']]], ['buildknobs',['buildKnobs',['../dc/d3c/classcudnn__frontend_1_1Engine__v8.html#a0e6d7c12c261ad6c2f08e1249397b696',1,'cudnn_frontend::Engine_v8']]] ]; diff --git a/docs/search/functions_10.js b/docs/search/functions_10.js index 4eecf109c..89884ee00 100644 --- a/docs/search/functions_10.js +++ b/docs/search/functions_10.js @@ -12,6 +12,8 @@ var searchData= ['_7eengineheuristicsbuilder_5fv8',['~EngineHeuristicsBuilder_v8',['../d1/d28/classcudnn__frontend_1_1EngineHeuristicsBuilder__v8.html#a8740e967b981abf94dc2c53eb8786ceb',1,'cudnn_frontend::EngineHeuristicsBuilder_v8']]], ['_7eexecutionplan_5fv8',['~ExecutionPlan_v8',['../d5/d06/classcudnn__frontend_1_1ExecutionPlan__v8.html#a8a8ac13b1c639dd9b87c280a598446af',1,'cudnn_frontend::ExecutionPlan_v8']]], ['_7eexecutionplanbuilder_5fv8',['~ExecutionPlanBuilder_v8',['../d7/d0d/group__ExecutionPlanQuery.html#gae3f841de1b6461b31bf7967734a70a8a',1,'cudnn_frontend::ExecutionPlanBuilder_v8']]], + ['_7ematmuldesc_5fv8',['~MatMulDesc_v8',['../d6/db7/classcudnn__frontend_1_1MatMulDesc__v8.html#ad27b038b19b218067bd30e60d94fd672',1,'cudnn_frontend::MatMulDesc_v8']]], + ['_7ematmuldescbuilder_5fv8',['~MatMulDescBuilder_v8',['../de/d00/classcudnn__frontend_1_1MatMulDescBuilder__v8.html#a3f5790e5ada9a1785d9daf4246ea8de3',1,'cudnn_frontend::MatMulDescBuilder_v8']]], ['_7eopaquebackendpointer',['~OpaqueBackendPointer',['../d5/d14/classcudnn__frontend_1_1OpaqueBackendPointer.html#a9f549dd95873ac3a02689ef97f4a6c75',1,'cudnn_frontend::OpaqueBackendPointer']]], ['_7eoperation_5fv8',['~Operation_v8',['../d4/d30/classcudnn__frontend_1_1Operation__v8.html#a67d82f53ecbdfe2416d2a26410138d78',1,'cudnn_frontend::Operation_v8']]], ['_7eoperationgraph_5fv8',['~OperationGraph_v8',['../de/dd9/classcudnn__frontend_1_1OperationGraph__v8.html#aeb42611a38c4951e66cd23108d53353c',1,'cudnn_frontend::OperationGraph_v8']]], diff --git a/docs/search/functions_2.js b/docs/search/functions_2.js index add3a4217..fd2f4bb0f 100644 --- a/docs/search/functions_2.js +++ b/docs/search/functions_2.js @@ -1,4 +1,4 @@ var searchData= [ - ['describe',['describe',['../d6/d88/classcudnn__frontend_1_1BackendDescriptor.html#ab652fb3e9a58092fbb137b0e959a9478',1,'cudnn_frontend::BackendDescriptor::describe()'],['../d6/d73/classcudnn__frontend_1_1ConvDesc__v8.html#a0d36a97abb2d36a0148ce8e8833baff8',1,'cudnn_frontend::ConvDesc_v8::describe()'],['../dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#a3f60f9ba0e35cb0bccbf3524def69db2',1,'cudnn_frontend::Engine_v8::Knob::describe()'],['../dc/d3c/classcudnn__frontend_1_1Engine__v8.html#a052463f45fef3bb98e2822ba0fccdb8e',1,'cudnn_frontend::Engine_v8::describe()'],['../df/d83/classcudnn__frontend_1_1EngineConfig__v8.html#aefd7d8d3da71ce0dddca0f6a85fd1c80',1,'cudnn_frontend::EngineConfig_v8::describe()'],['../db/d99/classcudnn__frontend_1_1EngineFallbackList__v8.html#a3509dd7589fed7a699874170cec6dd9f',1,'cudnn_frontend::EngineFallbackList_v8::describe()'],['../d7/d0d/group__ExecutionPlanQuery.html#gad80aa2980d915449d05db4c71041e2e0',1,'cudnn_frontend::ExecutionPlan_v8::describe()'],['../db/ddb/classcudnn__frontend_1_1EngineHeuristics__v8.html#ac223cc9438a0442bd3b48881f71a4b40',1,'cudnn_frontend::EngineHeuristics_v8::describe()'],['../d4/d30/classcudnn__frontend_1_1Operation__v8.html#a3425a8550eb9f622dc4101d3d5d2c0e1',1,'cudnn_frontend::Operation_v8::describe()'],['../de/dd9/classcudnn__frontend_1_1OperationGraph__v8.html#acd0b5f47407184b0b26bf4d4b5d0ce32',1,'cudnn_frontend::OperationGraph_v8::describe()'],['../d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#a66ada0a9313ced7ed2801097ef523de8',1,'cudnn_frontend::PointWiseDesc_v8::describe()'],['../d6/da7/classcudnn__frontend_1_1Tensor__v8.html#a79cc1a752e6df2001b853f8c189b1f1f',1,'cudnn_frontend::Tensor_v8::describe()'],['../d0/d20/classcudnn__frontend_1_1VariantPack__v8.html#a7ba1c4736d3b0f187dc06344ca4e2032',1,'cudnn_frontend::VariantPack_v8::describe()']]] + ['describe',['describe',['../d6/d88/classcudnn__frontend_1_1BackendDescriptor.html#ab652fb3e9a58092fbb137b0e959a9478',1,'cudnn_frontend::BackendDescriptor::describe()'],['../d6/d73/classcudnn__frontend_1_1ConvDesc__v8.html#a0d36a97abb2d36a0148ce8e8833baff8',1,'cudnn_frontend::ConvDesc_v8::describe()'],['../dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#a3f60f9ba0e35cb0bccbf3524def69db2',1,'cudnn_frontend::Engine_v8::Knob::describe()'],['../dc/d3c/classcudnn__frontend_1_1Engine__v8.html#a052463f45fef3bb98e2822ba0fccdb8e',1,'cudnn_frontend::Engine_v8::describe()'],['../df/d83/classcudnn__frontend_1_1EngineConfig__v8.html#aefd7d8d3da71ce0dddca0f6a85fd1c80',1,'cudnn_frontend::EngineConfig_v8::describe()'],['../db/d99/classcudnn__frontend_1_1EngineFallbackList__v8.html#a3509dd7589fed7a699874170cec6dd9f',1,'cudnn_frontend::EngineFallbackList_v8::describe()'],['../d7/d0d/group__ExecutionPlanQuery.html#gad80aa2980d915449d05db4c71041e2e0',1,'cudnn_frontend::ExecutionPlan_v8::describe()'],['../db/ddb/classcudnn__frontend_1_1EngineHeuristics__v8.html#ac223cc9438a0442bd3b48881f71a4b40',1,'cudnn_frontend::EngineHeuristics_v8::describe()'],['../d6/db7/classcudnn__frontend_1_1MatMulDesc__v8.html#a2931e4d0b21e6986a3f5a1697ca4bae0',1,'cudnn_frontend::MatMulDesc_v8::describe()'],['../d4/d30/classcudnn__frontend_1_1Operation__v8.html#a3425a8550eb9f622dc4101d3d5d2c0e1',1,'cudnn_frontend::Operation_v8::describe()'],['../de/dd9/classcudnn__frontend_1_1OperationGraph__v8.html#acd0b5f47407184b0b26bf4d4b5d0ce32',1,'cudnn_frontend::OperationGraph_v8::describe()'],['../d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#a66ada0a9313ced7ed2801097ef523de8',1,'cudnn_frontend::PointWiseDesc_v8::describe()'],['../d6/da7/classcudnn__frontend_1_1Tensor__v8.html#a79cc1a752e6df2001b853f8c189b1f1f',1,'cudnn_frontend::Tensor_v8::describe()'],['../d0/d20/classcudnn__frontend_1_1VariantPack__v8.html#a7ba1c4736d3b0f187dc06344ca4e2032',1,'cudnn_frontend::VariantPack_v8::describe()']]] ]; diff --git a/docs/search/functions_5.js b/docs/search/functions_5.js index 5333b2d88..094cfeeec 100644 --- a/docs/search/functions_5.js +++ b/docs/search/functions_5.js @@ -7,19 +7,19 @@ var searchData= ['get_5ffallback_5fengine_5flist',['get_fallback_engine_list',['../df/de1/namespacecudnn__frontend.html#ad365eee23138df472d716d9dbf119f0e',1,'cudnn_frontend']]], ['get_5fraw_5fdesc',['get_raw_desc',['../d6/d88/classcudnn__frontend_1_1BackendDescriptor.html#a3aa1ab42ab96471092185f15e22c1e9f',1,'cudnn_frontend::BackendDescriptor']]], ['get_5fstatus',['get_status',['../d5/d14/classcudnn__frontend_1_1OpaqueBackendPointer.html#abd4f69554da364008f3780e9dc3a5bfc',1,'cudnn_frontend::OpaqueBackendPointer::get_status()'],['../d6/d88/classcudnn__frontend_1_1BackendDescriptor.html#af34344e365e6422ee86955349bf80b49',1,'cudnn_frontend::BackendDescriptor::get_status()']]], - ['getchoice',['getChoice',['../dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#ad2fbb6103c61dfa6fa1800dccadb5f38',1,'cudnn_frontend::Engine_v8::Knob']]], + ['getchoice',['getChoice',['../dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#a4c0a920d14a719e99fce3d64a6eb0980',1,'cudnn_frontend::Engine_v8::Knob']]], ['getengineconfig',['getEngineConfig',['../d6/d46/group__EngineHeuristicsQuery.html#ga1171cb5ce50baf0fab19fc458d4565b5',1,'cudnn_frontend::EngineHeuristics_v8']]], ['getengineconfigcount',['getEngineConfigCount',['../d6/d46/group__EngineHeuristicsQuery.html#ga10121605fc82ed225537210825fa3836',1,'cudnn_frontend::EngineHeuristics_v8']]], ['getenginecount',['getEngineCount',['../d1/df7/group__OperationGraphQuery.html#ga7a7a8d03f5a3aa54f14b83be4abe2a26',1,'cudnn_frontend::OperationGraph_v8']]], ['getfallbacklist',['getFallbackList',['../db/d99/classcudnn__frontend_1_1EngineFallbackList__v8.html#a56ad23cee30cbe70209ce6399a69d541',1,'cudnn_frontend::EngineFallbackList_v8']]], ['getfinalizedknobs',['getFinalizedKnobs',['../dc/d3c/classcudnn__frontend_1_1Engine__v8.html#a837d8adc86f08ca31f42437512a30752',1,'cudnn_frontend::Engine_v8']]], - ['getknobtype',['getKnobType',['../dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#a1a4287f2767654ef28b3a5f1925e7ff1',1,'cudnn_frontend::Engine_v8::Knob']]], - ['getmaxvalue',['getMaxValue',['../dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#ac16f2f536d5d813d52eb74825b6dff64',1,'cudnn_frontend::Engine_v8::Knob']]], - ['getminvalue',['getMinValue',['../dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#a210061280cc6df1431d1c464a65d9a02',1,'cudnn_frontend::Engine_v8::Knob']]], + ['getknobtype',['getKnobType',['../dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#a75ea7ec76b08688da99e6bd3664083c8',1,'cudnn_frontend::Engine_v8::Knob']]], + ['getmaxvalue',['getMaxValue',['../dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#a4fe794b42a0ee5ba71b8ca8c797d1dbe',1,'cudnn_frontend::Engine_v8::Knob']]], + ['getminvalue',['getMinValue',['../dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#af3fdf6b0da493544a003913bdf524449',1,'cudnn_frontend::Engine_v8::Knob']]], ['getoutputtensor',['getOutputTensor',['../d4/d30/classcudnn__frontend_1_1Operation__v8.html#ae5cba10d789e4d08b45339a702ba75f3',1,'cudnn_frontend::Operation_v8']]], ['getpointwisemode',['getPointWiseMode',['../d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#a963d8bd60aa5d7c5385d5d41595c2cf3',1,'cudnn_frontend::PointWiseDesc_v8']]], ['getportcount',['getPortCount',['../d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#a81b0fa4b9ff8bfd2c23ae704f7211962',1,'cudnn_frontend::PointWiseDesc_v8']]], - ['getstride',['getStride',['../dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#a92040bb78e1f2b4ecb3cc6768a3946df',1,'cudnn_frontend::Engine_v8::Knob']]], + ['getstride',['getStride',['../dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#adc0dd9d11771a040a8f5191bef00cdb5',1,'cudnn_frontend::Engine_v8::Knob']]], ['getsupportedknobs',['getSupportedKnobs',['../dc/d3c/classcudnn__frontend_1_1Engine__v8.html#a6804e842fb698ebc12fccfece3f33b01',1,'cudnn_frontend::Engine_v8']]], ['gettag',['getTag',['../dc/d3c/classcudnn__frontend_1_1Engine__v8.html#af299a1692584215c649b3563fdb3abae',1,'cudnn_frontend::Engine_v8::getTag()'],['../df/d83/classcudnn__frontend_1_1EngineConfig__v8.html#a1c7175f7d3cc7224496f276df36036aa',1,'cudnn_frontend::EngineConfig_v8::getTag()'],['../d7/d0d/group__ExecutionPlanQuery.html#ga2ff1340409f8834fe9ae68ff4c00281a',1,'cudnn_frontend::ExecutionPlan_v8::getTag()'],['../d4/d30/classcudnn__frontend_1_1Operation__v8.html#ab2692d9f28861a73d590a53f979d26fa',1,'cudnn_frontend::Operation_v8::getTag()'],['../de/dd9/classcudnn__frontend_1_1OperationGraph__v8.html#a19fd5ed99ab4053c8a178bd33843460a',1,'cudnn_frontend::OperationGraph_v8::getTag()']]], ['getworkspacesize',['getWorkspaceSize',['../d7/d0d/group__ExecutionPlanQuery.html#ga00d10a076c22e86354a789852c56c22f',1,'cudnn_frontend::ExecutionPlan_v8']]] diff --git a/docs/search/functions_9.js b/docs/search/functions_9.js index 3e8a2a80f..441887cdc 100644 --- a/docs/search/functions_9.js +++ b/docs/search/functions_9.js @@ -1,4 +1,6 @@ var searchData= [ - ['make_5fshared_5fbackend_5fpointer',['make_shared_backend_pointer',['../df/de1/namespacecudnn__frontend.html#aee9c79eb8972c944de14ccd70bf5db43',1,'cudnn_frontend']]] + ['make_5fshared_5fbackend_5fpointer',['make_shared_backend_pointer',['../df/de1/namespacecudnn__frontend.html#aee9c79eb8972c944de14ccd70bf5db43',1,'cudnn_frontend']]], + ['matmuldesc_5fv8',['MatMulDesc_v8',['../d6/db7/classcudnn__frontend_1_1MatMulDesc__v8.html#ab725a8e47331aca6310155f6d55c0a02',1,'cudnn_frontend::MatMulDesc_v8::MatMulDesc_v8(MatMulDesc_v8 &&from)'],['../d6/db7/classcudnn__frontend_1_1MatMulDesc__v8.html#a5e060b83ea1e1ed59a66e15fdba91227',1,'cudnn_frontend::MatMulDesc_v8::MatMulDesc_v8()=default'],['../d6/db7/classcudnn__frontend_1_1MatMulDesc__v8.html#a48aa29d5df9a717e63c5146ac48c4543',1,'cudnn_frontend::MatMulDesc_v8::MatMulDesc_v8(MatMulDesc_v8 const &)=delete']]], + ['matmuldescbuilder_5fv8',['MatMulDescBuilder_v8',['../de/d00/classcudnn__frontend_1_1MatMulDescBuilder__v8.html#afea76414fa5c0c5f38a551afcf11391c',1,'cudnn_frontend::MatMulDescBuilder_v8::MatMulDescBuilder_v8()=default'],['../de/d00/classcudnn__frontend_1_1MatMulDescBuilder__v8.html#a75af51fa2937a7df6787d3181ef22cf2',1,'cudnn_frontend::MatMulDescBuilder_v8::MatMulDescBuilder_v8(MatMulDescBuilder_v8 &&)=delete'],['../de/d00/classcudnn__frontend_1_1MatMulDescBuilder__v8.html#a287154397d78c528465a949ab0242068',1,'cudnn_frontend::MatMulDescBuilder_v8::MatMulDescBuilder_v8(MatMulDescBuilder_v8 const &)=delete']]] ]; diff --git a/docs/search/functions_a.js b/docs/search/functions_a.js index 716030bf8..9e74ffafa 100644 --- a/docs/search/functions_a.js +++ b/docs/search/functions_a.js @@ -5,5 +5,5 @@ var searchData= ['operationbuilder_5fv8',['OperationBuilder_v8',['../d3/d92/group__OperationBuilder__v8.html#ga425dd00708eaaadffe1c83ef356dc333',1,'cudnn_frontend::OperationBuilder_v8']]], ['operationgraph_5fv8',['OperationGraph_v8',['../de/dd9/classcudnn__frontend_1_1OperationGraph__v8.html#a85e65daf5a2db5aba0207ccad367457d',1,'cudnn_frontend::OperationGraph_v8::OperationGraph_v8(OperationGraph_v8 &&from)'],['../de/dd9/classcudnn__frontend_1_1OperationGraph__v8.html#a5c029cff12e0e91406a8f88fd8a830f4',1,'cudnn_frontend::OperationGraph_v8::OperationGraph_v8()=default'],['../de/dd9/classcudnn__frontend_1_1OperationGraph__v8.html#a0b3b76a619160671c45c733eb1a13455',1,'cudnn_frontend::OperationGraph_v8::OperationGraph_v8(OperationGraph_v8 const &)=delete']]], ['operationgraphbuilder_5fv8',['OperationGraphBuilder_v8',['../d4/d39/classcudnn__frontend_1_1OperationGraphBuilder__v8.html#a101b6c9515fdb333cdd3499f08774cf4',1,'cudnn_frontend::OperationGraphBuilder_v8::OperationGraphBuilder_v8()=default'],['../d4/d39/classcudnn__frontend_1_1OperationGraphBuilder__v8.html#a40e8f7825f75c35c40d9938532a81d02',1,'cudnn_frontend::OperationGraphBuilder_v8::OperationGraphBuilder_v8(OperationGraphBuilder_v8 &&)=delete'],['../d4/d39/classcudnn__frontend_1_1OperationGraphBuilder__v8.html#a589dedb418679abda7f64e6b9e2800a1',1,'cudnn_frontend::OperationGraphBuilder_v8::OperationGraphBuilder_v8(OperationGraphBuilder_v8 const &)=delete']]], - ['operator_3d',['operator=',['../d5/d14/classcudnn__frontend_1_1OpaqueBackendPointer.html#adf5bf20f5bdfbfdecd05360830b34b89',1,'cudnn_frontend::OpaqueBackendPointer::operator=()'],['../d6/d73/classcudnn__frontend_1_1ConvDesc__v8.html#aa8ea272eaf26ae7f7ad2d625253ea62f',1,'cudnn_frontend::ConvDesc_v8::operator=()'],['../db/de1/classcudnn__frontend_1_1ConvDescBuilder__v8.html#a5fba7029429a093b36fd201219315a1f',1,'cudnn_frontend::ConvDescBuilder_v8::operator=()'],['../dc/d3c/classcudnn__frontend_1_1Engine__v8.html#ad3966b20d080c0fb9930b8a2018da2f8',1,'cudnn_frontend::Engine_v8::operator=()'],['../d9/dfd/classcudnn__frontend_1_1EngineBuilder__v8.html#a9d29a91186f6baa215b61340a386ec6d',1,'cudnn_frontend::EngineBuilder_v8::operator=()'],['../df/d83/classcudnn__frontend_1_1EngineConfig__v8.html#ad79aab6d69a2b4400259abd72af73c84',1,'cudnn_frontend::EngineConfig_v8::operator=()'],['../dd/d72/classcudnn__frontend_1_1EngineConfigBuilder__v8.html#a8d4cb5ab44b076c71afd5f49e6df94f7',1,'cudnn_frontend::EngineConfigBuilder_v8::operator=()'],['../db/d99/classcudnn__frontend_1_1EngineFallbackList__v8.html#a22ef505758a33415d01e3a9a8843fe22',1,'cudnn_frontend::EngineFallbackList_v8::operator=()'],['../d9/df1/classcudnn__frontend_1_1EngineFallbackListBuilder__v8.html#a1effb794c90cbe7ad2e7649d400cb2dd',1,'cudnn_frontend::EngineFallbackListBuilder_v8::operator=()'],['../d7/d0d/group__ExecutionPlanQuery.html#ga0705e60cee62d3d196751517d545a7b0',1,'cudnn_frontend::ExecutionPlan_v8::operator=()'],['../d7/d0d/group__ExecutionPlanQuery.html#ga5f757c2da8c90645c34637dde4aed8f8',1,'cudnn_frontend::ExecutionPlanBuilder_v8::operator=()'],['../db/ddb/classcudnn__frontend_1_1EngineHeuristics__v8.html#a2301c5b006fa6e341bc88ece066f8ea2',1,'cudnn_frontend::EngineHeuristics_v8::operator=()'],['../d1/d28/classcudnn__frontend_1_1EngineHeuristicsBuilder__v8.html#a5228a4a3af391fad0141f30a24be730b',1,'cudnn_frontend::EngineHeuristicsBuilder_v8::operator=()'],['../d4/d30/classcudnn__frontend_1_1Operation__v8.html#a5012e920483271f655bc04d6f52dc41f',1,'cudnn_frontend::Operation_v8::operator=()'],['../de/dd9/classcudnn__frontend_1_1OperationGraph__v8.html#a87704bb46bb12bba977a21ed579a4ef3',1,'cudnn_frontend::OperationGraph_v8::operator=()'],['../d4/d39/classcudnn__frontend_1_1OperationGraphBuilder__v8.html#a75dae8a911e005b960565d4a1a0024ba',1,'cudnn_frontend::OperationGraphBuilder_v8::operator=()'],['../d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#ae3cd0c0051c7e29a9ad86b80308429f3',1,'cudnn_frontend::PointWiseDesc_v8::operator=()'],['../d5/d02/classcudnn__frontend_1_1PointWiseDescBuilder__v8.html#ac0d140493e21b164bc21dd0bcbeeaa65',1,'cudnn_frontend::PointWiseDescBuilder_v8::operator=()'],['../d6/da7/classcudnn__frontend_1_1Tensor__v8.html#a4f5c1e95de9419cb1904e0cbad570c63',1,'cudnn_frontend::Tensor_v8::operator=()'],['../db/dae/classcudnn__frontend_1_1TensorBuilder__v8.html#a3a33c9ba58f393d231e05a1bcc5706d8',1,'cudnn_frontend::TensorBuilder_v8::operator=()'],['../d0/d20/classcudnn__frontend_1_1VariantPack__v8.html#a3f85d13ac1341b67d85f18761f8dcb35',1,'cudnn_frontend::VariantPack_v8::operator=()'],['../d4/dce/classcudnn__frontend_1_1VariantPackBuilder__v8.html#acee84ffc33b41807cdcb18425e9fced1',1,'cudnn_frontend::VariantPackBuilder_v8::operator=()']]] + ['operator_3d',['operator=',['../d5/d14/classcudnn__frontend_1_1OpaqueBackendPointer.html#adf5bf20f5bdfbfdecd05360830b34b89',1,'cudnn_frontend::OpaqueBackendPointer::operator=()'],['../d6/d73/classcudnn__frontend_1_1ConvDesc__v8.html#aa8ea272eaf26ae7f7ad2d625253ea62f',1,'cudnn_frontend::ConvDesc_v8::operator=()'],['../db/de1/classcudnn__frontend_1_1ConvDescBuilder__v8.html#a5fba7029429a093b36fd201219315a1f',1,'cudnn_frontend::ConvDescBuilder_v8::operator=()'],['../dc/d3c/classcudnn__frontend_1_1Engine__v8.html#ad3966b20d080c0fb9930b8a2018da2f8',1,'cudnn_frontend::Engine_v8::operator=()'],['../d9/dfd/classcudnn__frontend_1_1EngineBuilder__v8.html#a9d29a91186f6baa215b61340a386ec6d',1,'cudnn_frontend::EngineBuilder_v8::operator=()'],['../df/d83/classcudnn__frontend_1_1EngineConfig__v8.html#ad79aab6d69a2b4400259abd72af73c84',1,'cudnn_frontend::EngineConfig_v8::operator=()'],['../dd/d72/classcudnn__frontend_1_1EngineConfigBuilder__v8.html#a8d4cb5ab44b076c71afd5f49e6df94f7',1,'cudnn_frontend::EngineConfigBuilder_v8::operator=()'],['../db/d99/classcudnn__frontend_1_1EngineFallbackList__v8.html#a22ef505758a33415d01e3a9a8843fe22',1,'cudnn_frontend::EngineFallbackList_v8::operator=()'],['../d9/df1/classcudnn__frontend_1_1EngineFallbackListBuilder__v8.html#a1effb794c90cbe7ad2e7649d400cb2dd',1,'cudnn_frontend::EngineFallbackListBuilder_v8::operator=()'],['../d7/d0d/group__ExecutionPlanQuery.html#ga0705e60cee62d3d196751517d545a7b0',1,'cudnn_frontend::ExecutionPlan_v8::operator=()'],['../d7/d0d/group__ExecutionPlanQuery.html#ga5f757c2da8c90645c34637dde4aed8f8',1,'cudnn_frontend::ExecutionPlanBuilder_v8::operator=()'],['../db/ddb/classcudnn__frontend_1_1EngineHeuristics__v8.html#a2301c5b006fa6e341bc88ece066f8ea2',1,'cudnn_frontend::EngineHeuristics_v8::operator=()'],['../d1/d28/classcudnn__frontend_1_1EngineHeuristicsBuilder__v8.html#a5228a4a3af391fad0141f30a24be730b',1,'cudnn_frontend::EngineHeuristicsBuilder_v8::operator=()'],['../d6/db7/classcudnn__frontend_1_1MatMulDesc__v8.html#ac1257a1ca1261961fc99123988552911',1,'cudnn_frontend::MatMulDesc_v8::operator=()'],['../de/d00/classcudnn__frontend_1_1MatMulDescBuilder__v8.html#a02ee327bae65fc44c140d7bb6a0b4991',1,'cudnn_frontend::MatMulDescBuilder_v8::operator=()'],['../d4/d30/classcudnn__frontend_1_1Operation__v8.html#a5012e920483271f655bc04d6f52dc41f',1,'cudnn_frontend::Operation_v8::operator=()'],['../de/dd9/classcudnn__frontend_1_1OperationGraph__v8.html#a87704bb46bb12bba977a21ed579a4ef3',1,'cudnn_frontend::OperationGraph_v8::operator=()'],['../d4/d39/classcudnn__frontend_1_1OperationGraphBuilder__v8.html#a75dae8a911e005b960565d4a1a0024ba',1,'cudnn_frontend::OperationGraphBuilder_v8::operator=()'],['../d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#ae3cd0c0051c7e29a9ad86b80308429f3',1,'cudnn_frontend::PointWiseDesc_v8::operator=()'],['../d5/d02/classcudnn__frontend_1_1PointWiseDescBuilder__v8.html#ac0d140493e21b164bc21dd0bcbeeaa65',1,'cudnn_frontend::PointWiseDescBuilder_v8::operator=()'],['../d6/da7/classcudnn__frontend_1_1Tensor__v8.html#a4f5c1e95de9419cb1904e0cbad570c63',1,'cudnn_frontend::Tensor_v8::operator=()'],['../db/dae/classcudnn__frontend_1_1TensorBuilder__v8.html#a3a33c9ba58f393d231e05a1bcc5706d8',1,'cudnn_frontend::TensorBuilder_v8::operator=()'],['../d0/d20/classcudnn__frontend_1_1VariantPack__v8.html#a3f85d13ac1341b67d85f18761f8dcb35',1,'cudnn_frontend::VariantPack_v8::operator=()'],['../d4/dce/classcudnn__frontend_1_1VariantPackBuilder__v8.html#acee84ffc33b41807cdcb18425e9fced1',1,'cudnn_frontend::VariantPackBuilder_v8::operator=()']]] ]; diff --git a/docs/search/functions_c.js b/docs/search/functions_c.js index 6138f31f1..278663cd2 100644 --- a/docs/search/functions_c.js +++ b/docs/search/functions_c.js @@ -6,31 +6,44 @@ var searchData= ['setalignment',['setAlignment',['../d3/d3c/group__TensorBuilder__v8.html#ga385ec2c39e6386af7421f27330ed128b',1,'cudnn_frontend::TensorBuilder_v8']]], ['setalpha',['setAlpha',['../d3/d92/group__OperationBuilder__v8.html#gab4241b96e7374d821681e97259d39d83',1,'cudnn_frontend::OperationBuilder_v8::setAlpha(float alpha) -> OperationBuilder_v8 &'],['../d3/d92/group__OperationBuilder__v8.html#ga3c63744504f65383ce0b847bea804e3f',1,'cudnn_frontend::OperationBuilder_v8::setAlpha(double alpha) -> OperationBuilder_v8 &']]], ['setalpha2',['setAlpha2',['../d3/d92/group__OperationBuilder__v8.html#ga06cdcfeda1b702412be41addd73bb947',1,'cudnn_frontend::OperationBuilder_v8::setAlpha2(float alpha) -> OperationBuilder_v8 &'],['../d3/d92/group__OperationBuilder__v8.html#ga459671e9d26640528fcf683aaeef05df',1,'cudnn_frontend::OperationBuilder_v8::setAlpha2(double alpha) -> OperationBuilder_v8 &']]], + ['setamatdesc',['setaMatDesc',['../d3/d92/group__OperationBuilder__v8.html#ga095c52c8f1b01ebb224265f9000195c0',1,'cudnn_frontend::OperationBuilder_v8']]], ['setbdesc',['setbDesc',['../d3/d92/group__OperationBuilder__v8.html#ga17475846760b10ffdfa536cd92a5b135',1,'cudnn_frontend::OperationBuilder_v8']]], ['setbeta',['setBeta',['../d3/d92/group__OperationBuilder__v8.html#ga65a9ad73912ff46becc93ee451da6af5',1,'cudnn_frontend::OperationBuilder_v8::setBeta(float beta) -> OperationBuilder_v8 &'],['../d3/d92/group__OperationBuilder__v8.html#ga29752062b7308c8da0e625eb35431652',1,'cudnn_frontend::OperationBuilder_v8::setBeta(double beta) -> OperationBuilder_v8 &']]], + ['setbmatdesc',['setbMatDesc',['../d3/d92/group__OperationBuilder__v8.html#gaa8eed29a0181e044ea0263ba655127ec',1,'cudnn_frontend::OperationBuilder_v8']]], ['setcdesc',['setcDesc',['../d3/d92/group__OperationBuilder__v8.html#gaa82e018b6a9d514ad912b922f43adad2',1,'cudnn_frontend::OperationBuilder_v8']]], ['setchoice',['setChoice',['../dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#a542f95d42a6d118e3de1726720c12278',1,'cudnn_frontend::Engine_v8::Knob']]], ['setclipping',['setClipping',['../d2/db5/group__PointWiseDescBuilder__v8.html#ga124ebb4a416c645cd0b68f59545c62a8',1,'cudnn_frontend::PointWiseDescBuilder_v8']]], + ['setcmatdesc',['setcMatDesc',['../d3/d92/group__OperationBuilder__v8.html#gaaf9d7cbc65c7c7526a6f15d4ad2952fa',1,'cudnn_frontend::OperationBuilder_v8']]], ['setdatapointers',['setDataPointers',['../d5/def/group__VariantPackBuilder__v8.html#ga79c6def790139cb04aff8c600559b802',1,'cudnn_frontend::VariantPackBuilder_v8::setDataPointers(int64_t num_ptr, void **ptrs) -> VariantPackBuilder_v8 &'],['../d5/def/group__VariantPackBuilder__v8.html#ga14d3ac479fd01c48a97583adfb567090',1,'cudnn_frontend::VariantPackBuilder_v8::setDataPointers(std::set< std::pair< uint64_t, void *>> const &data_pointers) -> VariantPackBuilder_v8 &']]], ['setdatatype',['setDataType',['../d3/ddd/group__ConvDescBuilder__v8.html#gad8de00b0e7a86bdda61749e7572a35ac',1,'cudnn_frontend::ConvDescBuilder_v8::setDataType()'],['../d3/d3c/group__TensorBuilder__v8.html#ga98275e4d36e37ef5d73f13bd80f164a3',1,'cudnn_frontend::TensorBuilder_v8::setDataType()']]], ['setdilation',['setDilation',['../d3/ddd/group__ConvDescBuilder__v8.html#gaa41e2cbbebc9d2fd19fa990a48b39d08',1,'cudnn_frontend::ConvDescBuilder_v8']]], ['setdim',['setDim',['../d3/d3c/group__TensorBuilder__v8.html#gae828806e2d76ca3eb6c4e289f2e93a96',1,'cudnn_frontend::TensorBuilder_v8']]], + ['setdwdesc',['setdwDesc',['../d3/d92/group__OperationBuilder__v8.html#ga5e5d463d5531a9378280fa4b1aee6f63',1,'cudnn_frontend::OperationBuilder_v8']]], + ['setdxdesc',['setdxDesc',['../d3/d92/group__OperationBuilder__v8.html#ga35fa5c453a6cd989f35e47c29e6ec665',1,'cudnn_frontend::OperationBuilder_v8']]], + ['setdydesc',['setdyDesc',['../d3/d92/group__OperationBuilder__v8.html#ga08f3d4cb5138174127d0f6899f7bc53b',1,'cudnn_frontend::OperationBuilder_v8::setdyDesc(ManagedOpaqueDescriptor const &raw_tensor) -> OperationBuilder_v8 &'],['../d3/d92/group__OperationBuilder__v8.html#ga9e4a1e9a233b44cca5b65f0af172b001',1,'cudnn_frontend::OperationBuilder_v8::setdyDesc(Tensor_v8 const &tensor) -> OperationBuilder_v8 &']]], + ['setelualpha',['setEluAlpha',['../d5/d02/classcudnn__frontend_1_1PointWiseDescBuilder__v8.html#a8bdbf27c37334f5b61a65eb1bd4b6a98',1,'cudnn_frontend::PointWiseDescBuilder_v8']]], ['setengine',['setEngine',['../d2/dbb/group__EngineConfigBuilder__v8.html#ga9673b31268901dfcb97896958687a42a',1,'cudnn_frontend::EngineConfigBuilder_v8']]], - ['setengineconfig',['setEngineConfig',['../d4/de1/group__ExecutionPlanBuilder__v8.html#gac5c23cff8c1424f71ef2cee2dc66cd3c',1,'cudnn_frontend::ExecutionPlanBuilder_v8::setEngineConfig(EngineConfig_v8 const &engine_config_) -> ExecutionPlanBuilder_v8 &'],['../d4/de1/group__ExecutionPlanBuilder__v8.html#gaf7010781cc8c0583a2d841ac6d9ed521',1,'cudnn_frontend::ExecutionPlanBuilder_v8::setEngineConfig(cudnnBackendDescriptor_t &desc, std::string const &opGraphTag_="") -> ExecutionPlanBuilder_v8 &'],['../d4/de1/group__ExecutionPlanBuilder__v8.html#gae0f92d5445da53253ff3460ac6aefffa',1,'cudnn_frontend::ExecutionPlanBuilder_v8::setEngineConfig(ManagedOpaqueDescriptor &desc, std::string const &opGraphTag_="") -> ExecutionPlanBuilder_v8 &']]], + ['setengineconfig',['setEngineConfig',['../d4/de1/group__ExecutionPlanBuilder__v8.html#gac5c23cff8c1424f71ef2cee2dc66cd3c',1,'cudnn_frontend::ExecutionPlanBuilder_v8::setEngineConfig(EngineConfig_v8 const &engine_config_) -> ExecutionPlanBuilder_v8 &'],['../d4/de1/group__ExecutionPlanBuilder__v8.html#gae0f92d5445da53253ff3460ac6aefffa',1,'cudnn_frontend::ExecutionPlanBuilder_v8::setEngineConfig(ManagedOpaqueDescriptor &desc, std::string const &opGraphTag_="") -> ExecutionPlanBuilder_v8 &']]], ['setglobalengineidx',['setGlobalEngineIdx',['../d3/d09/group__EngineBuilder__v8.html#ga2b171d44da46865d536236bb01103005',1,'cudnn_frontend::EngineBuilder_v8']]], ['sethandle',['setHandle',['../d4/de1/group__ExecutionPlanBuilder__v8.html#ga4166679391fc2df54e25964c03ae6e8e',1,'cudnn_frontend::ExecutionPlanBuilder_v8::setHandle()'],['../d2/df5/group__OperationGraphBuilder__v8.html#ga5b5d8a3121e92a8a7d47341b424298f8',1,'cudnn_frontend::OperationGraphBuilder_v8::setHandle()']]], ['setheurmode',['setHeurMode',['../dc/d99/group__EngineHeuristicsBuilder__v8.html#gaf2d783ca6a663aa50ffed2ccbc164812',1,'cudnn_frontend::EngineHeuristicsBuilder_v8']]], ['setid',['setId',['../d3/d3c/group__TensorBuilder__v8.html#ga6bdaeab1bff548d375e57936b64fb05a',1,'cudnn_frontend::TensorBuilder_v8']]], ['setmathmode',['setMathMode',['../d3/ddd/group__ConvDescBuilder__v8.html#ga3b752afba659c8e92e7ad1ca71d62f2f',1,'cudnn_frontend::ConvDescBuilder_v8']]], - ['setmathprecision',['setMathPrecision',['../d2/db5/group__PointWiseDescBuilder__v8.html#ga3efa065fc125c5af06bd0a9c543bdb9f',1,'cudnn_frontend::PointWiseDescBuilder_v8']]], + ['setmathprecision',['setMathPrecision',['../d9/d08/group__MatMulDescBuilder__v8.html#ga5885f3eb7580cbe0cbe7243c4711c0f2',1,'cudnn_frontend::MatMulDescBuilder_v8::setMathPrecision()'],['../d2/db5/group__PointWiseDescBuilder__v8.html#ga3efa065fc125c5af06bd0a9c543bdb9f',1,'cudnn_frontend::PointWiseDescBuilder_v8::setMathPrecision()']]], + ['setmatmuldesc',['setmatmulDesc',['../d3/d92/group__OperationBuilder__v8.html#ga3ca1f62832f998566c1b07b4b3c71db4',1,'cudnn_frontend::OperationBuilder_v8']]], ['setmode',['setMode',['../d2/db5/group__PointWiseDescBuilder__v8.html#ga48264536e68f952e92a0bdbaa84d9363',1,'cudnn_frontend::PointWiseDescBuilder_v8::setMode(cudnnPointwiseMode_t mode_) -> PointWiseDescBuilder_v8 &'],['../d2/db5/group__PointWiseDescBuilder__v8.html#gae5240136e19e0a4094036d48c6b1a3b7',1,'cudnn_frontend::PointWiseDescBuilder_v8::setMode(cudnnNanPropagation_t nan_mode_) -> PointWiseDescBuilder_v8 &']]], ['setndims',['setNDims',['../d3/ddd/group__ConvDescBuilder__v8.html#gaacfcf20b0ed61e89bc92970f7bb7a258',1,'cudnn_frontend::ConvDescBuilder_v8']]], ['setoperation',['setOperation',['../d4/d6b/group__EngineFallbackListBuilder__v8.html#gaf66485fe1a0faccab971edd0c70f04b4',1,'cudnn_frontend::EngineFallbackListBuilder_v8']]], - ['setoperationgraph',['setOperationGraph',['../d3/d09/group__EngineBuilder__v8.html#ga0ceef322363405504dbdc4d1f3c9949a',1,'cudnn_frontend::EngineBuilder_v8::setOperationGraph(OperationGraph_v8 const &opGraph_) -> EngineBuilder_v8 &'],['../d3/d09/group__EngineBuilder__v8.html#ga27466cecb45496d001cfbe4de4b5c5a9',1,'cudnn_frontend::EngineBuilder_v8::setOperationGraph(cudnnBackendDescriptor_t desc_) -> EngineBuilder_v8 &'],['../d3/d09/group__EngineBuilder__v8.html#ga7220dab88f9fed1704c9d78d9771be5f',1,'cudnn_frontend::EngineBuilder_v8::setOperationGraph(ManagedOpaqueDescriptor desc_) -> EngineBuilder_v8 &'],['../d4/d6b/group__EngineFallbackListBuilder__v8.html#ga45c7c761a47a7731055ad0f943449610',1,'cudnn_frontend::EngineFallbackListBuilder_v8::setOperationGraph()'],['../dc/d99/group__EngineHeuristicsBuilder__v8.html#ga0554ac9347b7409e46f960b30f18dc68',1,'cudnn_frontend::EngineHeuristicsBuilder_v8::setOperationGraph()'],['../d2/df5/group__OperationGraphBuilder__v8.html#ga4e4cee8d631471478d5de420077a2182',1,'cudnn_frontend::OperationGraphBuilder_v8::setOperationGraph()']]], + ['setoperationgraph',['setOperationGraph',['../d3/d09/group__EngineBuilder__v8.html#ga0ceef322363405504dbdc4d1f3c9949a',1,'cudnn_frontend::EngineBuilder_v8::setOperationGraph(OperationGraph_v8 const &opGraph_) -> EngineBuilder_v8 &'],['../d3/d09/group__EngineBuilder__v8.html#ga7220dab88f9fed1704c9d78d9771be5f',1,'cudnn_frontend::EngineBuilder_v8::setOperationGraph(ManagedOpaqueDescriptor desc_) -> EngineBuilder_v8 &'],['../d4/d6b/group__EngineFallbackListBuilder__v8.html#ga45c7c761a47a7731055ad0f943449610',1,'cudnn_frontend::EngineFallbackListBuilder_v8::setOperationGraph()'],['../dc/d99/group__EngineHeuristicsBuilder__v8.html#ga0554ac9347b7409e46f960b30f18dc68',1,'cudnn_frontend::EngineHeuristicsBuilder_v8::setOperationGraph()'],['../d2/df5/group__OperationGraphBuilder__v8.html#ga4e4cee8d631471478d5de420077a2182',1,'cudnn_frontend::OperationGraphBuilder_v8::setOperationGraph()']]], ['setpostpadding',['setPostPadding',['../d3/ddd/group__ConvDescBuilder__v8.html#ga44915183cb4dddcf23222faca3f84bba',1,'cudnn_frontend::ConvDescBuilder_v8']]], ['setprepadding',['setPrePadding',['../d3/ddd/group__ConvDescBuilder__v8.html#gab07bf6292e69d19e6324d3073a86d58c',1,'cudnn_frontend::ConvDescBuilder_v8']]], ['setpwdesc',['setpwDesc',['../d3/d92/group__OperationBuilder__v8.html#gae6b06877b2e675b2a390f0b122100669',1,'cudnn_frontend::OperationBuilder_v8']]], + ['setrelulowerclip',['setReluLowerClip',['../d5/d02/classcudnn__frontend_1_1PointWiseDescBuilder__v8.html#afdbe0ce3f7fb2f0d23251ccb7507bc69',1,'cudnn_frontend::PointWiseDescBuilder_v8']]], + ['setrelulowerclipslope',['setReluLowerClipSlope',['../d5/d02/classcudnn__frontend_1_1PointWiseDescBuilder__v8.html#aa93615adf69e7a87a06d0cea687794a6',1,'cudnn_frontend::PointWiseDescBuilder_v8']]], + ['setreluupperclip',['setReluUpperClip',['../d5/d02/classcudnn__frontend_1_1PointWiseDescBuilder__v8.html#a0514e70d05a21a9c46bc66d1e61c28f5',1,'cudnn_frontend::PointWiseDescBuilder_v8']]], + ['setsoftplusbeta',['setSoftplusBeta',['../d5/d02/classcudnn__frontend_1_1PointWiseDescBuilder__v8.html#ab692e5a2b3970346f68af33530ef98e8',1,'cudnn_frontend::PointWiseDescBuilder_v8']]], ['setstrides',['setStrides',['../d3/ddd/group__ConvDescBuilder__v8.html#ga2c481d46d71fe909247f50ba2772b7ce',1,'cudnn_frontend::ConvDescBuilder_v8::setStrides()'],['../d3/d3c/group__TensorBuilder__v8.html#ga3de3d95beb2234dc2a741d23703f8ed2',1,'cudnn_frontend::TensorBuilder_v8::setStrides()']]], + ['setswishbeta',['setSwishBeta',['../d5/d02/classcudnn__frontend_1_1PointWiseDescBuilder__v8.html#aad41d0f7b6667383fd9012bc492a13c3',1,'cudnn_frontend::PointWiseDescBuilder_v8']]], ['setuids',['setUids',['../d5/def/group__VariantPackBuilder__v8.html#gad6dc5c5087c2724ca88cc2668d7f829d',1,'cudnn_frontend::VariantPackBuilder_v8']]], ['setvirtual',['setVirtual',['../d3/d3c/group__TensorBuilder__v8.html#ga7d5d978de243e47938eb1f224a38d02d',1,'cudnn_frontend::TensorBuilder_v8']]], ['setwdesc',['setwDesc',['../d3/d92/group__OperationBuilder__v8.html#ga80466e517e980ba4953e085b3d4e3498',1,'cudnn_frontend::OperationBuilder_v8']]], diff --git a/docs/search/groups_2.js b/docs/search/groups_2.js index b126c60a4..bc601cf31 100644 --- a/docs/search/groups_2.js +++ b/docs/search/groups_2.js @@ -1,6 +1,4 @@ var searchData= [ - ['operationbuilder_5fv8',['OperationBuilder_v8',['../d3/d92/group__OperationBuilder__v8.html',1,'']]], - ['operationgraphbuilder_5fv8',['OperationGraphBuilder_v8',['../d2/df5/group__OperationGraphBuilder__v8.html',1,'']]], - ['operationgraphquery',['OperationGraphQuery',['../d1/df7/group__OperationGraphQuery.html',1,'']]] + ['matmuldescbuilder_5fv8',['MatMulDescBuilder_v8',['../d9/d08/group__MatMulDescBuilder__v8.html',1,'']]] ]; diff --git a/docs/search/groups_3.js b/docs/search/groups_3.js index 94ccfea2d..b126c60a4 100644 --- a/docs/search/groups_3.js +++ b/docs/search/groups_3.js @@ -1,4 +1,6 @@ var searchData= [ - ['pointwisedescbuilder_5fv8',['PointWiseDescBuilder_v8',['../d2/db5/group__PointWiseDescBuilder__v8.html',1,'']]] + ['operationbuilder_5fv8',['OperationBuilder_v8',['../d3/d92/group__OperationBuilder__v8.html',1,'']]], + ['operationgraphbuilder_5fv8',['OperationGraphBuilder_v8',['../d2/df5/group__OperationGraphBuilder__v8.html',1,'']]], + ['operationgraphquery',['OperationGraphQuery',['../d1/df7/group__OperationGraphQuery.html',1,'']]] ]; diff --git a/docs/search/groups_4.js b/docs/search/groups_4.js index 773f5fb82..94ccfea2d 100644 --- a/docs/search/groups_4.js +++ b/docs/search/groups_4.js @@ -1,4 +1,4 @@ var searchData= [ - ['tensorbuilder_5fv8',['TensorBuilder_v8',['../d3/d3c/group__TensorBuilder__v8.html',1,'']]] + ['pointwisedescbuilder_5fv8',['PointWiseDescBuilder_v8',['../d2/db5/group__PointWiseDescBuilder__v8.html',1,'']]] ]; diff --git a/docs/search/groups_5.js b/docs/search/groups_5.js index a0cc51199..773f5fb82 100644 --- a/docs/search/groups_5.js +++ b/docs/search/groups_5.js @@ -1,4 +1,4 @@ var searchData= [ - ['variantpackbuilder_5fv8',['VariantPackBuilder_v8',['../d5/def/group__VariantPackBuilder__v8.html',1,'']]] + ['tensorbuilder_5fv8',['TensorBuilder_v8',['../d3/d3c/group__TensorBuilder__v8.html',1,'']]] ]; diff --git a/docs/search/groups_6.html b/docs/search/groups_6.html new file mode 100644 index 000000000..176b61a97 --- /dev/null +++ b/docs/search/groups_6.html @@ -0,0 +1,26 @@ + + + + + + + + + +
                                                                +
                                                                Loading...
                                                                +
                                                                + +
                                                                Searching...
                                                                +
                                                                No Matches
                                                                + +
                                                                + + diff --git a/docs/search/groups_6.js b/docs/search/groups_6.js new file mode 100644 index 000000000..a0cc51199 --- /dev/null +++ b/docs/search/groups_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['variantpackbuilder_5fv8',['VariantPackBuilder_v8',['../d5/def/group__VariantPackBuilder__v8.html',1,'']]] +]; diff --git a/docs/search/pages_0.html b/docs/search/pages_0.html new file mode 100644 index 000000000..4955b9e4f --- /dev/null +++ b/docs/search/pages_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
                                                                +
                                                                Loading...
                                                                +
                                                                + +
                                                                Searching...
                                                                +
                                                                No Matches
                                                                + +
                                                                + + diff --git a/docs/search/pages_0.js b/docs/search/pages_0.js new file mode 100644 index 000000000..ff8f20ccb --- /dev/null +++ b/docs/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['cudnn_20frontend_20api',['CUDNN FRONTEND API',['../index.html',1,'']]] +]; diff --git a/docs/search/related_2.js b/docs/search/related_2.js index c1cb62909..a43ad76c3 100644 --- a/docs/search/related_2.js +++ b/docs/search/related_2.js @@ -1,5 +1,4 @@ var searchData= [ - ['operationbuilder_5fv8',['OperationBuilder_v8',['../d4/d30/classcudnn__frontend_1_1Operation__v8.html#ac708bb46683440effd2f46b3888e378f',1,'cudnn_frontend::Operation_v8']]], - ['operationgraphbuilder_5fv8',['OperationGraphBuilder_v8',['../de/dd9/classcudnn__frontend_1_1OperationGraph__v8.html#a5af59a099cc90eda429563e285b2907f',1,'cudnn_frontend::OperationGraph_v8']]] + ['matmuldescbuilder_5fv8',['MatMulDescBuilder_v8',['../d6/db7/classcudnn__frontend_1_1MatMulDesc__v8.html#aa99cc0548322d7298b9ca664a976281f',1,'cudnn_frontend::MatMulDesc_v8']]] ]; diff --git a/docs/search/related_3.js b/docs/search/related_3.js index fe95a2c7c..c1cb62909 100644 --- a/docs/search/related_3.js +++ b/docs/search/related_3.js @@ -1,4 +1,5 @@ var searchData= [ - ['pointwisedescbuilder_5fv8',['PointWiseDescBuilder_v8',['../d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#a1407b6ad40df9af7b191fdf636c2c508',1,'cudnn_frontend::PointWiseDesc_v8']]] + ['operationbuilder_5fv8',['OperationBuilder_v8',['../d4/d30/classcudnn__frontend_1_1Operation__v8.html#ac708bb46683440effd2f46b3888e378f',1,'cudnn_frontend::Operation_v8']]], + ['operationgraphbuilder_5fv8',['OperationGraphBuilder_v8',['../de/dd9/classcudnn__frontend_1_1OperationGraph__v8.html#a5af59a099cc90eda429563e285b2907f',1,'cudnn_frontend::OperationGraph_v8']]] ]; diff --git a/docs/search/related_4.js b/docs/search/related_4.js index cef050685..fe95a2c7c 100644 --- a/docs/search/related_4.js +++ b/docs/search/related_4.js @@ -1,4 +1,4 @@ var searchData= [ - ['tensorbuilder_5fv8',['TensorBuilder_v8',['../d6/da7/classcudnn__frontend_1_1Tensor__v8.html#a14f9c4498f4be5b3c2b0a94c708891fb',1,'cudnn_frontend::Tensor_v8']]] + ['pointwisedescbuilder_5fv8',['PointWiseDescBuilder_v8',['../d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#a1407b6ad40df9af7b191fdf636c2c508',1,'cudnn_frontend::PointWiseDesc_v8']]] ]; diff --git a/docs/search/related_5.js b/docs/search/related_5.js index 595d48356..cef050685 100644 --- a/docs/search/related_5.js +++ b/docs/search/related_5.js @@ -1,4 +1,4 @@ var searchData= [ - ['variantpackbuilder_5fv8',['VariantPackBuilder_v8',['../d0/d20/classcudnn__frontend_1_1VariantPack__v8.html#a8fcb5ec8a09de5a6f1f326f2e623cbdf',1,'cudnn_frontend::VariantPack_v8']]] + ['tensorbuilder_5fv8',['TensorBuilder_v8',['../d6/da7/classcudnn__frontend_1_1Tensor__v8.html#a14f9c4498f4be5b3c2b0a94c708891fb',1,'cudnn_frontend::Tensor_v8']]] ]; diff --git a/docs/search/related_6.html b/docs/search/related_6.html new file mode 100644 index 000000000..b1955044b --- /dev/null +++ b/docs/search/related_6.html @@ -0,0 +1,26 @@ + + + + + + + + + +
                                                                +
                                                                Loading...
                                                                +
                                                                + +
                                                                Searching...
                                                                +
                                                                No Matches
                                                                + +
                                                                + + diff --git a/docs/search/related_6.js b/docs/search/related_6.js new file mode 100644 index 000000000..595d48356 --- /dev/null +++ b/docs/search/related_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['variantpackbuilder_5fv8',['VariantPackBuilder_v8',['../d0/d20/classcudnn__frontend_1_1VariantPack__v8.html#a8fcb5ec8a09de5a6f1f326f2e623cbdf',1,'cudnn_frontend::VariantPack_v8']]] +]; diff --git a/docs/search/searchdata.js b/docs/search/searchdata.js index 09d7a291a..d15164d3e 100644 --- a/docs/search/searchdata.js +++ b/docs/search/searchdata.js @@ -1,7 +1,7 @@ var indexSectionsWithContent = { 0: "abcdefghiklmnopstuvwxy~", - 1: "bcekoptv", + 1: "bcekmoptv", 2: "c", 3: "c", 4: "bcdefghikmopstvw~", @@ -9,8 +9,9 @@ var indexSectionsWithContent = 6: "cegmoptv", 7: "c", 8: "c", - 9: "ceoptv", - 10: "ceoptv" + 9: "cemoptv", + 10: "cemoptv", + 11: "c" }; var indexSectionNames = @@ -25,7 +26,8 @@ var indexSectionNames = 7: "enums", 8: "enumvalues", 9: "related", - 10: "groups" + 10: "groups", + 11: "pages" }; var indexSectionLabels = @@ -40,6 +42,7 @@ var indexSectionLabels = 7: "Enumerations", 8: "Enumerator", 9: "Friends", - 10: "Modules" + 10: "Modules", + 11: "Pages" }; diff --git a/docs/search/typedefs_3.js b/docs/search/typedefs_3.js index cfc4e5ec0..f024583e1 100644 --- a/docs/search/typedefs_3.js +++ b/docs/search/typedefs_3.js @@ -1,4 +1,6 @@ var searchData= [ - ['managedopaquedescriptor',['ManagedOpaqueDescriptor',['../df/de1/namespacecudnn__frontend.html#ac94d582cdfa2adf3d68a4e675e5d69aa',1,'cudnn_frontend']]] + ['managedopaquedescriptor',['ManagedOpaqueDescriptor',['../df/de1/namespacecudnn__frontend.html#ac94d582cdfa2adf3d68a4e675e5d69aa',1,'cudnn_frontend']]], + ['matmuldesc',['MatMulDesc',['../df/de1/namespacecudnn__frontend.html#ad809552e9ec400bcbfcfc0ea5acd4e56',1,'cudnn_frontend']]], + ['matmuldescbuilder',['MatMulDescBuilder',['../df/de1/namespacecudnn__frontend.html#a0c344e3bc1f332aa9f5b213eb1ae9ee6',1,'cudnn_frontend']]] ]; diff --git a/docs/search/variables_0.js b/docs/search/variables_0.js index 1656a01c1..d04a2cea8 100644 --- a/docs/search/variables_0.js +++ b/docs/search/variables_0.js @@ -5,5 +5,6 @@ var searchData= ['alpha2_5fs',['alpha2_s',['../d4/d30/classcudnn__frontend_1_1Operation__v8.html#a4003061754cc4b0003a72cc474fca8d9',1,'cudnn_frontend::Operation_v8']]], ['alpha_5fd',['alpha_d',['../d4/d30/classcudnn__frontend_1_1Operation__v8.html#aee00f6897786ce0f16963a7d2f57a2f8',1,'cudnn_frontend::Operation_v8']]], ['alpha_5fs',['alpha_s',['../d4/d30/classcudnn__frontend_1_1Operation__v8.html#a4a71d73a1231c39e51a74f750586a733',1,'cudnn_frontend::Operation_v8']]], - ['alphabetatype',['alphabetaType',['../d4/d30/classcudnn__frontend_1_1Operation__v8.html#a0414d5eb022c25584d60491f416e6449',1,'cudnn_frontend::Operation_v8']]] + ['alphabetatype',['alphabetaType',['../d4/d30/classcudnn__frontend_1_1Operation__v8.html#a0414d5eb022c25584d60491f416e6449',1,'cudnn_frontend::Operation_v8']]], + ['amatdesc',['amatdesc',['../d4/d30/classcudnn__frontend_1_1Operation__v8.html#ae0e0256b292acd560accc1c02a6e393b',1,'cudnn_frontend::Operation_v8']]] ]; diff --git a/docs/search/variables_1.js b/docs/search/variables_1.js index 3079fd4b1..d8526c899 100644 --- a/docs/search/variables_1.js +++ b/docs/search/variables_1.js @@ -5,6 +5,7 @@ var searchData= ['beta_5fd',['beta_d',['../d4/d30/classcudnn__frontend_1_1Operation__v8.html#a1118f19807c9f58cc1d0892bdb1f8c94',1,'cudnn_frontend::Operation_v8']]], ['beta_5fs',['beta_s',['../d4/d30/classcudnn__frontend_1_1Operation__v8.html#a0f14ddfbaae6e62375c46dd0d5ed993d',1,'cudnn_frontend::Operation_v8']]], ['bknobs',['bKnobs',['../dc/d3c/classcudnn__frontend_1_1Engine__v8.html#ab2d9ce46cd037407a5c9ec655ad0a25d',1,'cudnn_frontend::Engine_v8']]], + ['bmatdesc',['bmatdesc',['../d4/d30/classcudnn__frontend_1_1Operation__v8.html#a0945c6296efc14ffc41122aaae3946b8',1,'cudnn_frontend::Operation_v8']]], ['btensor_5fdima',['btensor_dimA',['../d6/da7/classcudnn__frontend_1_1Tensor__v8.html#a7419041bb3bf934f8e9f851fa63acabd',1,'cudnn_frontend::Tensor_v8']]], ['btensor_5fstra',['btensor_strA',['../d6/da7/classcudnn__frontend_1_1Tensor__v8.html#ae4842fc7fcb87f5b60228fb6fa391b61',1,'cudnn_frontend::Tensor_v8']]] ]; diff --git a/docs/search/variables_2.js b/docs/search/variables_2.js index 5786fafce..1091fb633 100644 --- a/docs/search/variables_2.js +++ b/docs/search/variables_2.js @@ -1,5 +1,6 @@ var searchData= [ ['cdesc',['cdesc',['../d4/d30/classcudnn__frontend_1_1Operation__v8.html#a19856fbb973574342efedc43134af3a7',1,'cudnn_frontend::Operation_v8']]], - ['choice',['choice',['../dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#aee3bbc2a558893309d6882a0e30d439a',1,'cudnn_frontend::Engine_v8::Knob']]] + ['choice',['choice',['../dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#aee3bbc2a558893309d6882a0e30d439a',1,'cudnn_frontend::Engine_v8::Knob']]], + ['cmatdesc',['cmatdesc',['../d4/d30/classcudnn__frontend_1_1Operation__v8.html#adea4f5ef82e61fc375fd2c3ee8e92147',1,'cudnn_frontend::Operation_v8']]] ]; diff --git a/docs/search/variables_3.js b/docs/search/variables_3.js index dfc57779c..8c4d438b6 100644 --- a/docs/search/variables_3.js +++ b/docs/search/variables_3.js @@ -2,5 +2,8 @@ var searchData= [ ['data_5fpointers',['data_pointers',['../d0/d20/classcudnn__frontend_1_1VariantPack__v8.html#a3a03ddd893f41a9ce6ca674bbfae7434',1,'cudnn_frontend::VariantPack_v8']]], ['data_5ftype',['data_type',['../d6/d73/classcudnn__frontend_1_1ConvDesc__v8.html#a4a0249ac1d094f9a70967dd69b824f2e',1,'cudnn_frontend::ConvDesc_v8::data_type()'],['../d6/da7/classcudnn__frontend_1_1Tensor__v8.html#ae9a3d128db54fa92d392e77044f30ca9',1,'cudnn_frontend::Tensor_v8::data_type()']]], - ['dilation',['dilation',['../d6/d73/classcudnn__frontend_1_1ConvDesc__v8.html#a81e03a2a385d24a2faaf3db249580ac6',1,'cudnn_frontend::ConvDesc_v8']]] + ['dilation',['dilation',['../d6/d73/classcudnn__frontend_1_1ConvDesc__v8.html#a81e03a2a385d24a2faaf3db249580ac6',1,'cudnn_frontend::ConvDesc_v8']]], + ['dwdesc',['dwdesc',['../d4/d30/classcudnn__frontend_1_1Operation__v8.html#a4f565db1b8b85ea43d60631cd3414f47',1,'cudnn_frontend::Operation_v8']]], + ['dxdesc',['dxdesc',['../d4/d30/classcudnn__frontend_1_1Operation__v8.html#a4f30409838436d0c4dea5271af86f9b7',1,'cudnn_frontend::Operation_v8']]], + ['dydesc',['dydesc',['../d4/d30/classcudnn__frontend_1_1Operation__v8.html#adf6b55205eac4c52c0ab70e4758e33da',1,'cudnn_frontend::Operation_v8']]] ]; diff --git a/docs/search/variables_4.js b/docs/search/variables_4.js index 61af8f4d0..4cfc352ea 100644 --- a/docs/search/variables_4.js +++ b/docs/search/variables_4.js @@ -1,5 +1,6 @@ var searchData= [ + ['elu_5falpha',['elu_alpha',['../d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#a246795e9bc43f846f701ae4214953412',1,'cudnn_frontend::PointWiseDesc_v8']]], ['engine',['engine',['../df/d83/classcudnn__frontend_1_1EngineConfig__v8.html#ac102dce4f496c358a15ca753362fc4b7',1,'cudnn_frontend::EngineConfig_v8']]], ['engine_5fconfig',['engine_config',['../d7/d0d/group__ExecutionPlanQuery.html#ga5e3dd6d441474ac5ab94aaaf9c45bc5b',1,'cudnn_frontend::ExecutionPlan_v8']]], ['engine_5fconfig_5fgenerators',['engine_config_generators',['../dc/da3/classcudnn__frontend_1_1EngineConfigGenerator.html#a1a06febdf947e151276bf09947c62436',1,'cudnn_frontend::EngineConfigGenerator']]], diff --git a/docs/search/variables_6.js b/docs/search/variables_6.js index 179679a61..ae8532d12 100644 --- a/docs/search/variables_6.js +++ b/docs/search/variables_6.js @@ -3,5 +3,10 @@ var searchData= ['id',['id',['../d6/da7/classcudnn__frontend_1_1Tensor__v8.html#a062e54efdec89943fcb0602cc06dfd28',1,'cudnn_frontend::Tensor_v8']]], ['idx',['idx',['../dc/d3c/classcudnn__frontend_1_1Engine__v8.html#aae4b49a84f8ecb114449784e43496521',1,'cudnn_frontend::Engine_v8']]], ['is_5fconvolution_5fop',['is_convolution_op',['../d1/d29/classcudnn__frontend_1_1OperationBuilder__v8.html#ad82e287889be2ebef348a00479ce3bc0',1,'cudnn_frontend::OperationBuilder_v8']]], + ['is_5fmatmul_5fop',['is_matmul_op',['../d1/d29/classcudnn__frontend_1_1OperationBuilder__v8.html#ac806a488b58cc78e338ba96eccee70fd',1,'cudnn_frontend::OperationBuilder_v8']]], + ['is_5fpointwise_5factivation_5fbwd_5fop',['is_pointwise_activation_bwd_op',['../d4/d30/classcudnn__frontend_1_1Operation__v8.html#ab8c4c8c81e8cebc44cb725f4a4b4add9',1,'cudnn_frontend::Operation_v8']]], + ['is_5fpointwise_5factivation_5ffwd_5fop',['is_pointwise_activation_fwd_op',['../d4/d30/classcudnn__frontend_1_1Operation__v8.html#a12d0d0fa40152f5205570f40e681795f',1,'cudnn_frontend::Operation_v8']]], + ['is_5fpointwise_5fmath_5fop',['is_pointwise_math_op',['../d4/d30/classcudnn__frontend_1_1Operation__v8.html#a2e1e0fb15b7df300945cae2347db635a',1,'cudnn_frontend::Operation_v8']]], + ['is_5fpointwise_5fop',['is_pointwise_op',['../d1/d29/classcudnn__frontend_1_1OperationBuilder__v8.html#a98044359c005b796e35fba1a5b689f3d',1,'cudnn_frontend::OperationBuilder_v8']]], ['isvirtual',['isVirtual',['../d6/da7/classcudnn__frontend_1_1Tensor__v8.html#a611fc05f3c7b6ca90d0e3c0f6ef07d84',1,'cudnn_frontend::Tensor_v8']]] ]; diff --git a/docs/search/variables_8.js b/docs/search/variables_8.js index 4e9c61ade..5b006f277 100644 --- a/docs/search/variables_8.js +++ b/docs/search/variables_8.js @@ -1,4 +1,5 @@ var searchData= [ - ['lower_5fclip',['lower_clip',['../d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#a26f1b0f84dc331ca9f1330cf6f425d36',1,'cudnn_frontend::PointWiseDesc_v8']]] + ['lower_5fclip',['lower_clip',['../d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#a26f1b0f84dc331ca9f1330cf6f425d36',1,'cudnn_frontend::PointWiseDesc_v8']]], + ['lower_5fclip_5fslope',['lower_clip_slope',['../d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#ad8731460bbcf7cb2804dd3a9840f276e',1,'cudnn_frontend::PointWiseDesc_v8']]] ]; diff --git a/docs/search/variables_9.js b/docs/search/variables_9.js index 89325f0f4..c4183663d 100644 --- a/docs/search/variables_9.js +++ b/docs/search/variables_9.js @@ -9,12 +9,14 @@ var searchData= ['m_5ffallback_5flist',['m_fallback_list',['../d9/df1/classcudnn__frontend_1_1EngineFallbackListBuilder__v8.html#a56f2014918d259c53a2ebb3e815073e9',1,'cudnn_frontend::EngineFallbackListBuilder_v8']]], ['m_5fheuristic_5fresults',['m_heuristic_results',['../db/ddb/classcudnn__frontend_1_1EngineHeuristics__v8.html#a7a1e931b0f7910db6e6f5d5bfbfe3511',1,'cudnn_frontend::EngineHeuristics_v8']]], ['m_5fheuristics',['m_heuristics',['../d1/d28/classcudnn__frontend_1_1EngineHeuristicsBuilder__v8.html#aa046a778075f260f7950ee5a51c2addb',1,'cudnn_frontend::EngineHeuristicsBuilder_v8']]], + ['m_5fmatmuldesc',['m_matMulDesc',['../de/d00/classcudnn__frontend_1_1MatMulDescBuilder__v8.html#aa71bc8242df4035ff5d6b4d54083db4b',1,'cudnn_frontend::MatMulDescBuilder_v8']]], ['m_5foperation',['m_operation',['../d1/d29/classcudnn__frontend_1_1OperationBuilder__v8.html#a8724628060c71b17e7458c01338b234a',1,'cudnn_frontend::OperationBuilder_v8']]], ['m_5foperationgraph',['m_operationGraph',['../d4/d39/classcudnn__frontend_1_1OperationGraphBuilder__v8.html#ad9cb3e166ab001b3b0c60ed2198cd6d9',1,'cudnn_frontend::OperationGraphBuilder_v8']]], ['m_5fpointwisedesc',['m_pointWiseDesc',['../d5/d02/classcudnn__frontend_1_1PointWiseDescBuilder__v8.html#a804a2b5438f464185b16a4652fc14cf5',1,'cudnn_frontend::PointWiseDescBuilder_v8']]], ['m_5ftensor',['m_tensor',['../db/dae/classcudnn__frontend_1_1TensorBuilder__v8.html#a87c53bd36c748fe2327743bd852fb144',1,'cudnn_frontend::TensorBuilder_v8']]], ['m_5fvariant_5fpack',['m_variant_pack',['../d4/dce/classcudnn__frontend_1_1VariantPackBuilder__v8.html#a41a6e8afb46228fea2310f5cad75badc',1,'cudnn_frontend::VariantPackBuilder_v8']]], - ['math_5fprecision',['math_precision',['../d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#a7f1bee44a57b6dad1ce493cd18ffbc18',1,'cudnn_frontend::PointWiseDesc_v8']]], + ['math_5fprecision',['math_precision',['../d6/db7/classcudnn__frontend_1_1MatMulDesc__v8.html#a1dd13143c85b67f2c0da90f02884fab1',1,'cudnn_frontend::MatMulDesc_v8::math_precision()'],['../d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#a7f1bee44a57b6dad1ce493cd18ffbc18',1,'cudnn_frontend::PointWiseDesc_v8::math_precision()']]], + ['matmuldesc',['matmuldesc',['../d4/d30/classcudnn__frontend_1_1Operation__v8.html#ac4b85cbb9ba522c98eb524a7712721af',1,'cudnn_frontend::Operation_v8']]], ['maxvalue',['maxValue',['../dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#aecda8659b5a5d1dbb21b540a73141fb9',1,'cudnn_frontend::Engine_v8::Knob']]], ['minvalue',['minValue',['../dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#a2403145dcb4bc55f970c6d07c1ed796e',1,'cudnn_frontend::Engine_v8::Knob']]], ['mode',['mode',['../d6/d73/classcudnn__frontend_1_1ConvDesc__v8.html#adcb7e5f546b83bbdab63773030e3b909',1,'cudnn_frontend::ConvDesc_v8::mode()'],['../db/d99/classcudnn__frontend_1_1EngineFallbackList__v8.html#a9a557db46e3559fcaa0e800d976d6238',1,'cudnn_frontend::EngineFallbackList_v8::mode()'],['../db/ddb/classcudnn__frontend_1_1EngineHeuristics__v8.html#a71e7822002502874f6b2dfec4ede7e01',1,'cudnn_frontend::EngineHeuristics_v8::mode()'],['../d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#ad6d99d57f2a5b345fe5af5bc777b8d1c',1,'cudnn_frontend::PointWiseDesc_v8::mode()']]] diff --git a/docs/search/variables_d.js b/docs/search/variables_d.js index 7ca6e3309..01520aa3e 100644 --- a/docs/search/variables_d.js +++ b/docs/search/variables_d.js @@ -1,5 +1,7 @@ var searchData= [ + ['softplus_5fbeta',['softplus_beta',['../d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#a346bf4a4ca5e45b0f19dc8f2fb6b6148',1,'cudnn_frontend::PointWiseDesc_v8']]], ['status',['status',['../d5/d14/classcudnn__frontend_1_1OpaqueBackendPointer.html#a10487abe0a45d35824ec75b0d3894f21',1,'cudnn_frontend::OpaqueBackendPointer::status()'],['../d6/d88/classcudnn__frontend_1_1BackendDescriptor.html#a8a5466c444f2de721118334ac876c6ba',1,'cudnn_frontend::BackendDescriptor::status()']]], - ['stride',['stride',['../d6/d73/classcudnn__frontend_1_1ConvDesc__v8.html#ac513728c785a54ef86612a0bd6fa0f1a',1,'cudnn_frontend::ConvDesc_v8::stride()'],['../dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#a8342ab30dbe0e86d8d060983f14aba87',1,'cudnn_frontend::Engine_v8::Knob::stride()']]] + ['stride',['stride',['../d6/d73/classcudnn__frontend_1_1ConvDesc__v8.html#ac513728c785a54ef86612a0bd6fa0f1a',1,'cudnn_frontend::ConvDesc_v8::stride()'],['../dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.html#a8342ab30dbe0e86d8d060983f14aba87',1,'cudnn_frontend::Engine_v8::Knob::stride()']]], + ['swish_5fbeta',['swish_beta',['../d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.html#aff19ca9077ac2dca8a9f78df586e11db',1,'cudnn_frontend::PointWiseDesc_v8']]] ]; diff --git a/docs/xml/combine.xslt b/docs/xml/combine.xslt new file mode 100644 index 000000000..c148ee4f2 --- /dev/null +++ b/docs/xml/combine.xslt @@ -0,0 +1,15 @@ + + + + + + + + + + + + diff --git a/docs/xml/compound.xsd b/docs/xml/compound.xsd new file mode 100644 index 000000000..60653abb0 --- /dev/null +++ b/docs/xml/compound.xsd @@ -0,0 +1,1124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/xml/d0/d20/classcudnn__frontend_1_1VariantPack__v8.xml b/docs/xml/d0/d20/classcudnn__frontend_1_1VariantPack__v8.xml new file mode 100644 index 000000000..51d59ceb9 --- /dev/null +++ b/docs/xml/d0/d20/classcudnn__frontend_1_1VariantPack__v8.xml @@ -0,0 +1,283 @@ + + + + cudnn_frontend::VariantPack_v8 + cudnn_frontend::BackendDescriptor + cudnn_frontend_VariantPack.h + + + friend class + friend class VariantPackBuilder_v8 + + VariantPackBuilder_v8 + + + + + + + + cudnn_frontend::VariantPackBuilder_v8::build + + + + + void * + void* cudnn_frontend::VariantPack_v8::workspace + + workspace + = nullptr + + + + + + + + + + void * + void* cudnn_frontend::VariantPack_v8::data_pointers[10] + [10] + data_pointers + = {nullptr} + + + + + + + + cudnn_frontend::VariantPackBuilder_v8::setDataPointers + VariantPack_v8 + + + int64_t + int64_t cudnn_frontend::VariantPack_v8::uid[10] + [10] + uid + = {-1} + + + + + + + + cudnn_frontend::VariantPackBuilder_v8::setUids + VariantPack_v8 + + + int64_t + int64_t cudnn_frontend::VariantPack_v8::num_ptrs + + num_ptrs + = -1 + + + + + + + + describe + + + + + std::string + std::string cudnn_frontend::VariantPack_v8::describe + () const override + describe + describe + +Return a string describing the backend Descriptor. + + + + + + num_ptrs + + + + cudnn_frontend::VariantPack_v8::VariantPack_v8 + (VariantPack_v8 &&from) + VariantPack_v8 + + VariantPack_v8 && + from + + + + + + + + + data_pointers + operator= + uid + VariantPack_v8 + ~VariantPack_v8 + + + + cudnn_frontend::VariantPack_v8::~VariantPack_v8 + ()=default + ~VariantPack_v8 + + + + + + + + VariantPack_v8 + + + + + + cudnn_frontend::VariantPack_v8::VariantPack_v8 + ()=default + VariantPack_v8 + + + + + + + + VariantPack_v8 + + + + cudnn_frontend::VariantPack_v8::VariantPack_v8 + (VariantPack_v8 const &)=delete + VariantPack_v8 + + VariantPack_v8 const & + + + + + + + + + + + VariantPack_v8 & + VariantPack_v8& cudnn_frontend::VariantPack_v8::operator= + (VariantPack_v8 const &)=delete + operator= + + VariantPack_v8 const & + + + + + + + + + cudnn_frontend::VariantPackBuilder_v8::build + VariantPack_v8 + + + + + +VariantPack_v8 Class This class tells the Configuration of the Engine in terms of the knob choices Properties: +num knobsChoiceEngine +Use VariantPackBuilder_v8 to build this class. Describe returns a string describing the tensor class + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -num_ptrs + -uid + + + -data_pointers + -workspace + + + + + + + + + + #err_msg + + + #pointer + + + #status + + + + + + + + + + + cudnn_frontend::VariantPack_v8BackendDescriptor + cudnn_frontend::VariantPack_v8BackendDescriptor + cudnn_frontend::VariantPack_v8data_pointers + cudnn_frontend::VariantPack_v8describe + cudnn_frontend::VariantPack_v8err_msg + cudnn_frontend::VariantPack_v8get_desc + cudnn_frontend::VariantPack_v8get_error + cudnn_frontend::VariantPack_v8get_raw_desc + cudnn_frontend::VariantPack_v8get_status + cudnn_frontend::VariantPack_v8initialize_managed_backend_pointer + cudnn_frontend::VariantPack_v8num_ptrs + cudnn_frontend::VariantPack_v8operator= + cudnn_frontend::VariantPack_v8pointer + cudnn_frontend::VariantPack_v8set_error + cudnn_frontend::VariantPack_v8set_status + cudnn_frontend::VariantPack_v8status + cudnn_frontend::VariantPack_v8uid + cudnn_frontend::VariantPack_v8VariantPack_v8 + cudnn_frontend::VariantPack_v8VariantPack_v8 + cudnn_frontend::VariantPack_v8VariantPack_v8 + cudnn_frontend::VariantPack_v8VariantPackBuilder_v8 + cudnn_frontend::VariantPack_v8workspace + cudnn_frontend::VariantPack_v8~VariantPack_v8 + + + diff --git a/docs/xml/d1/d28/classcudnn__frontend_1_1EngineHeuristicsBuilder__v8.xml b/docs/xml/d1/d28/classcudnn__frontend_1_1EngineHeuristicsBuilder__v8.xml new file mode 100644 index 000000000..3b109cb2d --- /dev/null +++ b/docs/xml/d1/d28/classcudnn__frontend_1_1EngineHeuristicsBuilder__v8.xml @@ -0,0 +1,243 @@ + + + + cudnn_frontend::EngineHeuristicsBuilder_v8 + cudnn_frontend_Heuristics.h + + + EngineHeuristics_v8 + EngineHeuristics_v8 cudnn_frontend::EngineHeuristicsBuilder_v8::m_heuristics + + m_heuristics + + + + + + + + + + + + auto + auto cudnn_frontend::EngineHeuristicsBuilder_v8::setOperationGraph + (OperationGraph_v8 &opGraph_) -> EngineHeuristicsBuilder_v8 & + setOperationGraph + + OperationGraph_v8 & + opGraph_ + + +Set operationGraph for the engine (opGraph is not destroyed) + + + + + + + + auto + auto cudnn_frontend::EngineHeuristicsBuilder_v8::setHeurMode + (cudnnBackendHeurMode_t mode_) -> EngineHeuristicsBuilder_v8 & + setHeurMode + + cudnnBackendHeurMode_t + mode_ + + +Set cudnnHandle for the operations. + + + + + + + + EngineHeuristics_v8 && + EngineHeuristics_v8&& cudnn_frontend::EngineHeuristicsBuilder_v8::build + () + build + + + +constructs the EngineHeuristics_v8 by calling the cudnn API Throws the appropriate error message + + + + cudnn_frontend::EngineHeuristics_v8::EngineHeuristicsBuilder_v8 + cudnn_frontend::EngineHeuristics_v8::operator= + cudnn_frontend::set_error_and_throw_exception + cudnn_frontend::BackendDescriptor::status + + + + cudnn_frontend::EngineHeuristicsBuilder_v8::EngineHeuristicsBuilder_v8 + ()=default + EngineHeuristicsBuilder_v8 + + + + + + + + + + + cudnn_frontend::EngineHeuristicsBuilder_v8::~EngineHeuristicsBuilder_v8 + ()=default + ~EngineHeuristicsBuilder_v8 + + + + + + + + + + + cudnn_frontend::EngineHeuristicsBuilder_v8::EngineHeuristicsBuilder_v8 + (EngineHeuristicsBuilder_v8 &&)=delete + EngineHeuristicsBuilder_v8 + + EngineHeuristicsBuilder_v8 && + + + + + + + + + + + + cudnn_frontend::EngineHeuristicsBuilder_v8::EngineHeuristicsBuilder_v8 + (EngineHeuristicsBuilder_v8 const &)=delete + EngineHeuristicsBuilder_v8 + + EngineHeuristicsBuilder_v8 const & + + + + + + + + + + + EngineHeuristicsBuilder_v8 & + EngineHeuristicsBuilder_v8& cudnn_frontend::EngineHeuristicsBuilder_v8::operator= + (EngineHeuristicsBuilder_v8 const &)=delete + operator= + + EngineHeuristicsBuilder_v8 const & + + + + + + + + + + + + + +EngineHeuristicsBuilder_v8 Class Helper class used to build EngineHeuristics_v8 class + + + + + + + + + + + +elements + + + + + + + -m_heuristics + + + + + + + + + +elements + + + < ManagedOpaqueDescriptor > + + + + + + + + + + + + -m_heuristic_results + + + -mode + + + -opGraphTag + + + -opGraph + + + + + + + + + + #err_msg + + + #pointer + + + #status + + + + + + + + + + + + + + cudnn_frontend::EngineHeuristicsBuilder_v8build + cudnn_frontend::EngineHeuristicsBuilder_v8EngineHeuristicsBuilder_v8 + cudnn_frontend::EngineHeuristicsBuilder_v8EngineHeuristicsBuilder_v8 + cudnn_frontend::EngineHeuristicsBuilder_v8EngineHeuristicsBuilder_v8 + cudnn_frontend::EngineHeuristicsBuilder_v8m_heuristics + cudnn_frontend::EngineHeuristicsBuilder_v8operator= + cudnn_frontend::EngineHeuristicsBuilder_v8setHeurMode + cudnn_frontend::EngineHeuristicsBuilder_v8setOperationGraph + cudnn_frontend::EngineHeuristicsBuilder_v8~EngineHeuristicsBuilder_v8 + + + diff --git a/docs/xml/d1/d29/classcudnn__frontend_1_1OperationBuilder__v8.xml b/docs/xml/d1/d29/classcudnn__frontend_1_1OperationBuilder__v8.xml new file mode 100644 index 000000000..c0b1da633 --- /dev/null +++ b/docs/xml/d1/d29/classcudnn__frontend_1_1OperationBuilder__v8.xml @@ -0,0 +1,676 @@ + + + + cudnn_frontend::OperationBuilder_v8 + cudnn_frontend_Operation.h + + + Operation_v8 + Operation_v8 cudnn_frontend::OperationBuilder_v8::m_operation + + m_operation + + + + + + + + + + bool + bool cudnn_frontend::OperationBuilder_v8::is_convolution_op + + is_convolution_op + = false + + + + + + + + + + bool + bool cudnn_frontend::OperationBuilder_v8::is_pointwise_op + + is_pointwise_op + = false + + + + + + + + + + bool + bool cudnn_frontend::OperationBuilder_v8::is_matmul_op + + is_matmul_op + = false + + + + + + + + + + + + auto + auto cudnn_frontend::OperationBuilder_v8::setxDesc + (ManagedOpaqueDescriptor const &raw_tensor) -> OperationBuilder_v8 & + setxDesc + + ManagedOpaqueDescriptor const & + raw_tensor + + + + + + + + + cudnn_frontend::Operation_v8::xdesc + + + auto + auto cudnn_frontend::OperationBuilder_v8::setxDesc + (Tensor_v8 const &tensor) -> OperationBuilder_v8 & + setxDesc + + Tensor_v8 const & + tensor + + + + + + + + + cudnn_frontend::Operation_v8::xdesc + + + auto + auto cudnn_frontend::OperationBuilder_v8::setbDesc + (Tensor_v8 const &tensor) -> OperationBuilder_v8 & + setbDesc + + Tensor_v8 const & + tensor + + + + + + + + + cudnn_frontend::Operation_v8::bdesc + cudnn_frontend::set_error_and_throw_exception + + + auto + auto cudnn_frontend::OperationBuilder_v8::setyDesc + (Tensor_v8 const &tensor) -> OperationBuilder_v8 & + setyDesc + + Tensor_v8 const & + tensor + + + + + + + + + cudnn_frontend::Operation_v8::ydesc + + + auto + auto cudnn_frontend::OperationBuilder_v8::setwDesc + (Tensor_v8 const &tensor) -> OperationBuilder_v8 & + setwDesc + + Tensor_v8 const & + tensor + + + + + + + + + cudnn_frontend::set_error_and_throw_exception + cudnn_frontend::Operation_v8::wdesc + + + auto + auto cudnn_frontend::OperationBuilder_v8::setdyDesc + (ManagedOpaqueDescriptor const &raw_tensor) -> OperationBuilder_v8 & + setdyDesc + + ManagedOpaqueDescriptor const & + raw_tensor + + + + + + + + + cudnn_frontend::Operation_v8::dydesc + + + auto + auto cudnn_frontend::OperationBuilder_v8::setdyDesc + (Tensor_v8 const &tensor) -> OperationBuilder_v8 & + setdyDesc + + Tensor_v8 const & + tensor + + + + + + + + + cudnn_frontend::Operation_v8::dydesc + + + auto + auto cudnn_frontend::OperationBuilder_v8::setdxDesc + (Tensor_v8 const &tensor) -> OperationBuilder_v8 & + setdxDesc + + Tensor_v8 const & + tensor + + + + + + + + + cudnn_frontend::Operation_v8::dxdesc + + + auto + auto cudnn_frontend::OperationBuilder_v8::setdwDesc + (Tensor_v8 const &tensor) -> OperationBuilder_v8 & + setdwDesc + + Tensor_v8 const & + tensor + + + + + + + + + cudnn_frontend::Operation_v8::dwdesc + + + auto + auto cudnn_frontend::OperationBuilder_v8::setcDesc + (ConvDesc_v8 const &conv) -> OperationBuilder_v8 & + setcDesc + + ConvDesc_v8 const & + conv + + + + + + + + + cudnn_frontend::Operation_v8::cdesc + cudnn_frontend::set_error_and_throw_exception + + + auto + auto cudnn_frontend::OperationBuilder_v8::setaMatDesc + (Tensor_v8 const &tensor) -> OperationBuilder_v8 & + setaMatDesc + + Tensor_v8 const & + tensor + + + + + + + + + cudnn_frontend::Operation_v8::amatdesc + cudnn_frontend::set_error_and_throw_exception + + + auto + auto cudnn_frontend::OperationBuilder_v8::setbMatDesc + (Tensor_v8 const &tensor) -> OperationBuilder_v8 & + setbMatDesc + + Tensor_v8 const & + tensor + + + + + + + + + cudnn_frontend::Operation_v8::bmatdesc + cudnn_frontend::set_error_and_throw_exception + + + auto + auto cudnn_frontend::OperationBuilder_v8::setcMatDesc + (Tensor_v8 const &tensor) -> OperationBuilder_v8 & + setcMatDesc + + Tensor_v8 const & + tensor + + + + + + + + + cudnn_frontend::Operation_v8::cmatdesc + cudnn_frontend::set_error_and_throw_exception + + + auto + auto cudnn_frontend::OperationBuilder_v8::setmatmulDesc + (MatMulDesc_v8 const &matmulDesc) -> OperationBuilder_v8 & + setmatmulDesc + + MatMulDesc_v8 const & + matmulDesc + + + + + + + + + cudnn_frontend::Operation_v8::matmuldesc + cudnn_frontend::set_error_and_throw_exception + + + auto + auto cudnn_frontend::OperationBuilder_v8::setpwDesc + (PointWiseDesc_v8 const &pointWiseDesc) -> OperationBuilder_v8 & + setpwDesc + + PointWiseDesc_v8 const & + pointWiseDesc + + + + + + + + + cudnn_frontend::Operation_v8::is_pointwise_activation_bwd_op + cudnn_frontend::Operation_v8::is_pointwise_activation_fwd_op + cudnn_frontend::Operation_v8::is_pointwise_math_op + cudnn_frontend::Operation_v8::pointwise_mode + cudnn_frontend::Operation_v8::pointwise_port_count + cudnn_frontend::Operation_v8::pwdesc + cudnn_frontend::set_error_and_throw_exception + + + auto + auto cudnn_frontend::OperationBuilder_v8::setAlpha + (float alpha) -> OperationBuilder_v8 & + setAlpha + + float + alpha + + + + + + + + + cudnn_frontend::Operation_v8::alpha_d + cudnn_frontend::Operation_v8::alpha_s + cudnn_frontend::Operation_v8::alphabetaType + + + auto + auto cudnn_frontend::OperationBuilder_v8::setAlpha + (double alpha) -> OperationBuilder_v8 & + setAlpha + + double + alpha + + + + + + + + + cudnn_frontend::Operation_v8::alpha_d + cudnn_frontend::Operation_v8::alpha_s + cudnn_frontend::Operation_v8::alphabetaType + + + auto + auto cudnn_frontend::OperationBuilder_v8::setAlpha2 + (float alpha) -> OperationBuilder_v8 & + setAlpha2 + + float + alpha + + + + + + + + + cudnn_frontend::Operation_v8::alpha2_d + cudnn_frontend::Operation_v8::alpha2_s + cudnn_frontend::Operation_v8::alphabetaType + + + auto + auto cudnn_frontend::OperationBuilder_v8::setAlpha2 + (double alpha) -> OperationBuilder_v8 & + setAlpha2 + + double + alpha + + + + + + + + + cudnn_frontend::Operation_v8::alpha2_d + cudnn_frontend::Operation_v8::alpha2_s + cudnn_frontend::Operation_v8::alphabetaType + + + auto + auto cudnn_frontend::OperationBuilder_v8::setBeta + (float beta) -> OperationBuilder_v8 & + setBeta + + float + beta + + + + + + + + + cudnn_frontend::Operation_v8::alphabetaType + cudnn_frontend::Operation_v8::beta_d + cudnn_frontend::Operation_v8::beta_s + + + auto + auto cudnn_frontend::OperationBuilder_v8::setBeta + (double beta) -> OperationBuilder_v8 & + setBeta + + double + beta + + + + + + + + + cudnn_frontend::Operation_v8::alphabetaType + cudnn_frontend::Operation_v8::beta_d + cudnn_frontend::Operation_v8::beta_s + + + + cudnn_frontend::OperationBuilder_v8::OperationBuilder_v8 + (cudnnBackendDescriptorType_t mode) + OperationBuilder_v8 + + cudnnBackendDescriptorType_t + mode + + + + + + + + + cudnn_frontend::Operation_v8::op_mode + + + Operation_v8 && + Operation_v8&& cudnn_frontend::OperationBuilder_v8::build + () + build + + + +constructs the backend Operation_v8 by calling the cudnn API Throws the appropriate error message + + + + cudnn_frontend::Operation_v8::alpha2_d + cudnn_frontend::Operation_v8::alpha2_s + cudnn_frontend::Operation_v8::alpha_d + cudnn_frontend::Operation_v8::alpha_s + cudnn_frontend::Operation_v8::alphabetaType + cudnn_frontend::Operation_v8::amatdesc + cudnn_frontend::Operation_v8::bdesc + cudnn_frontend::Operation_v8::beta_d + cudnn_frontend::Operation_v8::beta_s + cudnn_frontend::Operation_v8::bmatdesc + cudnn_frontend::Operation_v8::cdesc + cudnn_frontend::Operation_v8::cmatdesc + cudnn_frontend::Operation_v8::dwdesc + cudnn_frontend::Operation_v8::dxdesc + cudnn_frontend::Operation_v8::dydesc + cudnn_frontend::BackendDescriptor::initialize_managed_backend_pointer + cudnn_frontend::Operation_v8::is_pointwise_activation_bwd_op + cudnn_frontend::Operation_v8::is_pointwise_activation_fwd_op + cudnn_frontend::Operation_v8::is_pointwise_math_op + cudnn_frontend::Operation_v8::matmuldesc + cudnn_frontend::Operation_v8::op_mode + cudnn_frontend::Operation_v8::operationTag + cudnn_frontend::BackendDescriptor::pointer + cudnn_frontend::Operation_v8::pointwise_mode + cudnn_frontend::Operation_v8::pointwise_port_count + cudnn_frontend::Operation_v8::pwdesc + cudnn_frontend::set_error_and_throw_exception + cudnn_frontend::BackendDescriptor::status + cudnn_frontend::Operation_v8::wdesc + cudnn_frontend::Operation_v8::xdesc + cudnn_frontend::Operation_v8::ydesc + + + + + +OperationBuilder_v8 Class Helper class used to build Operation_v8 class + + + + + + -is_matmul_op + -is_pointwise_op + -is_convolution_op + + + -m_operation + + + + + + + + + + + + -alpha2_d + -alpha_d + -beta_d + + + -alphabetaType + + + -pointwise_mode + + + -alpha_s + -beta_s + -alpha2_s + + + -pointwise_port_count + + + -operationTag + + + -is_pointwise_math_op + -is_pointwise_activation_fwd_op + -is_pointwise_activation_bwd_op + + + -dwdesc + -dxdesc + -dydesc + -bdesc + -pwdesc + -cdesc + -wdesc + -xdesc + -ydesc + -cmatdesc + ... + + + -op_mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #err_msg + + + #pointer + + + #status + + + + + + + + + + + cudnn_frontend::OperationBuilder_v8build + cudnn_frontend::OperationBuilder_v8is_convolution_op + cudnn_frontend::OperationBuilder_v8is_matmul_op + cudnn_frontend::OperationBuilder_v8is_pointwise_op + cudnn_frontend::OperationBuilder_v8m_operation + cudnn_frontend::OperationBuilder_v8OperationBuilder_v8 + cudnn_frontend::OperationBuilder_v8setAlpha + cudnn_frontend::OperationBuilder_v8setAlpha + cudnn_frontend::OperationBuilder_v8setAlpha2 + cudnn_frontend::OperationBuilder_v8setAlpha2 + cudnn_frontend::OperationBuilder_v8setaMatDesc + cudnn_frontend::OperationBuilder_v8setbDesc + cudnn_frontend::OperationBuilder_v8setBeta + cudnn_frontend::OperationBuilder_v8setBeta + cudnn_frontend::OperationBuilder_v8setbMatDesc + cudnn_frontend::OperationBuilder_v8setcDesc + cudnn_frontend::OperationBuilder_v8setcMatDesc + cudnn_frontend::OperationBuilder_v8setdwDesc + cudnn_frontend::OperationBuilder_v8setdxDesc + cudnn_frontend::OperationBuilder_v8setdyDesc + cudnn_frontend::OperationBuilder_v8setdyDesc + cudnn_frontend::OperationBuilder_v8setmatmulDesc + cudnn_frontend::OperationBuilder_v8setpwDesc + cudnn_frontend::OperationBuilder_v8setwDesc + cudnn_frontend::OperationBuilder_v8setxDesc + cudnn_frontend::OperationBuilder_v8setxDesc + cudnn_frontend::OperationBuilder_v8setyDesc + + + diff --git a/docs/xml/d1/d74/classcudnn__frontend_1_1ExecutionPlanBuilder__v8.xml b/docs/xml/d1/d74/classcudnn__frontend_1_1ExecutionPlanBuilder__v8.xml new file mode 100644 index 000000000..9615f9041 --- /dev/null +++ b/docs/xml/d1/d74/classcudnn__frontend_1_1ExecutionPlanBuilder__v8.xml @@ -0,0 +1,242 @@ + + + + cudnn_frontend::ExecutionPlanBuilder_v8 + cudnn_frontend_ExecutionPlan.h + + + ExecutionPlan_v8 + ExecutionPlan_v8 cudnn_frontend::ExecutionPlanBuilder_v8::m_execution_plan + + m_execution_plan + + + + + + + + + + + + auto + auto cudnn_frontend::ExecutionPlanBuilder_v8::setHandle + (cudnnHandle_t handle_) -> ExecutionPlanBuilder_v8 & + setHandle + + cudnnHandle_t + handle_ + + +Set engine for the ExecutionPlan_v8. + + + + + + + + auto + auto cudnn_frontend::ExecutionPlanBuilder_v8::setEngineConfig + (EngineConfig_v8 const &engine_config_) -> ExecutionPlanBuilder_v8 & + setEngineConfig + + EngineConfig_v8 const & + engine_config_ + + +Set engine Config for the Plan. + + + + + + + + auto + auto cudnn_frontend::ExecutionPlanBuilder_v8::setEngineConfig + (ManagedOpaqueDescriptor &desc, std::string const &opGraphTag_="") -> ExecutionPlanBuilder_v8 & + setEngineConfig + + ManagedOpaqueDescriptor & + desc + + + std::string const & + opGraphTag_ + "" + + +Set engine Config for the Plan. + + + + + + + + ExecutionPlan_v8 && + ExecutionPlan_v8&& cudnn_frontend::ExecutionPlanBuilder_v8::build + () + build + + + +constructs the Engine Config by calling the cudnn API Throws the appropriate error message + + + + cudnn_frontend::ExecutionPlan_v8::ExecutionPlanBuilder_v8 + cudnn_frontend::ExecutionPlan_v8::operator= + cudnn_frontend::set_error_and_throw_exception + cudnn_frontend::BackendDescriptor::status + + + + cudnn_frontend::ExecutionPlanBuilder_v8::ExecutionPlanBuilder_v8 + ()=default + ExecutionPlanBuilder_v8 + + + + + + + + + + + cudnn_frontend::ExecutionPlanBuilder_v8::~ExecutionPlanBuilder_v8 + ()=default + ~ExecutionPlanBuilder_v8 + + + + + + + + + + + cudnn_frontend::ExecutionPlanBuilder_v8::ExecutionPlanBuilder_v8 + (ExecutionPlanBuilder_v8 &&)=delete + ExecutionPlanBuilder_v8 + + ExecutionPlanBuilder_v8 && + + + + + + + + + + + + cudnn_frontend::ExecutionPlanBuilder_v8::ExecutionPlanBuilder_v8 + (ExecutionPlanBuilder_v8 const &)=delete + ExecutionPlanBuilder_v8 + + ExecutionPlanBuilder_v8 const & + + + + + + + + + + + ExecutionPlanBuilder_v8 & + ExecutionPlanBuilder_v8& cudnn_frontend::ExecutionPlanBuilder_v8::operator= + (ExecutionPlanBuilder_v8 const &)=delete + operator= + + ExecutionPlanBuilder_v8 const & + + + + + + + + + + + + + +ExecutionPlanBuilder_v8 Class Helper class used to build ExecutionPlan_v8 class + + + + + + + + + + + + + + + + + + -m_execution_plan + + + + + + + + + -planTag + + + -handle + + + -engine_config + + + + + + + #err_msg + + + #pointer + + + #status + + + + + + + + + + + cudnn_frontend::ExecutionPlanBuilder_v8build + cudnn_frontend::ExecutionPlanBuilder_v8ExecutionPlanBuilder_v8 + cudnn_frontend::ExecutionPlanBuilder_v8ExecutionPlanBuilder_v8 + cudnn_frontend::ExecutionPlanBuilder_v8ExecutionPlanBuilder_v8 + cudnn_frontend::ExecutionPlanBuilder_v8m_execution_plan + cudnn_frontend::ExecutionPlanBuilder_v8operator= + cudnn_frontend::ExecutionPlanBuilder_v8setEngineConfig + cudnn_frontend::ExecutionPlanBuilder_v8setEngineConfig + cudnn_frontend::ExecutionPlanBuilder_v8setHandle + cudnn_frontend::ExecutionPlanBuilder_v8~ExecutionPlanBuilder_v8 + + + diff --git a/docs/xml/d1/de7/cudnn__frontend__ConvDesc_8h.xml b/docs/xml/d1/de7/cudnn__frontend__ConvDesc_8h.xml new file mode 100644 index 000000000..a7c5c5083 --- /dev/null +++ b/docs/xml/d1/de7/cudnn__frontend__ConvDesc_8h.xml @@ -0,0 +1,458 @@ + + + + cudnn_frontend_ConvDesc.h + algorithm + array + functional + memory + sstream + utility + cudnn.h + cudnn_backend.h + cudnn_frontend_utils.h + cudnn_frontend.h + cudnn_frontend_Operation.h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + cudnn_frontend::ConvDesc_v8 + cudnn_frontend::ConvDescBuilder_v8 + cudnn_frontend + + + + + +/* +*Copyright(c)2021,NVIDIACORPORATION.Allrightsreserved. +* +*Permissionisherebygranted,freeofcharge,toanypersonobtaininga +*copyofthissoftwareandassociateddocumentationfiles(the"Software"), +*todealintheSoftwarewithoutrestriction,includingwithoutlimitation +*therightstouse,copy,modify,merge,publish,distribute,sublicense, +*and/orsellcopiesoftheSoftware,andtopermitpersonstowhomthe +*Softwareisfurnishedtodoso,subjecttothefollowingconditions: +* +*Theabovecopyrightnoticeandthispermissionnoticeshallbeincludedin +*allcopiesorsubstantialportionsoftheSoftware. +* +*THESOFTWAREISPROVIDED"ASIS",WITHOUTWARRANTYOFANYKIND,EXPRESSOR +*IMPLIED,INCLUDINGBUTNOTLIMITEDTOTHEWARRANTIESOFMERCHANTABILITY, +*FITNESSFORAPARTICULARPURPOSEANDNONINFRINGEMENT.INNOEVENTSHALL +*THEAUTHORSORCOPYRIGHTHOLDERSBELIABLEFORANYCLAIM,DAMAGESOROTHER +*LIABILITY,WHETHERINANACTIONOFCONTRACT,TORTOROTHERWISE,ARISING +*FROM,OUTOFORINCONNECTIONWITHTHESOFTWAREORTHEUSEOROTHER +*DEALINGSINTHESOFTWARE. +*/ + +#pragmaonce + +#include<algorithm> +#include<array> +#include<functional> +#include<memory> +#include<sstream> +#include<utility> + +#include<cudnn.h> +#include<cudnn_backend.h> + +#include"cudnn_frontend_utils.h" + +namespacecudnn_frontend{ + +classConvDesc_v8:publicBackendDescriptor{ +public: +friendclassConvDescBuilder_v8; +std::string +describe()constoverride{ +std::stringstreamss; +charsep=''; +ss<<"CUDNN_BACKEND_CONVOLUTION_DESCRIPTOR:" +<<"Datatype:"<<std::to_string(data_type)<<"Mode:"<<std::to_string(mode) +<<"NumDimensions:"<<std::to_string(nDims); +ss<<"PadLower["; +std::for_each(std::begin(padLower),std::end(padLower),[&ss,sep](intx)mutable{ +ss<<sep<<x; +sep=','; +}); +ss<<"]PadUpper["; +std::for_each(std::begin(padUpper),std::end(padUpper),[&ss,sep](intx)mutable{ +ss<<sep<<x; +sep=','; +}); +ss<<"]Dilation["; +std::for_each(std::begin(dilation),std::end(dilation),[&ss,sep](intx)mutable{ +ss<<sep<<x; +sep=','; +}); +ss<<"]Stride["; +std::for_each(std::begin(stride),std::end(stride),[&ss,sep](intx)mutable{ +ss<<sep<<x; +sep=','; +}); +ss<<"]"; +returnss.str(); +} + +ConvDesc_v8(ConvDesc_v8&&from) +:BackendDescriptor(from.get_desc(),from.get_status(),from.get_error()), +data_type(from.data_type), +mode(from.mode), +nDims(from.nDims){ +std::copy(std::begin(from.padLower),std::end(from.padLower),padLower); +std::copy(std::begin(from.padUpper),std::end(from.padUpper),padUpper); +std::copy(std::begin(from.dilation),std::end(from.dilation),dilation); +std::copy(std::begin(from.stride),std::end(from.stride),stride); +} + +~ConvDesc_v8()=default; + +private: +ConvDesc_v8()=default; +ConvDesc_v8(ConvDesc_v8const&)=delete; +ConvDesc_v8& +operator=(ConvDesc_v8const&)=delete; + +cudnnDataType_tdata_type=CUDNN_DATA_FLOAT; +cudnnConvolutionMode_tmode=CUDNN_CONVOLUTION; +int64_tnDims=-1; +int64_tpadLower[CUDNN_DIM_MAX+1]={0}; +int64_tpadUpper[CUDNN_DIM_MAX+1]={0}; +int64_tdilation[CUDNN_DIM_MAX+1]={0}; +int64_tstride[CUDNN_DIM_MAX+1]={-1}; +}; + +classConvDescBuilder_v8{ +public: +auto +setDataType(cudnnDataType_tdata_type_)->ConvDescBuilder_v8&{ +m_convDesc.data_type=data_type_; +return*this; +} +auto +setPrePadding(int64_tndims,int64_tconst*padding)->ConvDescBuilder_v8&{ +std::copy(padding,padding+ndims,m_convDesc.padLower); +return*this; +} +auto +setPostPadding(int64_tndims,int64_tconst*padding)->ConvDescBuilder_v8&{ +std::copy(padding,padding+ndims,m_convDesc.padUpper); +return*this; +} +auto +setDilation(int64_tndims,int64_tconst*dilation)->ConvDescBuilder_v8&{ +std::copy(dilation,dilation+ndims,m_convDesc.dilation); +return*this; +} +auto +setStrides(int64_tndims,int64_tconst*strides)->ConvDescBuilder_v8&{ +std::copy(strides,strides+ndims,m_convDesc.stride); +return*this; +} +auto +setNDims(int64_tnDims_)->ConvDescBuilder_v8&{ +m_convDesc.nDims=nDims_; +return*this; +} +auto +setMathMode(cudnnConvolutionMode_tmode_)->ConvDescBuilder_v8&{ +m_convDesc.mode=mode_; +return*this; +} +ConvDesc_v8&& +build(){ +//Sanitycheckifnon-defaultfieldshavebeensetcorrectly. +if(m_convDesc.nDims<=0){ +set_error_and_throw_exception( +&m_convDesc, +CUDNN_STATUS_BAD_PARAM, +"CUDNN_BACKEND_CONVOLUTION_DESCRIPTOR:CheckandSettheCUDNN_ATTR_CONVOLUTION_SPATIAL_DIMSfield"); +returnstd::move(m_convDesc); +}; +if(m_convDesc.stride[0]<=0){ +set_error_and_throw_exception( +&m_convDesc, +CUDNN_STATUS_BAD_PARAM, +"CUDNN_BACKEND_CONVOLUTION_DESCRIPTOR:CheckandSettheCUDNN_ATTR_CONVOLUTION_FILTER_STRIDESfield"); +returnstd::move(m_convDesc); +} + +//Createadescriptor.Memoryallocationhappenshere. +autostatus=m_convDesc.initialize_managed_backend_pointer(CUDNN_BACKEND_CONVOLUTION_DESCRIPTOR); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_convDesc,status,"CUDNN_BACKEND_CONVOLUTION_DESCRIPTOR:Baddescriptorcreated"); +returnstd::move(m_convDesc); +} + +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_convDesc,status,"CUDNN_BACKEND_CONVOLUTION_DESCRIPTOR:cudnnCreateFailed"); +returnstd::move(m_convDesc); +} + +//OnceCreatedletssetthedescriptorparameters. +status=cudnnBackendSetAttribute(m_convDesc.pointer->get_backend_descriptor(), +CUDNN_ATTR_CONVOLUTION_COMP_TYPE, +CUDNN_TYPE_DATA_TYPE, +1, +&m_convDesc.data_type); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_convDesc, +status, +"CUDNN_BACKEND_CONVOLUTION_DESCRIPTOR:SetAttributeCUDNN_ATTR_CONVOLUTION_COMP_TYPEFailed"); +returnstd::move(m_convDesc); +} + +status=cudnnBackendSetAttribute(m_convDesc.pointer->get_backend_descriptor(), +CUDNN_ATTR_CONVOLUTION_CONV_MODE, +CUDNN_TYPE_CONVOLUTION_MODE, +1, +&m_convDesc.mode); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_convDesc, +status, +"CUDNN_BACKEND_CONVOLUTION_DESCRIPTOR:SetAttributeCUDNN_ATTR_CONVOLUTION_CONV_MODEFailed"); +returnstd::move(m_convDesc); +} + +status=cudnnBackendSetAttribute(m_convDesc.pointer->get_backend_descriptor(), +CUDNN_ATTR_CONVOLUTION_SPATIAL_DIMS, +CUDNN_TYPE_INT64, +1, +&m_convDesc.nDims); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_convDesc, +status, +"CUDNN_BACKEND_CONVOLUTION_DESCRIPTOR:SetAttributeCUDNN_ATTR_CONVOLUTION_SPATIAL_DIMSFailed"); +returnstd::move(m_convDesc); +} + +status=cudnnBackendSetAttribute(m_convDesc.pointer->get_backend_descriptor(), +CUDNN_ATTR_CONVOLUTION_PRE_PADDINGS, +CUDNN_TYPE_INT64, +m_convDesc.nDims, +m_convDesc.padLower); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_convDesc, +status, +"CUDNN_BACKEND_CONVOLUTION_DESCRIPTOR:SetAttributeCUDNN_ATTR_CONVOLUTION_PRE_PADDINGSFailed"); +returnstd::move(m_convDesc); +} + +status=cudnnBackendSetAttribute(m_convDesc.pointer->get_backend_descriptor(), +CUDNN_ATTR_CONVOLUTION_POST_PADDINGS, +CUDNN_TYPE_INT64, +m_convDesc.nDims, +m_convDesc.padUpper); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_convDesc, +status, +"CUDNN_BACKEND_CONVOLUTION_DESCRIPTOR:SetAttributeCUDNN_ATTR_CONVOLUTION_POST_PADDINGSFailed"); +returnstd::move(m_convDesc); +} + +status=cudnnBackendSetAttribute(m_convDesc.pointer->get_backend_descriptor(), +CUDNN_ATTR_CONVOLUTION_DILATIONS, +CUDNN_TYPE_INT64, +m_convDesc.nDims, +m_convDesc.dilation); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_convDesc, +status, +"CUDNN_BACKEND_CONVOLUTION_DESCRIPTOR:SetAttributeCUDNN_ATTR_CONVOLUTION_DILATIONSFailed"); +returnstd::move(m_convDesc); +} + +status=cudnnBackendSetAttribute(m_convDesc.pointer->get_backend_descriptor(), +CUDNN_ATTR_CONVOLUTION_FILTER_STRIDES, +CUDNN_TYPE_INT64, +m_convDesc.nDims, +m_convDesc.stride); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_convDesc, +status, +"CUDNN_BACKEND_CONVOLUTION_DESCRIPTOR:SetAttributeCUDNN_ATTR_CONVOLUTION_FILTER_STRIDESFailed"); +returnstd::move(m_convDesc); +} + +//Finalizingthedescriptor +status=cudnnBackendFinalize(m_convDesc.pointer->get_backend_descriptor()); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_convDesc,status,"CUDNN_BACKEND_CONVOLUTION_DESCRIPTOR:cudnnFinalizeFailed"); +returnstd::move(m_convDesc); +} + +returnstd::move(m_convDesc); +} + +explicitConvDescBuilder_v8()=default; +~ConvDescBuilder_v8()=default; +ConvDescBuilder_v8(ConvDescBuilder_v8&&)=delete; +ConvDescBuilder_v8(ConvDescBuilder_v8const&)=delete; +ConvDescBuilder_v8& +operator=(ConvDescBuilder_v8const&)=delete; + +private: +ConvDesc_v8m_convDesc; +}; +} + + + + diff --git a/docs/xml/d1/df7/group__OperationGraphQuery.xml b/docs/xml/d1/df7/group__OperationGraphQuery.xml new file mode 100644 index 000000000..fec9cabf6 --- /dev/null +++ b/docs/xml/d1/df7/group__OperationGraphQuery.xml @@ -0,0 +1,32 @@ + + + + OperationGraphQuery + OperationGraphQuery + + + auto + auto cudnn_frontend::OperationGraph_v8::getEngineCount + (void) const -> int64_t + getEngineCount + + void + + +Query the total count of the engines for the Operation Set. + + + + + + cudnn_frontend::BackendDescriptor::pointer + cudnn_frontend::set_error_and_throw_exception + cudnn_frontend::BackendDescriptor::status + + + + + +Query individual property of OperationGraph_v8 class + + diff --git a/docs/xml/d2/d3b/cudnn__frontend__get__plan_8h.xml b/docs/xml/d2/d3b/cudnn__frontend__get__plan_8h.xml new file mode 100644 index 000000000..50dbbc7f6 --- /dev/null +++ b/docs/xml/d2/d3b/cudnn__frontend__get__plan_8h.xml @@ -0,0 +1,425 @@ + + + + cudnn_frontend_get_plan.h + cudnn_frontend_EngineConfigGenerator.h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + cudnn_frontend + + + + + +/* +*Copyright(c)2021,NVIDIACORPORATION.Allrightsreserved. +* +*Permissionisherebygranted,freeofcharge,toanypersonobtaininga +*copyofthissoftwareandassociateddocumentationfiles(the"Software"), +*todealintheSoftwarewithoutrestriction,includingwithoutlimitation +*therightstouse,copy,modify,merge,publish,distribute,sublicense, +*and/orsellcopiesoftheSoftware,andtopermitpersonstowhomthe +*Softwareisfurnishedtodoso,subjecttothefollowingconditions: +* +*Theabovecopyrightnoticeandthispermissionnoticeshallbeincludedin +*allcopiesorsubstantialportionsoftheSoftware. +* +*THESOFTWAREISPROVIDED"ASIS",WITHOUTWARRANTYOFANYKIND,EXPRESSOR +*IMPLIED,INCLUDINGBUTNOTLIMITEDTOTHEWARRANTIESOFMERCHANTABILITY, +*FITNESSFORAPARTICULARPURPOSEANDNONINFRINGEMENT.INNOEVENTSHALL +*THEAUTHORSORCOPYRIGHTHOLDERSBELIABLEFORANYCLAIM,DAMAGESOROTHER +*LIABILITY,WHETHERINANACTIONOFCONTRACT,TORTOROTHERWISE,ARISING +*FROM,OUTOFORINCONNECTIONWITHTHESOFTWAREORTHEUSEOROTHER +*DEALINGSINTHESOFTWARE. +*/ + +#pragmaonce + +#include<cudnn_frontend_EngineConfigGenerator.h> + +namespacecudnn_frontend{ + +auto +EngineConfigGenerator::cudnnGetPlan(cudnnHandle_thandle,OperationGraph&&opGraph,Predicatepred) +->executionPlans_t{ +//Creatingasetofexecutionplansthataresupported. +executionPlans_tplans; +for(auto&engine_config:generate_engine_config(opGraph)){ +#ifndefNV_CUDNN_DISABLE_EXCEPTION +try{ +#endif +plans.push_back(ExecutionPlanBuilder().setHandle(handle).setEngineConfig(engine_config).build()); +#ifndefNV_CUDNN_DISABLE_EXCEPTION +}catch(cudnnExceptione){ +continue; +} +#endif +} +returnfilter(pred,plans); +} +} + + + + diff --git a/docs/xml/d2/db5/group__PointWiseDescBuilder__v8.xml b/docs/xml/d2/db5/group__PointWiseDescBuilder__v8.xml new file mode 100644 index 000000000..af291ba6b --- /dev/null +++ b/docs/xml/d2/db5/group__PointWiseDescBuilder__v8.xml @@ -0,0 +1,85 @@ + + + + PointWiseDescBuilder_v8 + PointWiseDescBuilder_v8 + + + auto + auto cudnn_frontend::PointWiseDescBuilder_v8::setMathPrecision + (cudnnDataType_t data_type_) -> PointWiseDescBuilder_v8 & + setMathPrecision + + cudnnDataType_t + data_type_ + + +Set Math Precision Data Type for the Convolution Operation. + + + + + + + + auto + auto cudnn_frontend::PointWiseDescBuilder_v8::setClipping + (double l, double u) -> PointWiseDescBuilder_v8 & + setClipping + + double + l + + + double + u + + +Set upper and lower limits for the RELU activation. + + + + + + + + auto + auto cudnn_frontend::PointWiseDescBuilder_v8::setMode + (cudnnPointwiseMode_t mode_) -> PointWiseDescBuilder_v8 & + setMode + + cudnnPointwiseMode_t + mode_ + + +Set upper and lower limits for the RELU activation. + + + + + + + + auto + auto cudnn_frontend::PointWiseDescBuilder_v8::setMode + (cudnnNanPropagation_t nan_mode_) -> PointWiseDescBuilder_v8 & + setMode + + cudnnNanPropagation_t + nan_mode_ + + +Set NaN propagation mode. + + + + + + + + + + +Set individual property of PointWiseDesc_v8 class + + diff --git a/docs/xml/d2/dbb/group__EngineConfigBuilder__v8.xml b/docs/xml/d2/dbb/group__EngineConfigBuilder__v8.xml new file mode 100644 index 000000000..f13f4dbe2 --- /dev/null +++ b/docs/xml/d2/dbb/group__EngineConfigBuilder__v8.xml @@ -0,0 +1,33 @@ + + + + EngineConfigBuilder_v8 + EngineConfigBuilder_v8 + + + auto + auto cudnn_frontend::EngineConfigBuilder_v8::setEngine + (Engine_v8 const &engine_) -> EngineConfigBuilder_v8 & + setEngine + + Engine_v8 const & + engine_ + + +Set engine for the EngineConfig_v8. + + + + + + cudnn_frontend::set_error_and_throw_exception + cudnn_frontend::BackendDescriptor::status + cudnn_frontend::EngineFallbackListBuilder_v8::build + + + + + +Set individual property of EngineConfig_v8 class + + diff --git a/docs/xml/d2/df5/group__OperationGraphBuilder__v8.xml b/docs/xml/d2/df5/group__OperationGraphBuilder__v8.xml new file mode 100644 index 000000000..d6d4e50d9 --- /dev/null +++ b/docs/xml/d2/df5/group__OperationGraphBuilder__v8.xml @@ -0,0 +1,51 @@ + + + + OperationGraphBuilder_v8 + OperationGraphBuilder_v8 + + + auto + auto cudnn_frontend::OperationGraphBuilder_v8::setHandle + (cudnnHandle_t handle_) -> OperationGraphBuilder_v8 & + setHandle + + cudnnHandle_t + handle_ + + +Set cudnnHandle for the operations. + + + + + + + + auto + auto cudnn_frontend::OperationGraphBuilder_v8::setOperationGraph + (int64_t numOps_, Operation_v8 const **ops_) -> OperationGraphBuilder_v8 & + setOperationGraph + + int64_t + numOps_ + + + Operation_v8 const ** + ops_ + + +Set numoperations and the operations. + + + + + + + + + + +Set individual property of OperationGraph_v8 class + + diff --git a/docs/xml/d3/d09/group__EngineBuilder__v8.xml b/docs/xml/d3/d09/group__EngineBuilder__v8.xml new file mode 100644 index 000000000..18af49673 --- /dev/null +++ b/docs/xml/d3/d09/group__EngineBuilder__v8.xml @@ -0,0 +1,65 @@ + + + + EngineBuilder_v8 + EngineBuilder_v8 + + + auto + auto cudnn_frontend::EngineBuilder_v8::setOperationGraph + (OperationGraph_v8 const &opGraph_) -> EngineBuilder_v8 & + setOperationGraph + + OperationGraph_v8 const & + opGraph_ + + +Set operationGraph for the engine. + + + + + + + + auto + auto cudnn_frontend::EngineBuilder_v8::setOperationGraph + (ManagedOpaqueDescriptor desc_) -> EngineBuilder_v8 & + setOperationGraph + + ManagedOpaqueDescriptor + desc_ + + +Set operationGraph for the engine. + + + + + + + + auto + auto cudnn_frontend::EngineBuilder_v8::setGlobalEngineIdx + (int64_t idx_) -> EngineBuilder_v8 & + setGlobalEngineIdx + + int64_t + idx_ + + +Set engine index for the engine. + + + + + + cudnn_frontend::EngineFallbackListBuilder_v8::build + + + + + +Set individual property of Engine_v8 class + + diff --git a/docs/xml/d3/d3c/group__TensorBuilder__v8.xml b/docs/xml/d3/d3c/group__TensorBuilder__v8.xml new file mode 100644 index 000000000..b950c27c3 --- /dev/null +++ b/docs/xml/d3/d3c/group__TensorBuilder__v8.xml @@ -0,0 +1,124 @@ + + + + TensorBuilder_v8 + TensorBuilder_v8 + + + auto + auto cudnn_frontend::TensorBuilder_v8::setDataType + (cudnnDataType_t data_type_) -> TensorBuilder_v8 & + setDataType + + cudnnDataType_t + data_type_ + + +Set Datatype for the Tensor_v8. + + + + + + + + auto + auto cudnn_frontend::TensorBuilder_v8::setDim + (int64_t ndim, int64_t const *dim) -> TensorBuilder_v8 & + setDim + + int64_t + ndim + + + int64_t const * + dim + + +Set Dimensions of the tensor. + + + + + + + + auto + auto cudnn_frontend::TensorBuilder_v8::setStrides + (int64_t ndim, int64_t const *strides) -> TensorBuilder_v8 & + setStrides + + int64_t + ndim + + + int64_t const * + strides + + +Set Strides of the tensor. + + + + + + + + auto + auto cudnn_frontend::TensorBuilder_v8::setId + (int64_t id_) -> TensorBuilder_v8 & + setId + + int64_t + id_ + + +Set Unique Id of the tensor. + + + + + + + + auto + auto cudnn_frontend::TensorBuilder_v8::setAlignment + (int64_t alignment_) -> TensorBuilder_v8 & + setAlignment + + int64_t + alignment_ + + +Set Alignment of the tensor. + + + + + + + + auto + auto cudnn_frontend::TensorBuilder_v8::setVirtual + (bool virtual_=true) -> TensorBuilder_v8 & + setVirtual + + bool + virtual_ + true + + +Set Alignment of the tensor. + + + + + + + + + + +Set individual property of Tensor_v8 class + + diff --git a/docs/xml/d3/d6b/cudnn__frontend__find__plan_8h.xml b/docs/xml/d3/d6b/cudnn__frontend__find__plan_8h.xml new file mode 100644 index 000000000..7ba5b9b87 --- /dev/null +++ b/docs/xml/d3/d6b/cudnn__frontend__find__plan_8h.xml @@ -0,0 +1,497 @@ + + + + cudnn_frontend_find_plan.h + cudnn_frontend_EngineConfigGenerator.h + map + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + cudnn_frontend + + + + + +/* +*Copyright(c)2021,NVIDIACORPORATION.Allrightsreserved. +* +*Permissionisherebygranted,freeofcharge,toanypersonobtaininga +*copyofthissoftwareandassociateddocumentationfiles(the"Software"), +*todealintheSoftwarewithoutrestriction,includingwithoutlimitation +*therightstouse,copy,modify,merge,publish,distribute,sublicense, +*and/orsellcopiesoftheSoftware,andtopermitpersonstowhomthe +*Softwareisfurnishedtodoso,subjecttothefollowingconditions: +* +*Theabovecopyrightnoticeandthispermissionnoticeshallbeincludedin +*allcopiesorsubstantialportionsoftheSoftware. +* +*THESOFTWAREISPROVIDED"ASIS",WITHOUTWARRANTYOFANYKIND,EXPRESSOR +*IMPLIED,INCLUDINGBUTNOTLIMITEDTOTHEWARRANTIESOFMERCHANTABILITY, +*FITNESSFORAPARTICULARPURPOSEANDNONINFRINGEMENT.INNOEVENTSHALL +*THEAUTHORSORCOPYRIGHTHOLDERSBELIABLEFORANYCLAIM,DAMAGESOROTHER +*LIABILITY,WHETHERINANACTIONOFCONTRACT,TORTOROTHERWISE,ARISING +*FROM,OUTOFORINCONNECTIONWITHTHESOFTWAREORTHEUSEOROTHER +*DEALINGSINTHESOFTWARE. +*/ + +#pragmaonce + +#include<cudnn_frontend_EngineConfigGenerator.h> +#include<map> + +namespacecudnn_frontend{ + +template<CudnnFindSamplingTechniquesamplingTechnique> +auto +time_sorted_plan(cudnnHandle_thandle,executionPlans_tplans,VariantPack&variantPack)->executionOptions_t{ +executionOptions_ttime_sorted_plans; +std::map<float,ExecutionPlan&>timed_execution_plans; + +constintmaxIterCount= +(samplingTechnique==CudnnFindSamplingTechnique::CUDNN_FIND_SAMPLE_ONCE) +?1 +:(samplingTechnique==CudnnFindSamplingTechnique::CUDNN_FIND_SAMPLE_MEDIAN_OF_THREE)?3:100; +constfloatthreshhold=0.95f; + +cudaEvent_tstart,stop; +cudaEventCreate(&start); +cudaEventCreate(&stop); +cudaDeviceSynchronize(); + +for(auto&plan:plans){ +floattime_ms=0.0f; +floatfinal_time_ms=0.0f; +floatmin_time_ms=std::numeric_limits<float>::max(); + +//Warm-uprun +::cudnnBackendExecute(handle,plan.get_raw_desc(),variantPack.get_raw_desc()); +cudaDeviceSynchronize(); + +for(inti=0;i<maxIterCount;i++){ +cudaEventRecord(start); + +::cudnnBackendExecute(handle,plan.get_raw_desc(),variantPack.get_raw_desc()); + +cudaEventRecord(stop); +cudaEventSynchronize(stop); +cudaEventElapsedTime(&time_ms,start,stop); + +if(samplingTechnique==CudnnFindSamplingTechnique::CUDNN_FIND_SAMPLE_TILL_STABLE){ +final_time_ms=std::min(min_time_ms,time_ms); +if(time_ms/min_time_ms<threshhold){ +min_time_ms=final_time_ms; +}else{ +break; +} +}else{ +final_time_ms=i==(maxIterCount/2)?time_ms:final_time_ms; +} +} +timed_execution_plans.insert({final_time_ms,plan}); +} +std::transform( +timed_execution_plans.begin(), +timed_execution_plans.end(), +std::back_inserter(time_sorted_plans), +[](conststd::map<float,cudnn_frontend::ExecutionPlan&>::value_type&pair)->structexecutionOption{ +return{std::move(pair.second),pair.first}; +}); + +cudaEventDestroy(start); +cudaEventDestroy(stop); + +returntime_sorted_plans; +} + +template<CudnnFindSamplingTechniquesamplingTechnique> +auto +EngineConfigGenerator::cudnnFindPlan(cudnnHandle_thandle, +cudnn_frontend::OperationGraph&&opGraph, +cudnn_frontend::VariantPack&variantPack, +Predicatepred)->executionOptions_t{ +executionPlans_tplans; +for(auto&engine_config:generate_engine_config(opGraph)){ +#ifndefNV_CUDNN_DISABLE_EXCEPTION +try{ +#endif +plans.push_back( +cudnn_frontend::ExecutionPlanBuilder().setHandle(handle).setEngineConfig(engine_config).build()); +#ifndefNV_CUDNN_DISABLE_EXCEPTION +}catch(cudnnExceptione){ +continue; +} +#endif +} +returntime_sorted_plan<samplingTechnique>(handle,filter(pred,plans),variantPack); +} +} + + + + diff --git a/docs/xml/d3/d92/group__OperationBuilder__v8.xml b/docs/xml/d3/d92/group__OperationBuilder__v8.xml new file mode 100644 index 000000000..26e2bb4b3 --- /dev/null +++ b/docs/xml/d3/d92/group__OperationBuilder__v8.xml @@ -0,0 +1,434 @@ + + + + OperationBuilder_v8 + OperationBuilder_v8 + + + auto + auto cudnn_frontend::OperationBuilder_v8::setxDesc + (ManagedOpaqueDescriptor const &raw_tensor) -> OperationBuilder_v8 & + setxDesc + + ManagedOpaqueDescriptor const & + raw_tensor + + + + + + + + + cudnn_frontend::Operation_v8::xdesc + + + auto + auto cudnn_frontend::OperationBuilder_v8::setxDesc + (Tensor_v8 const &tensor) -> OperationBuilder_v8 & + setxDesc + + Tensor_v8 const & + tensor + + + + + + + + + cudnn_frontend::Operation_v8::xdesc + + + auto + auto cudnn_frontend::OperationBuilder_v8::setbDesc + (Tensor_v8 const &tensor) -> OperationBuilder_v8 & + setbDesc + + Tensor_v8 const & + tensor + + + + + + + + + cudnn_frontend::Operation_v8::bdesc + cudnn_frontend::set_error_and_throw_exception + + + auto + auto cudnn_frontend::OperationBuilder_v8::setyDesc + (Tensor_v8 const &tensor) -> OperationBuilder_v8 & + setyDesc + + Tensor_v8 const & + tensor + + + + + + + + + cudnn_frontend::Operation_v8::ydesc + + + auto + auto cudnn_frontend::OperationBuilder_v8::setwDesc + (Tensor_v8 const &tensor) -> OperationBuilder_v8 & + setwDesc + + Tensor_v8 const & + tensor + + + + + + + + + cudnn_frontend::set_error_and_throw_exception + cudnn_frontend::Operation_v8::wdesc + + + auto + auto cudnn_frontend::OperationBuilder_v8::setdyDesc + (ManagedOpaqueDescriptor const &raw_tensor) -> OperationBuilder_v8 & + setdyDesc + + ManagedOpaqueDescriptor const & + raw_tensor + + + + + + + + + cudnn_frontend::Operation_v8::dydesc + + + auto + auto cudnn_frontend::OperationBuilder_v8::setdyDesc + (Tensor_v8 const &tensor) -> OperationBuilder_v8 & + setdyDesc + + Tensor_v8 const & + tensor + + + + + + + + + cudnn_frontend::Operation_v8::dydesc + + + auto + auto cudnn_frontend::OperationBuilder_v8::setdxDesc + (Tensor_v8 const &tensor) -> OperationBuilder_v8 & + setdxDesc + + Tensor_v8 const & + tensor + + + + + + + + + cudnn_frontend::Operation_v8::dxdesc + + + auto + auto cudnn_frontend::OperationBuilder_v8::setdwDesc + (Tensor_v8 const &tensor) -> OperationBuilder_v8 & + setdwDesc + + Tensor_v8 const & + tensor + + + + + + + + + cudnn_frontend::Operation_v8::dwdesc + + + auto + auto cudnn_frontend::OperationBuilder_v8::setcDesc + (ConvDesc_v8 const &conv) -> OperationBuilder_v8 & + setcDesc + + ConvDesc_v8 const & + conv + + + + + + + + + cudnn_frontend::Operation_v8::cdesc + cudnn_frontend::set_error_and_throw_exception + + + auto + auto cudnn_frontend::OperationBuilder_v8::setaMatDesc + (Tensor_v8 const &tensor) -> OperationBuilder_v8 & + setaMatDesc + + Tensor_v8 const & + tensor + + + + + + + + + cudnn_frontend::Operation_v8::amatdesc + cudnn_frontend::set_error_and_throw_exception + + + auto + auto cudnn_frontend::OperationBuilder_v8::setbMatDesc + (Tensor_v8 const &tensor) -> OperationBuilder_v8 & + setbMatDesc + + Tensor_v8 const & + tensor + + + + + + + + + cudnn_frontend::Operation_v8::bmatdesc + cudnn_frontend::set_error_and_throw_exception + + + auto + auto cudnn_frontend::OperationBuilder_v8::setcMatDesc + (Tensor_v8 const &tensor) -> OperationBuilder_v8 & + setcMatDesc + + Tensor_v8 const & + tensor + + + + + + + + + cudnn_frontend::Operation_v8::cmatdesc + cudnn_frontend::set_error_and_throw_exception + + + auto + auto cudnn_frontend::OperationBuilder_v8::setmatmulDesc + (MatMulDesc_v8 const &matmulDesc) -> OperationBuilder_v8 & + setmatmulDesc + + MatMulDesc_v8 const & + matmulDesc + + + + + + + + + cudnn_frontend::Operation_v8::matmuldesc + cudnn_frontend::set_error_and_throw_exception + + + auto + auto cudnn_frontend::OperationBuilder_v8::setpwDesc + (PointWiseDesc_v8 const &pointWiseDesc) -> OperationBuilder_v8 & + setpwDesc + + PointWiseDesc_v8 const & + pointWiseDesc + + + + + + + + + cudnn_frontend::Operation_v8::is_pointwise_activation_bwd_op + cudnn_frontend::Operation_v8::is_pointwise_activation_fwd_op + cudnn_frontend::Operation_v8::is_pointwise_math_op + cudnn_frontend::Operation_v8::pointwise_mode + cudnn_frontend::Operation_v8::pointwise_port_count + cudnn_frontend::Operation_v8::pwdesc + cudnn_frontend::set_error_and_throw_exception + + + auto + auto cudnn_frontend::OperationBuilder_v8::setAlpha + (float alpha) -> OperationBuilder_v8 & + setAlpha + + float + alpha + + + + + + + + + cudnn_frontend::Operation_v8::alpha_d + cudnn_frontend::Operation_v8::alpha_s + cudnn_frontend::Operation_v8::alphabetaType + + + auto + auto cudnn_frontend::OperationBuilder_v8::setAlpha + (double alpha) -> OperationBuilder_v8 & + setAlpha + + double + alpha + + + + + + + + + cudnn_frontend::Operation_v8::alpha_d + cudnn_frontend::Operation_v8::alpha_s + cudnn_frontend::Operation_v8::alphabetaType + + + auto + auto cudnn_frontend::OperationBuilder_v8::setAlpha2 + (float alpha) -> OperationBuilder_v8 & + setAlpha2 + + float + alpha + + + + + + + + + cudnn_frontend::Operation_v8::alpha2_d + cudnn_frontend::Operation_v8::alpha2_s + cudnn_frontend::Operation_v8::alphabetaType + + + auto + auto cudnn_frontend::OperationBuilder_v8::setAlpha2 + (double alpha) -> OperationBuilder_v8 & + setAlpha2 + + double + alpha + + + + + + + + + cudnn_frontend::Operation_v8::alpha2_d + cudnn_frontend::Operation_v8::alpha2_s + cudnn_frontend::Operation_v8::alphabetaType + + + auto + auto cudnn_frontend::OperationBuilder_v8::setBeta + (float beta) -> OperationBuilder_v8 & + setBeta + + float + beta + + + + + + + + + cudnn_frontend::Operation_v8::alphabetaType + cudnn_frontend::Operation_v8::beta_d + cudnn_frontend::Operation_v8::beta_s + + + auto + auto cudnn_frontend::OperationBuilder_v8::setBeta + (double beta) -> OperationBuilder_v8 & + setBeta + + double + beta + + + + + + + + + cudnn_frontend::Operation_v8::alphabetaType + cudnn_frontend::Operation_v8::beta_d + cudnn_frontend::Operation_v8::beta_s + + + + cudnn_frontend::OperationBuilder_v8::OperationBuilder_v8 + (cudnnBackendDescriptorType_t mode) + OperationBuilder_v8 + + cudnnBackendDescriptorType_t + mode + + + + + + + + + cudnn_frontend::Operation_v8::op_mode + + + + + +Set individual property of Operation_v8 class + + diff --git a/docs/xml/d3/d98/cudnn__frontend__Tensor_8h.xml b/docs/xml/d3/d98/cudnn__frontend__Tensor_8h.xml new file mode 100644 index 000000000..da7787d1a --- /dev/null +++ b/docs/xml/d3/d98/cudnn__frontend__Tensor_8h.xml @@ -0,0 +1,418 @@ + + + + cudnn_frontend_Tensor.h + algorithm + array + functional + memory + sstream + utility + cudnn_frontend_utils.h + cudnn_frontend_Operation.h + cudnn_frontend.h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + cudnn_frontend::Tensor_v8 + cudnn_frontend::TensorBuilder_v8 + cudnn_frontend + + + + + +/* +*Copyright(c)2021,NVIDIACORPORATION.Allrightsreserved. +* +*Permissionisherebygranted,freeofcharge,toanypersonobtaininga +*copyofthissoftwareandassociateddocumentationfiles(the"Software"), +*todealintheSoftwarewithoutrestriction,includingwithoutlimitation +*therightstouse,copy,modify,merge,publish,distribute,sublicense, +*and/orsellcopiesoftheSoftware,andtopermitpersonstowhomthe +*Softwareisfurnishedtodoso,subjecttothefollowingconditions: +* +*Theabovecopyrightnoticeandthispermissionnoticeshallbeincludedin +*allcopiesorsubstantialportionsoftheSoftware. +* +*THESOFTWAREISPROVIDED"ASIS",WITHOUTWARRANTYOFANYKIND,EXPRESSOR +*IMPLIED,INCLUDINGBUTNOTLIMITEDTOTHEWARRANTIESOFMERCHANTABILITY, +*FITNESSFORAPARTICULARPURPOSEANDNONINFRINGEMENT.INNOEVENTSHALL +*THEAUTHORSORCOPYRIGHTHOLDERSBELIABLEFORANYCLAIM,DAMAGESOROTHER +*LIABILITY,WHETHERINANACTIONOFCONTRACT,TORTOROTHERWISE,ARISING +*FROM,OUTOFORINCONNECTIONWITHTHESOFTWAREORTHEUSEOROTHER +*DEALINGSINTHESOFTWARE. +*/ + +#pragmaonce + +#include<algorithm> +#include<array> +#include<functional> +#include<memory> +#include<sstream> +#include<utility> + +#include"cudnn_frontend_utils.h" + +namespacecudnn_frontend{ + +classTensor_v8:publicBackendDescriptor{ +public: +friendclassTensorBuilder_v8; +std::string +describe()constoverride{ +std::stringstreamss; +charsep=''; +ss<<"CUDNN_BACKEND_TENSOR_DESCRIPTOR:" +<<"Datatype:"<<std::to_string(data_type)<<"Id:"<<std::to_string(id) +<<"Alignment:"<<std::to_string(alignment)<<"nDims"<<nDims; +ss<<"Dim["; +std::for_each(std::begin(btensor_dimA),std::end(btensor_dimA),[&ss,sep](intx)mutable{ +ss<<sep<<x; +sep=','; +}); +ss<<"]Str["; +std::for_each(std::begin(btensor_strA),std::end(btensor_strA),[&ss,sep](intx)mutable{ +ss<<sep<<x; +sep=','; +}); +ss<<"]"; +returnss.str(); +} + +Tensor_v8(Tensor_v8&&from) +:BackendDescriptor(from.get_desc(),from.get_status(),from.get_error()), +data_type(from.data_type), +id(from.id), +alignment(from.alignment), +nDims(from.nDims), +isVirtual(from.isVirtual){ +std::copy(std::begin(from.btensor_dimA),std::end(from.btensor_dimA),btensor_dimA); +std::copy(std::begin(from.btensor_strA),std::end(from.btensor_strA),btensor_strA); +} + +~Tensor_v8()=default; + +private: +Tensor_v8()=default; +Tensor_v8(Tensor_v8const&)=delete; +Tensor_v8& +operator=(Tensor_v8const&)=delete; + +cudnnDataType_tdata_type=CUDNN_DATA_FLOAT; +int64_tbtensor_dimA[CUDNN_DIM_MAX+1]={-1}; +int64_tbtensor_strA[CUDNN_DIM_MAX+1]={-1}; +int64_tid=-1; +int64_talignment=-1; +int64_tnDims=-1; +boolisVirtual=false; +}; + +classTensorBuilder_v8{ +public: +auto +setDataType(cudnnDataType_tdata_type_)->TensorBuilder_v8&{ +m_tensor.data_type=data_type_; +return*this; +} +auto +setDim(int64_tndim,int64_tconst*dim)->TensorBuilder_v8&{ +std::copy((dim),dim+ndim,m_tensor.btensor_dimA); +m_tensor.nDims=ndim; +return*this; +} +auto +setStrides(int64_tndim,int64_tconst*strides)->TensorBuilder_v8&{ +std::copy(strides,strides+ndim,m_tensor.btensor_strA); +return*this; +} +auto +setId(int64_tid_)->TensorBuilder_v8&{ +m_tensor.id=id_; +return*this; +} +auto +setAlignment(int64_talignment_)->TensorBuilder_v8&{ +m_tensor.alignment=alignment_; +return*this; +} +auto +setVirtual(boolvirtual_=true)->TensorBuilder_v8&{ +m_tensor.isVirtual=virtual_; +return*this; +} +Tensor_v8&& +build(){ +//Sanitycheckifnon-defaultfieldshavebeensetcorrectly. +if(m_tensor.alignment<=0){ +set_error_and_throw_exception( +&m_tensor, +CUDNN_STATUS_BAD_PARAM, +"CUDNN_BACKEND_TENSOR_DESCRIPTOR:CheckandSettheCUDNN_ATTR_TENSOR_BYTE_ALIGNMENTfield"); +returnstd::move(m_tensor); +} +if(m_tensor.id<=0){ +set_error_and_throw_exception( +&m_tensor, +CUDNN_STATUS_BAD_PARAM, +"CUDNN_BACKEND_TENSOR_DESCRIPTOR:CheckandSettheCUDNN_ATTR_TENSOR_UNIQUE_IDasavalidvalue"); +returnstd::move(m_tensor); +} +if(m_tensor.btensor_strA[0]<=0){ +set_error_and_throw_exception( +&m_tensor, +CUDNN_STATUS_BAD_PARAM, +"CUDNN_BACKEND_TENSOR_DESCRIPTOR:CheckandSettheCUDNN_ATTR_TENSOR_STRIDESCorrectly"); +returnstd::move(m_tensor); +} +if(m_tensor.btensor_dimA[0]<=0){ +set_error_and_throw_exception( +&m_tensor, +CUDNN_STATUS_BAD_PARAM, +"CUDNN_BACKEND_TENSOR_DESCRIPTOR:CheckandSettheCUDNN_ATTR_TENSOR_DIMENSIONSCorrectly"); +returnstd::move(m_tensor); +} +if(m_tensor.pointer!=nullptr){ +set_error_and_throw_exception(&m_tensor, +CUDNN_STATUS_BAD_PARAM, +"CUDNN_BACKEND_TENSOR_DESCRIPTOR:Badtensorcreated.Thetensoralready" +"seemstobepointingtosomething"); +returnstd::move(m_tensor); +} + +//Createadescriptor.Memoryallocationhappenshere. +autostatus=m_tensor.initialize_managed_backend_pointer(CUDNN_BACKEND_TENSOR_DESCRIPTOR); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_tensor,status,"CUDNN_BACKEND_TENSOR_DESCRIPTOR:cudnnCreateDescriptorFailed"); +returnstd::move(m_tensor); +} + +//OnceCreatedletssetthedescriptorparameters. +status=cudnnBackendSetAttribute(m_tensor.pointer->get_backend_descriptor(), +CUDNN_ATTR_TENSOR_DATA_TYPE, +CUDNN_TYPE_DATA_TYPE, +1, +&m_tensor.data_type); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_tensor,status,"CUDNN_BACKEND_TENSOR_DESCRIPTOR:SetAttributeCUDNN_ATTR_TENSOR_DATA_TYPEFailed"); +returnstd::move(m_tensor); +} +status=cudnnBackendSetAttribute(m_tensor.pointer->get_backend_descriptor(), +CUDNN_ATTR_TENSOR_DIMENSIONS, +CUDNN_TYPE_INT64, +m_tensor.nDims, +m_tensor.btensor_dimA); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_tensor,status,"CUDNN_BACKEND_TENSOR_DESCRIPTOR:SetAttributeCUDNN_ATTR_TENSOR_DIMENSIONSFailed"); +returnstd::move(m_tensor); +} +status=cudnnBackendSetAttribute(m_tensor.pointer->get_backend_descriptor(), +CUDNN_ATTR_TENSOR_STRIDES, +CUDNN_TYPE_INT64, +m_tensor.nDims, +m_tensor.btensor_strA); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_tensor,status,"CUDNN_BACKEND_TENSOR_DESCRIPTOR:SetAttributeCUDNN_ATTR_TENSOR_STRIDESFailed"); +returnstd::move(m_tensor); +} +status=cudnnBackendSetAttribute( +m_tensor.pointer->get_backend_descriptor(),CUDNN_ATTR_TENSOR_UNIQUE_ID,CUDNN_TYPE_INT64,1,&m_tensor.id); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_tensor,status,"CUDNN_BACKEND_TENSOR_DESCRIPTOR:SetAttributeCUDNN_ATTR_TENSOR_UNIQUE_IDFailed"); +returnstd::move(m_tensor); +} +cudnnBackendSetAttribute(m_tensor.pointer->get_backend_descriptor(), +CUDNN_ATTR_TENSOR_BYTE_ALIGNMENT, +CUDNN_TYPE_INT64, +1, +&m_tensor.alignment); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_tensor, +status, +"CUDNN_BACKEND_TENSOR_DESCRIPTOR:SetAttributeCUDNN_ATTR_TENSOR_BYTE_ALIGNMENTFailed"); +returnstd::move(m_tensor); +} +if(m_tensor.isVirtual){ +cudnnBackendSetAttribute(m_tensor.pointer->get_backend_descriptor(), +CUDNN_ATTR_TENSOR_IS_VIRTUAL, +CUDNN_TYPE_BOOLEAN, +1, +&m_tensor.isVirtual); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_tensor, +status, +"CUDNN_BACKEND_TENSOR_DESCRIPTOR:SetAttributeCUDNN_ATTR_TENSOR_BYTE_ALIGNMENTFailed"); +returnstd::move(m_tensor); +} +} + +//Finalizingthedescriptor +status=cudnnBackendFinalize(m_tensor.pointer->get_backend_descriptor()); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception(&m_tensor,status,"CUDNN_BACKEND_TENSOR_DESCRIPTORcudnnFinalizefailed"); +returnstd::move(m_tensor); +} +returnstd::move(m_tensor); +} + +explicitTensorBuilder_v8()=default; +~TensorBuilder_v8()=default; +TensorBuilder_v8(TensorBuilder_v8&&)=delete; +TensorBuilder_v8(TensorBuilder_v8const&)=delete; +TensorBuilder_v8& +operator=(TensorBuilder_v8const&)=delete; + +private: +Tensor_v8m_tensor; +}; +} + + + + diff --git a/docs/xml/d3/ddd/group__ConvDescBuilder__v8.xml b/docs/xml/d3/ddd/group__ConvDescBuilder__v8.xml new file mode 100644 index 000000000..e830db453 --- /dev/null +++ b/docs/xml/d3/ddd/group__ConvDescBuilder__v8.xml @@ -0,0 +1,149 @@ + + + + ConvDescBuilder_v8 + ConvDescBuilder_v8 + + + auto + auto cudnn_frontend::ConvDescBuilder_v8::setDataType + (cudnnDataType_t data_type_) -> ConvDescBuilder_v8 & + setDataType + + cudnnDataType_t + data_type_ + + +Set Datatype for the Convolution Operation. + + + + + + + + auto + auto cudnn_frontend::ConvDescBuilder_v8::setPrePadding + (int64_t ndims, int64_t const *padding) -> ConvDescBuilder_v8 & + setPrePadding + + int64_t + ndims + + + int64_t const * + padding + + +Set Padding Lower of the convDesc. + + + + + + + + auto + auto cudnn_frontend::ConvDescBuilder_v8::setPostPadding + (int64_t ndims, int64_t const *padding) -> ConvDescBuilder_v8 & + setPostPadding + + int64_t + ndims + + + int64_t const * + padding + + +Set Padding Upper of the convDesc. + + + + + + + + auto + auto cudnn_frontend::ConvDescBuilder_v8::setDilation + (int64_t ndims, int64_t const *dilation) -> ConvDescBuilder_v8 & + setDilation + + int64_t + ndims + + + int64_t const * + dilation + + +Set Dilation of the convDesc. + + + + + + cudnn_frontend::ConvDesc_v8::dilation + + + auto + auto cudnn_frontend::ConvDescBuilder_v8::setStrides + (int64_t ndims, int64_t const *strides) -> ConvDescBuilder_v8 & + setStrides + + int64_t + ndims + + + int64_t const * + strides + + +Set Strides of the convDesc. + + + + + + + + auto + auto cudnn_frontend::ConvDescBuilder_v8::setNDims + (int64_t nDims_) -> ConvDescBuilder_v8 & + setNDims + + int64_t + nDims_ + + +Set Num Spatial Dimensions of the convolution Operation. + + + + + + + + auto + auto cudnn_frontend::ConvDescBuilder_v8::setMathMode + (cudnnConvolutionMode_t mode_) -> ConvDescBuilder_v8 & + setMathMode + + cudnnConvolutionMode_t + mode_ + + +Set Convolution Mode of the convolution Operation. + + + + + + + + + + +Set individual property of ConvDesc_v8 class + + diff --git a/docs/xml/d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.xml b/docs/xml/d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.xml new file mode 100644 index 000000000..9053f1d14 --- /dev/null +++ b/docs/xml/d4/d26/classcudnn__frontend_1_1PointWiseDesc__v8.xml @@ -0,0 +1,401 @@ + + + + cudnn_frontend::PointWiseDesc_v8 + cudnn_frontend::BackendDescriptor + cudnn_frontend_PointWiseDesc.h + + + friend class + friend class PointWiseDescBuilder_v8 + + PointWiseDescBuilder_v8 + + + + + + + + cudnn_frontend::PointWiseDescBuilder_v8::build + + + + + cudnnDataType_t + cudnnDataType_t cudnn_frontend::PointWiseDesc_v8::math_precision + + math_precision + = CUDNN_DATA_FLOAT + + + + + + + + describe + + + cudnnPointwiseMode_t + cudnnPointwiseMode_t cudnn_frontend::PointWiseDesc_v8::mode + + mode + = CUDNN_POINTWISE_ADD + + + + + + + + describe + getPointWiseMode + getPortCount + + + cudnnNanPropagation_t + cudnnNanPropagation_t cudnn_frontend::PointWiseDesc_v8::nan_propagation + + nan_propagation + = CUDNN_NOT_PROPAGATE_NAN + + + + + + + + + + double + double cudnn_frontend::PointWiseDesc_v8::upper_clip + + upper_clip + = std::numeric_limits<double>::max() + + + + + + + + + + double + double cudnn_frontend::PointWiseDesc_v8::lower_clip + + lower_clip + = 0.0 + + + + + + + + + + double + double cudnn_frontend::PointWiseDesc_v8::lower_clip_slope + + lower_clip_slope + = 0.0 + + + + + + + + + + double + double cudnn_frontend::PointWiseDesc_v8::elu_alpha + + elu_alpha + = 1.0 + + + + + + + + + + double + double cudnn_frontend::PointWiseDesc_v8::softplus_beta + + softplus_beta + = 1.0 + + + + + + + + + + double + double cudnn_frontend::PointWiseDesc_v8::swish_beta + + swish_beta + = 1.0 + + + + + + + + + + + + std::string + std::string cudnn_frontend::PointWiseDesc_v8::describe + () const override + describe + describe + +Return a string describing the backend Descriptor. + + + + + + math_precision + mode + + + int64_t + int64_t cudnn_frontend::PointWiseDesc_v8::getPortCount + () const + getPortCount + + + + + + + + mode + + + cudnnPointwiseMode_t + cudnnPointwiseMode_t cudnn_frontend::PointWiseDesc_v8::getPointWiseMode + () const + getPointWiseMode + + + + + + + + mode + + + + cudnn_frontend::PointWiseDesc_v8::PointWiseDesc_v8 + (PointWiseDesc_v8 &&from) + PointWiseDesc_v8 + + PointWiseDesc_v8 && + from + + + + + + + + + operator= + PointWiseDesc_v8 + ~PointWiseDesc_v8 + + + + cudnn_frontend::PointWiseDesc_v8::~PointWiseDesc_v8 + ()=default + ~PointWiseDesc_v8 + + + + + + + + PointWiseDesc_v8 + + + + + + cudnn_frontend::PointWiseDesc_v8::PointWiseDesc_v8 + ()=default + PointWiseDesc_v8 + + + + + + + + PointWiseDesc_v8 + + + + cudnn_frontend::PointWiseDesc_v8::PointWiseDesc_v8 + (PointWiseDesc_v8 const &)=delete + PointWiseDesc_v8 + + PointWiseDesc_v8 const & + + + + + + + + + + + PointWiseDesc_v8 & + PointWiseDesc_v8& cudnn_frontend::PointWiseDesc_v8::operator= + (PointWiseDesc_v8 const &)=delete + operator= + + PointWiseDesc_v8 const & + + + + + + + + + cudnn_frontend::PointWiseDescBuilder_v8::build + PointWiseDesc_v8 + + + + + +PointWiseDesc Descriptor Class This class tells the properties of the PointWise operation Properties: +math_precisionmodenan_propagationupper_cliplower_cliplower_clip_slopeelu_alphasoftplus_betaswish_beta +Use PointWiseDesc_v8 to build this class. Describe returns a string describing the PointWise operation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #err_msg + + + #pointer + + + #status + + + + + + + + + -upper_clip + -swish_beta + -lower_clip_slope + -lower_clip + -elu_alpha + -softplus_beta + + + -nan_propagation + + + -mode + + + -math_precision + + + + + + + + + + + cudnn_frontend::PointWiseDesc_v8BackendDescriptor + cudnn_frontend::PointWiseDesc_v8BackendDescriptor + cudnn_frontend::PointWiseDesc_v8describe + cudnn_frontend::PointWiseDesc_v8elu_alpha + cudnn_frontend::PointWiseDesc_v8err_msg + cudnn_frontend::PointWiseDesc_v8get_desc + cudnn_frontend::PointWiseDesc_v8get_error + cudnn_frontend::PointWiseDesc_v8get_raw_desc + cudnn_frontend::PointWiseDesc_v8get_status + cudnn_frontend::PointWiseDesc_v8getPointWiseMode + cudnn_frontend::PointWiseDesc_v8getPortCount + cudnn_frontend::PointWiseDesc_v8initialize_managed_backend_pointer + cudnn_frontend::PointWiseDesc_v8lower_clip + cudnn_frontend::PointWiseDesc_v8lower_clip_slope + cudnn_frontend::PointWiseDesc_v8math_precision + cudnn_frontend::PointWiseDesc_v8mode + cudnn_frontend::PointWiseDesc_v8nan_propagation + cudnn_frontend::PointWiseDesc_v8operator= + cudnn_frontend::PointWiseDesc_v8pointer + cudnn_frontend::PointWiseDesc_v8PointWiseDesc_v8 + cudnn_frontend::PointWiseDesc_v8PointWiseDesc_v8 + cudnn_frontend::PointWiseDesc_v8PointWiseDesc_v8 + cudnn_frontend::PointWiseDesc_v8PointWiseDescBuilder_v8 + cudnn_frontend::PointWiseDesc_v8set_error + cudnn_frontend::PointWiseDesc_v8set_status + cudnn_frontend::PointWiseDesc_v8softplus_beta + cudnn_frontend::PointWiseDesc_v8status + cudnn_frontend::PointWiseDesc_v8swish_beta + cudnn_frontend::PointWiseDesc_v8upper_clip + cudnn_frontend::PointWiseDesc_v8~PointWiseDesc_v8 + + + diff --git a/docs/xml/d4/d30/classcudnn__frontend_1_1Operation__v8.xml b/docs/xml/d4/d30/classcudnn__frontend_1_1Operation__v8.xml new file mode 100644 index 000000000..5e6b384e6 --- /dev/null +++ b/docs/xml/d4/d30/classcudnn__frontend_1_1Operation__v8.xml @@ -0,0 +1,799 @@ + + + + cudnn_frontend::Operation_v8 + cudnn_frontend::BackendDescriptor + cudnn_frontend_Operation.h + + + friend class + friend class OperationBuilder_v8 + + OperationBuilder_v8 + + + + + + + + + + + + cudnnBackendDescriptorType_t + cudnnBackendDescriptorType_t cudnn_frontend::Operation_v8::op_mode + + op_mode + = CUDNN_BACKEND_OPERATION_CONVOLUTION_FORWARD_DESCRIPTOR + + + + + + + + cudnn_frontend::OperationBuilder_v8::build + describe + getOutputTensor + cudnn_frontend::OperationBuilder_v8::OperationBuilder_v8 + + + ManagedOpaqueDescriptor + ManagedOpaqueDescriptor cudnn_frontend::Operation_v8::xdesc + + xdesc + = nullptr + + + + + + + + cudnn_frontend::OperationBuilder_v8::build + describe + cudnn_frontend::OperationBuilder_v8::setxDesc + + + ManagedOpaqueDescriptor + ManagedOpaqueDescriptor cudnn_frontend::Operation_v8::ydesc + + ydesc + = nullptr + + + + + + + + cudnn_frontend::OperationBuilder_v8::build + describe + getOutputTensor + cudnn_frontend::OperationBuilder_v8::setyDesc + + + ManagedOpaqueDescriptor + ManagedOpaqueDescriptor cudnn_frontend::Operation_v8::wdesc + + wdesc + = nullptr + + + + + + + + cudnn_frontend::OperationBuilder_v8::build + describe + cudnn_frontend::OperationBuilder_v8::setwDesc + + + ManagedOpaqueDescriptor + ManagedOpaqueDescriptor cudnn_frontend::Operation_v8::bdesc + + bdesc + = nullptr + + + + + + + + cudnn_frontend::OperationBuilder_v8::build + describe + cudnn_frontend::OperationBuilder_v8::setbDesc + + + ManagedOpaqueDescriptor + ManagedOpaqueDescriptor cudnn_frontend::Operation_v8::dydesc + + dydesc + = nullptr + + + + + + + + cudnn_frontend::OperationBuilder_v8::build + describe + cudnn_frontend::OperationBuilder_v8::setdyDesc + + + ManagedOpaqueDescriptor + ManagedOpaqueDescriptor cudnn_frontend::Operation_v8::dxdesc + + dxdesc + = nullptr + + + + + + + + cudnn_frontend::OperationBuilder_v8::build + describe + cudnn_frontend::OperationBuilder_v8::setdxDesc + + + ManagedOpaqueDescriptor + ManagedOpaqueDescriptor cudnn_frontend::Operation_v8::dwdesc + + dwdesc + = nullptr + + + + + + + + cudnn_frontend::OperationBuilder_v8::build + describe + cudnn_frontend::OperationBuilder_v8::setdwDesc + + + ManagedOpaqueDescriptor + ManagedOpaqueDescriptor cudnn_frontend::Operation_v8::cdesc + + cdesc + = nullptr + + + + + + + + cudnn_frontend::OperationBuilder_v8::build + describe + cudnn_frontend::OperationBuilder_v8::setcDesc + + + ManagedOpaqueDescriptor + ManagedOpaqueDescriptor cudnn_frontend::Operation_v8::amatdesc + + amatdesc + = nullptr + + + + + + + + cudnn_frontend::OperationBuilder_v8::build + describe + cudnn_frontend::OperationBuilder_v8::setaMatDesc + + + ManagedOpaqueDescriptor + ManagedOpaqueDescriptor cudnn_frontend::Operation_v8::bmatdesc + + bmatdesc + = nullptr + + + + + + + + cudnn_frontend::OperationBuilder_v8::build + describe + cudnn_frontend::OperationBuilder_v8::setbMatDesc + + + ManagedOpaqueDescriptor + ManagedOpaqueDescriptor cudnn_frontend::Operation_v8::cmatdesc + + cmatdesc + = nullptr + + + + + + + + cudnn_frontend::OperationBuilder_v8::build + describe + getOutputTensor + cudnn_frontend::OperationBuilder_v8::setcMatDesc + + + ManagedOpaqueDescriptor + ManagedOpaqueDescriptor cudnn_frontend::Operation_v8::pwdesc + + pwdesc + = nullptr + + + + + + + + cudnn_frontend::OperationBuilder_v8::build + describe + cudnn_frontend::OperationBuilder_v8::setpwDesc + + + ManagedOpaqueDescriptor + ManagedOpaqueDescriptor cudnn_frontend::Operation_v8::matmuldesc + + matmuldesc + = nullptr + + + + + + + + cudnn_frontend::OperationBuilder_v8::build + describe + cudnn_frontend::OperationBuilder_v8::setmatmulDesc + + + cudnnBackendAttributeType_t + cudnnBackendAttributeType_t cudnn_frontend::Operation_v8::alphabetaType + + alphabetaType + = CUDNN_TYPE_FLOAT + + + + + + + + cudnn_frontend::OperationBuilder_v8::build + describe + cudnn_frontend::OperationBuilder_v8::setAlpha + cudnn_frontend::OperationBuilder_v8::setAlpha2 + cudnn_frontend::OperationBuilder_v8::setBeta + + + float + float cudnn_frontend::Operation_v8::alpha_s + + alpha_s + = 1.0f + + + + + + + + cudnn_frontend::OperationBuilder_v8::build + describe + cudnn_frontend::OperationBuilder_v8::setAlpha + + + float + float cudnn_frontend::Operation_v8::beta_s + + beta_s + = .0f + + + + + + + + cudnn_frontend::OperationBuilder_v8::build + describe + cudnn_frontend::OperationBuilder_v8::setBeta + + + float + float cudnn_frontend::Operation_v8::alpha2_s + + alpha2_s + = 1.0f + + + + + + + + cudnn_frontend::OperationBuilder_v8::build + describe + cudnn_frontend::OperationBuilder_v8::setAlpha2 + + + double + double cudnn_frontend::Operation_v8::alpha_d + + alpha_d + = 1.0 + + + + + + + + cudnn_frontend::OperationBuilder_v8::build + describe + cudnn_frontend::OperationBuilder_v8::setAlpha + + + double + double cudnn_frontend::Operation_v8::beta_d + + beta_d + = 0.0 + + + + + + + + cudnn_frontend::OperationBuilder_v8::build + describe + cudnn_frontend::OperationBuilder_v8::setBeta + + + double + double cudnn_frontend::Operation_v8::alpha2_d + + alpha2_d + = 1.0 + + + + + + + + cudnn_frontend::OperationBuilder_v8::build + describe + cudnn_frontend::OperationBuilder_v8::setAlpha2 + + + int64_t + int64_t cudnn_frontend::Operation_v8::pointwise_port_count + + pointwise_port_count + = -1 + + + + + + + + cudnn_frontend::OperationBuilder_v8::build + cudnn_frontend::OperationBuilder_v8::setpwDesc + + + cudnnPointwiseMode_t + cudnnPointwiseMode_t cudnn_frontend::Operation_v8::pointwise_mode + + pointwise_mode + + + + + + + + cudnn_frontend::OperationBuilder_v8::build + cudnn_frontend::OperationBuilder_v8::setpwDesc + + + bool + bool cudnn_frontend::Operation_v8::is_pointwise_activation_fwd_op + + is_pointwise_activation_fwd_op + = false + + + + + + + + cudnn_frontend::OperationBuilder_v8::build + cudnn_frontend::OperationBuilder_v8::setpwDesc + + + bool + bool cudnn_frontend::Operation_v8::is_pointwise_activation_bwd_op + + is_pointwise_activation_bwd_op + = false + + + + + + + + cudnn_frontend::OperationBuilder_v8::build + cudnn_frontend::OperationBuilder_v8::setpwDesc + + + bool + bool cudnn_frontend::Operation_v8::is_pointwise_math_op + + is_pointwise_math_op + = false + + + + + + + + cudnn_frontend::OperationBuilder_v8::build + cudnn_frontend::OperationBuilder_v8::setpwDesc + + + std::string + std::string cudnn_frontend::Operation_v8::operationTag + + operationTag + + + + + + + + cudnn_frontend::OperationBuilder_v8::build + getTag + + + + + std::string + std::string cudnn_frontend::Operation_v8::describe + () const override + describe + describe + +Return a string describing the backend Descriptor. + + + + + + alpha2_d + alpha2_s + alpha_d + alpha_s + alphabetaType + amatdesc + bdesc + beta_d + beta_s + bmatdesc + cdesc + cmatdesc + dwdesc + dxdesc + dydesc + matmuldesc + op_mode + pwdesc + wdesc + xdesc + ydesc + + + + cudnn_frontend::Operation_v8::Operation_v8 + (Operation_v8 &&from) + Operation_v8 + + Operation_v8 && + from + + + + + + + + + + + ManagedOpaqueDescriptor + ManagedOpaqueDescriptor cudnn_frontend::Operation_v8::getOutputTensor + () + getOutputTensor + + + + + + + + cmatdesc + op_mode + ydesc + + + std::string const & + std::string const& cudnn_frontend::Operation_v8::getTag + () const + getTag + + + + + + + + Operation_v8 + operationTag + operator= + ~Operation_v8 + + + + cudnn_frontend::Operation_v8::~Operation_v8 + ()=default + ~Operation_v8 + + + + + + + + getTag + + + + + + cudnn_frontend::Operation_v8::Operation_v8 + ()=default + Operation_v8 + + + + + + + + getTag + + + + cudnn_frontend::Operation_v8::Operation_v8 + (Operation_v8 const &)=delete + Operation_v8 + + Operation_v8 const & + + + + + + + + + + + Operation_v8 & + Operation_v8& cudnn_frontend::Operation_v8::operator= + (Operation_v8 const &)=delete + operator= + + Operation_v8 const & + + + + + + + + + getTag + + + + + +Operation_v8 Class This class has the properties of the operation Properties: +xDescyDescwdescbdescdydescdxdesccdescamatdescbmatdesccmatdescpwdescmatmuldescalphabetaalpha2 +Use OperationBuilder_v8 to build this class. Describe returns a string describing the convolution operation + + + + + + + + + + + + + + + + + + + + + + + -alpha2_d + -alpha_d + -beta_d + + + -alphabetaType + + + -pointwise_mode + + + -alpha_s + -beta_s + -alpha2_s + + + -pointwise_port_count + + + -operationTag + + + -is_pointwise_math_op + -is_pointwise_activation_fwd_op + -is_pointwise_activation_bwd_op + + + -dwdesc + -dxdesc + -dydesc + -bdesc + -pwdesc + -cdesc + -wdesc + -xdesc + -ydesc + -cmatdesc + ... + + + -op_mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #err_msg + + + #pointer + + + #status + + + + + + + + + + + cudnn_frontend::Operation_v8alpha2_d + cudnn_frontend::Operation_v8alpha2_s + cudnn_frontend::Operation_v8alpha_d + cudnn_frontend::Operation_v8alpha_s + cudnn_frontend::Operation_v8alphabetaType + cudnn_frontend::Operation_v8amatdesc + cudnn_frontend::Operation_v8BackendDescriptor + cudnn_frontend::Operation_v8BackendDescriptor + cudnn_frontend::Operation_v8bdesc + cudnn_frontend::Operation_v8beta_d + cudnn_frontend::Operation_v8beta_s + cudnn_frontend::Operation_v8bmatdesc + cudnn_frontend::Operation_v8cdesc + cudnn_frontend::Operation_v8cmatdesc + cudnn_frontend::Operation_v8describe + cudnn_frontend::Operation_v8dwdesc + cudnn_frontend::Operation_v8dxdesc + cudnn_frontend::Operation_v8dydesc + cudnn_frontend::Operation_v8err_msg + cudnn_frontend::Operation_v8get_desc + cudnn_frontend::Operation_v8get_error + cudnn_frontend::Operation_v8get_raw_desc + cudnn_frontend::Operation_v8get_status + cudnn_frontend::Operation_v8getOutputTensor + cudnn_frontend::Operation_v8getTag + cudnn_frontend::Operation_v8initialize_managed_backend_pointer + cudnn_frontend::Operation_v8is_pointwise_activation_bwd_op + cudnn_frontend::Operation_v8is_pointwise_activation_fwd_op + cudnn_frontend::Operation_v8is_pointwise_math_op + cudnn_frontend::Operation_v8matmuldesc + cudnn_frontend::Operation_v8op_mode + cudnn_frontend::Operation_v8Operation_v8 + cudnn_frontend::Operation_v8Operation_v8 + cudnn_frontend::Operation_v8Operation_v8 + cudnn_frontend::Operation_v8OperationBuilder_v8 + cudnn_frontend::Operation_v8operationTag + cudnn_frontend::Operation_v8operator= + cudnn_frontend::Operation_v8pointer + cudnn_frontend::Operation_v8pointwise_mode + cudnn_frontend::Operation_v8pointwise_port_count + cudnn_frontend::Operation_v8pwdesc + cudnn_frontend::Operation_v8set_error + cudnn_frontend::Operation_v8set_status + cudnn_frontend::Operation_v8status + cudnn_frontend::Operation_v8wdesc + cudnn_frontend::Operation_v8xdesc + cudnn_frontend::Operation_v8ydesc + cudnn_frontend::Operation_v8~Operation_v8 + + + diff --git a/docs/xml/d4/d39/classcudnn__frontend_1_1OperationGraphBuilder__v8.xml b/docs/xml/d4/d39/classcudnn__frontend_1_1OperationGraphBuilder__v8.xml new file mode 100644 index 000000000..0a942674c --- /dev/null +++ b/docs/xml/d4/d39/classcudnn__frontend_1_1OperationGraphBuilder__v8.xml @@ -0,0 +1,250 @@ + + + + cudnn_frontend::OperationGraphBuilder_v8 + cudnn_frontend_OperationGraph.h + + + OperationGraph_v8 + OperationGraph_v8 cudnn_frontend::OperationGraphBuilder_v8::m_operationGraph + + m_operationGraph + + + + + + + + + + + + auto + auto cudnn_frontend::OperationGraphBuilder_v8::setHandle + (cudnnHandle_t handle_) -> OperationGraphBuilder_v8 & + setHandle + + cudnnHandle_t + handle_ + + +Set cudnnHandle for the operations. + + + + + + + + auto + auto cudnn_frontend::OperationGraphBuilder_v8::setOperationGraph + (int64_t numOps_, Operation_v8 const **ops_) -> OperationGraphBuilder_v8 & + setOperationGraph + + int64_t + numOps_ + + + Operation_v8 const ** + ops_ + + +Set numoperations and the operations. + + + + + + + + OperationGraph_v8 && + OperationGraph_v8&& cudnn_frontend::OperationGraphBuilder_v8::build + () + build + + + +constructs the OperationGraph_v8 by calling the cudnn API Throws the appropriate error message + + + + cudnn_frontend::OperationGraph_v8::OperationGraphBuilder_v8 + cudnn_frontend::OperationGraph_v8::operator= + cudnn_frontend::set_error_and_throw_exception + cudnn_frontend::BackendDescriptor::status + + + + cudnn_frontend::OperationGraphBuilder_v8::OperationGraphBuilder_v8 + ()=default + OperationGraphBuilder_v8 + + + + + + + + + + + cudnn_frontend::OperationGraphBuilder_v8::~OperationGraphBuilder_v8 + ()=default + ~OperationGraphBuilder_v8 + + + + + + + + + + + cudnn_frontend::OperationGraphBuilder_v8::OperationGraphBuilder_v8 + (OperationGraphBuilder_v8 &&)=delete + OperationGraphBuilder_v8 + + OperationGraphBuilder_v8 && + + + + + + + + + + + + cudnn_frontend::OperationGraphBuilder_v8::OperationGraphBuilder_v8 + (OperationGraphBuilder_v8 const &)=delete + OperationGraphBuilder_v8 + + OperationGraphBuilder_v8 const & + + + + + + + + + + + OperationGraphBuilder_v8 & + OperationGraphBuilder_v8& cudnn_frontend::OperationGraphBuilder_v8::operator= + (OperationGraphBuilder_v8 const &)=delete + operator= + + OperationGraphBuilder_v8 const & + + + + + + + + + + + + + +OperationGraphBuilder_v8 Class Helper class used to build OperationGraph_v8 class + + + + + + + + + + + + + + +elements + + + + + + + -m_operationGraph + + + + + + +elements + + + < ManagedOpaqueDescriptor, 10 > + + + + + + + + + + + + + + + -numOps + + + -ops + + + -opGraphTag + + + -handle + + + + + + + + + + + + + #err_msg + + + #pointer + + + #status + + + + + + + + + + + cudnn_frontend::OperationGraphBuilder_v8build + cudnn_frontend::OperationGraphBuilder_v8m_operationGraph + cudnn_frontend::OperationGraphBuilder_v8OperationGraphBuilder_v8 + cudnn_frontend::OperationGraphBuilder_v8OperationGraphBuilder_v8 + cudnn_frontend::OperationGraphBuilder_v8OperationGraphBuilder_v8 + cudnn_frontend::OperationGraphBuilder_v8operator= + cudnn_frontend::OperationGraphBuilder_v8setHandle + cudnn_frontend::OperationGraphBuilder_v8setOperationGraph + cudnn_frontend::OperationGraphBuilder_v8~OperationGraphBuilder_v8 + + + diff --git a/docs/xml/d4/d6b/group__EngineFallbackListBuilder__v8.xml b/docs/xml/d4/d6b/group__EngineFallbackListBuilder__v8.xml new file mode 100644 index 000000000..16bafd3f0 --- /dev/null +++ b/docs/xml/d4/d6b/group__EngineFallbackListBuilder__v8.xml @@ -0,0 +1,48 @@ + + + + EngineFallbackListBuilder_v8 + EngineFallbackListBuilder_v8 + + + auto + auto cudnn_frontend::EngineFallbackListBuilder_v8::setOperationGraph + (OperationGraph_v8 &opGraph_) -> EngineFallbackListBuilder_v8 & + setOperationGraph + + OperationGraph_v8 & + opGraph_ + + +Set operationGraph for the engine (opGraph is not destroyed) + + + + + + + + auto + auto cudnn_frontend::EngineFallbackListBuilder_v8::setOperation + (cudnnBackendDescriptorType_t mode) -> EngineFallbackListBuilder_v8 & + setOperation + + cudnnBackendDescriptorType_t + mode + + + + + + + + + cudnn_frontend::EngineFallbackList_v8::mode + + + + + +Set individual property of EngineFallbackList_v8 class + + diff --git a/docs/xml/d4/dce/classcudnn__frontend_1_1VariantPackBuilder__v8.xml b/docs/xml/d4/dce/classcudnn__frontend_1_1VariantPackBuilder__v8.xml new file mode 100644 index 000000000..cdbfae9c7 --- /dev/null +++ b/docs/xml/d4/dce/classcudnn__frontend_1_1VariantPackBuilder__v8.xml @@ -0,0 +1,267 @@ + + + + cudnn_frontend::VariantPackBuilder_v8 + cudnn_frontend_VariantPack.h + + + VariantPack_v8 + VariantPack_v8 cudnn_frontend::VariantPackBuilder_v8::m_variant_pack + + m_variant_pack + + + + + + + + + + + + auto + auto cudnn_frontend::VariantPackBuilder_v8::setDataPointers + (int64_t num_ptr, void **ptrs) -> VariantPackBuilder_v8 & + setDataPointers + + int64_t + num_ptr + + + void ** + ptrs + + +Set dataPointers for the VariantPack_v8. + + + + + + + + auto + auto cudnn_frontend::VariantPackBuilder_v8::setUids + (int64_t num_uids, int64_t *uid) -> VariantPackBuilder_v8 & + setUids + + int64_t + num_uids + + + int64_t * + uid + + +Set Uids for the VariantPack_v8. + + + + + + cudnn_frontend::VariantPack_v8::uid + + + auto + auto cudnn_frontend::VariantPackBuilder_v8::setDataPointers + (std::set< std::pair< uint64_t, void *>> const &data_pointers) -> VariantPackBuilder_v8 & + setDataPointers + + std::set< std::pair< uint64_t, void *>> const & + data_pointers + + +Initialize a set of pairs containing uid and data pointer. + + + + + + cudnn_frontend::VariantPack_v8::data_pointers + + + auto + auto cudnn_frontend::VariantPackBuilder_v8::setWorkspacePointer + (void *ws) -> VariantPackBuilder_v8 & + setWorkspacePointer + + void * + ws + + +Set Workspace. + + + + + + + + VariantPack_v8 && + VariantPack_v8&& cudnn_frontend::VariantPackBuilder_v8::build + () + build + + + +constructs the Engine Config by calling the cudnn API Throws the appropriate error message + + + + cudnn_frontend::VariantPack_v8::operator= + cudnn_frontend::set_error_and_throw_exception + cudnn_frontend::BackendDescriptor::status + cudnn_frontend::VariantPack_v8::VariantPackBuilder_v8 + + + + cudnn_frontend::VariantPackBuilder_v8::VariantPackBuilder_v8 + ()=default + VariantPackBuilder_v8 + + + + + + + + + + + cudnn_frontend::VariantPackBuilder_v8::~VariantPackBuilder_v8 + ()=default + ~VariantPackBuilder_v8 + + + + + + + + + + + cudnn_frontend::VariantPackBuilder_v8::VariantPackBuilder_v8 + (VariantPackBuilder_v8 &&)=delete + VariantPackBuilder_v8 + + VariantPackBuilder_v8 && + + + + + + + + + + + + cudnn_frontend::VariantPackBuilder_v8::VariantPackBuilder_v8 + (VariantPackBuilder_v8 const &)=delete + VariantPackBuilder_v8 + + VariantPackBuilder_v8 const & + + + + + + + + + + + VariantPackBuilder_v8 & + VariantPackBuilder_v8& cudnn_frontend::VariantPackBuilder_v8::operator= + (VariantPackBuilder_v8 const &)=delete + operator= + + VariantPackBuilder_v8 const & + + + + + + + + + + + + + +VariantPackBuilder_v8 Class Helper class used to build VariantPack_v8 class + + + + + + + + + + + + + + + + + + + + -num_ptrs + -uid + + + -data_pointers + -workspace + + + + + + + + + + -m_variant_pack + + + + + + + #err_msg + + + #pointer + + + #status + + + + + + + + + + + cudnn_frontend::VariantPackBuilder_v8build + cudnn_frontend::VariantPackBuilder_v8m_variant_pack + cudnn_frontend::VariantPackBuilder_v8operator= + cudnn_frontend::VariantPackBuilder_v8setDataPointers + cudnn_frontend::VariantPackBuilder_v8setDataPointers + cudnn_frontend::VariantPackBuilder_v8setUids + cudnn_frontend::VariantPackBuilder_v8setWorkspacePointer + cudnn_frontend::VariantPackBuilder_v8VariantPackBuilder_v8 + cudnn_frontend::VariantPackBuilder_v8VariantPackBuilder_v8 + cudnn_frontend::VariantPackBuilder_v8VariantPackBuilder_v8 + cudnn_frontend::VariantPackBuilder_v8~VariantPackBuilder_v8 + + + diff --git a/docs/xml/d4/de1/group__ExecutionPlanBuilder__v8.xml b/docs/xml/d4/de1/group__ExecutionPlanBuilder__v8.xml new file mode 100644 index 000000000..3e530d26b --- /dev/null +++ b/docs/xml/d4/de1/group__ExecutionPlanBuilder__v8.xml @@ -0,0 +1,69 @@ + + + + ExecutionPlanBuilder_v8 + ExecutionPlanBuilder_v8 + + + auto + auto cudnn_frontend::ExecutionPlanBuilder_v8::setHandle + (cudnnHandle_t handle_) -> ExecutionPlanBuilder_v8 & + setHandle + + cudnnHandle_t + handle_ + + +Set engine for the ExecutionPlan_v8. + + + + + + + + auto + auto cudnn_frontend::ExecutionPlanBuilder_v8::setEngineConfig + (EngineConfig_v8 const &engine_config_) -> ExecutionPlanBuilder_v8 & + setEngineConfig + + EngineConfig_v8 const & + engine_config_ + + +Set engine Config for the Plan. + + + + + + + + auto + auto cudnn_frontend::ExecutionPlanBuilder_v8::setEngineConfig + (ManagedOpaqueDescriptor &desc, std::string const &opGraphTag_="") -> ExecutionPlanBuilder_v8 & + setEngineConfig + + ManagedOpaqueDescriptor & + desc + + + std::string const & + opGraphTag_ + "" + + +Set engine Config for the Plan. + + + + + + + + + + +Set individual property of ExecutionPlan_v8 class + + diff --git a/docs/xml/d5/d02/classcudnn__frontend_1_1PointWiseDescBuilder__v8.xml b/docs/xml/d5/d02/classcudnn__frontend_1_1PointWiseDescBuilder__v8.xml new file mode 100644 index 000000000..402ec6918 --- /dev/null +++ b/docs/xml/d5/d02/classcudnn__frontend_1_1PointWiseDescBuilder__v8.xml @@ -0,0 +1,384 @@ + + + + cudnn_frontend::PointWiseDescBuilder_v8 + cudnn_frontend_PointWiseDesc.h + + + PointWiseDesc_v8 + PointWiseDesc_v8 cudnn_frontend::PointWiseDescBuilder_v8::m_pointWiseDesc + + m_pointWiseDesc + + + + + + + + + + + + auto + auto cudnn_frontend::PointWiseDescBuilder_v8::setMathPrecision + (cudnnDataType_t data_type_) -> PointWiseDescBuilder_v8 & + setMathPrecision + + cudnnDataType_t + data_type_ + + +Set Math Precision Data Type for the Convolution Operation. + + + + + + + + auto + auto cudnn_frontend::PointWiseDescBuilder_v8::setClipping + (double l, double u) -> PointWiseDescBuilder_v8 & + setClipping + + double + l + + + double + u + + +Set upper and lower limits for the RELU activation. + + + + + + + + auto + auto cudnn_frontend::PointWiseDescBuilder_v8::setMode + (cudnnPointwiseMode_t mode_) -> PointWiseDescBuilder_v8 & + setMode + + cudnnPointwiseMode_t + mode_ + + +Set upper and lower limits for the RELU activation. + + + + + + + + auto + auto cudnn_frontend::PointWiseDescBuilder_v8::setMode + (cudnnNanPropagation_t nan_mode_) -> PointWiseDescBuilder_v8 & + setMode + + cudnnNanPropagation_t + nan_mode_ + + +Set NaN propagation mode. + + + + + + + + auto + auto cudnn_frontend::PointWiseDescBuilder_v8::setReluLowerClip + (double lower_clip_) -> PointWiseDescBuilder_v8 & + setReluLowerClip + + double + lower_clip_ + + + + + + + + + + + auto + auto cudnn_frontend::PointWiseDescBuilder_v8::setReluUpperClip + (double upper_clip_) -> PointWiseDescBuilder_v8 & + setReluUpperClip + + double + upper_clip_ + + + + + + + + + + + auto + auto cudnn_frontend::PointWiseDescBuilder_v8::setReluLowerClipSlope + (double lower_clip_slope_) -> PointWiseDescBuilder_v8 & + setReluLowerClipSlope + + double + lower_clip_slope_ + + + + + + + + + + + auto + auto cudnn_frontend::PointWiseDescBuilder_v8::setEluAlpha + (double elu_alpha_) -> PointWiseDescBuilder_v8 & + setEluAlpha + + double + elu_alpha_ + + + + + + + + + + + auto + auto cudnn_frontend::PointWiseDescBuilder_v8::setSoftplusBeta + (double softplus_beta_) -> PointWiseDescBuilder_v8 & + setSoftplusBeta + + double + softplus_beta_ + + + + + + + + + + + auto + auto cudnn_frontend::PointWiseDescBuilder_v8::setSwishBeta + (double swish_beta_) -> PointWiseDescBuilder_v8 & + setSwishBeta + + double + swish_beta_ + + + + + + + + + + + PointWiseDesc_v8 && + PointWiseDesc_v8&& cudnn_frontend::PointWiseDescBuilder_v8::build + () + build + + + +constructs the PointWiseDesc_v8 by calling the cudnn API Throws the appropriate error message + + + + cudnn_frontend::PointWiseDesc_v8::operator= + cudnn_frontend::PointWiseDesc_v8::PointWiseDescBuilder_v8 + cudnn_frontend::set_error_and_throw_exception + cudnn_frontend::BackendDescriptor::status + + + + cudnn_frontend::PointWiseDescBuilder_v8::PointWiseDescBuilder_v8 + ()=default + PointWiseDescBuilder_v8 + + + + + + + + + + + cudnn_frontend::PointWiseDescBuilder_v8::~PointWiseDescBuilder_v8 + ()=default + ~PointWiseDescBuilder_v8 + + + + + + + + + + + cudnn_frontend::PointWiseDescBuilder_v8::PointWiseDescBuilder_v8 + (PointWiseDescBuilder_v8 &&)=delete + PointWiseDescBuilder_v8 + + PointWiseDescBuilder_v8 && + + + + + + + + + + + + cudnn_frontend::PointWiseDescBuilder_v8::PointWiseDescBuilder_v8 + (PointWiseDescBuilder_v8 const &)=delete + PointWiseDescBuilder_v8 + + PointWiseDescBuilder_v8 const & + + + + + + + + + + + PointWiseDescBuilder_v8 & + PointWiseDescBuilder_v8& cudnn_frontend::PointWiseDescBuilder_v8::operator= + (PointWiseDescBuilder_v8 const &)=delete + operator= + + PointWiseDescBuilder_v8 const & + + + + + + + + + + + + + +PointWiseDescBuilder_v8 Class Helper class used to build PointWiseDesc_v8 class + + + + + + + + + + + + + + + + + + + + + + + + + + + #err_msg + + + #pointer + + + #status + + + + + + + -m_pointWiseDesc + + + + + + + + + -upper_clip + -swish_beta + -lower_clip_slope + -lower_clip + -elu_alpha + -softplus_beta + + + -nan_propagation + + + -mode + + + -math_precision + + + + + + + + + + + cudnn_frontend::PointWiseDescBuilder_v8build + cudnn_frontend::PointWiseDescBuilder_v8m_pointWiseDesc + cudnn_frontend::PointWiseDescBuilder_v8operator= + cudnn_frontend::PointWiseDescBuilder_v8PointWiseDescBuilder_v8 + cudnn_frontend::PointWiseDescBuilder_v8PointWiseDescBuilder_v8 + cudnn_frontend::PointWiseDescBuilder_v8PointWiseDescBuilder_v8 + cudnn_frontend::PointWiseDescBuilder_v8setClipping + cudnn_frontend::PointWiseDescBuilder_v8setEluAlpha + cudnn_frontend::PointWiseDescBuilder_v8setMathPrecision + cudnn_frontend::PointWiseDescBuilder_v8setMode + cudnn_frontend::PointWiseDescBuilder_v8setMode + cudnn_frontend::PointWiseDescBuilder_v8setReluLowerClip + cudnn_frontend::PointWiseDescBuilder_v8setReluLowerClipSlope + cudnn_frontend::PointWiseDescBuilder_v8setReluUpperClip + cudnn_frontend::PointWiseDescBuilder_v8setSoftplusBeta + cudnn_frontend::PointWiseDescBuilder_v8setSwishBeta + cudnn_frontend::PointWiseDescBuilder_v8~PointWiseDescBuilder_v8 + + + diff --git a/docs/xml/d5/d06/classcudnn__frontend_1_1ExecutionPlan__v8.xml b/docs/xml/d5/d06/classcudnn__frontend_1_1ExecutionPlan__v8.xml new file mode 100644 index 000000000..092dc6ddc --- /dev/null +++ b/docs/xml/d5/d06/classcudnn__frontend_1_1ExecutionPlan__v8.xml @@ -0,0 +1,314 @@ + + + + cudnn_frontend::ExecutionPlan_v8 + cudnn_frontend::BackendDescriptor + cudnn_frontend_ExecutionPlan.h + + + friend class + friend class ExecutionPlanBuilder_v8 + + ExecutionPlanBuilder_v8 + + + + + + + + cudnn_frontend::ExecutionPlanBuilder_v8::build + + + + + ManagedOpaqueDescriptor + ManagedOpaqueDescriptor cudnn_frontend::ExecutionPlan_v8::engine_config + + engine_config + = nullptr + + + + + + + + computeTag + + + cudnnHandle_t + cudnnHandle_t cudnn_frontend::ExecutionPlan_v8::handle + + handle + = nullptr + + + + + + + + + + std::string + std::string cudnn_frontend::ExecutionPlan_v8::planTag + + planTag + + + + + + + + computeTag + getTag + + + + + + cudnn_frontend::ExecutionPlan_v8::ExecutionPlan_v8 + (ExecutionPlan_v8 &&from) + ExecutionPlan_v8 + + ExecutionPlan_v8 && + from + + + + + + + + + ~ExecutionPlan_v8 + + + + cudnn_frontend::ExecutionPlan_v8::~ExecutionPlan_v8 + ()=default + ~ExecutionPlan_v8 + + + + + + + + ExecutionPlan_v8 + + + auto + auto cudnn_frontend::ExecutionPlan_v8::getWorkspaceSize + (void) const -> int64_t + getWorkspaceSize + + void + + +Query the workspace requirement for the given plan. + + + + + + cudnn_frontend::BackendDescriptor::pointer + cudnn_frontend::set_error_and_throw_exception + cudnn_frontend::BackendDescriptor::status + + + std::string + std::string cudnn_frontend::ExecutionPlan_v8::describe + () const override + describe + describe + +Return a string describing the backend Descriptor. + + + + + + + + std::string const & + std::string const& cudnn_frontend::ExecutionPlan_v8::getTag + () const + getTag + + + + + + + + planTag + + + + + void + void cudnn_frontend::ExecutionPlan_v8::computeTag + () + computeTag + + + + + + + + engine_config + ExecutionPlan_v8 + cudnn_frontend::make_shared_backend_pointer + operator= + planTag + cudnn_frontend::set_error_and_throw_exception + cudnn_frontend::BackendDescriptor::status + + + + cudnn_frontend::ExecutionPlan_v8::ExecutionPlan_v8 + ()=default + ExecutionPlan_v8 + + + + + + + + computeTag + + + + cudnn_frontend::ExecutionPlan_v8::ExecutionPlan_v8 + (ExecutionPlan_v8 const &)=delete + ExecutionPlan_v8 + + ExecutionPlan_v8 const & + + + + + + + + + + + ExecutionPlan_v8 & + ExecutionPlan_v8& cudnn_frontend::ExecutionPlan_v8::operator= + (ExecutionPlan_v8 const &)=delete + operator= + + ExecutionPlan_v8 const & + + + + + + + + + cudnn_frontend::ExecutionPlanBuilder_v8::build + computeTag + + + + + +ExecutionPlan_v8 Class This class tells the Configuration of the Engine in terms of the knob choices Properties: +num knobsChoiceEngine +Use ExecutionPlanBuilder_v8 to build this class. Describe returns a string describing the tensor class + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -planTag + + + -handle + + + -engine_config + + + + + + + #err_msg + + + #pointer + + + #status + + + + + + + + + + + cudnn_frontend::ExecutionPlan_v8BackendDescriptor + cudnn_frontend::ExecutionPlan_v8BackendDescriptor + cudnn_frontend::ExecutionPlan_v8computeTag + cudnn_frontend::ExecutionPlan_v8describe + cudnn_frontend::ExecutionPlan_v8engine_config + cudnn_frontend::ExecutionPlan_v8err_msg + cudnn_frontend::ExecutionPlan_v8ExecutionPlan_v8 + cudnn_frontend::ExecutionPlan_v8ExecutionPlan_v8 + cudnn_frontend::ExecutionPlan_v8ExecutionPlan_v8 + cudnn_frontend::ExecutionPlan_v8ExecutionPlanBuilder_v8 + cudnn_frontend::ExecutionPlan_v8get_desc + cudnn_frontend::ExecutionPlan_v8get_error + cudnn_frontend::ExecutionPlan_v8get_raw_desc + cudnn_frontend::ExecutionPlan_v8get_status + cudnn_frontend::ExecutionPlan_v8getTag + cudnn_frontend::ExecutionPlan_v8getWorkspaceSize + cudnn_frontend::ExecutionPlan_v8handle + cudnn_frontend::ExecutionPlan_v8initialize_managed_backend_pointer + cudnn_frontend::ExecutionPlan_v8operator= + cudnn_frontend::ExecutionPlan_v8planTag + cudnn_frontend::ExecutionPlan_v8pointer + cudnn_frontend::ExecutionPlan_v8set_error + cudnn_frontend::ExecutionPlan_v8set_status + cudnn_frontend::ExecutionPlan_v8status + cudnn_frontend::ExecutionPlan_v8~ExecutionPlan_v8 + + + diff --git a/docs/xml/d5/d14/classcudnn__frontend_1_1OpaqueBackendPointer.xml b/docs/xml/d5/d14/classcudnn__frontend_1_1OpaqueBackendPointer.xml new file mode 100644 index 000000000..74b107249 --- /dev/null +++ b/docs/xml/d5/d14/classcudnn__frontend_1_1OpaqueBackendPointer.xml @@ -0,0 +1,197 @@ + + + + cudnn_frontend::OpaqueBackendPointer + cudnn_backend_base.h + + + cudnnBackendDescriptor_t + cudnnBackendDescriptor_t cudnn_frontend::OpaqueBackendPointer::m_desc + + m_desc + = nullptr + +Raw void pointer. + + + + + + get_backend_descriptor + + + cudnnStatus_t + cudnnStatus_t cudnn_frontend::OpaqueBackendPointer::status + + status + = CUDNN_STATUS_SUCCESS + +status of creation of the Descriptor + + + + + + get_status + cudnn_frontend::BackendDescriptor::get_status + cudnn_frontend::BackendDescriptor::set_status + + + + + + cudnn_frontend::OpaqueBackendPointer::OpaqueBackendPointer + (const OpaqueBackendPointer &)=delete + OpaqueBackendPointer + + const OpaqueBackendPointer & + + +Delete the copy constructor to prevent bad copies. + + + + + + + + OpaqueBackendPointer & + OpaqueBackendPointer& cudnn_frontend::OpaqueBackendPointer::operator= + (const OpaqueBackendPointer &)=delete + operator= + + const OpaqueBackendPointer & + + + + + + + + + + + + cudnn_frontend::OpaqueBackendPointer::OpaqueBackendPointer + (OpaqueBackendPointer &&)=default + OpaqueBackendPointer + + OpaqueBackendPointer && + + + + + + + + + + + + cudnn_frontend::OpaqueBackendPointer::OpaqueBackendPointer + (cudnnBackendDescriptorType_t type) + OpaqueBackendPointer + + cudnnBackendDescriptorType_t + type + + + + +OpaqueBackendPointer constructor. Calls the cudnnBackendCreateDescriptor. Allocates memory according to the type. + + + + + + + cudnn_frontend::OpaqueBackendPointer::~OpaqueBackendPointer + () + ~OpaqueBackendPointer + + + +OpaqueBackendPointer destructor. Calls the cudnnBackendDestroyDescriptor. Frees memory allocated in the constructor. + + + + + + cudnnBackendDescriptor_t const & + cudnnBackendDescriptor_t const& cudnn_frontend::OpaqueBackendPointer::get_backend_descriptor + () const + get_backend_descriptor + + + +Accessor. Returns the const reference to raw underlying descriptor. Treat it like the data() function of a smart pointer. Can be freed behind the back. + + + + m_desc + + + cudnnStatus_t + cudnnStatus_t cudnn_frontend::OpaqueBackendPointer::get_status + () const + get_status + + + +Accessor. Queries the status of the descriptor after calling the cudnnCreate. + + + + status + + + bool + bool cudnn_frontend::OpaqueBackendPointer::is_good + () const + is_good + + + +Accessor. Queries the status of the descriptor returns true if all good. + + + + + + + + +OpaqueBackendPointer class Holds the raws pointer to backend_descriptor Usage is to wrap this into a smart pointer as it helps to create and destroy the backencpointer + + + + + + -m_desc + + + -status + + + + + + + + + + + + cudnn_frontend::OpaqueBackendPointerget_backend_descriptor + cudnn_frontend::OpaqueBackendPointerget_status + cudnn_frontend::OpaqueBackendPointeris_good + cudnn_frontend::OpaqueBackendPointerm_desc + cudnn_frontend::OpaqueBackendPointerOpaqueBackendPointer + cudnn_frontend::OpaqueBackendPointerOpaqueBackendPointer + cudnn_frontend::OpaqueBackendPointerOpaqueBackendPointer + cudnn_frontend::OpaqueBackendPointeroperator= + cudnn_frontend::OpaqueBackendPointerstatus + cudnn_frontend::OpaqueBackendPointer~OpaqueBackendPointer + + + diff --git a/docs/xml/d5/d36/cudnn__frontend__Filters_8h.xml b/docs/xml/d5/d36/cudnn__frontend__Filters_8h.xml new file mode 100644 index 000000000..1a12a8ca8 --- /dev/null +++ b/docs/xml/d5/d36/cudnn__frontend__Filters_8h.xml @@ -0,0 +1,126 @@ + + + + cudnn_frontend_Filters.h + cudnn.h + cudnn_frontend.h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + cudnn_frontend + + + + + +/* +*Copyright(c)2021,NVIDIACORPORATION.Allrightsreserved. +* +*Permissionisherebygranted,freeofcharge,toanypersonobtaininga +*copyofthissoftwareandassociateddocumentationfiles(the"Software"), +*todealintheSoftwarewithoutrestriction,includingwithoutlimitation +*therightstouse,copy,modify,merge,publish,distribute,sublicense, +*and/orsellcopiesoftheSoftware,andtopermitpersonstowhomthe +*Softwareisfurnishedtodoso,subjecttothefollowingconditions: +* +*Theabovecopyrightnoticeandthispermissionnoticeshallbeincludedin +*allcopiesorsubstantialportionsoftheSoftware. +* +*THESOFTWAREISPROVIDED"ASIS",WITHOUTWARRANTYOFANYKIND,EXPRESSOR +*IMPLIED,INCLUDINGBUTNOTLIMITEDTOTHEWARRANTIESOFMERCHANTABILITY, +*FITNESSFORAPARTICULARPURPOSEANDNONINFRINGEMENT.INNOEVENTSHALL +*THEAUTHORSORCOPYRIGHTHOLDERSBELIABLEFORANYCLAIM,DAMAGESOROTHER +*LIABILITY,WHETHERINANACTIONOFCONTRACT,TORTOROTHERWISE,ARISING +*FROM,OUTOFORINCONNECTIONWITHTHESOFTWAREORTHEUSEOROTHER +*DEALINGSINTHESOFTWARE. +*/ + +#pragmaonce + +#include<cudnn.h> + +namespacecudnn_frontend{ + +//Iffilter_fnreturnstrue +//Theengineconfigwillbefilteredoutandwill +//notbepartofthetolist. +staticvoid +filter(EngineConfigList&from,EngineConfigList&to,std::function<bool(cudnnBackendDescriptor_t)>filter_fn){ +autop=std::stable_partition(from.begin(),from.end(),[filter_fn](ManagedOpaqueDescriptor&p){ +returnfilter_fn(const_cast<cudnnBackendDescriptor_t>(p->get_backend_descriptor())); +}); +//rangeinsertwithmove +to.insert(to.end(),std::make_move_iterator(p),std::make_move_iterator(from.end())); +//erasethemoved-fromelements. +from.erase(p,from.end()); +} + +template<cudnnBackendNumericalNote_tNUMERIC_NOTE> +bool +hasNumericalNote(cudnnBackendDescriptor_tengine_config){ +boolhasNumerics=false; +autostatus=CUDNN_STATUS_SUCCESS; +ManagedOpaqueDescriptorengine=make_shared_backend_pointer(CUDNN_BACKEND_ENGINE_DESCRIPTOR); +cudnnBackendDescriptor_tengine_=engine->get_backend_descriptor(); +int64_tengine_count=-1; +status=cudnnBackendGetAttribute( +engine_config,CUDNN_ATTR_ENGINECFG_ENGINE,CUDNN_TYPE_BACKEND_DESCRIPTOR,1,&engine_count,&engine_); +if(status==CUDNN_STATUS_SUCCESS){ +cudnnBackendNumericalNote_tnotes[CUDNN_NUMERICAL_NOTE_TYPE_COUNT]; +int64_telem_count=0; +cudnnBackendGetAttribute(engine->get_backend_descriptor(), +CUDNN_ATTR_ENGINE_NUMERICAL_NOTE, +CUDNN_TYPE_NUMERICAL_NOTE, +CUDNN_NUMERICAL_NOTE_TYPE_COUNT, +&elem_count, +notes); +if(std::any_of( +notes,notes+elem_count,[](cudnnBackendNumericalNote_tnote){returnnote==NUMERIC_NOTE;})){ +hasNumerics=true; +} +} +returnhasNumerics; +} +} + + + + diff --git a/docs/xml/d5/def/group__VariantPackBuilder__v8.xml b/docs/xml/d5/def/group__VariantPackBuilder__v8.xml new file mode 100644 index 000000000..f035329d9 --- /dev/null +++ b/docs/xml/d5/def/group__VariantPackBuilder__v8.xml @@ -0,0 +1,91 @@ + + + + VariantPackBuilder_v8 + VariantPackBuilder_v8 + + + auto + auto cudnn_frontend::VariantPackBuilder_v8::setDataPointers + (int64_t num_ptr, void **ptrs) -> VariantPackBuilder_v8 & + setDataPointers + + int64_t + num_ptr + + + void ** + ptrs + + +Set dataPointers for the VariantPack_v8. + + + + + + + + auto + auto cudnn_frontend::VariantPackBuilder_v8::setUids + (int64_t num_uids, int64_t *uid) -> VariantPackBuilder_v8 & + setUids + + int64_t + num_uids + + + int64_t * + uid + + +Set Uids for the VariantPack_v8. + + + + + + cudnn_frontend::VariantPack_v8::uid + + + auto + auto cudnn_frontend::VariantPackBuilder_v8::setDataPointers + (std::set< std::pair< uint64_t, void *>> const &data_pointers) -> VariantPackBuilder_v8 & + setDataPointers + + std::set< std::pair< uint64_t, void *>> const & + data_pointers + + +Initialize a set of pairs containing uid and data pointer. + + + + + + cudnn_frontend::VariantPack_v8::data_pointers + + + auto + auto cudnn_frontend::VariantPackBuilder_v8::setWorkspacePointer + (void *ws) -> VariantPackBuilder_v8 & + setWorkspacePointer + + void * + ws + + +Set Workspace. + + + + + + + + + + +Set individual property of VariantPack_v8 class + + diff --git a/docs/xml/d6/d1b/structcudnn__frontend_1_1executionOption.xml b/docs/xml/d6/d1b/structcudnn__frontend_1_1executionOption.xml new file mode 100644 index 000000000..4df40007b --- /dev/null +++ b/docs/xml/d6/d1b/structcudnn__frontend_1_1executionOption.xml @@ -0,0 +1,105 @@ + + + + cudnn_frontend::executionOption + cudnn_frontend_EngineConfigGenerator.h + + + cudnn_frontend::ExecutionPlan + cudnn_frontend::ExecutionPlan cudnn_frontend::executionOption::plan + + plan + + + + + + + + cudnn_frontend::filter + + + float + float cudnn_frontend::executionOption::time_ms + + time_ms + +One can get the underlying EngineConfig from the ExecutionPlan. + + + + + + + + + + +A pair of execution plan and its run time. Necessary to return a sorted executionPlan + + + + + + + + + + + + + + + + + + + + + + + -planTag + + + -handle + + + -engine_config + + + + + + + +plan + + + +time_ms + + + + + + + #err_msg + + + #pointer + + + #status + + + + + + + + + + + cudnn_frontend::executionOptionplan + cudnn_frontend::executionOptiontime_ms + + + diff --git a/docs/xml/d6/d32/cudnn__frontend__MatMulDesc_8h.xml b/docs/xml/d6/d32/cudnn__frontend__MatMulDesc_8h.xml new file mode 100644 index 000000000..153e043dd --- /dev/null +++ b/docs/xml/d6/d32/cudnn__frontend__MatMulDesc_8h.xml @@ -0,0 +1,289 @@ + + + + cudnn_frontend_MatMulDesc.h + algorithm + array + functional + memory + sstream + utility + cudnn.h + cudnn_backend.h + cudnn_frontend_utils.h + cudnn_frontend_Operation.h + cudnn_frontend.h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + cudnn_frontend::MatMulDesc_v8 + cudnn_frontend::MatMulDescBuilder_v8 + cudnn_frontend + + + + + +/* +*Copyright(c)2021,NVIDIACORPORATION.Allrightsreserved. +* +*Permissionisherebygranted,freeofcharge,toanypersonobtaininga +*copyofthissoftwareandassociateddocumentationfiles(the"Software"), +*todealintheSoftwarewithoutrestriction,includingwithoutlimitation +*therightstouse,copy,modify,merge,publish,distribute,sublicense, +*and/orsellcopiesoftheSoftware,andtopermitpersonstowhomthe +*Softwareisfurnishedtodoso,subjecttothefollowingconditions: +* +*Theabovecopyrightnoticeandthispermissionnoticeshallbeincludedin +*allcopiesorsubstantialportionsoftheSoftware. +* +*THESOFTWAREISPROVIDED"ASIS",WITHOUTWARRANTYOFANYKIND,EXPRESSOR +*IMPLIED,INCLUDINGBUTNOTLIMITEDTOTHEWARRANTIESOFMERCHANTABILITY, +*FITNESSFORAPARTICULARPURPOSEANDNONINFRINGEMENT.INNOEVENTSHALL +*THEAUTHORSORCOPYRIGHTHOLDERSBELIABLEFORANYCLAIM,DAMAGESOROTHER +*LIABILITY,WHETHERINANACTIONOFCONTRACT,TORTOROTHERWISE,ARISING +*FROM,OUTOFORINCONNECTIONWITHTHESOFTWAREORTHEUSEOROTHER +*DEALINGSINTHESOFTWARE. +*/ + +#pragmaonce + +#include<algorithm> +#include<array> +#include<functional> +#include<memory> +#include<sstream> +#include<utility> + +#include<cudnn.h> +#include<cudnn_backend.h> + +#include"cudnn_frontend_utils.h" + +namespacecudnn_frontend{ +classMatMulDesc_v8:publicBackendDescriptor{ +public: +friendclassMatMulDescBuilder_v8; +std::string +describe()constoverride{ +std::stringstreamss; +ss<<"CUDNN_BACKEND_MATMUL_DESCRIPTOR:" +<<"Mathprecision"<<(math_precision); +returnss.str(); +} + +MatMulDesc_v8(MatMulDesc_v8&&from) +:BackendDescriptor(from.get_desc(),from.get_status(),from.get_error()), +math_precision(from.math_precision){} + +~MatMulDesc_v8()=default; + +private: +MatMulDesc_v8()=default; +MatMulDesc_v8(MatMulDesc_v8const&)=delete; +MatMulDesc_v8& +operator=(MatMulDesc_v8const&)=delete; + +cudnnDataType_tmath_precision=CUDNN_DATA_FLOAT; +}; + +classMatMulDescBuilder_v8{ +public: +auto +setMathPrecision(cudnnDataType_tdata_type_)->MatMulDescBuilder_v8&{ +m_matMulDesc.math_precision=data_type_; +return*this; +} +MatMulDesc_v8&& +build(){ +//Createadescriptor.Memoryallocationhappenshere. +autostatus=m_matMulDesc.initialize_managed_backend_pointer(CUDNN_BACKEND_MATMUL_DESCRIPTOR); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception(&m_matMulDesc,status,"CUDNN_BACKEND_MATMUL_DESCRIPTOR:cudnnCreateFailed"); +returnstd::move(m_matMulDesc); +} + +//OnceCreatedletssetthedescriptorparameters. +status=cudnnBackendSetAttribute(m_matMulDesc.pointer->get_backend_descriptor(), +CUDNN_ATTR_MATMUL_COMP_TYPE, +CUDNN_TYPE_DATA_TYPE, +1, +&m_matMulDesc.math_precision); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_matMulDesc, +status, +"CUDNN_BACKEND_MATMUL_DESCRIPTOR:SetAttributeCUDNN_ATTR_MATMUL_COMP_TYPEFailed"); +returnstd::move(m_matMulDesc); +} + +//Finalizingthedescriptor +status=cudnnBackendFinalize(m_matMulDesc.pointer->get_backend_descriptor()); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception(&m_matMulDesc,status,"CUDNN_BACKEND_MATMUL_DESCRIPTOR:cudnnFinalizeFailed"); +returnstd::move(m_matMulDesc); +} + +returnstd::move(m_matMulDesc); +} + +explicitMatMulDescBuilder_v8()=default; +~MatMulDescBuilder_v8()=default; +MatMulDescBuilder_v8(MatMulDescBuilder_v8&&)=delete; +MatMulDescBuilder_v8(MatMulDescBuilder_v8const&)=delete; +MatMulDescBuilder_v8& +operator=(MatMulDescBuilder_v8const&)=delete; + +private: +MatMulDesc_v8m_matMulDesc; +}; +} + + + + diff --git a/docs/xml/d6/d46/group__EngineHeuristicsQuery.xml b/docs/xml/d6/d46/group__EngineHeuristicsQuery.xml new file mode 100644 index 000000000..c80e5375b --- /dev/null +++ b/docs/xml/d6/d46/group__EngineHeuristicsQuery.xml @@ -0,0 +1,57 @@ + + + + EngineHeuristicsQuery + EngineHeuristicsQuery + + + auto + auto cudnn_frontend::EngineHeuristics_v8::getEngineConfig + (int64_t count=1) -> std::vector< ManagedOpaqueDescriptor > & + getEngineConfig + + int64_t + count + 1 + + +Query the total count of the engines for the Operation Set. + + + + + + cudnn_frontend::EngineHeuristics_v8::m_heuristic_results + cudnn_frontend::make_shared_backend_pointer + cudnn_frontend::BackendDescriptor::pointer + cudnn_frontend::set_error_and_throw_exception + cudnn_frontend::BackendDescriptor::status + + + auto + auto cudnn_frontend::EngineHeuristics_v8::getEngineConfigCount + (void) const -> int64_t + getEngineConfigCount + + void + + +Query the total count of the engine config for the Operation Set. + + + + + + cudnn_frontend::EngineHeuristics_v8::EngineHeuristics_v8 + cudnn_frontend::EngineHeuristics_v8::operator= + cudnn_frontend::BackendDescriptor::pointer + cudnn_frontend::set_error_and_throw_exception + cudnn_frontend::BackendDescriptor::status + + + + + +Query individual property of EngineHeuristics_v8 class + + diff --git a/docs/xml/d6/d51/cudnn__frontend__ExecutionPlan_8h.xml b/docs/xml/d6/d51/cudnn__frontend__ExecutionPlan_8h.xml new file mode 100644 index 000000000..f880ee0b9 --- /dev/null +++ b/docs/xml/d6/d51/cudnn__frontend__ExecutionPlan_8h.xml @@ -0,0 +1,579 @@ + + + + cudnn_frontend_ExecutionPlan.h + algorithm + array + functional + memory + sstream + utility + cudnn.h + cudnn_backend.h + cudnn_frontend_Engine.h + cudnn_frontend_utils.h + cudnn_frontend.h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + cudnn_frontend::ExecutionPlan_v8 + cudnn_frontend::ExecutionPlanBuilder_v8 + cudnn_frontend + + + + + +/* +*Copyright(c)2021,NVIDIACORPORATION.Allrightsreserved. +* +*Permissionisherebygranted,freeofcharge,toanypersonobtaininga +*copyofthissoftwareandassociateddocumentationfiles(the"Software"), +*todealintheSoftwarewithoutrestriction,includingwithoutlimitation +*therightstouse,copy,modify,merge,publish,distribute,sublicense, +*and/orsellcopiesoftheSoftware,andtopermitpersonstowhomthe +*Softwareisfurnishedtodoso,subjecttothefollowingconditions: +* +*Theabovecopyrightnoticeandthispermissionnoticeshallbeincludedin +*allcopiesorsubstantialportionsoftheSoftware. +* +*THESOFTWAREISPROVIDED"ASIS",WITHOUTWARRANTYOFANYKIND,EXPRESSOR +*IMPLIED,INCLUDINGBUTNOTLIMITEDTOTHEWARRANTIESOFMERCHANTABILITY, +*FITNESSFORAPARTICULARPURPOSEANDNONINFRINGEMENT.INNOEVENTSHALL +*THEAUTHORSORCOPYRIGHTHOLDERSBELIABLEFORANYCLAIM,DAMAGESOROTHER +*LIABILITY,WHETHERINANACTIONOFCONTRACT,TORTOROTHERWISE,ARISING +*FROM,OUTOFORINCONNECTIONWITHTHESOFTWAREORTHEUSEOROTHER +*DEALINGSINTHESOFTWARE. +*/ + +#pragmaonce + +#include<algorithm> +#include<array> +#include<functional> +#include<memory> +#include<sstream> +#include<utility> + +#include<cudnn.h> +#include<cudnn_backend.h> + +#include"cudnn_frontend_Engine.h" +#include"cudnn_frontend_utils.h" + +namespacecudnn_frontend{ +classExecutionPlan_v8:publicBackendDescriptor{ +public: +friendclassExecutionPlanBuilder_v8; + +ExecutionPlan_v8(ExecutionPlan_v8&&from) +:BackendDescriptor(from.get_desc(),from.get_status(),from.get_error()), +engine_config(from.engine_config), +handle(from.handle), +planTag(from.planTag){} +~ExecutionPlan_v8()=default; +auto +getWorkspaceSize(void)const->int64_t{ +std::int64_tworkSpaceSize=0; +autostatus=cudnnBackendGetAttribute(pointer->get_backend_descriptor(), +CUDNN_ATTR_EXECUTION_PLAN_WORKSPACE_SIZE, +CUDNN_TYPE_INT64, +1, +NULL, +&workSpaceSize); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception(this, +status, +"CUDNN_BACKEND_EXECUTION_PLAN_DESCRIPTOR:GetAttribute" +"CUDNN_ATTR_EXECUTION_PLAN_WORKSPACE_SIZEFailed"); +returnworkSpaceSize; +} +if(workSpaceSize<0){ +set_error_and_throw_exception( +this,status,"CUDNN_BACKEND_EXECUTION_PLAN_DESCRIPTOR:GetAttributeWorkspaceSizeInvalid"); +returnworkSpaceSize; +} +returnworkSpaceSize; +} + +std::string +describe()constoverride{ +std::stringstreamss; +ss<<"CUDNN_BACKEND_EXECUTION_PLAN_DESCRIPTOR:"; +returnss.str(); +} + +std::stringconst& +getTag()const{ +returnplanTag; +} + +private: +void +computeTag(){ +//Computeauniquetagforexecutionplan: +autostatus=CUDNN_STATUS_SUCCESS; +std::stringstreamtag{""}; +int64_telemCount=0,engineId=0,numKnobs=0; + +ManagedOpaqueDescriptorextractedEngine=make_shared_backend_pointer(CUDNN_BACKEND_ENGINE_DESCRIPTOR); +status=extractedEngine->get_status(); +std::array<ManagedOpaqueDescriptor,CUDNN_KNOB_TYPE_COUNTS>extractedKnobs{{nullptr}}; +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +this,status,"CUDNN_BACKEND_EXECUTION_PLAN_DESCRIPTOR:cudnnCreateFailedwhencomputetag"); +} + +for(auto&knob:extractedKnobs){ +knob=make_shared_backend_pointer(CUDNN_BACKEND_KNOB_CHOICE_DESCRIPTOR); +status=knob->get_status(); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +this,status,"CUDNN_BACKEND_EXECUTION_PLAN_DESCRIPTOR:cudnnCreateFailedwhencomputetag"); +} +} + +cudnnBackendDescriptor_textractedEngine_=extractedEngine->get_backend_descriptor(); +std::array<cudnnBackendDescriptor_t,CUDNN_KNOB_TYPE_COUNTS>extractedKnobs_{{nullptr}}; +for(std::uint32_ti=0;i<extractedKnobs.size();i++){ +extractedKnobs_[i]=extractedKnobs[i]->get_backend_descriptor(); +} + +status=cudnnBackendGetAttribute(engine_config->get_backend_descriptor(), +CUDNN_ATTR_ENGINECFG_ENGINE, +CUDNN_TYPE_BACKEND_DESCRIPTOR, +1, +&elemCount, +&extractedEngine_); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception(this, +status, +"CUDNN_BACKEND_EXECUTION_PLAN_DESCRIPTOR:GetAttribute" +"CUDNN_ATTR_ENGINECFG_ENGINEFailed"); +} +status=cudnnBackendGetAttribute( +extractedEngine_,CUDNN_ATTR_ENGINE_GLOBAL_INDEX,CUDNN_TYPE_INT64,1,&elemCount,&engineId); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception(this, +status, +"CUDNN_BACKEND_EXECUTION_PLAN_DESCRIPTOR:GetAttribute" +"CUDNN_ATTR_ENGINE_GLOBAL_INDEXFailed"); +} +tag<<"eng"<<engineId; + +status=cudnnBackendGetAttribute(engine_config->get_backend_descriptor(), +CUDNN_ATTR_ENGINECFG_KNOB_CHOICES, +CUDNN_TYPE_BACKEND_DESCRIPTOR, +CUDNN_KNOB_TYPE_COUNTS, +&numKnobs, +&(extractedKnobs_[0])); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception(this, +status, +"CUDNN_BACKEND_EXECUTION_PLAN_DESCRIPTOR:GetAttribute" +"CUDNN_ATTR_ENGINECFG_KNOB_CHOICESFailed"); +} +if(numKnobs>CUDNN_KNOB_TYPE_COUNTS){ +set_error_and_throw_exception(this, +status, +"CUDNN_BACKEND_EXECUTION_PLAN_DESCRIPTOR:GetAttribute" +"numKnobsexceedtheCUDNN_KNOB_TYPE_COUNTS"); +} +for(int64_tidx=0;idx<numKnobs;++idx){ +constcudnnBackendDescriptor_t&knob=extractedKnobs_[idx]; +cudnnBackendKnobType_ttype=CUDNN_KNOB_TYPE_COUNTS; +int64_tchoice=-2; +status=cudnnBackendGetAttribute( +knob,CUDNN_ATTR_KNOB_CHOICE_KNOB_TYPE,CUDNN_TYPE_KNOB_TYPE,1,nullptr,&type); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception(this, +status, +"computeTagCUDNN_BACKEND_EXECUTION_PLAN_DESCRIPTOR:GetAttribute" +"CUDNN_ATTR_KNOB_CHOICE_KNOB_TYPEFailed"); +} +status=cudnnBackendGetAttribute( +knob,CUDNN_ATTR_KNOB_CHOICE_KNOB_VALUE,CUDNN_TYPE_INT64,1,nullptr,&choice); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception(this, +status, +"CUDNN_BACKEND_EXECUTION_PLAN_DESCRIPTOR:GetAttribute" +"CUDNN_ATTR_KNOB_CHOICE_KNOB_VALUEFailed"); +} +tag<<"_k"<<type<<"("<<choice<<")"; +} +planTag+=tag.str(); +} + +ExecutionPlan_v8()=default; +ExecutionPlan_v8(ExecutionPlan_v8const&)=delete; +ExecutionPlan_v8& +operator=(ExecutionPlan_v8const&)=delete; + +ManagedOpaqueDescriptorengine_config=nullptr; +cudnnHandle_thandle=nullptr; +std::stringplanTag; +}; + +classExecutionPlanBuilder_v8{ +public: +auto +setHandle(cudnnHandle_thandle_)->ExecutionPlanBuilder_v8&{ +m_execution_plan.handle=handle_; +return*this; +} +auto +setEngineConfig(EngineConfig_v8const&engine_config_)->ExecutionPlanBuilder_v8&{ +m_execution_plan.engine_config=engine_config_.get_desc(); +m_execution_plan.planTag=engine_config_.getTag(); +return*this; +} + +auto +setEngineConfig(ManagedOpaqueDescriptor&desc,std::stringconst&opGraphTag_="")->ExecutionPlanBuilder_v8&{ +m_execution_plan.engine_config=desc; +m_execution_plan.planTag=opGraphTag_; +return*this; +} +ExecutionPlan_v8&& +build(){ +if(m_execution_plan.handle==nullptr){ +set_error_and_throw_exception( +&m_execution_plan, +CUDNN_STATUS_BAD_PARAM, +"CUDNN_BACKEND_EXECUTION_PLAN_DESCRIPTOR:CheckandSettheCUDNN_ATTR_EXECUTION_PLAN_HANDLE"); +returnstd::move(m_execution_plan); +}; +if(m_execution_plan.engine_config==nullptr){ +set_error_and_throw_exception( +&m_execution_plan, +CUDNN_STATUS_BAD_PARAM, +"CUDNN_BACKEND_EXECUTION_PLAN_DESCRIPTOR:CheckandSettheCUDNN_ATTR_EXECUTION_PLAN_ENGINE_CONFIG"); +returnstd::move(m_execution_plan); +}; + +//Createadescriptor.Memoryallocationhappenshere. +autostatus=m_execution_plan.initialize_managed_backend_pointer(CUDNN_BACKEND_EXECUTION_PLAN_DESCRIPTOR); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_execution_plan,status,"CUDNN_BACKEND_EXECUTION_PLAN_DESCRIPTOR:cudnnCreateFailed"); +returnstd::move(m_execution_plan); +} + +status=cudnnBackendSetAttribute(m_execution_plan.pointer->get_backend_descriptor(), +CUDNN_ATTR_EXECUTION_PLAN_ENGINE_CONFIG, +CUDNN_TYPE_BACKEND_DESCRIPTOR, +1, +&(m_execution_plan.engine_config->get_backend_descriptor())); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_execution_plan, +status, +"CUDNN_BACKEND_EXECUTION_PLAN_DESCRIPTOR:SetAttributeCUDNN_ATTR_EXECUTION_PLAN_ENGINE_CONFIGFailed"); +returnstd::move(m_execution_plan); +} +status=cudnnBackendSetAttribute(m_execution_plan.pointer->get_backend_descriptor(), +CUDNN_ATTR_EXECUTION_PLAN_HANDLE, +CUDNN_TYPE_HANDLE, +1, +&m_execution_plan.handle); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_execution_plan, +status, +"CUDNN_BACKEND_EXECUTION_PLAN_DESCRIPTOR:SetAttributeCUDNN_ATTR_EXECUTION_PLAN_HANDLEFailed"); +returnstd::move(m_execution_plan); +} +//Finalizingthedescriptor +status=cudnnBackendFinalize(m_execution_plan.pointer->get_backend_descriptor()); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_execution_plan,status,"CUDNN_BACKEND_EXECUTION_PLAN_DESCRIPTOR:cudnnFinalizeDescriptorFailed"); +returnstd::move(m_execution_plan); +} + +m_execution_plan.computeTag(); + +returnstd::move(m_execution_plan); +} + +explicitExecutionPlanBuilder_v8()=default; +~ExecutionPlanBuilder_v8()=default; +ExecutionPlanBuilder_v8(ExecutionPlanBuilder_v8&&)=delete; +ExecutionPlanBuilder_v8(ExecutionPlanBuilder_v8const&)=delete; +ExecutionPlanBuilder_v8& +operator=(ExecutionPlanBuilder_v8const&)=delete; + +private: +ExecutionPlan_v8m_execution_plan; +}; +} + + + + diff --git a/docs/xml/d6/d67/cudnn__frontend__EngineConfig_8h.xml b/docs/xml/d6/d67/cudnn__frontend__EngineConfig_8h.xml new file mode 100644 index 000000000..efdcf784f --- /dev/null +++ b/docs/xml/d6/d67/cudnn__frontend__EngineConfig_8h.xml @@ -0,0 +1,508 @@ + + + + cudnn_frontend_EngineConfig.h + algorithm + array + functional + memory + sstream + utility + cudnn.h + cudnn_backend.h + cudnn_frontend_Engine.h + cudnn_frontend_utils.h + cudnn_frontend.h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + cudnn_frontend::EngineConfig_v8 + cudnn_frontend::EngineConfigBuilder_v8 + cudnn_frontend + + + + + +/* +*Copyright(c)2021,NVIDIACORPORATION.Allrightsreserved. +* +*Permissionisherebygranted,freeofcharge,toanypersonobtaininga +*copyofthissoftwareandassociateddocumentationfiles(the"Software"), +*todealintheSoftwarewithoutrestriction,includingwithoutlimitation +*therightstouse,copy,modify,merge,publish,distribute,sublicense, +*and/orsellcopiesoftheSoftware,andtopermitpersonstowhomthe +*Softwareisfurnishedtodoso,subjecttothefollowingconditions: +* +*Theabovecopyrightnoticeandthispermissionnoticeshallbeincludedin +*allcopiesorsubstantialportionsoftheSoftware. +* +*THESOFTWAREISPROVIDED"ASIS",WITHOUTWARRANTYOFANYKIND,EXPRESSOR +*IMPLIED,INCLUDINGBUTNOTLIMITEDTOTHEWARRANTIESOFMERCHANTABILITY, +*FITNESSFORAPARTICULARPURPOSEANDNONINFRINGEMENT.INNOEVENTSHALL +*THEAUTHORSORCOPYRIGHTHOLDERSBELIABLEFORANYCLAIM,DAMAGESOROTHER +*LIABILITY,WHETHERINANACTIONOFCONTRACT,TORTOROTHERWISE,ARISING +*FROM,OUTOFORINCONNECTIONWITHTHESOFTWAREORTHEUSEOROTHER +*DEALINGSINTHESOFTWARE. +*/ + +#pragmaonce + +#include<algorithm> +#include<array> +#include<functional> +#include<memory> +#include<sstream> +#include<utility> + +#include<cudnn.h> +#include<cudnn_backend.h> + +#include"cudnn_frontend_Engine.h" +#include"cudnn_frontend_utils.h" + +namespacecudnn_frontend{ +classEngineConfig_v8:publicBackendDescriptor{ +public: +friendclassEngineConfigBuilder_v8; +std::string +describe()constoverride{ +std::stringstreamss; +ss<<"CUDNN_BACKEND_ENGINECFG_DESCRIPTOR:"; +ss<<"Numberofknobs:"<<numKnobs; +returnss.str(); +} +EngineConfig_v8(EngineConfig_v8&&from) +:BackendDescriptor(from.get_desc(),from.get_status(),from.get_error()), +engine(from.engine), +numKnobs(from.numKnobs), +opGraphTag(from.opGraphTag){ +bChoices=from.bChoices; +} +~EngineConfig_v8()=default; + +std::stringconst& +getTag()const{ +returnopGraphTag; +} + +private: +EngineConfig_v8():BackendDescriptor(){ +cudnnStatus_tstatus; +for(uint64_ti=0;i<bChoices.size();i++){ +bChoices[i]=make_shared_backend_pointer(CUDNN_BACKEND_KNOB_CHOICE_DESCRIPTOR); +if(bChoices[i]->is_good()==false){ +status=bChoices[i]->get_status(); +set_error_and_throw_exception( +this, +status, +"CUDNN_BACKEND_ENGINECFG_DESCRIPTOR:CUDNN_BACKEND_KNOB_CHOICE_DESCRIPTORcudnnCreateFailed"); +break; +} +} +} +EngineConfig_v8(EngineConfig_v8const&)=delete; +EngineConfig_v8& +operator=(EngineConfig_v8const&)=delete; + +ManagedOpaqueDescriptorengine=nullptr; +int64_tnumKnobs=0; +std::stringopGraphTag; +std::array<ManagedOpaqueDescriptor,CUDNN_KNOB_TYPE_COUNTS>bChoices={}; +}; + +classEngineConfigBuilder_v8{ +public: +auto +setEngine(Engine_v8const&engine_)->EngineConfigBuilder_v8&{ +m_engine_config.engine=engine_.get_desc(); +m_engine_config.opGraphTag=engine_.getTag(); +auto&knobs=engine_.getFinalizedKnobs(); +m_engine_config.numKnobs=knobs.size(); +for(std::uint32_ti=0;i<knobs.size();i++){ +cudnnStatus_tstatus; +cudnnBackendKnobType_ttype=knobs[i].getKnobType(); +int64_tvalue=knobs[i].getChoice(); +status=cudnnBackendSetAttribute(m_engine_config.bChoices[i]->get_backend_descriptor(), +CUDNN_ATTR_KNOB_CHOICE_KNOB_TYPE, +CUDNN_TYPE_KNOB_TYPE, +1, +&type); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception(&m_engine_config, +status, +"CUDNN_BACKEND_ENGINECFG_DESCRIPTOR:" +"CUDNN_BACKEND_KNOB_CHOICE_DESCRIPTORSetAttribute" +"CUDNN_ATTR_KNOB_CHOICE_KNOB_TYPEFailed"); +} +status=cudnnBackendSetAttribute(m_engine_config.bChoices[i]->get_backend_descriptor(), +CUDNN_ATTR_KNOB_CHOICE_KNOB_VALUE, +CUDNN_TYPE_INT64, +1, +&value); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception(&m_engine_config, +status, +"CUDNN_BACKEND_ENGINECFG_DESCRIPTOR:" +"CUDNN_BACKEND_KNOB_CHOICE_DESCRIPTORSetAttribute" +"CUDNN_ATTR_KNOB_CHOICE_KNOB_VALUEFailed"); +} +status=cudnnBackendFinalize(m_engine_config.bChoices[i]->get_backend_descriptor()); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_engine_config, +status, +"CUDNN_BACKEND_ENGINECFG_DESCRIPTOR:CUDNN_BACKEND_KNOB_CHOICE_DESCRIPTORcudnnFinalizeFailed"); +} +} +return*this; +} +EngineConfig_v8&& +build(){ +if(m_engine_config.status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception(&m_engine_config, +m_engine_config.status, +"CUDNN_BACKEND_ENGINECFG_DESCRIPTOR:isnotcreatedproperly"); +returnstd::move(m_engine_config); +} +if(m_engine_config.engine==nullptr){ +set_error_and_throw_exception( +&m_engine_config, +CUDNN_STATUS_BAD_PARAM, +"CUDNN_BACKEND_ENGINECFG_DESCRIPTOR:CheckandSettheCUDNN_ATTR_ENGINECFG_ENGINE."); +returnstd::move(m_engine_config); +} +//Createadescriptor.Memoryallocationhappenshere. +autostatus=m_engine_config.initialize_managed_backend_pointer(CUDNN_BACKEND_ENGINECFG_DESCRIPTOR); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_engine_config,status,"CUDNN_BACKEND_ENGINECFG_DESCRIPTOR:cudnnCreateFailed"); +returnstd::move(m_engine_config); +} + +status=cudnnBackendSetAttribute(m_engine_config.pointer->get_backend_descriptor(), +CUDNN_ATTR_ENGINECFG_ENGINE, +CUDNN_TYPE_BACKEND_DESCRIPTOR, +1, +&(m_engine_config.engine->get_backend_descriptor())); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_engine_config, +status, +"CUDNN_BACKEND_ENGINECFG_DESCRIPTOR:SetAttributeCUDNN_ATTR_ENGINECFG_ENGINEFailed"); +returnstd::move(m_engine_config); +} + +if(m_engine_config.numKnobs>0){ +std::array<cudnnBackendDescriptor_t,CUDNN_KNOB_TYPE_COUNTS>bChoices_; +for(autoi=0;i<m_engine_config.numKnobs;i++){ +bChoices_[i]=m_engine_config.bChoices[i]->get_backend_descriptor(); +} +status=cudnnBackendSetAttribute(m_engine_config.pointer->get_backend_descriptor(), +CUDNN_ATTR_ENGINECFG_KNOB_CHOICES, +CUDNN_TYPE_BACKEND_DESCRIPTOR, +m_engine_config.numKnobs, +bChoices_.data()); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_engine_config, +status, +"CUDNN_BACKEND_ENGINECFG_DESCRIPTOR:SetAttributeCUDNN_ATTR_ENGINECFG_KNOB_CHOICESFailed"); +returnstd::move(m_engine_config); +} +} + +//Finalizingthedescriptor +status=cudnnBackendFinalize(m_engine_config.pointer->get_backend_descriptor()); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_engine_config,status,"CUDNN_BACKEND_ENGINECFG_DESCRIPTOR:cudnnFinalizeFailed"); +returnstd::move(m_engine_config); +} +returnstd::move(m_engine_config); +} + +explicitEngineConfigBuilder_v8()=default; +~EngineConfigBuilder_v8()=default; +EngineConfigBuilder_v8(EngineConfigBuilder_v8&&)=delete; +EngineConfigBuilder_v8(EngineConfigBuilder_v8const&)=delete; +EngineConfigBuilder_v8& +operator=(EngineConfigBuilder_v8const&)=delete; + +private: +EngineConfig_v8m_engine_config; +}; + + +usingEngineConfigList=std::vector<ManagedOpaqueDescriptor>; +} + + + + diff --git a/docs/xml/d6/d73/classcudnn__frontend_1_1ConvDesc__v8.xml b/docs/xml/d6/d73/classcudnn__frontend_1_1ConvDesc__v8.xml new file mode 100644 index 000000000..e346616fd --- /dev/null +++ b/docs/xml/d6/d73/classcudnn__frontend_1_1ConvDesc__v8.xml @@ -0,0 +1,351 @@ + + + + cudnn_frontend::ConvDesc_v8 + cudnn_frontend::BackendDescriptor + cudnn_frontend_ConvDesc.h + + + friend class + friend class ConvDescBuilder_v8 + + ConvDescBuilder_v8 + + + + + + + + cudnn_frontend::ConvDescBuilder_v8::build + + + + + cudnnDataType_t + cudnnDataType_t cudnn_frontend::ConvDesc_v8::data_type + + data_type + = CUDNN_DATA_FLOAT + + + + + + + + describe + + + cudnnConvolutionMode_t + cudnnConvolutionMode_t cudnn_frontend::ConvDesc_v8::mode + + mode + = CUDNN_CONVOLUTION + +Convolution operation data type. + + + + + + describe + + + int64_t + int64_t cudnn_frontend::ConvDesc_v8::nDims + + nDims + = -1 + +Convolution vs cross correlation. + + + + + + describe + + + int64_t + int64_t cudnn_frontend::ConvDesc_v8::padLower[CUDNN_DIM_MAX+1] + [CUDNN_DIM_MAX+1] + padLower + = {0} + +number of dimensions + + + + + + ConvDesc_v8 + describe + + + int64_t + int64_t cudnn_frontend::ConvDesc_v8::padUpper[CUDNN_DIM_MAX+1] + [CUDNN_DIM_MAX+1] + padUpper + = {0} + +n, g, c, d, h, w + + + + + + ConvDesc_v8 + describe + + + int64_t + int64_t cudnn_frontend::ConvDesc_v8::dilation[CUDNN_DIM_MAX+1] + [CUDNN_DIM_MAX+1] + dilation + = {0} + +n, g, c, d, h, w + + + + + + ConvDesc_v8 + describe + cudnn_frontend::ConvDescBuilder_v8::setDilation + + + int64_t + int64_t cudnn_frontend::ConvDesc_v8::stride[CUDNN_DIM_MAX+1] + [CUDNN_DIM_MAX+1] + stride + = {-1} + +n, g, c, d, h, w + + + + + + ConvDesc_v8 + describe + + + + + std::string + std::string cudnn_frontend::ConvDesc_v8::describe + () const override + describe + describe + +Return a string describing the backend Descriptor. + + + + + + data_type + dilation + mode + nDims + padLower + padUpper + stride + + + + cudnn_frontend::ConvDesc_v8::ConvDesc_v8 + (ConvDesc_v8 &&from) + ConvDesc_v8 + + ConvDesc_v8 && + from + + + + + + + + + ConvDesc_v8 + dilation + operator= + padLower + padUpper + stride + ~ConvDesc_v8 + + + + cudnn_frontend::ConvDesc_v8::~ConvDesc_v8 + ()=default + ~ConvDesc_v8 + + + + + + + + ConvDesc_v8 + + + + + + cudnn_frontend::ConvDesc_v8::ConvDesc_v8 + ()=default + ConvDesc_v8 + + + + + + + + ConvDesc_v8 + + + + cudnn_frontend::ConvDesc_v8::ConvDesc_v8 + (ConvDesc_v8 const &)=delete + ConvDesc_v8 + + ConvDesc_v8 const & + + + + + + + + + + + ConvDesc_v8 & + ConvDesc_v8& cudnn_frontend::ConvDesc_v8::operator= + (ConvDesc_v8 const &)=delete + operator= + + ConvDesc_v8 const & + + + + + + + + + cudnn_frontend::ConvDescBuilder_v8::build + ConvDesc_v8 + + + + + +Convolution Descriptor Class This class tells the properties of the Convolution operation Properties: +padLowerpadUpperDilationStrideMath Operation Data TypeConvolution ModeConvolution spatial dimensions +Use ConvDescBuilder_v8 to build this class. Describe returns a string describing the convolution operation + + + + + + + + + + + + + + + + + + + + + + + + + + -padUpper + -nDims + -stride + -dilation + -padLower + + + -mode + + + -data_type + + + + + + + + + + + + + + + + + + + #err_msg + + + #pointer + + + #status + + + + + + + + + + + cudnn_frontend::ConvDesc_v8BackendDescriptor + cudnn_frontend::ConvDesc_v8BackendDescriptor + cudnn_frontend::ConvDesc_v8ConvDesc_v8 + cudnn_frontend::ConvDesc_v8ConvDesc_v8 + cudnn_frontend::ConvDesc_v8ConvDesc_v8 + cudnn_frontend::ConvDesc_v8ConvDescBuilder_v8 + cudnn_frontend::ConvDesc_v8data_type + cudnn_frontend::ConvDesc_v8describe + cudnn_frontend::ConvDesc_v8dilation + cudnn_frontend::ConvDesc_v8err_msg + cudnn_frontend::ConvDesc_v8get_desc + cudnn_frontend::ConvDesc_v8get_error + cudnn_frontend::ConvDesc_v8get_raw_desc + cudnn_frontend::ConvDesc_v8get_status + cudnn_frontend::ConvDesc_v8initialize_managed_backend_pointer + cudnn_frontend::ConvDesc_v8mode + cudnn_frontend::ConvDesc_v8nDims + cudnn_frontend::ConvDesc_v8operator= + cudnn_frontend::ConvDesc_v8padLower + cudnn_frontend::ConvDesc_v8padUpper + cudnn_frontend::ConvDesc_v8pointer + cudnn_frontend::ConvDesc_v8set_error + cudnn_frontend::ConvDesc_v8set_status + cudnn_frontend::ConvDesc_v8status + cudnn_frontend::ConvDesc_v8stride + cudnn_frontend::ConvDesc_v8~ConvDesc_v8 + + + diff --git a/docs/xml/d6/d88/classcudnn__frontend_1_1BackendDescriptor.xml b/docs/xml/d6/d88/classcudnn__frontend_1_1BackendDescriptor.xml new file mode 100644 index 000000000..7be7d3c9e --- /dev/null +++ b/docs/xml/d6/d88/classcudnn__frontend_1_1BackendDescriptor.xml @@ -0,0 +1,390 @@ + + + + cudnn_frontend::BackendDescriptor + cudnn_frontend::ConvDesc_v8 + cudnn_frontend::Engine_v8 + cudnn_frontend::EngineConfig_v8 + cudnn_frontend::EngineFallbackList_v8 + cudnn_frontend::EngineHeuristics_v8 + cudnn_frontend::ExecutionPlan_v8 + cudnn_frontend::MatMulDesc_v8 + cudnn_frontend::Operation_v8 + cudnn_frontend::OperationGraph_v8 + cudnn_frontend::PointWiseDesc_v8 + cudnn_frontend::Tensor_v8 + cudnn_frontend::VariantPack_v8 + cudnn_backend_base.h + + + ManagedOpaqueDescriptor + ManagedOpaqueDescriptor cudnn_frontend::BackendDescriptor::pointer + + pointer + + + + + + + + cudnn_frontend::OperationBuilder_v8::build + cudnn_frontend::Engine_v8::Engine_v8 + cudnn_frontend::EngineHeuristics_v8::getEngineConfig + cudnn_frontend::EngineHeuristics_v8::getEngineConfigCount + cudnn_frontend::OperationGraph_v8::getEngineCount + cudnn_frontend::ExecutionPlan_v8::getWorkspaceSize + + + cudnnStatus_t + cudnnStatus_t cudnn_frontend::BackendDescriptor::status + + status + = CUDNN_STATUS_SUCCESS + +Shared pointer of the OpaqueBackendPointer. + +Error code if any being set + + + + cudnn_frontend::MatMulDescBuilder_v8::build + cudnn_frontend::VariantPackBuilder_v8::build + cudnn_frontend::OperationGraphBuilder_v8::build + cudnn_frontend::TensorBuilder_v8::build + cudnn_frontend::EngineConfigBuilder_v8::build + cudnn_frontend::EngineHeuristicsBuilder_v8::build + cudnn_frontend::ConvDescBuilder_v8::build + cudnn_frontend::PointWiseDescBuilder_v8::build + cudnn_frontend::ExecutionPlanBuilder_v8::build + cudnn_frontend::EngineBuilder_v8::build + cudnn_frontend::OperationBuilder_v8::build + cudnn_frontend::Engine_v8::buildKnobs + cudnn_frontend::ExecutionPlan_v8::computeTag + cudnn_frontend::Engine_v8::Engine_v8 + cudnn_frontend::EngineConfig_v8::EngineConfig_v8 + cudnn_frontend::EngineHeuristics_v8::getEngineConfig + cudnn_frontend::EngineHeuristics_v8::getEngineConfigCount + cudnn_frontend::OperationGraph_v8::getEngineCount + cudnn_frontend::ExecutionPlan_v8::getWorkspaceSize + cudnn_frontend::EngineConfigBuilder_v8::setEngine + + + std::string + std::string cudnn_frontend::BackendDescriptor::err_msg + + err_msg + +Error message if any being set. + + + + + + + + + + std::string + virtual std::string cudnn_frontend::BackendDescriptor::describe + () const =0 + describe + describe + describe + describe + describe + describe + describe + describe + describe + describe + describe + describe + describe + +Return a string describing the backend Descriptor. + + + + + + + + cudnnBackendDescriptor_t + cudnnBackendDescriptor_t cudnn_frontend::BackendDescriptor::get_raw_desc + () const + get_raw_desc + + + +Get a copy of the raw descriptor pointer. Ownership is reatined and gets deleted when out of scope + + + + + + cudnnStatus_t + cudnnStatus_t cudnn_frontend::BackendDescriptor::get_status + () const + get_status + +Current status of the descriptor. + + + + + + cudnn_frontend::OpaqueBackendPointer::status + + + void + void cudnn_frontend::BackendDescriptor::set_status + (cudnnStatus_t const status_) const + set_status + + cudnnStatus_t const + status_ + + +Set status of the descriptor. + + + + + + cudnn_frontend::OpaqueBackendPointer::status + cudnn_frontend::set_error_and_throw_exception + + + void + void cudnn_frontend::BackendDescriptor::set_error + (const char *message) const + set_error + + const char * + message + + +Set Diagonistic error message. + + + + + + cudnn_frontend::set_error_and_throw_exception + + + const char * + const char* cudnn_frontend::BackendDescriptor::get_error + () const + get_error + +Diagonistic error message if any. + + + + + + + + ManagedOpaqueDescriptor + ManagedOpaqueDescriptor cudnn_frontend::BackendDescriptor::get_desc + () const + get_desc + +Returns a copy of underlying managed descriptor. + + + + + + + + cudnnStatus_t + cudnnStatus_t cudnn_frontend::BackendDescriptor::initialize_managed_backend_pointer + (cudnnBackendDescriptorType_t type) + initialize_managed_backend_pointer + + cudnnBackendDescriptorType_t + type + + +Initializes the underlying managed descriptor. + + + + + + cudnn_frontend::make_shared_backend_pointer + cudnn_frontend::OperationBuilder_v8::build + + + + + + cudnn_frontend::BackendDescriptor::BackendDescriptor + (ManagedOpaqueDescriptor pointer_, cudnnStatus_t status_, std::string err_msg_) + BackendDescriptor + + ManagedOpaqueDescriptor + pointer_ + + + cudnnStatus_t + status_ + + + std::string + err_msg_ + + + + +BackendDescriptor constructor. Initializes the member variables as passed. + + + + + + + cudnn_frontend::BackendDescriptor::BackendDescriptor + ()=default + BackendDescriptor + + + + + + + + + + + + +BackendDescriptor class Holds a Managed pointer to OpaqueBackendPointer class Contains the status and error message if set after any operation. If exception is disabled the user must query the status after build operation in order to check if the cudnn construct was built correctly. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #err_msg + + + #pointer + + + #status + + + + + + + + + + + cudnn_frontend::BackendDescriptorBackendDescriptor + cudnn_frontend::BackendDescriptorBackendDescriptor + cudnn_frontend::BackendDescriptordescribe + cudnn_frontend::BackendDescriptorerr_msg + cudnn_frontend::BackendDescriptorget_desc + cudnn_frontend::BackendDescriptorget_error + cudnn_frontend::BackendDescriptorget_raw_desc + cudnn_frontend::BackendDescriptorget_status + cudnn_frontend::BackendDescriptorinitialize_managed_backend_pointer + cudnn_frontend::BackendDescriptorpointer + cudnn_frontend::BackendDescriptorset_error + cudnn_frontend::BackendDescriptorset_status + cudnn_frontend::BackendDescriptorstatus + + + diff --git a/docs/xml/d6/da7/classcudnn__frontend_1_1Tensor__v8.xml b/docs/xml/d6/da7/classcudnn__frontend_1_1Tensor__v8.xml new file mode 100644 index 000000000..56486ff48 --- /dev/null +++ b/docs/xml/d6/da7/classcudnn__frontend_1_1Tensor__v8.xml @@ -0,0 +1,342 @@ + + + + cudnn_frontend::Tensor_v8 + cudnn_frontend::BackendDescriptor + cudnn_frontend_Tensor.h + + + friend class + friend class TensorBuilder_v8 + + TensorBuilder_v8 + + + + + + + + cudnn_frontend::TensorBuilder_v8::build + + + + + cudnnDataType_t + cudnnDataType_t cudnn_frontend::Tensor_v8::data_type + + data_type + = CUDNN_DATA_FLOAT + + + + + + + + describe + + + int64_t + int64_t cudnn_frontend::Tensor_v8::btensor_dimA[CUDNN_DIM_MAX+1] + [CUDNN_DIM_MAX+1] + btensor_dimA + = {-1} + +Datatype of the elements. + + + + + + describe + Tensor_v8 + + + int64_t + int64_t cudnn_frontend::Tensor_v8::btensor_strA[CUDNN_DIM_MAX+1] + [CUDNN_DIM_MAX+1] + btensor_strA + = {-1} + +n, g, c, d, h, w + + + + + + describe + Tensor_v8 + + + int64_t + int64_t cudnn_frontend::Tensor_v8::id + + id + = -1 + +n, g, c, d, h, w + + + + + + + + int64_t + int64_t cudnn_frontend::Tensor_v8::alignment + + alignment + = -1 + +Unique id of the tensor. + + + + + + describe + + + int64_t + int64_t cudnn_frontend::Tensor_v8::nDims + + nDims + = -1 + +Certain engine config expect minimum alignment of 16B. + +Alignment of the tensor. + + + + describe + + + bool + bool cudnn_frontend::Tensor_v8::isVirtual + + isVirtual + = false + +Number of Dimensions of the tensor. + + + + + + + + + + std::string + std::string cudnn_frontend::Tensor_v8::describe + () const override + describe + describe + +Return a string describing the backend Descriptor. + + + + + + alignment + btensor_dimA + btensor_strA + data_type + nDims + + + + cudnn_frontend::Tensor_v8::Tensor_v8 + (Tensor_v8 &&from) + Tensor_v8 + + Tensor_v8 && + from + + + + + + + + + btensor_dimA + btensor_strA + operator= + Tensor_v8 + ~Tensor_v8 + + + + cudnn_frontend::Tensor_v8::~Tensor_v8 + ()=default + ~Tensor_v8 + + + + + + + + Tensor_v8 + + + + + + cudnn_frontend::Tensor_v8::Tensor_v8 + ()=default + Tensor_v8 + + + + + + + + Tensor_v8 + + + + cudnn_frontend::Tensor_v8::Tensor_v8 + (Tensor_v8 const &)=delete + Tensor_v8 + + Tensor_v8 const & + + + + + + + + + + + Tensor_v8 & + Tensor_v8& cudnn_frontend::Tensor_v8::operator= + (Tensor_v8 const &)=delete + operator= + + Tensor_v8 const & + + + + + + + + + cudnn_frontend::TensorBuilder_v8::build + Tensor_v8 + + + + + +Tensor_v8 Class This class tells the properties of the Tensor_v8 on which the operation will be performed Properties: +dataTypealignmentunique identifiertensor dimensionstensor stridesisVirtual +Use TensorBuilder_v8 to build this class. Describe returns a string describing the tensor class + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -btensor_dimA + -nDims + -id + -alignment + -btensor_strA + + + -isVirtual + + + -data_type + + + + + + + #err_msg + + + #pointer + + + #status + + + + + + + + + + + cudnn_frontend::Tensor_v8alignment + cudnn_frontend::Tensor_v8BackendDescriptor + cudnn_frontend::Tensor_v8BackendDescriptor + cudnn_frontend::Tensor_v8btensor_dimA + cudnn_frontend::Tensor_v8btensor_strA + cudnn_frontend::Tensor_v8data_type + cudnn_frontend::Tensor_v8describe + cudnn_frontend::Tensor_v8err_msg + cudnn_frontend::Tensor_v8get_desc + cudnn_frontend::Tensor_v8get_error + cudnn_frontend::Tensor_v8get_raw_desc + cudnn_frontend::Tensor_v8get_status + cudnn_frontend::Tensor_v8id + cudnn_frontend::Tensor_v8initialize_managed_backend_pointer + cudnn_frontend::Tensor_v8isVirtual + cudnn_frontend::Tensor_v8nDims + cudnn_frontend::Tensor_v8operator= + cudnn_frontend::Tensor_v8pointer + cudnn_frontend::Tensor_v8set_error + cudnn_frontend::Tensor_v8set_status + cudnn_frontend::Tensor_v8status + cudnn_frontend::Tensor_v8Tensor_v8 + cudnn_frontend::Tensor_v8Tensor_v8 + cudnn_frontend::Tensor_v8Tensor_v8 + cudnn_frontend::Tensor_v8TensorBuilder_v8 + cudnn_frontend::Tensor_v8~Tensor_v8 + + + diff --git a/docs/xml/d6/db7/classcudnn__frontend_1_1MatMulDesc__v8.xml b/docs/xml/d6/db7/classcudnn__frontend_1_1MatMulDesc__v8.xml new file mode 100644 index 000000000..6c757eb80 --- /dev/null +++ b/docs/xml/d6/db7/classcudnn__frontend_1_1MatMulDesc__v8.xml @@ -0,0 +1,224 @@ + + + + cudnn_frontend::MatMulDesc_v8 + cudnn_frontend::BackendDescriptor + cudnn_frontend_MatMulDesc.h + + + friend class + friend class MatMulDescBuilder_v8 + + MatMulDescBuilder_v8 + + + + + + + + cudnn_frontend::MatMulDescBuilder_v8::build + + + + + cudnnDataType_t + cudnnDataType_t cudnn_frontend::MatMulDesc_v8::math_precision + + math_precision + = CUDNN_DATA_FLOAT + + + + + + + + describe + + + + + std::string + std::string cudnn_frontend::MatMulDesc_v8::describe + () const override + describe + describe + +Return a string describing the backend Descriptor. + + + + + + math_precision + + + + cudnn_frontend::MatMulDesc_v8::MatMulDesc_v8 + (MatMulDesc_v8 &&from) + MatMulDesc_v8 + + MatMulDesc_v8 && + from + + + + + + + + + MatMulDesc_v8 + operator= + ~MatMulDesc_v8 + + + + cudnn_frontend::MatMulDesc_v8::~MatMulDesc_v8 + ()=default + ~MatMulDesc_v8 + + + + + + + + MatMulDesc_v8 + + + + + + cudnn_frontend::MatMulDesc_v8::MatMulDesc_v8 + ()=default + MatMulDesc_v8 + + + + + + + + MatMulDesc_v8 + + + + cudnn_frontend::MatMulDesc_v8::MatMulDesc_v8 + (MatMulDesc_v8 const &)=delete + MatMulDesc_v8 + + MatMulDesc_v8 const & + + + + + + + + + + + MatMulDesc_v8 & + MatMulDesc_v8& cudnn_frontend::MatMulDesc_v8::operator= + (MatMulDesc_v8 const &)=delete + operator= + + MatMulDesc_v8 const & + + + + + + + + + cudnn_frontend::MatMulDescBuilder_v8::build + MatMulDesc_v8 + + + + + +MatMulDesc Descriptor Class This class tells the properties of the MatMul operation Properties: +math_precision +Use MatMulDesc_v8 to build this class. Describe returns a string describing the MatMul operation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -math_precision + + + + + + + #err_msg + + + #pointer + + + #status + + + + + + + + + + + cudnn_frontend::MatMulDesc_v8BackendDescriptor + cudnn_frontend::MatMulDesc_v8BackendDescriptor + cudnn_frontend::MatMulDesc_v8describe + cudnn_frontend::MatMulDesc_v8err_msg + cudnn_frontend::MatMulDesc_v8get_desc + cudnn_frontend::MatMulDesc_v8get_error + cudnn_frontend::MatMulDesc_v8get_raw_desc + cudnn_frontend::MatMulDesc_v8get_status + cudnn_frontend::MatMulDesc_v8initialize_managed_backend_pointer + cudnn_frontend::MatMulDesc_v8math_precision + cudnn_frontend::MatMulDesc_v8MatMulDesc_v8 + cudnn_frontend::MatMulDesc_v8MatMulDesc_v8 + cudnn_frontend::MatMulDesc_v8MatMulDesc_v8 + cudnn_frontend::MatMulDesc_v8MatMulDescBuilder_v8 + cudnn_frontend::MatMulDesc_v8operator= + cudnn_frontend::MatMulDesc_v8pointer + cudnn_frontend::MatMulDesc_v8set_error + cudnn_frontend::MatMulDesc_v8set_status + cudnn_frontend::MatMulDesc_v8status + cudnn_frontend::MatMulDesc_v8~MatMulDesc_v8 + + + diff --git a/docs/xml/d7/d0d/group__ExecutionPlanQuery.xml b/docs/xml/d7/d0d/group__ExecutionPlanQuery.xml new file mode 100644 index 000000000..e4c95a604 --- /dev/null +++ b/docs/xml/d7/d0d/group__ExecutionPlanQuery.xml @@ -0,0 +1,279 @@ + + + + ExecutionPlanQuery + ExecutionPlanQuery + ExecutionPlanBuilder_v8 + + + ManagedOpaqueDescriptor + ManagedOpaqueDescriptor cudnn_frontend::ExecutionPlan_v8::engine_config + + engine_config + = nullptr + + + + + + + + cudnn_frontend::ExecutionPlan_v8::computeTag + + + cudnnHandle_t + cudnnHandle_t cudnn_frontend::ExecutionPlan_v8::handle + + handle + = nullptr + + + + + + + + + + std::string + std::string cudnn_frontend::ExecutionPlan_v8::planTag + + planTag + + + + + + + + cudnn_frontend::ExecutionPlan_v8::computeTag + cudnn_frontend::ExecutionPlan_v8::getTag + + + ExecutionPlan_v8 + ExecutionPlan_v8 cudnn_frontend::ExecutionPlanBuilder_v8::m_execution_plan + + m_execution_plan + + + + + + + + + + + + auto + auto cudnn_frontend::ExecutionPlan_v8::getWorkspaceSize + (void) const -> int64_t + getWorkspaceSize + + void + + +Query the workspace requirement for the given plan. + + + + + + cudnn_frontend::BackendDescriptor::pointer + cudnn_frontend::set_error_and_throw_exception + cudnn_frontend::BackendDescriptor::status + + + std::string + std::string cudnn_frontend::ExecutionPlan_v8::describe + () const override + describe + describe + +Return a string describing the backend Descriptor. + + + + + + + + std::string const & + std::string const& cudnn_frontend::ExecutionPlan_v8::getTag + () const + getTag + + + + + + + + cudnn_frontend::ExecutionPlan_v8::planTag + + + void + void cudnn_frontend::ExecutionPlan_v8::computeTag + () + computeTag + + + + + + + + cudnn_frontend::ExecutionPlan_v8::engine_config + cudnn_frontend::ExecutionPlan_v8::ExecutionPlan_v8 + cudnn_frontend::make_shared_backend_pointer + cudnn_frontend::ExecutionPlan_v8::operator= + cudnn_frontend::ExecutionPlan_v8::planTag + cudnn_frontend::set_error_and_throw_exception + cudnn_frontend::BackendDescriptor::status + + + + cudnn_frontend::ExecutionPlan_v8::ExecutionPlan_v8 + ()=default + ExecutionPlan_v8 + + + + + + + + cudnn_frontend::ExecutionPlan_v8::computeTag + + + + cudnn_frontend::ExecutionPlan_v8::ExecutionPlan_v8 + (ExecutionPlan_v8 const &)=delete + ExecutionPlan_v8 + + ExecutionPlan_v8 const & + + + + + + + + + + + ExecutionPlan_v8 & + ExecutionPlan_v8& cudnn_frontend::ExecutionPlan_v8::operator= + (ExecutionPlan_v8 const &)=delete + operator= + + ExecutionPlan_v8 const & + + + + + + + + + cudnn_frontend::ExecutionPlanBuilder_v8::build + cudnn_frontend::ExecutionPlan_v8::computeTag + + + ExecutionPlan_v8 && + ExecutionPlan_v8&& cudnn_frontend::ExecutionPlanBuilder_v8::build + () + build + + + +constructs the Engine Config by calling the cudnn API Throws the appropriate error message + + + + cudnn_frontend::ExecutionPlan_v8::ExecutionPlanBuilder_v8 + cudnn_frontend::ExecutionPlan_v8::operator= + cudnn_frontend::set_error_and_throw_exception + cudnn_frontend::BackendDescriptor::status + + + + cudnn_frontend::ExecutionPlanBuilder_v8::ExecutionPlanBuilder_v8 + ()=default + ExecutionPlanBuilder_v8 + + + + + + + + + + + cudnn_frontend::ExecutionPlanBuilder_v8::~ExecutionPlanBuilder_v8 + ()=default + ~ExecutionPlanBuilder_v8 + + + + + + + + + + + cudnn_frontend::ExecutionPlanBuilder_v8::ExecutionPlanBuilder_v8 + (ExecutionPlanBuilder_v8 &&)=delete + ExecutionPlanBuilder_v8 + + ExecutionPlanBuilder_v8 && + + + + + + + + + + + + cudnn_frontend::ExecutionPlanBuilder_v8::ExecutionPlanBuilder_v8 + (ExecutionPlanBuilder_v8 const &)=delete + ExecutionPlanBuilder_v8 + + ExecutionPlanBuilder_v8 const & + + + + + + + + + + + ExecutionPlanBuilder_v8 & + ExecutionPlanBuilder_v8& cudnn_frontend::ExecutionPlanBuilder_v8::operator= + (ExecutionPlanBuilder_v8 const &)=delete + operator= + + ExecutionPlanBuilder_v8 const & + + + + + + + + + + + + + +Query individual property of ExecutionPlan_v8 class + + diff --git a/docs/xml/d8/dcc/namespacestd.xml b/docs/xml/d8/dcc/namespacestd.xml new file mode 100644 index 000000000..b3683551c --- /dev/null +++ b/docs/xml/d8/dcc/namespacestd.xml @@ -0,0 +1,86 @@ + + + + std + std::allocator + std::array + std::auto_ptr + std::bad_alloc + std::bad_cast + std::bad_exception + std::bad_typeid + std::basic_fstream + std::basic_ifstream + std::basic_ios + std::basic_iostream + std::basic_istream + std::basic_istringstream + std::basic_ofstream + std::basic_ostream + std::basic_ostringstream + std::basic_string + std::basic_stringstream + std::bitset + std::complex + std::deque + std::domain_error + std::error_category + std::error_code + std::error_condition + std::exception + std::forward_list + std::fstream + std::ifstream + std::invalid_argument + std::ios + std::ios_base + std::istream + std::istringstream + std::length_error + std::list + std::logic_error + std::map + std::multimap + std::multiset + std::ofstream + std::ostream + std::ostringstream + std::out_of_range + std::overflow_error + std::priority_queue + std::queue + std::range_error + std::runtime_error + std::set + std::smart_ptr + std::stack + std::string + std::stringstream + std::system_error + std::thread + std::underflow_error + std::unique_ptr + std::unordered_map + std::unordered_multimap + std::unordered_multiset + std::unordered_set + std::valarray + std::vector + std::weak_ptr + std::wfstream + std::wifstream + std::wios + std::wistream + std::wistringstream + std::wofstream + std::wostream + std::wostringstream + std::wstring + std::wstringstream + +STL namespace. + + + + + diff --git a/docs/xml/d9/d08/group__MatMulDescBuilder__v8.xml b/docs/xml/d9/d08/group__MatMulDescBuilder__v8.xml new file mode 100644 index 000000000..58149f1f9 --- /dev/null +++ b/docs/xml/d9/d08/group__MatMulDescBuilder__v8.xml @@ -0,0 +1,30 @@ + + + + MatMulDescBuilder_v8 + MatMulDescBuilder_v8 + + + auto + auto cudnn_frontend::MatMulDescBuilder_v8::setMathPrecision + (cudnnDataType_t data_type_) -> MatMulDescBuilder_v8 & + setMathPrecision + + cudnnDataType_t + data_type_ + + +Set Math Precision Data Type for the Matmul Operation. + + + + + + + + + + +Set individual property of MatMulDesc_v8 class + + diff --git a/docs/xml/d9/dca/classcudnn__frontend_1_1cudnnException.xml b/docs/xml/d9/dca/classcudnn__frontend_1_1cudnnException.xml new file mode 100644 index 000000000..f3f07a910 --- /dev/null +++ b/docs/xml/d9/dca/classcudnn__frontend_1_1cudnnException.xml @@ -0,0 +1,85 @@ + + + + cudnn_frontend::cudnnException + std::runtime_error + cudnn_frontend_utils.h + + + + cudnn_frontend::cudnnException::cudnnException + (const char *message) + cudnnException + + const char * + message + + throw () + + + + + + + + cudnn_frontend::set_error_and_throw_exception + cudnn_frontend::throw_if + + + const char * + virtual const char* cudnn_frontend::cudnnException::what + () const + what + throw () + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + cudnn_frontend::cudnnExceptioncudnnException + cudnn_frontend::cudnnExceptionwhat + + + diff --git a/docs/xml/d9/df1/classcudnn__frontend_1_1EngineFallbackListBuilder__v8.xml b/docs/xml/d9/df1/classcudnn__frontend_1_1EngineFallbackListBuilder__v8.xml new file mode 100644 index 000000000..9188d91e3 --- /dev/null +++ b/docs/xml/d9/df1/classcudnn__frontend_1_1EngineFallbackListBuilder__v8.xml @@ -0,0 +1,246 @@ + + + + cudnn_frontend::EngineFallbackListBuilder_v8 + cudnn_frontend_EngineFallbackList.h + + + EngineFallbackList_v8 + EngineFallbackList_v8 cudnn_frontend::EngineFallbackListBuilder_v8::m_fallback_list + + m_fallback_list + + + + + + + + + + + + auto + auto cudnn_frontend::EngineFallbackListBuilder_v8::setOperationGraph + (OperationGraph_v8 &opGraph_) -> EngineFallbackListBuilder_v8 & + setOperationGraph + + OperationGraph_v8 & + opGraph_ + + +Set operationGraph for the engine (opGraph is not destroyed) + + + + + + + + auto + auto cudnn_frontend::EngineFallbackListBuilder_v8::setOperation + (cudnnBackendDescriptorType_t mode) -> EngineFallbackListBuilder_v8 & + setOperation + + cudnnBackendDescriptorType_t + mode + + + + + + + + + cudnn_frontend::EngineFallbackList_v8::mode + + + EngineFallbackList_v8 && + EngineFallbackList_v8&& cudnn_frontend::EngineFallbackListBuilder_v8::build + () + build + + + +constructs the EngineFallbackList_v8 by calling the cudnn API Throws the appropriate error message + + + + cudnn_frontend::EngineFallbackList_v8::EngineFallbackListBuilder_v8 + cudnn_frontend::get_fallback_engine_list + cudnn_frontend::EngineFallbackList_v8::operator= + cudnn_frontend::set_error_and_throw_exception + cudnn_frontend::EngineConfigBuilder_v8::setEngine + cudnn_frontend::EngineBuilder_v8::setGlobalEngineIdx + + + + cudnn_frontend::EngineFallbackListBuilder_v8::EngineFallbackListBuilder_v8 + ()=default + EngineFallbackListBuilder_v8 + + + + + + + + + + + cudnn_frontend::EngineFallbackListBuilder_v8::~EngineFallbackListBuilder_v8 + ()=default + ~EngineFallbackListBuilder_v8 + + + + + + + + + + + cudnn_frontend::EngineFallbackListBuilder_v8::EngineFallbackListBuilder_v8 + (EngineFallbackListBuilder_v8 &&)=delete + EngineFallbackListBuilder_v8 + + EngineFallbackListBuilder_v8 && + + + + + + + + + + + + cudnn_frontend::EngineFallbackListBuilder_v8::EngineFallbackListBuilder_v8 + (EngineFallbackListBuilder_v8 const &)=delete + EngineFallbackListBuilder_v8 + + EngineFallbackListBuilder_v8 const & + + + + + + + + + + + EngineFallbackListBuilder_v8 & + EngineFallbackListBuilder_v8& cudnn_frontend::EngineFallbackListBuilder_v8::operator= + (EngineFallbackListBuilder_v8 const &)=delete + operator= + + EngineFallbackListBuilder_v8 const & + + + + + + + + + + + + + +EngineFallBackListBuilder Class Helper class used to build EngineFallBackList class + + + + + + + + + + + +elements + + + + + + + + + -m_engine_configs + + + -opGraphTag + + + -opGraph + + + -mode + + + + + + + -m_fallback_list + + + + + + + + + +elements + + + < ManagedOpaqueDescriptor > + + + + + + + + + + + + + + + + #err_msg + + + #pointer + + + #status + + + + + + + + + + + cudnn_frontend::EngineFallbackListBuilder_v8build + cudnn_frontend::EngineFallbackListBuilder_v8EngineFallbackListBuilder_v8 + cudnn_frontend::EngineFallbackListBuilder_v8EngineFallbackListBuilder_v8 + cudnn_frontend::EngineFallbackListBuilder_v8EngineFallbackListBuilder_v8 + cudnn_frontend::EngineFallbackListBuilder_v8m_fallback_list + cudnn_frontend::EngineFallbackListBuilder_v8operator= + cudnn_frontend::EngineFallbackListBuilder_v8setOperation + cudnn_frontend::EngineFallbackListBuilder_v8setOperationGraph + cudnn_frontend::EngineFallbackListBuilder_v8~EngineFallbackListBuilder_v8 + + + diff --git a/docs/xml/d9/dfd/classcudnn__frontend_1_1EngineBuilder__v8.xml b/docs/xml/d9/dfd/classcudnn__frontend_1_1EngineBuilder__v8.xml new file mode 100644 index 000000000..3d0d43e58 --- /dev/null +++ b/docs/xml/d9/dfd/classcudnn__frontend_1_1EngineBuilder__v8.xml @@ -0,0 +1,297 @@ + + + + cudnn_frontend::EngineBuilder_v8 + cudnn_frontend_Engine.h + + + Engine_v8 + Engine_v8 cudnn_frontend::EngineBuilder_v8::m_engine + + m_engine + + + + + + + + + + + + auto + auto cudnn_frontend::EngineBuilder_v8::setOperationGraph + (OperationGraph_v8 const &opGraph_) -> EngineBuilder_v8 & + setOperationGraph + + OperationGraph_v8 const & + opGraph_ + + +Set operationGraph for the engine. + + + + + + + + auto + auto cudnn_frontend::EngineBuilder_v8::setOperationGraph + (ManagedOpaqueDescriptor desc_) -> EngineBuilder_v8 & + setOperationGraph + + ManagedOpaqueDescriptor + desc_ + + +Set operationGraph for the engine. + + + + + + + + auto + auto cudnn_frontend::EngineBuilder_v8::setGlobalEngineIdx + (int64_t idx_) -> EngineBuilder_v8 & + setGlobalEngineIdx + + int64_t + idx_ + + +Set engine index for the engine. + + + + + + cudnn_frontend::EngineFallbackListBuilder_v8::build + + + Engine_v8 && + Engine_v8&& cudnn_frontend::EngineBuilder_v8::build + () + build + + + +constructs the Engine_v8 by calling the cudnn API Throws the appropriate error message + + + + cudnn_frontend::Engine_v8::EngineBuilder_v8 + cudnn_frontend::Engine_v8::operator= + cudnn_frontend::set_error_and_throw_exception + cudnn_frontend::BackendDescriptor::status + + + + cudnn_frontend::EngineBuilder_v8::EngineBuilder_v8 + ()=default + EngineBuilder_v8 + + + + + + + + + + + cudnn_frontend::EngineBuilder_v8::~EngineBuilder_v8 + ()=default + ~EngineBuilder_v8 + + + + + + + + + + + cudnn_frontend::EngineBuilder_v8::EngineBuilder_v8 + (EngineBuilder_v8 &&)=delete + EngineBuilder_v8 + + EngineBuilder_v8 && + + + + + + + + + + + + cudnn_frontend::EngineBuilder_v8::EngineBuilder_v8 + (EngineBuilder_v8 const &)=delete + EngineBuilder_v8 + + EngineBuilder_v8 const & + + + + + + + + + + + EngineBuilder_v8 & + EngineBuilder_v8& cudnn_frontend::EngineBuilder_v8::operator= + (EngineBuilder_v8 const &)=delete + operator= + + EngineBuilder_v8 const & + + + + + + + + + + + + + +EngineBuilder_v8 Class Helper class used to build Engine_v8 class + + + + + +elements + + + < cudnn_frontend::Engine_v8::Knob > + + + + + + + + + + + + +elements + + + + + + +elements + + + + + + +elements + + + < ManagedOpaqueDescriptor, CUDNN_KNOB_TYPE_COUNTS > + + + + + + + -m_engine + + + + + + + + + + + + + + + + + + + + + + + + -bKnobs + + + -idx + -numKnobs + + + -opGraphTag + + + -opGraph + + + -knobs + + + + + + + #err_msg + + + #pointer + + + #status + + + + + + + -knobType + + + -minValue + -maxValue + -stride + -choice + + + + + + + + + + + cudnn_frontend::EngineBuilder_v8build + cudnn_frontend::EngineBuilder_v8EngineBuilder_v8 + cudnn_frontend::EngineBuilder_v8EngineBuilder_v8 + cudnn_frontend::EngineBuilder_v8EngineBuilder_v8 + cudnn_frontend::EngineBuilder_v8m_engine + cudnn_frontend::EngineBuilder_v8operator= + cudnn_frontend::EngineBuilder_v8setGlobalEngineIdx + cudnn_frontend::EngineBuilder_v8setOperationGraph + cudnn_frontend::EngineBuilder_v8setOperationGraph + cudnn_frontend::EngineBuilder_v8~EngineBuilder_v8 + + + diff --git a/docs/xml/da/d5a/cudnn__frontend__Operation_8h.xml b/docs/xml/da/d5a/cudnn__frontend__Operation_8h.xml new file mode 100644 index 000000000..675004630 --- /dev/null +++ b/docs/xml/da/d5a/cudnn__frontend__Operation_8h.xml @@ -0,0 +1,1315 @@ + + + + cudnn_frontend_Operation.h + algorithm + array + functional + memory + sstream + utility + cudnn.h + cudnn_backend.h + cudnn_frontend_ConvDesc.h + cudnn_frontend_PointWiseDesc.h + cudnn_frontend_MatMulDesc.h + cudnn_frontend_Tensor.h + cudnn_frontend_utils.h + cudnn_frontend_OperationGraph.h + cudnn_frontend.h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + cudnn_frontend::Operation_v8 + cudnn_frontend::OperationBuilder_v8 + cudnn_frontend + + + + + +/* +*Copyright(c)2021,NVIDIACORPORATION.Allrightsreserved. +* +*Permissionisherebygranted,freeofcharge,toanypersonobtaininga +*copyofthissoftwareandassociateddocumentationfiles(the"Software"), +*todealintheSoftwarewithoutrestriction,includingwithoutlimitation +*therightstouse,copy,modify,merge,publish,distribute,sublicense, +*and/orsellcopiesoftheSoftware,andtopermitpersonstowhomthe +*Softwareisfurnishedtodoso,subjecttothefollowingconditions: +* +*Theabovecopyrightnoticeandthispermissionnoticeshallbeincludedin +*allcopiesorsubstantialportionsoftheSoftware. +* +*THESOFTWAREISPROVIDED"ASIS",WITHOUTWARRANTYOFANYKIND,EXPRESSOR +*IMPLIED,INCLUDINGBUTNOTLIMITEDTOTHEWARRANTIESOFMERCHANTABILITY, +*FITNESSFORAPARTICULARPURPOSEANDNONINFRINGEMENT.INNOEVENTSHALL +*THEAUTHORSORCOPYRIGHTHOLDERSBELIABLEFORANYCLAIM,DAMAGESOROTHER +*LIABILITY,WHETHERINANACTIONOFCONTRACT,TORTOROTHERWISE,ARISING +*FROM,OUTOFORINCONNECTIONWITHTHESOFTWAREORTHEUSEOROTHER +*DEALINGSINTHESOFTWARE. +*/ + +#pragmaonce + +#include<algorithm> +#include<array> +#include<functional> +#include<memory> +#include<sstream> +#include<utility> + +#include<cudnn.h> +#include<cudnn_backend.h> + +#include"cudnn_frontend_ConvDesc.h" +#include"cudnn_frontend_PointWiseDesc.h" +#include"cudnn_frontend_MatMulDesc.h" +#include"cudnn_frontend_Tensor.h" +#include"cudnn_frontend_utils.h" + +namespacecudnn_frontend{ +classOperation_v8:publicBackendDescriptor{ +public: +friendclassOperationBuilder_v8; +std::string +describe()constoverride{ +std::stringstreamss; +ss<<"CUDNN_BACKEND_OPERATION:" +<<"OpMode:"<<std::to_string(op_mode); +ss<<std::hex<<"X"<<xdesc; +ss<<std::hex<<"Y"<<ydesc; +ss<<std::hex<<"W"<<wdesc; +ss<<std::hex<<"B"<<bdesc; +ss<<std::hex<<"DW"<<dwdesc; +ss<<std::hex<<"DY"<<dydesc; +ss<<std::hex<<"DX"<<dxdesc; +ss<<std::hex<<"C"<<cdesc; +ss<<std::hex<<"AMtrix"<<amatdesc; +ss<<std::hex<<"BMtrix"<<bmatdesc; +ss<<std::hex<<"CMtrix"<<cmatdesc; +ss<<std::hex<<"P"<<pwdesc; +ss<<std::hex<<"MatMul"<<matmuldesc; +ss<<std::dec<<"alphabetaType"<<alphabetaType; +ss<<"Alpha:"<<alpha_s<<""<<alpha_d; +ss<<"Alpha2:"<<alpha2_s<<""<<alpha2_d; +ss<<"Beta:"<<beta_s<<""<<beta_d; +returnss.str(); +} +Operation_v8(Operation_v8&&from) +:BackendDescriptor(from.pointer,from.get_status(),from.get_error()), +op_mode(from.op_mode), +xdesc(from.xdesc), +ydesc(from.ydesc), +wdesc(from.wdesc), +bdesc(from.bdesc), +dydesc(from.dydesc), +dxdesc(from.dxdesc), +dwdesc(from.dwdesc), +cdesc(from.cdesc), +amatdesc(from.amatdesc), +bmatdesc(from.bmatdesc), +cmatdesc(from.cmatdesc), +pwdesc(from.pwdesc), +matmuldesc(from.matmuldesc), +alphabetaType(from.alphabetaType), +alpha_s(from.alpha_s), +beta_s(from.beta_s), +alpha2_s(from.alpha2_s), +alpha_d(from.alpha_d), +beta_d(from.beta_d), +alpha2_d(from.alpha2_d), +pointwise_port_count(from.pointwise_port_count), +pointwise_mode(from.pointwise_mode), +operationTag(from.operationTag){} + +ManagedOpaqueDescriptor +getOutputTensor(){ +return(op_mode==CUDNN_BACKEND_OPERATION_MATMUL_DESCRIPTOR)?cmatdesc:ydesc; +} + +std::stringconst& +getTag()const{ +returnoperationTag; +} + +~Operation_v8()=default; + +private: +Operation_v8()=default; +Operation_v8(Operation_v8const&)=delete; +Operation_v8& +operator=(Operation_v8const&)=delete; + +cudnnBackendDescriptorType_top_mode=CUDNN_BACKEND_OPERATION_CONVOLUTION_FORWARD_DESCRIPTOR; + +ManagedOpaqueDescriptorxdesc=nullptr; +ManagedOpaqueDescriptorydesc=nullptr; +ManagedOpaqueDescriptorwdesc=nullptr; +ManagedOpaqueDescriptorbdesc=nullptr; +ManagedOpaqueDescriptordydesc=nullptr; +ManagedOpaqueDescriptordxdesc=nullptr; +ManagedOpaqueDescriptordwdesc=nullptr; +ManagedOpaqueDescriptorcdesc=nullptr; +ManagedOpaqueDescriptoramatdesc=nullptr; +ManagedOpaqueDescriptorbmatdesc=nullptr; +ManagedOpaqueDescriptorcmatdesc=nullptr; +ManagedOpaqueDescriptorpwdesc=nullptr; +ManagedOpaqueDescriptormatmuldesc=nullptr; + +cudnnBackendAttributeType_talphabetaType=CUDNN_TYPE_FLOAT; +floatalpha_s=1.0f,beta_s=.0f,alpha2_s=1.0f; +doublealpha_d=1.0,beta_d=0.0,alpha2_d=1.0; +int64_tpointwise_port_count=-1; +cudnnPointwiseMode_tpointwise_mode; +boolis_pointwise_activation_fwd_op=false; +boolis_pointwise_activation_bwd_op=false; +boolis_pointwise_math_op=false; +std::stringoperationTag; +}; + + +classOperationBuilder_v8{ +private: +Operation_v8m_operation; +boolis_convolution_op=false; +boolis_pointwise_op=false; +boolis_matmul_op=false; + +public: +auto +setxDesc(ManagedOpaqueDescriptorconst&raw_tensor)->OperationBuilder_v8&{ +m_operation.xdesc=raw_tensor; +return*this; +} + +auto +setxDesc(Tensor_v8const&tensor)->OperationBuilder_v8&{ +m_operation.xdesc=tensor.get_desc(); +return*this; +} +auto +setbDesc(Tensor_v8const&tensor)->OperationBuilder_v8&{ +if(is_pointwise_op==false){ +set_error_and_throw_exception( +&m_operation, +CUDNN_STATUS_BAD_PARAM, +"CUDNN_BACKEND_OPERATION_*_DESCRIPTOR:NonPointwiseoperationdoesnotneedbTensor"); +} +m_operation.bdesc=tensor.get_desc(); +return*this; +} +auto +setyDesc(Tensor_v8const&tensor)->OperationBuilder_v8&{ +m_operation.ydesc=tensor.get_desc(); +return*this; +} +auto +setwDesc(Tensor_v8const&tensor)->OperationBuilder_v8&{ +if(is_convolution_op==false){ +set_error_and_throw_exception( +&m_operation, +CUDNN_STATUS_BAD_PARAM, +"CUDNN_BACKEND_OPERATION_*_DESCRIPTOR:NonConvolutionoperationdoesnotneedwTensor"); +} +m_operation.wdesc=tensor.get_desc(); +return*this; +} + +auto +setdyDesc(ManagedOpaqueDescriptorconst&raw_tensor)->OperationBuilder_v8&{ +m_operation.dydesc=raw_tensor; +return*this; +} +auto +setdyDesc(Tensor_v8const&tensor)->OperationBuilder_v8&{ +m_operation.dydesc=tensor.get_desc(); +return*this; +} +auto +setdxDesc(Tensor_v8const&tensor)->OperationBuilder_v8&{ +m_operation.dxdesc=tensor.get_desc(); +return*this; +} +auto +setdwDesc(Tensor_v8const&tensor)->OperationBuilder_v8&{ +m_operation.dwdesc=tensor.get_desc(); +return*this; +} + +auto +setcDesc(ConvDesc_v8const&conv)->OperationBuilder_v8&{ +if(is_convolution_op==false){ +set_error_and_throw_exception( +&m_operation, +CUDNN_STATUS_BAD_PARAM, +"CUDNN_BACKEND_OPERATION_*_DESCRIPTOR:NonConvolutionoperationdoesnotneedConvolutionDESCRIPTOR"); +} +m_operation.cdesc=conv.get_desc(); +return*this; +} +auto +setaMatDesc(Tensor_v8const&tensor)->OperationBuilder_v8&{ +if(is_matmul_op==false){ +set_error_and_throw_exception( +&m_operation, +CUDNN_STATUS_BAD_PARAM, +"CUDNN_BACKEND_OPERATION_*_DESCRIPTOR:NonMatmuloperationdoesnotneedaMatrixTensor"); +} +m_operation.amatdesc=tensor.get_desc(); +return*this; +} +auto +setbMatDesc(Tensor_v8const&tensor)->OperationBuilder_v8&{ +if(is_matmul_op==false){ +set_error_and_throw_exception( +&m_operation, +CUDNN_STATUS_BAD_PARAM, +"CUDNN_BACKEND_OPERATION_*_DESCRIPTOR:NonMatmuloperationdoesnotneedbMatrixTensor"); +} +m_operation.bmatdesc=tensor.get_desc(); +return*this; +} +auto +setcMatDesc(Tensor_v8const&tensor)->OperationBuilder_v8&{ +if(is_matmul_op==false){ +set_error_and_throw_exception( +&m_operation, +CUDNN_STATUS_BAD_PARAM, +"CUDNN_BACKEND_OPERATION_*_DESCRIPTOR:NonMatmuloperationdoesnotneedcMatrixTensor"); +} +m_operation.cmatdesc=tensor.get_desc(); +return*this; +} +auto +setmatmulDesc(MatMulDesc_v8const&matmulDesc)->OperationBuilder_v8&{ +if(is_matmul_op==false){ +set_error_and_throw_exception( +&m_operation, +CUDNN_STATUS_BAD_PARAM, +"CUDNN_BACKEND_OPERATION_*_DESCRIPTOR:NonMatmuloperationdoesnotneedMATMULDESCRIPTOR"); +} +m_operation.matmuldesc=matmulDesc.get_desc(); +return*this; +} +auto +setpwDesc(PointWiseDesc_v8const&pointWiseDesc)->OperationBuilder_v8&{ +if(is_pointwise_op==false){ +set_error_and_throw_exception( +&m_operation, +CUDNN_STATUS_BAD_PARAM, +"CUDNN_BACKEND_OPERATION_*_DESCRIPTOR:NonPointwiseoperationdoesnotneedPOINTWISEDESCRIPTOR"); +} +m_operation.pwdesc=pointWiseDesc.get_desc(); +m_operation.pointwise_port_count=pointWiseDesc.getPortCount(); +m_operation.pointwise_mode=pointWiseDesc.getPointWiseMode(); + +m_operation.is_pointwise_math_op=((m_operation.pointwise_mode==CUDNN_POINTWISE_ADD)|| +(m_operation.pointwise_mode==CUDNN_POINTWISE_MUL)|| +(m_operation.pointwise_mode==CUDNN_POINTWISE_MIN)|| +(m_operation.pointwise_mode==CUDNN_POINTWISE_MAX)|| +(m_operation.pointwise_mode==CUDNN_POINTWISE_SQRT)); + +m_operation.is_pointwise_activation_fwd_op=((m_operation.pointwise_mode==CUDNN_POINTWISE_RELU_FWD)|| +(m_operation.pointwise_mode==CUDNN_POINTWISE_TANH_FWD)|| +(m_operation.pointwise_mode==CUDNN_POINTWISE_SIGMOID_FWD)|| +(m_operation.pointwise_mode==CUDNN_POINTWISE_ELU_FWD)|| +(m_operation.pointwise_mode==CUDNN_POINTWISE_GELU_FWD)|| +(m_operation.pointwise_mode==CUDNN_POINTWISE_SOFTPLUS_FWD)|| +(m_operation.pointwise_mode==CUDNN_POINTWISE_SWISH_FWD)); + +m_operation.is_pointwise_activation_bwd_op=((m_operation.pointwise_mode==CUDNN_POINTWISE_RELU_BWD)|| +(m_operation.pointwise_mode==CUDNN_POINTWISE_TANH_BWD)|| +(m_operation.pointwise_mode==CUDNN_POINTWISE_SIGMOID_BWD)|| +(m_operation.pointwise_mode==CUDNN_POINTWISE_ELU_BWD)|| +(m_operation.pointwise_mode==CUDNN_POINTWISE_GELU_BWD)|| +(m_operation.pointwise_mode==CUDNN_POINTWISE_SOFTPLUS_BWD)|| +(m_operation.pointwise_mode==CUDNN_POINTWISE_SWISH_BWD)); + +return*this; +} + +auto +setAlpha(floatalpha)->OperationBuilder_v8&{ +m_operation.alphabetaType=CUDNN_TYPE_FLOAT; +m_operation.alpha_d=static_cast<double>(alpha); +m_operation.alpha_s=alpha; +return*this; +} +auto +setAlpha(doublealpha)->OperationBuilder_v8&{ +m_operation.alphabetaType=CUDNN_TYPE_DOUBLE; +m_operation.alpha_s=static_cast<float>(alpha); +m_operation.alpha_d=alpha; +return*this; +} +auto +setAlpha2(floatalpha)->OperationBuilder_v8&{ +m_operation.alphabetaType=CUDNN_TYPE_FLOAT; +m_operation.alpha2_d=static_cast<double>(alpha); +m_operation.alpha2_s=alpha; +return*this; +} +auto +setAlpha2(doublealpha)->OperationBuilder_v8&{ +m_operation.alphabetaType=CUDNN_TYPE_DOUBLE; +m_operation.alpha2_s=static_cast<float>(alpha); +m_operation.alpha2_d=alpha; +return*this; +} +auto +setBeta(floatbeta)->OperationBuilder_v8&{ +m_operation.alphabetaType=CUDNN_TYPE_FLOAT; +m_operation.beta_d=static_cast<double>(beta); +m_operation.beta_s=beta; +return*this; +} +auto +setBeta(doublebeta)->OperationBuilder_v8&{ +m_operation.alphabetaType=CUDNN_TYPE_DOUBLE; +m_operation.beta_s=static_cast<float>(beta); +m_operation.beta_d=beta; +return*this; +} + +OperationBuilder_v8(cudnnBackendDescriptorType_tmode){ +m_operation.op_mode=mode; +is_convolution_op=((m_operation.op_mode==CUDNN_BACKEND_OPERATION_CONVOLUTION_FORWARD_DESCRIPTOR)|| +(m_operation.op_mode==CUDNN_BACKEND_OPERATION_CONVOLUTION_BACKWARD_FILTER_DESCRIPTOR)|| +(m_operation.op_mode==CUDNN_BACKEND_OPERATION_CONVOLUTION_BACKWARD_DATA_DESCRIPTOR)); + +is_pointwise_op=(m_operation.op_mode==CUDNN_BACKEND_OPERATION_POINTWISE_DESCRIPTOR); +is_matmul_op=(m_operation.op_mode==CUDNN_BACKEND_OPERATION_MATMUL_DESCRIPTOR); +} +Operation_v8&& +build(){ +if(m_operation.status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_operation,m_operation.status,"CUDNN_BACKEND_OPERATION:Operationnotinitializedproperly"); +returnstd::move(m_operation); +} + +if(is_convolution_op){ +if(m_operation.cdesc==nullptr){ +set_error_and_throw_exception( +&m_operation, +CUDNN_STATUS_BAD_PARAM, +"CUDNN_BACKEND_OPERATION:CheckandSettheCUDNN_ATTR_OPERATION_CONVOLUTION_*_CONV_DESC"); +returnstd::move(m_operation); +} +if(m_operation.op_mode==CUDNN_BACKEND_OPERATION_CONVOLUTION_FORWARD_DESCRIPTOR){ +if(m_operation.xdesc==nullptr){ +set_error_and_throw_exception( +&m_operation, +CUDNN_STATUS_BAD_PARAM, +"CUDNN_BACKEND_OPERATION:CheckandSettheCUDNN_ATTR_OPERATION_CONVOLUTION_*_X"); +returnstd::move(m_operation); +} +if(m_operation.wdesc==nullptr){ +set_error_and_throw_exception( +&m_operation, +CUDNN_STATUS_BAD_PARAM, +"CUDNN_BACKEND_OPERATION:CheckandSettheCUDNN_ATTR_OPERATION_CONVOLUTION_*_W"); +returnstd::move(m_operation); +} +if(m_operation.ydesc==nullptr){ +set_error_and_throw_exception( +&m_operation, +CUDNN_STATUS_BAD_PARAM, +"CUDNN_BACKEND_OPERATION:CheckandSettheCUDNN_ATTR_OPERATION_CONVOLUTION_*_Y"); +returnstd::move(m_operation); +} + +}elseif(m_operation.op_mode==CUDNN_BACKEND_OPERATION_CONVOLUTION_BACKWARD_FILTER_DESCRIPTOR){ +if(m_operation.ydesc!=nullptr&&m_operation.dydesc!=nullptr){ +set_error_and_throw_exception(&m_operation, +CUDNN_STATUS_BAD_PARAM, +"CUDNN_BACKEND_OPERATION:Ambiguousspecification.ChooseandSet" +"onlyoneofsetyDesc()orsetdyDesc()"); +returnstd::move(m_operation); +} +if(m_operation.ydesc==nullptr&&m_operation.dydesc==nullptr){ +set_error_and_throw_exception( +&m_operation, +CUDNN_STATUS_BAD_PARAM, +"CUDNN_BACKEND_OPERATION:ChooseandSetoneofsetyDesc()orsetdyDesc()"); +returnstd::move(m_operation); +} +if(m_operation.xdesc==nullptr){ +set_error_and_throw_exception( +&m_operation, +CUDNN_STATUS_BAD_PARAM, +"CUDNN_BACKEND_OPERATION:CheckandSettheCUDNN_ATTR_OPERATION_CONVOLUTION_*_X"); +returnstd::move(m_operation); +} +if(m_operation.wdesc!=nullptr&&m_operation.dwdesc!=nullptr){ +set_error_and_throw_exception(&m_operation, +CUDNN_STATUS_BAD_PARAM, +"CUDNN_BACKEND_OPERATION:Ambiguousspecification.ChooseandSet" +"onlyoneofsetwDesc()orsetdwDesc()"); +returnstd::move(m_operation); +} +if(m_operation.wdesc==nullptr&&m_operation.dwdesc==nullptr){ +set_error_and_throw_exception( +&m_operation, +CUDNN_STATUS_BAD_PARAM, +"CUDNN_BACKEND_OPERATION:ChooseandSetoneofsetwDesc()orsetdwDesc()"); +returnstd::move(m_operation); +} +}elseif(m_operation.op_mode==CUDNN_BACKEND_OPERATION_CONVOLUTION_BACKWARD_DATA_DESCRIPTOR){ +if(m_operation.ydesc!=nullptr&&m_operation.dydesc!=nullptr){ +set_error_and_throw_exception(&m_operation, +CUDNN_STATUS_BAD_PARAM, +"CUDNN_BACKEND_OPERATION:Ambiguousspecification.ChooseandSet" +"onlyoneofsetyDesc()orsetdyDesc()"); +returnstd::move(m_operation); +} +if(m_operation.ydesc==nullptr&&m_operation.dydesc==nullptr){ +set_error_and_throw_exception( +&m_operation, +CUDNN_STATUS_BAD_PARAM, +"CUDNN_BACKEND_OPERATION:ChooseandSetoneofsetyDesc()orsetdyDesc()"); +returnstd::move(m_operation); +} +if(m_operation.wdesc==nullptr){ +set_error_and_throw_exception( +&m_operation, +CUDNN_STATUS_BAD_PARAM, +"CUDNN_BACKEND_OPERATION:CheckandSettheCUDNN_ATTR_OPERATION_CONVOLUTION_*_W"); +returnstd::move(m_operation); +} +if(m_operation.xdesc!=nullptr&&m_operation.dxdesc!=nullptr){ +set_error_and_throw_exception(&m_operation, +CUDNN_STATUS_BAD_PARAM, +"CUDNN_BACKEND_OPERATION:Ambiguousspecification.ChooseandSet" +"onlyoneofsetxDesc()orsetdxDesc()"); +returnstd::move(m_operation); +} +if(m_operation.xdesc==nullptr&&m_operation.dxdesc==nullptr){ +set_error_and_throw_exception( +&m_operation, +CUDNN_STATUS_BAD_PARAM, +"CUDNN_BACKEND_OPERATION:ChooseandSetoneofsetxDesc()orsetdxDesc()"); +returnstd::move(m_operation); +} +}else{ +set_error_and_throw_exception(&m_operation, +CUDNN_STATUS_BAD_PARAM, +"CUDNN_BACKEND_OPERATION:Unsupportedconvolutionoperation.Checkand" +"setCUDNN_BACKEND_OPERATION_CONVOLUTION_*_DESCRIPTOR"); +returnstd::move(m_operation); +} +}elseif(is_pointwise_op){ +if(m_operation.xdesc==nullptr){ +set_error_and_throw_exception( +&m_operation, +CUDNN_STATUS_BAD_PARAM, +"CUDNN_BACKEND_OPERATION:CheckandSettheCUDNN_ATTR_OPERATION_POINTWISE_XDESC"); +returnstd::move(m_operation); +} + +if(m_operation.is_pointwise_math_op){ +if(m_operation.pointwise_port_count==3&&m_operation.bdesc==nullptr){ +set_error_and_throw_exception( +&m_operation, +CUDNN_STATUS_BAD_PARAM, +"CUDNN_BACKEND_OPERATION:CheckandSettheCUDNN_ATTR_OPERATION_POINTWISE_BDESC"); +returnstd::move(m_operation); +} +if(m_operation.ydesc==nullptr){ +set_error_and_throw_exception( +&m_operation, +CUDNN_STATUS_BAD_PARAM, +"CUDNN_BACKEND_OPERATION:CheckandSettheCUDNN_ATTR_OPERATION_POINTWISE_YDESC"); +returnstd::move(m_operation); +} +}elseif(m_operation.is_pointwise_activation_fwd_op){ +if(m_operation.ydesc==nullptr){ +set_error_and_throw_exception( +&m_operation, +CUDNN_STATUS_BAD_PARAM, +"CUDNN_BACKEND_OPERATION:CheckandSettheCUDNN_ATTR_OPERATION_POINTWISE_YDESC"); +returnstd::move(m_operation); +} +}elseif(m_operation.is_pointwise_activation_bwd_op){ +if(m_operation.dydesc==nullptr){ +set_error_and_throw_exception( +&m_operation, +CUDNN_STATUS_BAD_PARAM, +"CUDNN_BACKEND_OPERATION:CheckandSettheCUDNN_ATTR_OPERATION_POINTWISE_DYDESC"); +returnstd::move(m_operation); +} +if(m_operation.dxdesc==nullptr){ +set_error_and_throw_exception( +&m_operation, +CUDNN_STATUS_BAD_PARAM, +"CUDNN_BACKEND_OPERATION:CheckandSettheCUDNN_ATTR_OPERATION_POINTWISE_DXDESC"); +returnstd::move(m_operation); +} +}else{ +set_error_and_throw_exception( +&m_operation, +CUDNN_STATUS_BAD_PARAM, +"CUDNN_BACKEND_OPERATION:Unsupportedcudnnpointwisemode.CheckandsetCUDNN_POINTWISE_*"); +returnstd::move(m_operation); +} + +}elseif(is_matmul_op){ +if(m_operation.matmuldesc==nullptr){ +set_error_and_throw_exception( +&m_operation, +CUDNN_STATUS_BAD_PARAM, +"CUDNN_BACKEND_OPERATION:CheckandSettheCUDNN_ATTR_OPERATION_MATMUL_DESC"); +returnstd::move(m_operation); +} +if(m_operation.amatdesc==nullptr){ +set_error_and_throw_exception( +&m_operation, +CUDNN_STATUS_BAD_PARAM, +"CUDNN_BACKEND_OPERATION:CheckandSettheCUDNN_ATTR_OPERATION_MATMUL_ADESC"); +returnstd::move(m_operation); +} +if(m_operation.bmatdesc==nullptr){ +set_error_and_throw_exception( +&m_operation, +CUDNN_STATUS_BAD_PARAM, +"CUDNN_BACKEND_OPERATION:CheckandSettheCUDNN_ATTR_OPERATION_MATMUL_BDESC"); +returnstd::move(m_operation); +} +if(m_operation.cmatdesc==nullptr){ +set_error_and_throw_exception( +&m_operation, +CUDNN_STATUS_BAD_PARAM, +"CUDNN_BACKEND_OPERATION:CheckandSettheCUDNN_ATTR_OPERATION_MATMUL_CDESC"); +returnstd::move(m_operation); +} +}else{ +set_error_and_throw_exception(&m_operation, +CUDNN_STATUS_BAD_PARAM, +"CUDNN_BACKEND_OPERATION_DESCRIPTOR:Unsupportedcudnnbackenddescriptor" +"type.CheckandsetCUDNN_BACKEND_OPERATION_*_DESCRIPTOR"); +returnstd::move(m_operation); +} + +//Createthedescriptor. +autostatus=m_operation.initialize_managed_backend_pointer(m_operation.op_mode); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception(&m_operation,status,"CUDNN_BACKEND_OPERATION:cudnnCreateFailed"); +returnstd::move(m_operation); +} + +if(m_operation.op_mode==CUDNN_BACKEND_OPERATION_CONVOLUTION_FORWARD_DESCRIPTOR){ +m_operation.operationTag="ConvFwd"; + +status=cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(), +CUDNN_ATTR_OPERATION_CONVOLUTION_FORWARD_X, +CUDNN_TYPE_BACKEND_DESCRIPTOR, +1, +&(m_operation.xdesc->get_backend_descriptor())); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_operation, +status, +"CUDNN_BACKEND_OPERATION:SetAttributeCUDNN_ATTR_OPERATION_CONVOLUTION_FORWARD_XFailed"); +returnstd::move(m_operation); +} +status=cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(), +CUDNN_ATTR_OPERATION_CONVOLUTION_FORWARD_W, +CUDNN_TYPE_BACKEND_DESCRIPTOR, +1, +&(m_operation.wdesc->get_backend_descriptor())); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_operation, +status, +"CUDNN_BACKEND_OPERATION:SetAttributeCUDNN_ATTR_OPERATION_CONVOLUTION_FORWARD_WFailed"); +returnstd::move(m_operation); +} +status=cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(), +CUDNN_ATTR_OPERATION_CONVOLUTION_FORWARD_Y, +CUDNN_TYPE_BACKEND_DESCRIPTOR, +1, +&(m_operation.ydesc->get_backend_descriptor())); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_operation, +status, +"CUDNN_BACKEND_OPERATION:SetAttributeCUDNN_ATTR_OPERATION_CONVOLUTION_FORWARD_YFailed"); +returnstd::move(m_operation); +} +status=cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(), +CUDNN_ATTR_OPERATION_CONVOLUTION_FORWARD_CONV_DESC, +CUDNN_TYPE_BACKEND_DESCRIPTOR, +1, +&(m_operation.cdesc->get_backend_descriptor())); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_operation, +status, +"CUDNN_BACKEND_OPERATION:SetAttributeCUDNN_ATTR_OPERATION_CONVOLUTION_FORWARD_CONV_DESCFailed"); +returnstd::move(m_operation); +} +void*alpha=(m_operation.alphabetaType==CUDNN_TYPE_FLOAT?static_cast<void*>(&m_operation.alpha_s) +:static_cast<void*>(&m_operation.alpha_d)); +void*beta=(m_operation.alphabetaType==CUDNN_TYPE_FLOAT?static_cast<void*>(&m_operation.beta_s) +:static_cast<void*>(&m_operation.beta_d)); +status=cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(), +CUDNN_ATTR_OPERATION_CONVOLUTION_FORWARD_ALPHA, +m_operation.alphabetaType, +1, +alpha); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_operation, +status, +"CUDNN_BACKEND_OPERATION:SetAttributeCUDNN_ATTR_OPERATION_CONVOLUTION_FORWARD_ALPHAFailed"); +returnstd::move(m_operation); +} +status=cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(), +CUDNN_ATTR_OPERATION_CONVOLUTION_FORWARD_BETA, +m_operation.alphabetaType, +1, +beta); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_operation, +status, +"CUDNN_BACKEND_OPERATION:SetAttributeCUDNN_ATTR_OPERATION_CONVOLUTION_FORWARD_BETAFailed"); +returnstd::move(m_operation); +} +}elseif(m_operation.op_mode==CUDNN_BACKEND_OPERATION_CONVOLUTION_BACKWARD_FILTER_DESCRIPTOR){ +m_operation.operationTag="ConvBwdFilter"; + +status=cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(), +CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_FILTER_X, +CUDNN_TYPE_BACKEND_DESCRIPTOR, +1, +&(m_operation.xdesc->get_backend_descriptor())); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_operation, +status, +"CUDNN_BACKEND_OPERATION:SetAttributeCUDNN_ATTR_OPERATION_CONVOLUTION_BWD_FILTER_XFailed"); +returnstd::move(m_operation); +} + +autodwdesc_=m_operation.dwdesc!=nullptr?m_operation.dwdesc:m_operation.wdesc; +status=cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(), +CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_FILTER_DW, +CUDNN_TYPE_BACKEND_DESCRIPTOR, +1, +&(dwdesc_->get_backend_descriptor())); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_operation, +status, +"CUDNN_BACKEND_OPERATION:SetAttributeCUDNN_ATTR_OPERATION_CONVOLUTION_BWD_FILTER_DWFailed"); +returnstd::move(m_operation); +} + +autodydesc_=m_operation.dydesc!=nullptr?m_operation.dydesc:m_operation.ydesc; +status=cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(), +CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_FILTER_DY, +CUDNN_TYPE_BACKEND_DESCRIPTOR, +1, +&(dydesc_->get_backend_descriptor())); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_operation, +status, +"CUDNN_BACKEND_OPERATION:SetAttributeCUDNN_ATTR_OPERATION_CONVOLUTION_BWD_FILTER_DYFailed"); +returnstd::move(m_operation); +} + +status=cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(), +CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_FILTER_CONV_DESC, +CUDNN_TYPE_BACKEND_DESCRIPTOR, +1, +&(m_operation.cdesc->get_backend_descriptor())); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception(&m_operation, +status, +"CUDNN_BACKEND_OPERATION:SetAttribute" +"CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_FILTER_CONV_DESCFailed"); +returnstd::move(m_operation); +} +void*alpha=(m_operation.alphabetaType==CUDNN_TYPE_FLOAT?static_cast<void*>(&m_operation.alpha_s) +:static_cast<void*>(&m_operation.alpha_d)); +void*beta=(m_operation.alphabetaType==CUDNN_TYPE_FLOAT?static_cast<void*>(&m_operation.beta_s) +:static_cast<void*>(&m_operation.beta_d)); +status=cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(), +CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_FILTER_ALPHA, +m_operation.alphabetaType, +1, +alpha); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_operation, +status, +"CUDNN_BACKEND_OPERATION:SetAttributeCUDNN_ATTR_OPERATION_CONVOLUTION_BWD_FILTER_ALPHAFailed"); +returnstd::move(m_operation); +} +status=cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(), +CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_FILTER_BETA, +m_operation.alphabetaType, +1, +beta); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_operation, +status, +"CUDNN_BACKEND_OPERATION:SetAttributeCUDNN_ATTR_OPERATION_CONVOLUTION_BWD_FILTER_BETAFailed"); +returnstd::move(m_operation); +} +}elseif(m_operation.op_mode==CUDNN_BACKEND_OPERATION_CONVOLUTION_BACKWARD_DATA_DESCRIPTOR){ +m_operation.operationTag="ConvBwdData"; + +autodxdesc_=m_operation.dxdesc!=nullptr?m_operation.dxdesc:m_operation.xdesc; +status=cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(), +CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_DATA_DX, +CUDNN_TYPE_BACKEND_DESCRIPTOR, +1, +&(dxdesc_->get_backend_descriptor())); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_operation, +status, +"CUDNN_BACKEND_OPERATION:SetAttributeCUDNN_ATTR_OPERATION_CONVOLUTION_BWD_DATA_DXFailed"); +returnstd::move(m_operation); +} + +status=cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(), +CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_DATA_W, +CUDNN_TYPE_BACKEND_DESCRIPTOR, +1, +&(m_operation.wdesc->get_backend_descriptor())); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_operation, +status, +"CUDNN_BACKEND_OPERATION:SetAttributeCUDNN_ATTR_OPERATION_CONVOLUTION_BWD_DATA_WFailed"); +returnstd::move(m_operation); +} + +autodydesc_=m_operation.dydesc!=nullptr?m_operation.dydesc:m_operation.ydesc; +status=cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(), +CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_DATA_DY, +CUDNN_TYPE_BACKEND_DESCRIPTOR, +1, +&(dydesc_->get_backend_descriptor())); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_operation, +status, +"CUDNN_BACKEND_OPERATION:SetAttributeCUDNN_ATTR_OPERATION_CONVOLUTION_BWD_DATA_DYFailed"); +returnstd::move(m_operation); +} + +status=cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(), +CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_DATA_CONV_DESC, +CUDNN_TYPE_BACKEND_DESCRIPTOR, +1, +&(m_operation.cdesc->get_backend_descriptor())); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_operation, +status, +"CUDNN_BACKEND_OPERATION:SetAttributeCUDNN_ATTR_OPERATION_CONVOLUTION_BWD_DATA_CONV_DESCFailed"); +returnstd::move(m_operation); +} + +void*alpha=(m_operation.alphabetaType==CUDNN_TYPE_FLOAT?static_cast<void*>(&m_operation.alpha_s) +:static_cast<void*>(&m_operation.alpha_d)); +void*beta=(m_operation.alphabetaType==CUDNN_TYPE_FLOAT?static_cast<void*>(&m_operation.beta_s) +:static_cast<void*>(&m_operation.beta_d)); +status=cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(), +CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_DATA_ALPHA, +m_operation.alphabetaType, +1, +alpha); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_operation, +status, +"CUDNN_BACKEND_OPERATION:SetAttributeCUDNN_ATTR_OPERATION_CONVOLUTION_BWD_DATA_ALPHAFailed"); +returnstd::move(m_operation); +} +status=cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(), +CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_DATA_BETA, +m_operation.alphabetaType, +1, +beta); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_operation, +status, +"CUDNN_BACKEND_OPERATION:SetAttributeCUDNN_ATTR_OPERATION_CONVOLUTION_BWD_DATA_BETAFailed"); +returnstd::move(m_operation); +} +}elseif(m_operation.op_mode==CUDNN_BACKEND_OPERATION_POINTWISE_DESCRIPTOR){ +switch(m_operation.pointwise_mode){ +caseCUDNN_POINTWISE_ADD: +m_operation.operationTag="Add"; +break; +caseCUDNN_POINTWISE_MUL: +m_operation.operationTag="Mul"; +break; +caseCUDNN_POINTWISE_MIN: +m_operation.operationTag="Min"; +break; +caseCUDNN_POINTWISE_MAX: +m_operation.operationTag="Max"; +break; +caseCUDNN_POINTWISE_SQRT: +m_operation.operationTag="Sqrt"; +break; +caseCUDNN_POINTWISE_RELU_FWD: +m_operation.operationTag="ReluFwd"; +break; +caseCUDNN_POINTWISE_TANH_FWD: +m_operation.operationTag="TanhFwd"; +break; +caseCUDNN_POINTWISE_SIGMOID_FWD: +m_operation.operationTag="SigmoidFwd"; +break; +caseCUDNN_POINTWISE_ELU_FWD: +m_operation.operationTag="EluFwd"; +break; +caseCUDNN_POINTWISE_GELU_FWD: +m_operation.operationTag="GeluFwd"; +break; +caseCUDNN_POINTWISE_SOFTPLUS_FWD: +m_operation.operationTag="SoftplusFwd"; +break; +caseCUDNN_POINTWISE_SWISH_FWD: +m_operation.operationTag="SwishFwd"; +break; +caseCUDNN_POINTWISE_RELU_BWD: +m_operation.operationTag="ReluBwd"; +break; +caseCUDNN_POINTWISE_TANH_BWD: +m_operation.operationTag="TanhBwd"; +break; +caseCUDNN_POINTWISE_SIGMOID_BWD: +m_operation.operationTag="SigmoidBwd"; +break; +caseCUDNN_POINTWISE_ELU_BWD: +m_operation.operationTag="EluBwd"; +break; +caseCUDNN_POINTWISE_GELU_BWD: +m_operation.operationTag="GeluBwd"; +break; +caseCUDNN_POINTWISE_SOFTPLUS_BWD: +m_operation.operationTag="SoftplusBwd"; +break; +caseCUDNN_POINTWISE_SWISH_BWD: +m_operation.operationTag="SwishBwd"; +break; +default: +m_operation.operationTag="OtherOp"; +break; +} + +status=cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(), +CUDNN_ATTR_OPERATION_POINTWISE_PW_DESCRIPTOR, +CUDNN_TYPE_BACKEND_DESCRIPTOR, +1, +&(m_operation.pwdesc->get_backend_descriptor())); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_operation, +status, +"CUDNN_BACKEND_OPERATION:SetAttributeCUDNN_ATTR_OPERATION_POINTWISE_PW_DESCRIPTORFailed"); +returnstd::move(m_operation); +} + +status=cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(), +CUDNN_ATTR_OPERATION_POINTWISE_XDESC, +CUDNN_TYPE_BACKEND_DESCRIPTOR, +1, +&(m_operation.xdesc->get_backend_descriptor())); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_operation, +status, +"CUDNN_BACKEND_OPERATION:SetAttributeCUDNN_ATTR_OPERATION_POINTWISE_XDESCFailed"); +returnstd::move(m_operation); +} + +if(!m_operation.is_pointwise_activation_bwd_op){ +status=cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(), +CUDNN_ATTR_OPERATION_POINTWISE_YDESC, +CUDNN_TYPE_BACKEND_DESCRIPTOR, +1, +&(m_operation.ydesc->get_backend_descriptor())); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_operation, +status, +"CUDNN_BACKEND_OPERATION:SetAttributeCUDNN_ATTR_OPERATION_POINTWISE_YDESCFailed"); +returnstd::move(m_operation); +} +}else{ +status=cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(), +CUDNN_ATTR_OPERATION_POINTWISE_DYDESC, +CUDNN_TYPE_BACKEND_DESCRIPTOR, +1, +&(m_operation.dydesc->get_backend_descriptor())); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_operation, +status, +"CUDNN_BACKEND_OPERATION:SetAttributeCUDNN_ATTR_OPERATION_POINTWISE_DYDESCFailed"); +returnstd::move(m_operation); +} + +status=cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(), +CUDNN_ATTR_OPERATION_POINTWISE_DXDESC, +CUDNN_TYPE_BACKEND_DESCRIPTOR, +1, +&(m_operation.dxdesc->get_backend_descriptor())); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_operation, +status, +"CUDNN_BACKEND_OPERATION:SetAttributeCUDNN_ATTR_OPERATION_POINTWISE_DXDESCFailed"); +returnstd::move(m_operation); +} +} + +void*alpha=(m_operation.alphabetaType==CUDNN_TYPE_FLOAT?static_cast<void*>(&m_operation.alpha_s) +:static_cast<void*>(&m_operation.alpha_d)); +void*alpha2=(m_operation.alphabetaType==CUDNN_TYPE_FLOAT?static_cast<void*>(&m_operation.alpha2_s) +:static_cast<void*>(&m_operation.alpha2_d)); +status=cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(), +CUDNN_ATTR_OPERATION_POINTWISE_ALPHA1, +m_operation.alphabetaType, +1, +alpha); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_operation, +status, +"CUDNN_BACKEND_OPERATION:SetAttributeCUDNN_ATTR_OPERATION_POINTWISE_ALPHA1Failed"); +returnstd::move(m_operation); +} +status=cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(), +CUDNN_ATTR_OPERATION_POINTWISE_ALPHA2, +m_operation.alphabetaType, +1, +alpha2); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_operation, +status, +"CUDNN_BACKEND_OPERATION:SetAttributeCUDNN_ATTR_OPERATION_POINTWISE_ALPHA2Failed"); +returnstd::move(m_operation); +} + +if(m_operation.pointwise_port_count==3&&!m_operation.is_pointwise_activation_bwd_op){ +status=cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(), +CUDNN_ATTR_OPERATION_POINTWISE_BDESC, +CUDNN_TYPE_BACKEND_DESCRIPTOR, +1, +&(m_operation.bdesc->get_backend_descriptor())); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_operation, +status, +"CUDNN_BACKEND_OPERATION:SetAttributeCUDNN_ATTR_OPERATION_POINTWISE_BDESCFailed"); +returnstd::move(m_operation); +} +} +}elseif(m_operation.op_mode==CUDNN_BACKEND_OPERATION_MATMUL_DESCRIPTOR){ +m_operation.operationTag="Matmul"; +status=cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(), +CUDNN_ATTR_OPERATION_MATMUL_ADESC, +CUDNN_TYPE_BACKEND_DESCRIPTOR, +1, +&(m_operation.amatdesc->get_backend_descriptor())); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_operation, +status, +"CUDNN_BACKEND_OPERATION:SetAttributeCUDNN_ATTR_OPERATION_MATMUL_ADESCFailed"); +returnstd::move(m_operation); +} +status=cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(), +CUDNN_ATTR_OPERATION_MATMUL_BDESC, +CUDNN_TYPE_BACKEND_DESCRIPTOR, +1, +&(m_operation.bmatdesc->get_backend_descriptor())); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_operation, +status, +"CUDNN_BACKEND_OPERATION:SetAttributeCUDNN_ATTR_OPERATION_MATMUL_BDESCFailed"); +returnstd::move(m_operation); +} +status=cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(), +CUDNN_ATTR_OPERATION_MATMUL_CDESC, +CUDNN_TYPE_BACKEND_DESCRIPTOR, +1, +&(m_operation.cmatdesc->get_backend_descriptor())); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_operation, +status, +"CUDNN_BACKEND_OPERATION:SetAttributeCUDNN_ATTR_OPERATION_MATMUL_CDESCFailed"); +returnstd::move(m_operation); +} +status=cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(), +CUDNN_ATTR_OPERATION_MATMUL_DESC, +CUDNN_TYPE_BACKEND_DESCRIPTOR, +1, +&(m_operation.matmuldesc->get_backend_descriptor())); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_operation, +status, +"CUDNN_BACKEND_OPERATION:SetAttributeCUDNN_ATTR_OPERATION_MATMUL_DESCFailed"); +returnstd::move(m_operation); +} +} +status=cudnnBackendFinalize(m_operation.pointer->get_backend_descriptor()); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception(&m_operation,status,"CUDNN_BACKEND_OPERATION:cudnnFinalizeFailed"); +returnstd::move(m_operation); +} +returnstd::move(m_operation); +} +}; +} + + + + diff --git a/docs/xml/da/d5f/cudnn__frontend__PointWiseDesc_8h.xml b/docs/xml/da/d5f/cudnn__frontend__PointWiseDesc_8h.xml new file mode 100644 index 000000000..fd319cb2a --- /dev/null +++ b/docs/xml/da/d5f/cudnn__frontend__PointWiseDesc_8h.xml @@ -0,0 +1,512 @@ + + + + cudnn_frontend_PointWiseDesc.h + algorithm + array + functional + memory + sstream + utility + cudnn.h + cudnn_backend.h + cudnn_frontend_utils.h + cudnn_frontend_Operation.h + cudnn_frontend.h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + cudnn_frontend::PointWiseDesc_v8 + cudnn_frontend::PointWiseDescBuilder_v8 + cudnn_frontend + + + + + +/* +*Copyright(c)2021,NVIDIACORPORATION.Allrightsreserved. +* +*Permissionisherebygranted,freeofcharge,toanypersonobtaininga +*copyofthissoftwareandassociateddocumentationfiles(the"Software"), +*todealintheSoftwarewithoutrestriction,includingwithoutlimitation +*therightstouse,copy,modify,merge,publish,distribute,sublicense, +*and/orsellcopiesoftheSoftware,andtopermitpersonstowhomthe +*Softwareisfurnishedtodoso,subjecttothefollowingconditions: +* +*Theabovecopyrightnoticeandthispermissionnoticeshallbeincludedin +*allcopiesorsubstantialportionsoftheSoftware. +* +*THESOFTWAREISPROVIDED"ASIS",WITHOUTWARRANTYOFANYKIND,EXPRESSOR +*IMPLIED,INCLUDINGBUTNOTLIMITEDTOTHEWARRANTIESOFMERCHANTABILITY, +*FITNESSFORAPARTICULARPURPOSEANDNONINFRINGEMENT.INNOEVENTSHALL +*THEAUTHORSORCOPYRIGHTHOLDERSBELIABLEFORANYCLAIM,DAMAGESOROTHER +*LIABILITY,WHETHERINANACTIONOFCONTRACT,TORTOROTHERWISE,ARISING +*FROM,OUTOFORINCONNECTIONWITHTHESOFTWAREORTHEUSEOROTHER +*DEALINGSINTHESOFTWARE. +*/ + +#pragmaonce + +#include<algorithm> +#include<array> +#include<functional> +#include<memory> +#include<sstream> +#include<utility> + +#include<cudnn.h> +#include<cudnn_backend.h> + +#include"cudnn_frontend_utils.h" + +namespacecudnn_frontend{ +classPointWiseDesc_v8:publicBackendDescriptor{ +public: +friendclassPointWiseDescBuilder_v8; +std::string +describe()constoverride{ +std::stringstreamss; +ss<<"CUDNN_BACKEND_POINTWISE_DESCRIPTOR:" +<<"Mode:"<<(mode)<<"Mathprecision"<<(math_precision); +returnss.str(); +} + +int64_t +getPortCount()const{ +switch(mode){ +caseCUDNN_POINTWISE_ADD: +caseCUDNN_POINTWISE_MUL: +caseCUDNN_POINTWISE_MIN: +caseCUDNN_POINTWISE_MAX: +caseCUDNN_POINTWISE_RELU_BWD: +caseCUDNN_POINTWISE_TANH_BWD: +caseCUDNN_POINTWISE_SIGMOID_BWD: +caseCUDNN_POINTWISE_ELU_BWD: +caseCUDNN_POINTWISE_GELU_BWD: +caseCUDNN_POINTWISE_SOFTPLUS_BWD: +caseCUDNN_POINTWISE_SWISH_BWD: +return3; +caseCUDNN_POINTWISE_SQRT: +caseCUDNN_POINTWISE_RELU_FWD: +caseCUDNN_POINTWISE_TANH_FWD: +caseCUDNN_POINTWISE_SIGMOID_FWD: +caseCUDNN_POINTWISE_ELU_FWD: +caseCUDNN_POINTWISE_GELU_FWD: +caseCUDNN_POINTWISE_SOFTPLUS_FWD: +caseCUDNN_POINTWISE_SWISH_FWD: +return2; +default: +return-1; +} +} + +cudnnPointwiseMode_t +getPointWiseMode()const{ +returnmode; +} + +PointWiseDesc_v8(PointWiseDesc_v8&&from) +:BackendDescriptor(from.get_desc(),from.get_status(),from.get_error()), +math_precision(from.math_precision), +mode(from.mode), +nan_propagation(from.nan_propagation), +upper_clip(from.upper_clip), +lower_clip(from.lower_clip), +lower_clip_slope(from.lower_clip_slope), +elu_alpha(from.elu_alpha), +softplus_beta(from.softplus_beta), +swish_beta(from.swish_beta){} + +~PointWiseDesc_v8()=default; + +private: +PointWiseDesc_v8()=default; +PointWiseDesc_v8(PointWiseDesc_v8const&)=delete; +PointWiseDesc_v8& +operator=(PointWiseDesc_v8const&)=delete; + +cudnnDataType_tmath_precision=CUDNN_DATA_FLOAT; +cudnnPointwiseMode_tmode=CUDNN_POINTWISE_ADD; +cudnnNanPropagation_tnan_propagation=CUDNN_NOT_PROPAGATE_NAN; +doubleupper_clip=std::numeric_limits<double>::max(); +doublelower_clip=0.0; +doublelower_clip_slope=0.0; +doubleelu_alpha=1.0; +doublesoftplus_beta=1.0; +doubleswish_beta=1.0; +}; + +classPointWiseDescBuilder_v8{ +public: +auto +setMathPrecision(cudnnDataType_tdata_type_)->PointWiseDescBuilder_v8&{ +m_pointWiseDesc.math_precision=data_type_; +return*this; +} +auto +setClipping(doublel,doubleu)->PointWiseDescBuilder_v8&{ +m_pointWiseDesc.upper_clip=u; +m_pointWiseDesc.lower_clip=l; +return*this; +} +auto +setMode(cudnnPointwiseMode_tmode_)->PointWiseDescBuilder_v8&{ +m_pointWiseDesc.mode=mode_; +return*this; +} +auto +setMode(cudnnNanPropagation_tnan_mode_)->PointWiseDescBuilder_v8&{ +m_pointWiseDesc.nan_propagation=nan_mode_; +return*this; +} +auto +setReluLowerClip(doublelower_clip_)->PointWiseDescBuilder_v8&{ +m_pointWiseDesc.lower_clip=lower_clip_; +return*this; +} + +auto +setReluUpperClip(doubleupper_clip_)->PointWiseDescBuilder_v8&{ +m_pointWiseDesc.upper_clip=upper_clip_; +return*this; +} + +auto +setReluLowerClipSlope(doublelower_clip_slope_)->PointWiseDescBuilder_v8&{ +m_pointWiseDesc.lower_clip_slope=lower_clip_slope_; +return*this; +} + +auto +setEluAlpha(doubleelu_alpha_)->PointWiseDescBuilder_v8&{ +m_pointWiseDesc.elu_alpha=elu_alpha_; +return*this; +} + +auto +setSoftplusBeta(doublesoftplus_beta_)->PointWiseDescBuilder_v8&{ +m_pointWiseDesc.softplus_beta=softplus_beta_; +return*this; +} + +auto +setSwishBeta(doubleswish_beta_)->PointWiseDescBuilder_v8&{ +m_pointWiseDesc.swish_beta=swish_beta_; +return*this; +} + +PointWiseDesc_v8&& +build(){ +//Createadescriptor.Memoryallocationhappenshere. +autostatus=m_pointWiseDesc.initialize_managed_backend_pointer(CUDNN_BACKEND_POINTWISE_DESCRIPTOR); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_pointWiseDesc,status,"CUDNN_BACKEND_POINTWISE_DESCRIPTOR:cudnnCreateFailed"); +returnstd::move(m_pointWiseDesc); +} + +//OnceCreatedletssetthedescriptorparameters. +status=cudnnBackendSetAttribute(m_pointWiseDesc.pointer->get_backend_descriptor(), +CUDNN_ATTR_POINTWISE_MODE, +CUDNN_TYPE_POINTWISE_MODE, +1, +&m_pointWiseDesc.mode); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_pointWiseDesc, +status, +"CUDNN_BACKEND_POINTWISE_DESCRIPTOR:CUDNN_TYPE_POINTWISE_MODESetAttributeFailed"); +returnstd::move(m_pointWiseDesc); +} + +status=cudnnBackendSetAttribute(m_pointWiseDesc.pointer->get_backend_descriptor(), +CUDNN_ATTR_POINTWISE_MATH_PREC, +CUDNN_TYPE_DATA_TYPE, +1, +&m_pointWiseDesc.math_precision); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_pointWiseDesc, +status, +"CUDNN_BACKEND_POINTWISE_DESCRIPTOR:SetAttributeCUDNN_ATTR_POINTWISE_MATH_PRECFailed"); +returnstd::move(m_pointWiseDesc); +} + +if(m_pointWiseDesc.mode==CUDNN_POINTWISE_RELU_FWD||m_pointWiseDesc.mode==CUDNN_POINTWISE_RELU_BWD){ +status=cudnnBackendSetAttribute(m_pointWiseDesc.pointer->get_backend_descriptor(), +CUDNN_ATTR_POINTWISE_NAN_PROPAGATION, +CUDNN_TYPE_NAN_PROPOGATION, +1, +&m_pointWiseDesc.nan_propagation); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_pointWiseDesc, +status, +"CUDNN_BACKEND_POINTWISE_DESCRIPTOR:SetAttributeCUDNN_ATTR_POINTWISE_NAN_PROPAGATIONFailed"); +returnstd::move(m_pointWiseDesc); +} + +status=cudnnBackendSetAttribute(m_pointWiseDesc.pointer->get_backend_descriptor(), +CUDNN_ATTR_POINTWISE_RELU_LOWER_CLIP, +CUDNN_TYPE_DOUBLE, +1, +&m_pointWiseDesc.lower_clip); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_pointWiseDesc, +status, +"CUDNN_BACKEND_POINTWISE_DESCRIPTOR:SetAttributeCUDNN_ATTR_POINTWISE_RELU_LOWER_CLIP,Failed"); +returnstd::move(m_pointWiseDesc); +} + +if(m_pointWiseDesc.math_precision==CUDNN_DATA_FLOAT){ +doubleclamped_upper_clip= +std::min<double>(m_pointWiseDesc.upper_clip,std::numeric_limits<float>::max()); +status=cudnnBackendSetAttribute(m_pointWiseDesc.pointer->get_backend_descriptor(), +CUDNN_ATTR_POINTWISE_RELU_UPPER_CLIP, +CUDNN_TYPE_DOUBLE, +1, +&clamped_upper_clip); + +}else{ +status=cudnnBackendSetAttribute(m_pointWiseDesc.pointer->get_backend_descriptor(), +CUDNN_ATTR_POINTWISE_RELU_UPPER_CLIP, +CUDNN_TYPE_DOUBLE, +1, +&m_pointWiseDesc.upper_clip); +} +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_pointWiseDesc, +status, +"CUDNN_BACKEND_POINTWISE_DESCRIPTOR:SetAttributeCUDNN_ATTR_POINTWISE_RELU_UPPER_CLIP,Failed"); +returnstd::move(m_pointWiseDesc); +} + +status=cudnnBackendSetAttribute(m_pointWiseDesc.pointer->get_backend_descriptor(), +CUDNN_ATTR_POINTWISE_RELU_LOWER_CLIP_SLOPE, +CUDNN_TYPE_DOUBLE, +1, +&m_pointWiseDesc.lower_clip_slope); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception(&m_pointWiseDesc, +status, +"CUDNN_BACKEND_POINTWISE_DESCRIPTOR:SetAttribute" +"CUDNN_ATTR_POINTWISE_RELU_LOWER_CLIP_SLOPE,Failed"); +returnstd::move(m_pointWiseDesc); +} +}elseif(m_pointWiseDesc.mode==CUDNN_POINTWISE_ELU_FWD||m_pointWiseDesc.mode==CUDNN_POINTWISE_ELU_BWD){ +status=cudnnBackendSetAttribute(m_pointWiseDesc.pointer->get_backend_descriptor(), +CUDNN_ATTR_POINTWISE_ELU_ALPHA, +CUDNN_TYPE_DOUBLE, +1, +&m_pointWiseDesc.elu_alpha); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_pointWiseDesc, +status, +"CUDNN_BACKEND_POINTWISE_DESCRIPTOR:SetAttributeCUDNN_ATTR_POINTWISE_ELU_ALPHA,Failed"); +returnstd::move(m_pointWiseDesc); +} +}elseif(m_pointWiseDesc.mode==CUDNN_POINTWISE_SOFTPLUS_FWD|| +m_pointWiseDesc.mode==CUDNN_POINTWISE_SOFTPLUS_BWD){ +status=cudnnBackendSetAttribute(m_pointWiseDesc.pointer->get_backend_descriptor(), +CUDNN_ATTR_POINTWISE_SOFTPLUS_BETA, +CUDNN_TYPE_DOUBLE, +1, +&m_pointWiseDesc.softplus_beta); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_pointWiseDesc, +status, +"CUDNN_BACKEND_POINTWISE_DESCRIPTOR:SetAttributeCUDNN_ATTR_POINTWISE_SOFTPLUS_BETA,Failed"); +returnstd::move(m_pointWiseDesc); +} +}elseif(m_pointWiseDesc.mode==CUDNN_POINTWISE_SWISH_FWD|| +m_pointWiseDesc.mode==CUDNN_POINTWISE_SWISH_BWD){ +status=cudnnBackendSetAttribute(m_pointWiseDesc.pointer->get_backend_descriptor(), +CUDNN_ATTR_POINTWISE_SWISH_BETA, +CUDNN_TYPE_DOUBLE, +1, +&m_pointWiseDesc.swish_beta); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_pointWiseDesc, +status, +"CUDNN_BACKEND_POINTWISE_DESCRIPTOR:SetAttributeCUDNN_ATTR_POINTWISE_SWISH_BETA,Failed"); +returnstd::move(m_pointWiseDesc); +} +} + +//Finalizingthedescriptor +status=cudnnBackendFinalize(m_pointWiseDesc.pointer->get_backend_descriptor()); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_pointWiseDesc,status,"CUDNN_BACKEND_POINTWISE_DESCRIPTOR:cudnnFinalizeFailed"); +returnstd::move(m_pointWiseDesc); +} + +returnstd::move(m_pointWiseDesc); +} + +explicitPointWiseDescBuilder_v8()=default; +~PointWiseDescBuilder_v8()=default; +PointWiseDescBuilder_v8(PointWiseDescBuilder_v8&&)=delete; +PointWiseDescBuilder_v8(PointWiseDescBuilder_v8const&)=delete; +PointWiseDescBuilder_v8& +operator=(PointWiseDescBuilder_v8const&)=delete; + +private: +PointWiseDesc_v8m_pointWiseDesc; +}; +} + + + + diff --git a/docs/xml/db/d66/cudnn__frontend__Heuristics_8h.xml b/docs/xml/db/d66/cudnn__frontend__Heuristics_8h.xml new file mode 100644 index 000000000..c4a90c2bd --- /dev/null +++ b/docs/xml/db/d66/cudnn__frontend__Heuristics_8h.xml @@ -0,0 +1,447 @@ + + + + cudnn_frontend_Heuristics.h + vector + cudnn.h + cudnn_backend.h + cudnn_frontend_OperationGraph.h + cudnn_frontend_utils.h + cudnn_frontend.h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + cudnn_frontend::EngineHeuristics_v8 + cudnn_frontend::EngineHeuristicsBuilder_v8 + cudnn_frontend + + + + + +/* +*Copyright(c)2021,NVIDIACORPORATION.Allrightsreserved. +* +*Permissionisherebygranted,freeofcharge,toanypersonobtaininga +*copyofthissoftwareandassociateddocumentationfiles(the"Software"), +*todealintheSoftwarewithoutrestriction,includingwithoutlimitation +*therightstouse,copy,modify,merge,publish,distribute,sublicense, +*and/orsellcopiesoftheSoftware,andtopermitpersonstowhomthe +*Softwareisfurnishedtodoso,subjecttothefollowingconditions: +* +*Theabovecopyrightnoticeandthispermissionnoticeshallbeincludedin +*allcopiesorsubstantialportionsoftheSoftware. +* +*THESOFTWAREISPROVIDED"ASIS",WITHOUTWARRANTYOFANYKIND,EXPRESSOR +*IMPLIED,INCLUDINGBUTNOTLIMITEDTOTHEWARRANTIESOFMERCHANTABILITY, +*FITNESSFORAPARTICULARPURPOSEANDNONINFRINGEMENT.INNOEVENTSHALL +*THEAUTHORSORCOPYRIGHTHOLDERSBELIABLEFORANYCLAIM,DAMAGESOROTHER +*LIABILITY,WHETHERINANACTIONOFCONTRACT,TORTOROTHERWISE,ARISING +*FROM,OUTOFORINCONNECTIONWITHTHESOFTWAREORTHEUSEOROTHER +*DEALINGSINTHESOFTWARE. +*/ + +#pragmaonce + +#include<vector> + +#include<cudnn.h> +#include<cudnn_backend.h> + +#include"cudnn_frontend_OperationGraph.h" +#include"cudnn_frontend_utils.h" + +namespacecudnn_frontend{ +classEngineHeuristics_v8:publicBackendDescriptor{ +public: +friendclassEngineHeuristicsBuilder_v8; +std::string +describe()constoverride{ +std::stringstreamss; +ss<<"CUDNN_BACKEND_ENGINEHEUR_DESCRIPTOR:"; +returnss.str(); +} + +EngineHeuristics_v8(EngineHeuristics_v8&&from) +:BackendDescriptor(from.get_desc(),from.get_status(),from.get_error()), +mode(from.mode), +opGraph(from.opGraph), +opGraphTag(from.opGraphTag){} + +~EngineHeuristics_v8()=default; + +auto +getEngineConfig(int64_tcount=1)->std::vector<ManagedOpaqueDescriptor>&{ +cudnnStatus_tstatus; +for(autoi=0u;i<count;++i){ +ManagedOpaqueDescriptorengConfig=nullptr; +engConfig=make_shared_backend_pointer(CUDNN_BACKEND_ENGINECFG_DESCRIPTOR); +if(engConfig->is_good()==false){ +set_error_and_throw_exception( +this, +engConfig->get_status(), +"CUDNN_BACKEND_ENGINEHEUR_DESCRIPTOR:CUDNN_BACKEND_ENGINECFG_DESCRIPTORcudnnCreateFailed"); +returnm_heuristic_results; +}; +m_heuristic_results.emplace_back(engConfig); +} +std::vector<cudnnBackendDescriptor_t>heuristic_results_; +for(std::uint32_ti=0;i<m_heuristic_results.size();i++){ +heuristic_results_.emplace_back(m_heuristic_results[i]->get_backend_descriptor()); +} +int64_tresult=-1; +status=cudnnBackendGetAttribute(pointer->get_backend_descriptor(), +CUDNN_ATTR_ENGINEHEUR_RESULTS, +CUDNN_TYPE_BACKEND_DESCRIPTOR, +count, +&result, +heuristic_results_.data()); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +this,status,"CUDNN_BACKEND_ENGINEHEUR_DESCRIPTOR:GetAttributeCUDNN_ATTR_ENGINEHEUR_RESULTSFailed"); +}; +returnm_heuristic_results; +} + +auto +getEngineConfigCount(void)const->int64_t{ +cudnnStatus_tstatus; +int64_tcount=-1; +status=cudnnBackendGetAttribute(pointer->get_backend_descriptor(), +CUDNN_ATTR_ENGINEHEUR_RESULTS, +CUDNN_TYPE_BACKEND_DESCRIPTOR, +0, +&count, +nullptr); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +this, +status, +"CUDNN_BACKEND_ENGINEHEUR_DESCRIPTOR:GetAttributeCUDNN_ATTR_ENGINEHEUR_RESULTSCountFailed"); +}; +returncount; +} +private: +EngineHeuristics_v8()=default; +EngineHeuristics_v8(EngineHeuristics_v8const&)=delete; +EngineHeuristics_v8& +operator=(EngineHeuristics_v8const&)=delete; + +cudnnBackendHeurMode_tmode=CUDNN_HEUR_MODE_INSTANT; +ManagedOpaqueDescriptoropGraph=nullptr; +std::vector<ManagedOpaqueDescriptor>m_heuristic_results; +std::stringopGraphTag; +}; + +classEngineHeuristicsBuilder_v8{ +public: +auto +setOperationGraph(OperationGraph_v8&opGraph_)->EngineHeuristicsBuilder_v8&{ +m_heuristics.opGraph=opGraph_.get_desc(); +m_heuristics.opGraphTag=opGraph_.getTag(); +return*this; +} +auto +setHeurMode(cudnnBackendHeurMode_tmode_)->EngineHeuristicsBuilder_v8&{ +m_heuristics.mode=mode_; +return*this; +} +EngineHeuristics_v8&& +build(){ +if(m_heuristics.opGraph==nullptr){ +set_error_and_throw_exception(&m_heuristics, +CUDNN_STATUS_BAD_PARAM, +"CUDNN_BACKEND_ENGINEHEUR_DESCRIPTOR:CheckandSetthe" +"CUDNN_ATTR_ENGINEHEUR_OPERATION_GRAPHfieldforheuristic"); +returnstd::move(m_heuristics); +}; + +//Createadescriptor.Memoryallocationhappenshere. +autostatus=m_heuristics.initialize_managed_backend_pointer(CUDNN_BACKEND_ENGINEHEUR_DESCRIPTOR); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_heuristics,status,"CUDNN_BACKEND_ENGINEHEUR_DESCRIPTOR:cudnnCreateFailed"); +returnstd::move(m_heuristics); +}; + +status=cudnnBackendSetAttribute(m_heuristics.pointer->get_backend_descriptor(), +CUDNN_ATTR_ENGINEHEUR_OPERATION_GRAPH, +CUDNN_TYPE_BACKEND_DESCRIPTOR, +1, +&(m_heuristics.opGraph->get_backend_descriptor())); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_heuristics, +status, +"CUDNN_BACKEND_ENGINEHEUR_DESCRIPTOR:SetAttributeCUDNN_ATTR_ENGINEHEUR_OPERATION_GRAPHFailed"); +returnstd::move(m_heuristics); +}; +status=cudnnBackendSetAttribute(m_heuristics.pointer->get_backend_descriptor(), +CUDNN_ATTR_ENGINEHEUR_MODE, +CUDNN_TYPE_HEUR_MODE, +1, +&m_heuristics.mode); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_heuristics, +status, +"CUDNN_BACKEND_ENGINEHEUR_DESCRIPTOR:SetAttributeCUDNN_ATTR_ENGINEHEUR_MODEFailed"); +returnstd::move(m_heuristics); +}; + +//Finalizingthedescriptor +status=cudnnBackendFinalize(m_heuristics.pointer->get_backend_descriptor()); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_heuristics,status,"CUDNN_BACKEND_ENGINEHEUR_DESCRIPTOR:cudnnFinalizefailed"); +returnstd::move(m_heuristics); +}; + +returnstd::move(m_heuristics); +} + +explicitEngineHeuristicsBuilder_v8()=default; +~EngineHeuristicsBuilder_v8()=default; +EngineHeuristicsBuilder_v8(EngineHeuristicsBuilder_v8&&)=delete; +EngineHeuristicsBuilder_v8(EngineHeuristicsBuilder_v8const&)=delete; +EngineHeuristicsBuilder_v8& +operator=(EngineHeuristicsBuilder_v8const&)=delete; + +private: +EngineHeuristics_v8m_heuristics; +}; +} + + + + diff --git a/docs/xml/db/d7d/cudnn__frontend__OperationGraph_8h.xml b/docs/xml/db/d7d/cudnn__frontend__OperationGraph_8h.xml new file mode 100644 index 000000000..0dd6460f1 --- /dev/null +++ b/docs/xml/db/d7d/cudnn__frontend__OperationGraph_8h.xml @@ -0,0 +1,469 @@ + + + + cudnn_frontend_OperationGraph.h + algorithm + array + functional + memory + sstream + utility + cudnn.h + cudnn_backend.h + cudnn_frontend_Operation.h + cudnn_frontend_utils.h + cudnn_frontend_Heuristics.h + cudnn_frontend_Engine.h + cudnn_frontend.h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + cudnn_frontend::OperationGraph_v8 + cudnn_frontend::OperationGraphBuilder_v8 + cudnn_frontend + + + + + +/* +*Copyright(c)2021,NVIDIACORPORATION.Allrightsreserved. +* +*Permissionisherebygranted,freeofcharge,toanypersonobtaininga +*copyofthissoftwareandassociateddocumentationfiles(the"Software"), +*todealintheSoftwarewithoutrestriction,includingwithoutlimitation +*therightstouse,copy,modify,merge,publish,distribute,sublicense, +*and/orsellcopiesoftheSoftware,andtopermitpersonstowhomthe +*Softwareisfurnishedtodoso,subjecttothefollowingconditions: +* +*Theabovecopyrightnoticeandthispermissionnoticeshallbeincludedin +*allcopiesorsubstantialportionsoftheSoftware. +* +*THESOFTWAREISPROVIDED"ASIS",WITHOUTWARRANTYOFANYKIND,EXPRESSOR +*IMPLIED,INCLUDINGBUTNOTLIMITEDTOTHEWARRANTIESOFMERCHANTABILITY, +*FITNESSFORAPARTICULARPURPOSEANDNONINFRINGEMENT.INNOEVENTSHALL +*THEAUTHORSORCOPYRIGHTHOLDERSBELIABLEFORANYCLAIM,DAMAGESOROTHER +*LIABILITY,WHETHERINANACTIONOFCONTRACT,TORTOROTHERWISE,ARISING +*FROM,OUTOFORINCONNECTIONWITHTHESOFTWAREORTHEUSEOROTHER +*DEALINGSINTHESOFTWARE. +*/ + +#pragmaonce + +#include<algorithm> +#include<array> +#include<functional> +#include<memory> +#include<sstream> +#include<utility> + +#include<cudnn.h> +#include<cudnn_backend.h> + +#include"cudnn_frontend_Operation.h" +#include"cudnn_frontend_utils.h" + +namespacecudnn_frontend{ + +classOperationGraph_v8:publicBackendDescriptor{ +public: +friendclassOperationGraphBuilder_v8; +std::string +describe()constoverride{ +std::stringstreamss; +ss<<"CUDNN_BACKEND_OPERATIONGRAPH_DESCRIPTOR:"; +returnss.str(); +} + +OperationGraph_v8(OperationGraph_v8&&from) +:BackendDescriptor(from.get_desc(),from.get_status(),from.get_error()), +handle(from.handle), +ops(from.ops), +numOps(from.numOps), +opGraphTag(from.opGraphTag){} + +~OperationGraph_v8()=default; + +auto +getEngineCount(void)const->int64_t{ +int64_tglobal_count=-1; +autostatus=cudnnBackendGetAttribute(pointer->get_backend_descriptor(), +CUDNN_ATTR_OPERATIONGRAPH_ENGINE_GLOBAL_COUNT, +CUDNN_TYPE_INT64, +1, +NULL, +&global_count); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception(this, +status, +"CUDNN_BACKEND_OPERATIONGRAPH_DESCRIPTOR:GetAttribute" +"CUDNN_ATTR_OPERATIONGRAPH_ENGINE_GLOBAL_COUNTFailed"); +} +returnglobal_count; +} +std::stringconst& +getTag()const{ +returnopGraphTag; +} + +private: +OperationGraph_v8()=default; +OperationGraph_v8(OperationGraph_v8const&)=delete; +OperationGraph_v8& +operator=(OperationGraph_v8const&)=delete; + +cudnnHandle_thandle=nullptr; +std::array<ManagedOpaqueDescriptor,10>ops{}; +int64_tnumOps=-1; +std::stringopGraphTag=""; +}; + +classOperationGraphBuilder_v8{ +public: +auto +setHandle(cudnnHandle_thandle_)->OperationGraphBuilder_v8&{ +m_operationGraph.handle=handle_; +return*this; +} +auto +setOperationGraph(int64_tnumOps_,Operation_v8const**ops_)->OperationGraphBuilder_v8&{ +m_operationGraph.numOps=numOps_; +for(autoi=0u;i<numOps_;i++){ +m_operationGraph.ops[i]=ops_[i]->get_desc(); +m_operationGraph.opGraphTag+=ops_[i]->getTag()+'_'; +} +return*this; +} +OperationGraph_v8&& +build(){ +if(m_operationGraph.numOps<=0){ +set_error_and_throw_exception( +&m_operationGraph, +CUDNN_STATUS_BAD_PARAM, +"CUDNN_BACKEND_OPERATIONGRAPH_DESCRIPTOR:CheckandSettheCUDNN_ATTR_OPERATIONGRAPH_OPSCountfield"); +returnstd::move(m_operationGraph); +} +if(m_operationGraph.ops[0]==nullptr){ +set_error_and_throw_exception( +&m_operationGraph, +CUDNN_STATUS_BAD_PARAM, +"CUDNN_BACKEND_OPERATIONGRAPH_DESCRIPTOR:CheckandsetCUDNN_ATTR_OPERATIONGRAPH_OPSfield"); +returnstd::move(m_operationGraph); +} +if(m_operationGraph.handle==nullptr){ +set_error_and_throw_exception( +&m_operationGraph, +CUDNN_STATUS_BAD_PARAM, +"CUDNN_BACKEND_OPERATIONGRAPH_DESCRIPTOR:CheckandSetCUDNN_ATTR_OPERATIONGRAPH_HANDLE"); +returnstd::move(m_operationGraph); +} + +//Createadescriptor.Memoryallocationhappenshere. +autostatus=m_operationGraph.initialize_managed_backend_pointer(CUDNN_BACKEND_OPERATIONGRAPH_DESCRIPTOR); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_operationGraph,status,"CUDNN_BACKEND_OPERATIONGRAPH_DESCRIPTOR:cudnnCreateFailed"); +returnstd::move(m_operationGraph); +} + +std::array<cudnnBackendDescriptor_t,10>ops_raw{nullptr}; +for(autoi=0u;i<m_operationGraph.numOps;i++){ +ops_raw[i]=m_operationGraph.ops[i]->get_backend_descriptor(); +} + +status=cudnnBackendSetAttribute(m_operationGraph.pointer->get_backend_descriptor(), +CUDNN_ATTR_OPERATIONGRAPH_OPS, +CUDNN_TYPE_BACKEND_DESCRIPTOR, +m_operationGraph.numOps, +ops_raw.data()); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_operationGraph, +status, +"CUDNN_BACKEND_OPERATIONGRAPH_DESCRIPTOR:SetAttributeCUDNN_ATTR_OPERATIONGRAPH_OPSFailed"); +returnstd::move(m_operationGraph); +} +status=cudnnBackendSetAttribute(m_operationGraph.pointer->get_backend_descriptor(), +CUDNN_ATTR_OPERATIONGRAPH_HANDLE, +CUDNN_TYPE_HANDLE, +1, +&m_operationGraph.handle); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_operationGraph, +status, +"CUDNN_BACKEND_OPERATIONGRAPH_DESCRIPTOR:SetAttributeCUDNN_ATTR_OPERATIONGRAPH_HANDLEFailed"); +returnstd::move(m_operationGraph); +} + +//Finalizingthedescriptor +status=cudnnBackendFinalize(m_operationGraph.pointer->get_backend_descriptor()); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_operationGraph,status,"CUDNN_BACKEND_OPERATIONGRAPH_DESCRIPTOR:cudnnFinalizeFailed"); +returnstd::move(m_operationGraph); +} + +returnstd::move(m_operationGraph); +} + +explicitOperationGraphBuilder_v8()=default; +~OperationGraphBuilder_v8()=default; +OperationGraphBuilder_v8(OperationGraphBuilder_v8&&)=delete; +OperationGraphBuilder_v8(OperationGraphBuilder_v8const&)=delete; +OperationGraphBuilder_v8& +operator=(OperationGraphBuilder_v8const&)=delete; + +private: +OperationGraph_v8m_operationGraph; +}; +} + + + + diff --git a/docs/xml/db/d99/classcudnn__frontend_1_1EngineFallbackList__v8.xml b/docs/xml/db/d99/classcudnn__frontend_1_1EngineFallbackList__v8.xml new file mode 100644 index 000000000..28fdcfcae --- /dev/null +++ b/docs/xml/db/d99/classcudnn__frontend_1_1EngineFallbackList__v8.xml @@ -0,0 +1,311 @@ + + + + cudnn_frontend::EngineFallbackList_v8 + cudnn_frontend::BackendDescriptor + cudnn_frontend_EngineFallbackList.h + + + friend class + friend class EngineFallbackListBuilder_v8 + + EngineFallbackListBuilder_v8 + + + + + + + + cudnn_frontend::EngineFallbackListBuilder_v8::build + + + + + ManagedOpaqueDescriptor + ManagedOpaqueDescriptor cudnn_frontend::EngineFallbackList_v8::opGraph + + opGraph + = nullptr + + + + + + + + + + cudnnBackendDescriptorType_t + cudnnBackendDescriptorType_t cudnn_frontend::EngineFallbackList_v8::mode + + mode + + + + + + + + cudnn_frontend::EngineFallbackListBuilder_v8::setOperation + + + std::vector< ManagedOpaqueDescriptor > + std::vector<ManagedOpaqueDescriptor> cudnn_frontend::EngineFallbackList_v8::m_engine_configs + + m_engine_configs + + + + + + + + EngineFallbackList_v8 + getFallbackList + + + std::string + std::string cudnn_frontend::EngineFallbackList_v8::opGraphTag + + opGraphTag + + + + + + + + + + + + std::string + std::string cudnn_frontend::EngineFallbackList_v8::describe + () const override + describe + describe + +Return a string describing the backend Descriptor. + + + + + + + + auto + auto cudnn_frontend::EngineFallbackList_v8::getFallbackList + () -> std::vector< ManagedOpaqueDescriptor > & + getFallbackList + + + + + + + + m_engine_configs + ~EngineFallbackList_v8 + + + + cudnn_frontend::EngineFallbackList_v8::~EngineFallbackList_v8 + ()=default + ~EngineFallbackList_v8 + + + + + + + + getFallbackList + + + + cudnn_frontend::EngineFallbackList_v8::EngineFallbackList_v8 + (EngineFallbackList_v8 &&from) + EngineFallbackList_v8 + + EngineFallbackList_v8 && + from + + + + + + + + + EngineFallbackList_v8 + m_engine_configs + operator= + + + + + + cudnn_frontend::EngineFallbackList_v8::EngineFallbackList_v8 + ()=default + EngineFallbackList_v8 + + + + + + + + EngineFallbackList_v8 + + + + cudnn_frontend::EngineFallbackList_v8::EngineFallbackList_v8 + (EngineFallbackList_v8 const &)=delete + EngineFallbackList_v8 + + EngineFallbackList_v8 const & + + + + + + + + + + + EngineFallbackList_v8 & + EngineFallbackList_v8& cudnn_frontend::EngineFallbackList_v8::operator= + (EngineFallbackList_v8 const &)=delete + operator= + + EngineFallbackList_v8 const & + + + + + + + + + cudnn_frontend::EngineFallbackListBuilder_v8::build + EngineFallbackList_v8 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +elements + + + + + + + + + -m_engine_configs + + + -opGraphTag + + + -opGraph + + + -mode + + + + + + + + + +elements + + + < ManagedOpaqueDescriptor > + + + + + + + + + + + + + + + + #err_msg + + + #pointer + + + #status + + + + + + + + + + + cudnn_frontend::EngineFallbackList_v8BackendDescriptor + cudnn_frontend::EngineFallbackList_v8BackendDescriptor + cudnn_frontend::EngineFallbackList_v8describe + cudnn_frontend::EngineFallbackList_v8EngineFallbackList_v8 + cudnn_frontend::EngineFallbackList_v8EngineFallbackList_v8 + cudnn_frontend::EngineFallbackList_v8EngineFallbackList_v8 + cudnn_frontend::EngineFallbackList_v8EngineFallbackListBuilder_v8 + cudnn_frontend::EngineFallbackList_v8err_msg + cudnn_frontend::EngineFallbackList_v8get_desc + cudnn_frontend::EngineFallbackList_v8get_error + cudnn_frontend::EngineFallbackList_v8get_raw_desc + cudnn_frontend::EngineFallbackList_v8get_status + cudnn_frontend::EngineFallbackList_v8getFallbackList + cudnn_frontend::EngineFallbackList_v8initialize_managed_backend_pointer + cudnn_frontend::EngineFallbackList_v8m_engine_configs + cudnn_frontend::EngineFallbackList_v8mode + cudnn_frontend::EngineFallbackList_v8operator= + cudnn_frontend::EngineFallbackList_v8opGraph + cudnn_frontend::EngineFallbackList_v8opGraphTag + cudnn_frontend::EngineFallbackList_v8pointer + cudnn_frontend::EngineFallbackList_v8set_error + cudnn_frontend::EngineFallbackList_v8set_status + cudnn_frontend::EngineFallbackList_v8status + cudnn_frontend::EngineFallbackList_v8~EngineFallbackList_v8 + + + diff --git a/docs/xml/db/dae/classcudnn__frontend_1_1TensorBuilder__v8.xml b/docs/xml/db/dae/classcudnn__frontend_1_1TensorBuilder__v8.xml new file mode 100644 index 000000000..7106820f9 --- /dev/null +++ b/docs/xml/db/dae/classcudnn__frontend_1_1TensorBuilder__v8.xml @@ -0,0 +1,310 @@ + + + + cudnn_frontend::TensorBuilder_v8 + cudnn_frontend_Tensor.h + + + Tensor_v8 + Tensor_v8 cudnn_frontend::TensorBuilder_v8::m_tensor + + m_tensor + + + + + + + + + + + + auto + auto cudnn_frontend::TensorBuilder_v8::setDataType + (cudnnDataType_t data_type_) -> TensorBuilder_v8 & + setDataType + + cudnnDataType_t + data_type_ + + +Set Datatype for the Tensor_v8. + + + + + + + + auto + auto cudnn_frontend::TensorBuilder_v8::setDim + (int64_t ndim, int64_t const *dim) -> TensorBuilder_v8 & + setDim + + int64_t + ndim + + + int64_t const * + dim + + +Set Dimensions of the tensor. + + + + + + + + auto + auto cudnn_frontend::TensorBuilder_v8::setStrides + (int64_t ndim, int64_t const *strides) -> TensorBuilder_v8 & + setStrides + + int64_t + ndim + + + int64_t const * + strides + + +Set Strides of the tensor. + + + + + + + + auto + auto cudnn_frontend::TensorBuilder_v8::setId + (int64_t id_) -> TensorBuilder_v8 & + setId + + int64_t + id_ + + +Set Unique Id of the tensor. + + + + + + + + auto + auto cudnn_frontend::TensorBuilder_v8::setAlignment + (int64_t alignment_) -> TensorBuilder_v8 & + setAlignment + + int64_t + alignment_ + + +Set Alignment of the tensor. + + + + + + + + auto + auto cudnn_frontend::TensorBuilder_v8::setVirtual + (bool virtual_=true) -> TensorBuilder_v8 & + setVirtual + + bool + virtual_ + true + + +Set Alignment of the tensor. + + + + + + + + Tensor_v8 && + Tensor_v8&& cudnn_frontend::TensorBuilder_v8::build + () + build + + + +constructs the Tensor_v8 by calling the cudnn API Throws the appropriate error message + + + + cudnn_frontend::Tensor_v8::operator= + cudnn_frontend::set_error_and_throw_exception + cudnn_frontend::BackendDescriptor::status + cudnn_frontend::Tensor_v8::TensorBuilder_v8 + + + + cudnn_frontend::TensorBuilder_v8::TensorBuilder_v8 + ()=default + TensorBuilder_v8 + + + + + + + + + + + cudnn_frontend::TensorBuilder_v8::~TensorBuilder_v8 + ()=default + ~TensorBuilder_v8 + + + + + + + + + + + cudnn_frontend::TensorBuilder_v8::TensorBuilder_v8 + (TensorBuilder_v8 &&)=delete + TensorBuilder_v8 + + TensorBuilder_v8 && + + + + + + + + + + + + cudnn_frontend::TensorBuilder_v8::TensorBuilder_v8 + (TensorBuilder_v8 const &)=delete + TensorBuilder_v8 + + TensorBuilder_v8 const & + + + + + + + + + + + TensorBuilder_v8 & + TensorBuilder_v8& cudnn_frontend::TensorBuilder_v8::operator= + (TensorBuilder_v8 const &)=delete + operator= + + TensorBuilder_v8 const & + + + + + + + + + + + + + +TensorBuilder_v8 Class Helper class used to build Tensor_v8 class + + + + + + + + + -m_tensor + + + + + + + + + + + + + + + + + + + + + + + + -btensor_dimA + -nDims + -id + -alignment + -btensor_strA + + + -isVirtual + + + -data_type + + + + + + + #err_msg + + + #pointer + + + #status + + + + + + + + + + + cudnn_frontend::TensorBuilder_v8build + cudnn_frontend::TensorBuilder_v8m_tensor + cudnn_frontend::TensorBuilder_v8operator= + cudnn_frontend::TensorBuilder_v8setAlignment + cudnn_frontend::TensorBuilder_v8setDataType + cudnn_frontend::TensorBuilder_v8setDim + cudnn_frontend::TensorBuilder_v8setId + cudnn_frontend::TensorBuilder_v8setStrides + cudnn_frontend::TensorBuilder_v8setVirtual + cudnn_frontend::TensorBuilder_v8TensorBuilder_v8 + cudnn_frontend::TensorBuilder_v8TensorBuilder_v8 + cudnn_frontend::TensorBuilder_v8TensorBuilder_v8 + cudnn_frontend::TensorBuilder_v8~TensorBuilder_v8 + + + diff --git a/docs/xml/db/ddb/classcudnn__frontend_1_1EngineHeuristics__v8.xml b/docs/xml/db/ddb/classcudnn__frontend_1_1EngineHeuristics__v8.xml new file mode 100644 index 000000000..25445e5a7 --- /dev/null +++ b/docs/xml/db/ddb/classcudnn__frontend_1_1EngineHeuristics__v8.xml @@ -0,0 +1,340 @@ + + + + cudnn_frontend::EngineHeuristics_v8 + cudnn_frontend::BackendDescriptor + cudnn_frontend_Heuristics.h + + + friend class + friend class EngineHeuristicsBuilder_v8 + + EngineHeuristicsBuilder_v8 + + + + + + + + cudnn_frontend::EngineHeuristicsBuilder_v8::build + + + + + cudnnBackendHeurMode_t + cudnnBackendHeurMode_t cudnn_frontend::EngineHeuristics_v8::mode + + mode + = CUDNN_HEUR_MODE_INSTANT + + + + + + + + + + ManagedOpaqueDescriptor + ManagedOpaqueDescriptor cudnn_frontend::EngineHeuristics_v8::opGraph + + opGraph + = nullptr + + + + + + + + + + std::vector< ManagedOpaqueDescriptor > + std::vector<ManagedOpaqueDescriptor> cudnn_frontend::EngineHeuristics_v8::m_heuristic_results + + m_heuristic_results + + + + + + + + getEngineConfig + + + std::string + std::string cudnn_frontend::EngineHeuristics_v8::opGraphTag + + opGraphTag + +storage of heuristic results + + + + + + + + + + std::string + std::string cudnn_frontend::EngineHeuristics_v8::describe + () const override + describe + describe + +Return a string describing the backend Descriptor. + + + + + + + + + cudnn_frontend::EngineHeuristics_v8::EngineHeuristics_v8 + (EngineHeuristics_v8 &&from) + EngineHeuristics_v8 + + EngineHeuristics_v8 && + from + + + + + + + + + ~EngineHeuristics_v8 + + + + cudnn_frontend::EngineHeuristics_v8::~EngineHeuristics_v8 + ()=default + ~EngineHeuristics_v8 + + + + + + + + EngineHeuristics_v8 + + + auto + auto cudnn_frontend::EngineHeuristics_v8::getEngineConfig + (int64_t count=1) -> std::vector< ManagedOpaqueDescriptor > & + getEngineConfig + + int64_t + count + 1 + + +Query the total count of the engines for the Operation Set. + + + + + + m_heuristic_results + cudnn_frontend::make_shared_backend_pointer + cudnn_frontend::BackendDescriptor::pointer + cudnn_frontend::set_error_and_throw_exception + cudnn_frontend::BackendDescriptor::status + + + auto + auto cudnn_frontend::EngineHeuristics_v8::getEngineConfigCount + (void) const -> int64_t + getEngineConfigCount + + void + + +Query the total count of the engine config for the Operation Set. + + + + + + EngineHeuristics_v8 + operator= + cudnn_frontend::BackendDescriptor::pointer + cudnn_frontend::set_error_and_throw_exception + cudnn_frontend::BackendDescriptor::status + + + + + + cudnn_frontend::EngineHeuristics_v8::EngineHeuristics_v8 + ()=default + EngineHeuristics_v8 + + + + + + + + getEngineConfigCount + + + + cudnn_frontend::EngineHeuristics_v8::EngineHeuristics_v8 + (EngineHeuristics_v8 const &)=delete + EngineHeuristics_v8 + + EngineHeuristics_v8 const & + + + + + + + + + + + EngineHeuristics_v8 & + EngineHeuristics_v8& cudnn_frontend::EngineHeuristics_v8::operator= + (EngineHeuristics_v8 const &)=delete + operator= + + EngineHeuristics_v8 const & + + + + + + + + + cudnn_frontend::EngineHeuristicsBuilder_v8::build + getEngineConfigCount + + + + + +Engine Heuristic Class This class helps determine the engine from the operation graph based on the heuristics Properties: +heuristic modeoperation graph +Use EngineHeuristicsBuilder_v8 to build this class. Describe returns a string describing the EngineHeuristics_v8 class + + + + + + + + + + + + + + + + + + + + + + + +elements + + + + + + + + + +elements + + + < ManagedOpaqueDescriptor > + + + + + + + + + + + + -m_heuristic_results + + + -mode + + + -opGraphTag + + + -opGraph + + + + + + + + + + #err_msg + + + #pointer + + + #status + + + + + + + + + + + + + + cudnn_frontend::EngineHeuristics_v8BackendDescriptor + cudnn_frontend::EngineHeuristics_v8BackendDescriptor + cudnn_frontend::EngineHeuristics_v8describe + cudnn_frontend::EngineHeuristics_v8EngineHeuristics_v8 + cudnn_frontend::EngineHeuristics_v8EngineHeuristics_v8 + cudnn_frontend::EngineHeuristics_v8EngineHeuristics_v8 + cudnn_frontend::EngineHeuristics_v8EngineHeuristicsBuilder_v8 + cudnn_frontend::EngineHeuristics_v8err_msg + cudnn_frontend::EngineHeuristics_v8get_desc + cudnn_frontend::EngineHeuristics_v8get_error + cudnn_frontend::EngineHeuristics_v8get_raw_desc + cudnn_frontend::EngineHeuristics_v8get_status + cudnn_frontend::EngineHeuristics_v8getEngineConfig + cudnn_frontend::EngineHeuristics_v8getEngineConfigCount + cudnn_frontend::EngineHeuristics_v8initialize_managed_backend_pointer + cudnn_frontend::EngineHeuristics_v8m_heuristic_results + cudnn_frontend::EngineHeuristics_v8mode + cudnn_frontend::EngineHeuristics_v8operator= + cudnn_frontend::EngineHeuristics_v8opGraph + cudnn_frontend::EngineHeuristics_v8opGraphTag + cudnn_frontend::EngineHeuristics_v8pointer + cudnn_frontend::EngineHeuristics_v8set_error + cudnn_frontend::EngineHeuristics_v8set_status + cudnn_frontend::EngineHeuristics_v8status + cudnn_frontend::EngineHeuristics_v8~EngineHeuristics_v8 + + + diff --git a/docs/xml/db/de1/classcudnn__frontend_1_1ConvDescBuilder__v8.xml b/docs/xml/db/de1/classcudnn__frontend_1_1ConvDescBuilder__v8.xml new file mode 100644 index 000000000..fb776c132 --- /dev/null +++ b/docs/xml/db/de1/classcudnn__frontend_1_1ConvDescBuilder__v8.xml @@ -0,0 +1,336 @@ + + + + cudnn_frontend::ConvDescBuilder_v8 + cudnn_frontend_ConvDesc.h + + + ConvDesc_v8 + ConvDesc_v8 cudnn_frontend::ConvDescBuilder_v8::m_convDesc + + m_convDesc + + + + + + + + + + + + auto + auto cudnn_frontend::ConvDescBuilder_v8::setDataType + (cudnnDataType_t data_type_) -> ConvDescBuilder_v8 & + setDataType + + cudnnDataType_t + data_type_ + + +Set Datatype for the Convolution Operation. + + + + + + + + auto + auto cudnn_frontend::ConvDescBuilder_v8::setPrePadding + (int64_t ndims, int64_t const *padding) -> ConvDescBuilder_v8 & + setPrePadding + + int64_t + ndims + + + int64_t const * + padding + + +Set Padding Lower of the convDesc. + + + + + + + + auto + auto cudnn_frontend::ConvDescBuilder_v8::setPostPadding + (int64_t ndims, int64_t const *padding) -> ConvDescBuilder_v8 & + setPostPadding + + int64_t + ndims + + + int64_t const * + padding + + +Set Padding Upper of the convDesc. + + + + + + + + auto + auto cudnn_frontend::ConvDescBuilder_v8::setDilation + (int64_t ndims, int64_t const *dilation) -> ConvDescBuilder_v8 & + setDilation + + int64_t + ndims + + + int64_t const * + dilation + + +Set Dilation of the convDesc. + + + + + + cudnn_frontend::ConvDesc_v8::dilation + + + auto + auto cudnn_frontend::ConvDescBuilder_v8::setStrides + (int64_t ndims, int64_t const *strides) -> ConvDescBuilder_v8 & + setStrides + + int64_t + ndims + + + int64_t const * + strides + + +Set Strides of the convDesc. + + + + + + + + auto + auto cudnn_frontend::ConvDescBuilder_v8::setNDims + (int64_t nDims_) -> ConvDescBuilder_v8 & + setNDims + + int64_t + nDims_ + + +Set Num Spatial Dimensions of the convolution Operation. + + + + + + + + auto + auto cudnn_frontend::ConvDescBuilder_v8::setMathMode + (cudnnConvolutionMode_t mode_) -> ConvDescBuilder_v8 & + setMathMode + + cudnnConvolutionMode_t + mode_ + + +Set Convolution Mode of the convolution Operation. + + + + + + + + ConvDesc_v8 && + ConvDesc_v8&& cudnn_frontend::ConvDescBuilder_v8::build + () + build + + + +constructs the ConvDesc_v8 by calling the cudnn API Throws the appropriate error message + + + + cudnn_frontend::ConvDesc_v8::ConvDescBuilder_v8 + cudnn_frontend::ConvDesc_v8::operator= + cudnn_frontend::set_error_and_throw_exception + cudnn_frontend::BackendDescriptor::status + + + + cudnn_frontend::ConvDescBuilder_v8::ConvDescBuilder_v8 + ()=default + ConvDescBuilder_v8 + + + + + + + + + + + cudnn_frontend::ConvDescBuilder_v8::~ConvDescBuilder_v8 + ()=default + ~ConvDescBuilder_v8 + + + + + + + + + + + cudnn_frontend::ConvDescBuilder_v8::ConvDescBuilder_v8 + (ConvDescBuilder_v8 &&)=delete + ConvDescBuilder_v8 + + ConvDescBuilder_v8 && + + + + + + + + + + + + cudnn_frontend::ConvDescBuilder_v8::ConvDescBuilder_v8 + (ConvDescBuilder_v8 const &)=delete + ConvDescBuilder_v8 + + ConvDescBuilder_v8 const & + + + + + + + + + + + ConvDescBuilder_v8 & + ConvDescBuilder_v8& cudnn_frontend::ConvDescBuilder_v8::operator= + (ConvDescBuilder_v8 const &)=delete + operator= + + ConvDescBuilder_v8 const & + + + + + + + + + + + + + +ConvDescBuilder_v8 Class Helper class used to build ConvDesc_v8 class + + + + + + + + + + + + + + -padUpper + -nDims + -stride + -dilation + -padLower + + + -mode + + + -data_type + + + + + + + + + + + + + + + + -m_convDesc + + + + + + + + + + #err_msg + + + #pointer + + + #status + + + + + + + + + + + cudnn_frontend::ConvDescBuilder_v8build + cudnn_frontend::ConvDescBuilder_v8ConvDescBuilder_v8 + cudnn_frontend::ConvDescBuilder_v8ConvDescBuilder_v8 + cudnn_frontend::ConvDescBuilder_v8ConvDescBuilder_v8 + cudnn_frontend::ConvDescBuilder_v8m_convDesc + cudnn_frontend::ConvDescBuilder_v8operator= + cudnn_frontend::ConvDescBuilder_v8setDataType + cudnn_frontend::ConvDescBuilder_v8setDilation + cudnn_frontend::ConvDescBuilder_v8setMathMode + cudnn_frontend::ConvDescBuilder_v8setNDims + cudnn_frontend::ConvDescBuilder_v8setPostPadding + cudnn_frontend::ConvDescBuilder_v8setPrePadding + cudnn_frontend::ConvDescBuilder_v8setStrides + cudnn_frontend::ConvDescBuilder_v8~ConvDescBuilder_v8 + + + diff --git a/docs/xml/dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.xml b/docs/xml/dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.xml new file mode 100644 index 000000000..45caedec7 --- /dev/null +++ b/docs/xml/dc/d02/classcudnn__frontend_1_1Engine__v8_1_1Knob.xml @@ -0,0 +1,269 @@ + + + + cudnn_frontend::Engine_v8::Knob + + + cudnnBackendKnobType_t + cudnnBackendKnobType_t cudnn_frontend::Engine_v8::Knob::knobType + + knobType + = CUDNN_KNOB_TYPE_COUNTS + + + + + + + + describe + getKnobType + + + int64_t + int64_t cudnn_frontend::Engine_v8::Knob::maxValue + + maxValue + = 0 + + + + + + + + cudnn_frontend::Engine_v8::buildKnobs + describe + + + int64_t + int64_t cudnn_frontend::Engine_v8::Knob::minValue + + minValue + = 0 + + + + + + + + cudnn_frontend::Engine_v8::buildKnobs + describe + getMaxValue + getMinValue + + + int64_t + int64_t cudnn_frontend::Engine_v8::Knob::stride + + stride + = 0 + +min, max and stride of the knob value + + + + + + cudnn_frontend::Engine_v8::buildKnobs + describe + getStride + + + int64_t + int64_t cudnn_frontend::Engine_v8::Knob::choice + + choice + = 0 + +Choice set by the user. + + + + + + getChoice + setChoice + + + + + + cudnn_frontend::Engine_v8::Knob::Knob + (cudnnBackendKnobType_t type_, int64_t max, int64_t min, int64_t stride_) + Knob + + cudnnBackendKnobType_t + type_ + + + int64_t + max + + + int64_t + min + + + int64_t + stride_ + + + + + + + + + cudnn_frontend::Engine_v8::buildKnobs + + + std::string + std::string cudnn_frontend::Engine_v8::Knob::describe + () const + describe + + + + + + + + knobType + maxValue + minValue + stride + + + void + void cudnn_frontend::Engine_v8::Knob::setChoice + (uint64_t val_) + setChoice + + uint64_t + val_ + + + + + + + + + choice + + + int64_t + int64_t cudnn_frontend::Engine_v8::Knob::getChoice + () const + getChoice + + + + + + + + choice + + + cudnnBackendKnobType_t + cudnnBackendKnobType_t cudnn_frontend::Engine_v8::Knob::getKnobType + () const + getKnobType + + + + + + + + knobType + + + int64_t + int64_t cudnn_frontend::Engine_v8::Knob::getMinValue + () const + getMinValue + + + + + + + + minValue + + + int64_t + int64_t cudnn_frontend::Engine_v8::Knob::getMaxValue + () const + getMaxValue + + + + + + + + minValue + + + int64_t + int64_t cudnn_frontend::Engine_v8::Knob::getStride + () const + getStride + + + + + + + + stride + + + + + +Internal class which controls the different knobs for a given engine Has min-max and stride as the options. User has the option to set the required value as a choice. + + + + + + + + + + + + -knobType + + + -minValue + -maxValue + -stride + -choice + + + + + + cudnn_frontend::Engine_v8::Knobchoice + cudnn_frontend::Engine_v8::Knobdescribe + cudnn_frontend::Engine_v8::KnobgetChoice + cudnn_frontend::Engine_v8::KnobgetKnobType + cudnn_frontend::Engine_v8::KnobgetMaxValue + cudnn_frontend::Engine_v8::KnobgetMinValue + cudnn_frontend::Engine_v8::KnobgetStride + cudnn_frontend::Engine_v8::KnobKnob + cudnn_frontend::Engine_v8::KnobknobType + cudnn_frontend::Engine_v8::KnobmaxValue + cudnn_frontend::Engine_v8::KnobminValue + cudnn_frontend::Engine_v8::KnobsetChoice + cudnn_frontend::Engine_v8::Knobstride + + + diff --git a/docs/xml/dc/d11/cudnn__backend__base_8h.xml b/docs/xml/dc/d11/cudnn__backend__base_8h.xml new file mode 100644 index 000000000..fe2967d70 --- /dev/null +++ b/docs/xml/dc/d11/cudnn__backend__base_8h.xml @@ -0,0 +1,282 @@ + + + + cudnn_backend_base.h + cudnn.h + cudnn_frontend_utils.h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + cudnn_frontend::OpaqueBackendPointer + cudnn_frontend::BackendDescriptor + cudnn_frontend + + + + + +/* +*Copyright(c)2021,NVIDIACORPORATION.Allrightsreserved. +* +*Permissionisherebygranted,freeofcharge,toanypersonobtaininga +*copyofthissoftwareandassociateddocumentationfiles(the"Software"), +*todealintheSoftwarewithoutrestriction,includingwithoutlimitation +*therightstouse,copy,modify,merge,publish,distribute,sublicense, +*and/orsellcopiesoftheSoftware,andtopermitpersonstowhomthe +*Softwareisfurnishedtodoso,subjecttothefollowingconditions: +* +*Theabovecopyrightnoticeandthispermissionnoticeshallbeincludedin +*allcopiesorsubstantialportionsoftheSoftware. +* +*THESOFTWAREISPROVIDED"ASIS",WITHOUTWARRANTYOFANYKIND,EXPRESSOR +*IMPLIED,INCLUDINGBUTNOTLIMITEDTOTHEWARRANTIESOFMERCHANTABILITY, +*FITNESSFORAPARTICULARPURPOSEANDNONINFRINGEMENT.INNOEVENTSHALL +*THEAUTHORSORCOPYRIGHTHOLDERSBELIABLEFORANYCLAIM,DAMAGESOROTHER +*LIABILITY,WHETHERINANACTIONOFCONTRACT,TORTOROTHERWISE,ARISING +*FROM,OUTOFORINCONNECTIONWITHTHESOFTWAREORTHEUSEOROTHER +*DEALINGSINTHESOFTWARE. +*/ + +#pragmaonce + +#include<cudnn.h> + +namespacecudnn_frontend{ + +classOpaqueBackendPointer{ +cudnnBackendDescriptor_tm_desc=nullptr; +cudnnStatus_tstatus=CUDNN_STATUS_SUCCESS; + +public: +OpaqueBackendPointer(constOpaqueBackendPointer&)=delete; +OpaqueBackendPointer& +operator=(constOpaqueBackendPointer&)=delete; +OpaqueBackendPointer(OpaqueBackendPointer&&)=default; + +OpaqueBackendPointer(cudnnBackendDescriptorType_ttype){status=cudnnBackendCreateDescriptor(type,&m_desc);} +~OpaqueBackendPointer(){cudnnBackendDestroyDescriptor(m_desc);}; +cudnnBackendDescriptor_tconst& +get_backend_descriptor()const{ +returnm_desc; +} +cudnnStatus_t +get_status()const{ +returnstatus; +} +bool +is_good()const{ +returnstatus==CUDNN_STATUS_SUCCESS; +} +}; + +usingManagedOpaqueDescriptor=std::shared_ptr<OpaqueBackendPointer>; + +staticManagedOpaqueDescriptor +make_shared_backend_pointer(cudnnBackendDescriptorType_ttype){ +returnstd::make_shared<OpaqueBackendPointer>(type); +} + +classBackendDescriptor{ +public: +virtualstd::string +describe()const=0; + +cudnnBackendDescriptor_t +get_raw_desc()const{ +returnpointer->get_backend_descriptor(); +} + +cudnnStatus_t +get_status()const{ +returnstatus; +} + +void +set_status(cudnnStatus_tconststatus_)const{ +status=status_; +} + +void +set_error(constchar*message)const{ +err_msg=message; +} + +constchar* +get_error()const{ +returnerr_msg.c_str(); +} + +ManagedOpaqueDescriptor +get_desc()const{ +returnpointer; +} + +cudnnStatus_t +initialize_managed_backend_pointer(cudnnBackendDescriptorType_ttype){ +pointer=make_shared_backend_pointer(type); +returnpointer->get_status(); +} + +protected: +BackendDescriptor(ManagedOpaqueDescriptorpointer_,cudnnStatus_tstatus_,std::stringerr_msg_) +:pointer(pointer_),status(status_),err_msg(err_msg_){} +BackendDescriptor()=default; + +ManagedOpaqueDescriptorpointer; + +mutablecudnnStatus_tstatus=CUDNN_STATUS_SUCCESS; +mutablestd::stringerr_msg; +}; +} + + + + diff --git a/docs/xml/dc/d3c/classcudnn__frontend_1_1Engine__v8.xml b/docs/xml/dc/d3c/classcudnn__frontend_1_1Engine__v8.xml new file mode 100644 index 000000000..f4003ee66 --- /dev/null +++ b/docs/xml/dc/d3c/classcudnn__frontend_1_1Engine__v8.xml @@ -0,0 +1,437 @@ + + + + cudnn_frontend::Engine_v8 + cudnn_frontend::BackendDescriptor + cudnn_frontend_Engine.h + cudnn_frontend::Engine_v8::Knob + + + ManagedOpaqueDescriptor + ManagedOpaqueDescriptor cudnn_frontend::Engine_v8::opGraph + + opGraph + = nullptr + + + + + + + + + + int64_t + int64_t cudnn_frontend::Engine_v8::idx + + idx + = -1 + +Global Index of the engine for the given operationGraph. + + + + + + describe + + + int64_t + int64_t cudnn_frontend::Engine_v8::numKnobs + + numKnobs + = 0 + +Count of the backend knobs in the engine. + + + + + + buildKnobs + Engine_v8 + + + std::array< ManagedOpaqueDescriptor, CUDNN_KNOB_TYPE_COUNTS > + std::array<ManagedOpaqueDescriptor, CUDNN_KNOB_TYPE_COUNTS> cudnn_frontend::Engine_v8::bKnobs + + bKnobs + = {} + +Opaque pointer to the backend knobs. + + + + + + + + std::vector< Knob > + std::vector<Knob> cudnn_frontend::Engine_v8::knobs + + knobs + + + + + + + + getFinalizedKnobs + getSupportedKnobs + + + std::string + std::string cudnn_frontend::Engine_v8::opGraphTag + + opGraphTag + + + + + + + + getTag + + + + + friend class + friend class EngineBuilder_v8 + + EngineBuilder_v8 + + + + + + + + cudnn_frontend::EngineBuilder_v8::build + + + + + + cudnn_frontend::Engine_v8::Engine_v8 + ()=default + Engine_v8 + + + + + + + + + + + cudnn_frontend::Engine_v8::Engine_v8 + (Engine_v8 const &)=delete + Engine_v8 + + Engine_v8 const & + + + + + + + + + + + Engine_v8 & + Engine_v8& cudnn_frontend::Engine_v8::operator= + (Engine_v8 const &)=delete + operator= + + Engine_v8 const & + + + + + + + + + cudnn_frontend::EngineBuilder_v8::build + + + void + void cudnn_frontend::Engine_v8::buildKnobs + () + buildKnobs + +Called from the constructor builds the internal knobs vector. + + + + + + cudnn_frontend::Engine_v8::Knob::Knob + cudnn_frontend::Engine_v8::Knob::maxValue + cudnn_frontend::Engine_v8::Knob::minValue + numKnobs + cudnn_frontend::set_error_and_throw_exception + cudnn_frontend::BackendDescriptor::status + cudnn_frontend::Engine_v8::Knob::stride + Engine_v8 + + + + + std::string + std::string cudnn_frontend::Engine_v8::describe + () const override + describe + describe + +Return a string describing the backend Descriptor. + + + + + + idx + + + + cudnn_frontend::Engine_v8::Engine_v8 + (Engine_v8 &&from) + Engine_v8 + + Engine_v8 && + from + + + + + + +< Opaque pointer to the backend knobs + + buildKnobs + cudnn_frontend::make_shared_backend_pointer + numKnobs + cudnn_frontend::BackendDescriptor::pointer + cudnn_frontend::set_error_and_throw_exception + cudnn_frontend::BackendDescriptor::status + ~Engine_v8 + + + + cudnn_frontend::Engine_v8::~Engine_v8 + ()=default + ~Engine_v8 + + + + + + + + Engine_v8 + + + std::string const & + std::string const& cudnn_frontend::Engine_v8::getTag + () const + getTag + + + + + + + + opGraphTag + + + std::vector< Knob > & + std::vector<Knob>& cudnn_frontend::Engine_v8::getSupportedKnobs + () + getSupportedKnobs + +Returns a vector of knobs to the user for modification. + + + + + + knobs + + + std::vector< Knob > const & + std::vector<Knob> const& cudnn_frontend::Engine_v8::getFinalizedKnobs + () const + getFinalizedKnobs + +Returns a final vector of knobs. Used in EngineConfigBuilder. + + + + + + knobs + + + + + +Engine_v8 Class This class tells the properties of the Engine_v8 on which performs the operation requested Properties: +IndexOperationGraph_v8 +Use EngineBuilder_v8 to build this class. Describe returns a string describing the tensor class + + + + + + + + + + + + + + + + + +elements + + + < cudnn_frontend::Engine_v8::Knob > + + + + + + + + + + + + +elements + + + + + + +elements + + + + + + +elements + + + < ManagedOpaqueDescriptor, CUDNN_KNOB_TYPE_COUNTS > + + + + + + + + + + + + + + + + + + + + + + + + -bKnobs + + + -idx + -numKnobs + + + -opGraphTag + + + -opGraph + + + -knobs + + + + + + + #err_msg + + + #pointer + + + #status + + + + + + + -knobType + + + -minValue + -maxValue + -stride + -choice + + + + + + + + + + + cudnn_frontend::Engine_v8BackendDescriptor + cudnn_frontend::Engine_v8BackendDescriptor + cudnn_frontend::Engine_v8bKnobs + cudnn_frontend::Engine_v8buildKnobs + cudnn_frontend::Engine_v8describe + cudnn_frontend::Engine_v8Engine_v8 + cudnn_frontend::Engine_v8Engine_v8 + cudnn_frontend::Engine_v8Engine_v8 + cudnn_frontend::Engine_v8EngineBuilder_v8 + cudnn_frontend::Engine_v8err_msg + cudnn_frontend::Engine_v8get_desc + cudnn_frontend::Engine_v8get_error + cudnn_frontend::Engine_v8get_raw_desc + cudnn_frontend::Engine_v8get_status + cudnn_frontend::Engine_v8getFinalizedKnobs + cudnn_frontend::Engine_v8getSupportedKnobs + cudnn_frontend::Engine_v8getTag + cudnn_frontend::Engine_v8idx + cudnn_frontend::Engine_v8initialize_managed_backend_pointer + cudnn_frontend::Engine_v8knobs + cudnn_frontend::Engine_v8numKnobs + cudnn_frontend::Engine_v8operator= + cudnn_frontend::Engine_v8opGraph + cudnn_frontend::Engine_v8opGraphTag + cudnn_frontend::Engine_v8pointer + cudnn_frontend::Engine_v8set_error + cudnn_frontend::Engine_v8set_status + cudnn_frontend::Engine_v8status + cudnn_frontend::Engine_v8~Engine_v8 + + + diff --git a/docs/xml/dc/d99/group__EngineHeuristicsBuilder__v8.xml b/docs/xml/dc/d99/group__EngineHeuristicsBuilder__v8.xml new file mode 100644 index 000000000..309d76157 --- /dev/null +++ b/docs/xml/dc/d99/group__EngineHeuristicsBuilder__v8.xml @@ -0,0 +1,47 @@ + + + + EngineHeuristicsBuilder_v8 + EngineHeuristicsBuilder_v8 + + + auto + auto cudnn_frontend::EngineHeuristicsBuilder_v8::setOperationGraph + (OperationGraph_v8 &opGraph_) -> EngineHeuristicsBuilder_v8 & + setOperationGraph + + OperationGraph_v8 & + opGraph_ + + +Set operationGraph for the engine (opGraph is not destroyed) + + + + + + + + auto + auto cudnn_frontend::EngineHeuristicsBuilder_v8::setHeurMode + (cudnnBackendHeurMode_t mode_) -> EngineHeuristicsBuilder_v8 & + setHeurMode + + cudnnBackendHeurMode_t + mode_ + + +Set cudnnHandle for the operations. + + + + + + + + + + +Set individual property of EngineHeuristics_v8 class + + diff --git a/docs/xml/dc/da3/classcudnn__frontend_1_1EngineConfigGenerator.xml b/docs/xml/dc/da3/classcudnn__frontend_1_1EngineConfigGenerator.xml new file mode 100644 index 000000000..1ab7fd038 --- /dev/null +++ b/docs/xml/dc/da3/classcudnn__frontend_1_1EngineConfigGenerator.xml @@ -0,0 +1,167 @@ + + + + cudnn_frontend::EngineConfigGenerator + cudnn_frontend_EngineConfigGenerator.h + + + std::vector< GeneratorSource > + std::vector<GeneratorSource> cudnn_frontend::EngineConfigGenerator::engine_config_generators + + engine_config_generators + + + + + + + + + + + + + cudnn_frontend::EngineConfigGenerator::EngineConfigGenerator + (int const sourceSize, GeneratorSource const *sources) + EngineConfigGenerator + + int const + sourceSize + + + GeneratorSource const * + sources + + + + +Constructor that takes int a array of function pointers that will be called later. in the generate_engine_config function. + + + + + + auto + auto cudnn_frontend::EngineConfigGenerator::generate_engine_config + (cudnn_frontend::OperationGraph &opGraph) -> cudnn_frontend::EngineConfigList + generate_engine_config + + cudnn_frontend::OperationGraph & + opGraph + + + + +Calls the vector of engine_config_generators one by one and concatenates the generated engine together into a single list. + + + + + + auto + auto cudnn_frontend::EngineConfigGenerator::cudnnGetPlan + (cudnnHandle_t handle, cudnn_frontend::OperationGraph &&opGraph, Predicate pred) -> executionPlans_t + cudnnGetPlan + + cudnnHandle_t + handle + + + cudnn_frontend::OperationGraph && + opGraph + + + Predicate + pred + + +Returns the concatenated plan in the order of heuristic results. + + + + + + cudnn_frontend::filter + + + + + CudnnFindSamplingTechnique + samplingTechnique + samplingTechnique + + + auto + auto cudnn_frontend::EngineConfigGenerator::cudnnFindPlan + (cudnnHandle_t handle, cudnn_frontend::OperationGraph &&opGraph, cudnn_frontend::VariantPack &variantPack, Predicate pred) -> executionOptions_t + cudnnFindPlan + + cudnnHandle_t + handle + + + cudnn_frontend::OperationGraph && + opGraph + + + cudnn_frontend::VariantPack & + variantPack + + + Predicate + pred + + + + +Reruns the concatenated plans and measures the execution time following which a sorted order of executionPlans are return to the user. + +Creating a set of execution plans that are supported. + + cudnn_frontend::filter + + + + + +EngineConfigGenerator class Contains a vector of methods that generate a vector of backend descriptor that can be used to create a plan for the method. + + + + + +elements + + + < GeneratorSource > + + + + + + + + + +elements + + + + + + + + + + -engine_config_generators + + + + + + cudnn_frontend::EngineConfigGeneratorcudnnFindPlan + cudnn_frontend::EngineConfigGeneratorcudnnGetPlan + cudnn_frontend::EngineConfigGeneratorengine_config_generators + cudnn_frontend::EngineConfigGeneratorEngineConfigGenerator + cudnn_frontend::EngineConfigGeneratorgenerate_engine_config + + + diff --git a/docs/xml/dd/d72/classcudnn__frontend_1_1EngineConfigBuilder__v8.xml b/docs/xml/dd/d72/classcudnn__frontend_1_1EngineConfigBuilder__v8.xml new file mode 100644 index 000000000..0e22753af --- /dev/null +++ b/docs/xml/dd/d72/classcudnn__frontend_1_1EngineConfigBuilder__v8.xml @@ -0,0 +1,228 @@ + + + + cudnn_frontend::EngineConfigBuilder_v8 + cudnn_frontend_EngineConfig.h + + + EngineConfig_v8 + EngineConfig_v8 cudnn_frontend::EngineConfigBuilder_v8::m_engine_config + + m_engine_config + + + + + + + + + + + + auto + auto cudnn_frontend::EngineConfigBuilder_v8::setEngine + (Engine_v8 const &engine_) -> EngineConfigBuilder_v8 & + setEngine + + Engine_v8 const & + engine_ + + +Set engine for the EngineConfig_v8. + + + + + + cudnn_frontend::set_error_and_throw_exception + cudnn_frontend::BackendDescriptor::status + cudnn_frontend::EngineFallbackListBuilder_v8::build + + + EngineConfig_v8 && + EngineConfig_v8&& cudnn_frontend::EngineConfigBuilder_v8::build + () + build + + + +constructs the Engine_v8 Config by calling the cudnn API Throws the appropriate error message + + + + cudnn_frontend::EngineConfig_v8::EngineConfigBuilder_v8 + cudnn_frontend::EngineConfig_v8::operator= + cudnn_frontend::set_error_and_throw_exception + cudnn_frontend::BackendDescriptor::status + + + + cudnn_frontend::EngineConfigBuilder_v8::EngineConfigBuilder_v8 + ()=default + EngineConfigBuilder_v8 + + + + + + + + + + + cudnn_frontend::EngineConfigBuilder_v8::~EngineConfigBuilder_v8 + ()=default + ~EngineConfigBuilder_v8 + + + + + + + + + + + cudnn_frontend::EngineConfigBuilder_v8::EngineConfigBuilder_v8 + (EngineConfigBuilder_v8 &&)=delete + EngineConfigBuilder_v8 + + EngineConfigBuilder_v8 && + + + + + + + + + + + + cudnn_frontend::EngineConfigBuilder_v8::EngineConfigBuilder_v8 + (EngineConfigBuilder_v8 const &)=delete + EngineConfigBuilder_v8 + + EngineConfigBuilder_v8 const & + + + + + + + + + + + EngineConfigBuilder_v8 & + EngineConfigBuilder_v8& cudnn_frontend::EngineConfigBuilder_v8::operator= + (EngineConfigBuilder_v8 const &)=delete + operator= + + EngineConfigBuilder_v8 const & + + + + + + + + + + + + + +EngineConfigBuilder_v8 Class Helper class used to build EngineConfig_v8 class + + + + + + + + + + + +elements + + + + + + +elements + + + < ManagedOpaqueDescriptor, CUDNN_KNOB_TYPE_COUNTS > + + + + + + + + + -bChoices + + + -numKnobs + + + -opGraphTag + + + -engine + + + + + + + + + + + + + -m_engine_config + + + + + + + + + + + + + #err_msg + + + #pointer + + + #status + + + + + + + + + + + cudnn_frontend::EngineConfigBuilder_v8build + cudnn_frontend::EngineConfigBuilder_v8EngineConfigBuilder_v8 + cudnn_frontend::EngineConfigBuilder_v8EngineConfigBuilder_v8 + cudnn_frontend::EngineConfigBuilder_v8EngineConfigBuilder_v8 + cudnn_frontend::EngineConfigBuilder_v8m_engine_config + cudnn_frontend::EngineConfigBuilder_v8operator= + cudnn_frontend::EngineConfigBuilder_v8setEngine + cudnn_frontend::EngineConfigBuilder_v8~EngineConfigBuilder_v8 + + + diff --git a/docs/xml/de/d00/classcudnn__frontend_1_1MatMulDescBuilder__v8.xml b/docs/xml/de/d00/classcudnn__frontend_1_1MatMulDescBuilder__v8.xml new file mode 100644 index 000000000..b9833185d --- /dev/null +++ b/docs/xml/de/d00/classcudnn__frontend_1_1MatMulDescBuilder__v8.xml @@ -0,0 +1,195 @@ + + + + cudnn_frontend::MatMulDescBuilder_v8 + cudnn_frontend_MatMulDesc.h + + + MatMulDesc_v8 + MatMulDesc_v8 cudnn_frontend::MatMulDescBuilder_v8::m_matMulDesc + + m_matMulDesc + + + + + + + + + + + + auto + auto cudnn_frontend::MatMulDescBuilder_v8::setMathPrecision + (cudnnDataType_t data_type_) -> MatMulDescBuilder_v8 & + setMathPrecision + + cudnnDataType_t + data_type_ + + +Set Math Precision Data Type for the Matmul Operation. + + + + + + + + MatMulDesc_v8 && + MatMulDesc_v8&& cudnn_frontend::MatMulDescBuilder_v8::build + () + build + + + +constructs the MatMulDesc_v8 by calling the cudnn API Throws the appropriate error message + + + + cudnn_frontend::MatMulDesc_v8::MatMulDescBuilder_v8 + cudnn_frontend::MatMulDesc_v8::operator= + cudnn_frontend::set_error_and_throw_exception + cudnn_frontend::BackendDescriptor::status + + + + cudnn_frontend::MatMulDescBuilder_v8::MatMulDescBuilder_v8 + ()=default + MatMulDescBuilder_v8 + + + + + + + + + + + cudnn_frontend::MatMulDescBuilder_v8::~MatMulDescBuilder_v8 + ()=default + ~MatMulDescBuilder_v8 + + + + + + + + + + + cudnn_frontend::MatMulDescBuilder_v8::MatMulDescBuilder_v8 + (MatMulDescBuilder_v8 &&)=delete + MatMulDescBuilder_v8 + + MatMulDescBuilder_v8 && + + + + + + + + + + + + cudnn_frontend::MatMulDescBuilder_v8::MatMulDescBuilder_v8 + (MatMulDescBuilder_v8 const &)=delete + MatMulDescBuilder_v8 + + MatMulDescBuilder_v8 const & + + + + + + + + + + + MatMulDescBuilder_v8 & + MatMulDescBuilder_v8& cudnn_frontend::MatMulDescBuilder_v8::operator= + (MatMulDescBuilder_v8 const &)=delete + operator= + + MatMulDescBuilder_v8 const & + + + + + + + + + + + + + +MatMulDescBuilder_v8 Class Helper class used to build MatMulDesc_v8 class + + + + + + + + + -m_matMulDesc + + + + + + + + + + + + + + + + + + -math_precision + + + + + + + #err_msg + + + #pointer + + + #status + + + + + + + + + + + cudnn_frontend::MatMulDescBuilder_v8build + cudnn_frontend::MatMulDescBuilder_v8m_matMulDesc + cudnn_frontend::MatMulDescBuilder_v8MatMulDescBuilder_v8 + cudnn_frontend::MatMulDescBuilder_v8MatMulDescBuilder_v8 + cudnn_frontend::MatMulDescBuilder_v8MatMulDescBuilder_v8 + cudnn_frontend::MatMulDescBuilder_v8operator= + cudnn_frontend::MatMulDescBuilder_v8setMathPrecision + cudnn_frontend::MatMulDescBuilder_v8~MatMulDescBuilder_v8 + + + diff --git a/docs/xml/de/d0c/cudnn__frontend_8h.xml b/docs/xml/de/d0c/cudnn__frontend_8h.xml new file mode 100644 index 000000000..8c34b3f35 --- /dev/null +++ b/docs/xml/de/d0c/cudnn__frontend_8h.xml @@ -0,0 +1,467 @@ + + + + cudnn_frontend.h + cudnn_frontend_ConvDesc.h + cudnn_frontend_Heuristics.h + cudnn_frontend_Engine.h + cudnn_frontend_EngineConfig.h + cudnn_frontend_EngineFallbackList.h + cudnn_frontend_ExecutionPlan.h + cudnn_frontend_Filters.h + cudnn_frontend_Operation.h + cudnn_frontend_OperationGraph.h + cudnn_frontend_Tensor.h + cudnn_frontend_VariantPack.h + cudnn_frontend_PointWiseDesc.h + cudnn_frontend_MatMulDesc.h + cudnn_frontend_EngineConfigGenerator.h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + cudnn_frontend + + + + + +/* +*Copyright(c)2021,NVIDIACORPORATION.Allrightsreserved. +* +*Permissionisherebygranted,freeofcharge,toanypersonobtaininga +*copyofthissoftwareandassociateddocumentationfiles(the"Software"), +*todealintheSoftwarewithoutrestriction,includingwithoutlimitation +*therightstouse,copy,modify,merge,publish,distribute,sublicense, +*and/orsellcopiesoftheSoftware,andtopermitpersonstowhomthe +*Softwareisfurnishedtodoso,subjecttothefollowingconditions: +* +*Theabovecopyrightnoticeandthispermissionnoticeshallbeincludedin +*allcopiesorsubstantialportionsoftheSoftware. +* +*THESOFTWAREISPROVIDED"ASIS",WITHOUTWARRANTYOFANYKIND,EXPRESSOR +*IMPLIED,INCLUDINGBUTNOTLIMITEDTOTHEWARRANTIESOFMERCHANTABILITY, +*FITNESSFORAPARTICULARPURPOSEANDNONINFRINGEMENT.INNOEVENTSHALL +*THEAUTHORSORCOPYRIGHTHOLDERSBELIABLEFORANYCLAIM,DAMAGESOROTHER +*LIABILITY,WHETHERINANACTIONOFCONTRACT,TORTOROTHERWISE,ARISING +*FROM,OUTOFORINCONNECTIONWITHTHESOFTWAREORTHEUSEOROTHER +*DEALINGSINTHESOFTWARE. +*/ + +#pragmaonce + +#include"cudnn_frontend_ConvDesc.h" +#include"cudnn_frontend_Heuristics.h" +#include"cudnn_frontend_Engine.h" +#include"cudnn_frontend_EngineConfig.h" +#include"cudnn_frontend_EngineFallbackList.h" +#include"cudnn_frontend_ExecutionPlan.h" +#include"cudnn_frontend_Filters.h" +#include"cudnn_frontend_Operation.h" +#include"cudnn_frontend_OperationGraph.h" +#include"cudnn_frontend_Tensor.h" +#include"cudnn_frontend_VariantPack.h" +#include"cudnn_frontend_PointWiseDesc.h" +#include"cudnn_frontend_MatMulDesc.h" + +namespacecudnn_frontend{ +usingTensor=Tensor_v8; +usingTensorBuilder=TensorBuilder_v8; +usingConvDesc=ConvDesc_v8; +usingConvDescBuilder=ConvDescBuilder_v8; +usingPointWiseDescBuilder=PointWiseDescBuilder_v8; +usingPointWiseDesc=PointWiseDesc_v8; +usingMatMulDesc=MatMulDesc_v8; +usingMatMulDescBuilder=MatMulDescBuilder_v8; +usingOperation=Operation_v8; +usingOperationBuilder=OperationBuilder_v8; +usingOperationGraph=OperationGraph_v8; +usingOperationGraphBuilder=OperationGraphBuilder_v8; +usingEngineHeuristicsBuilder=EngineHeuristicsBuilder_v8; +usingEngineHeuristics=EngineHeuristics_v8; +usingEngineBuilder=EngineBuilder_v8; +usingEngine=Engine_v8; +usingEngineConfig=EngineConfig_v8; +usingEngineConfigBuilder=EngineConfigBuilder_v8; +usingExecutionPlan=ExecutionPlan_v8; +usingExecutionPlanBuilder=ExecutionPlanBuilder_v8; +usingVariantPack=VariantPack_v8; +usingVariantPackBuilder=VariantPackBuilder_v8; +usingEngineFallbackList=EngineFallbackList_v8; +usingEngineFallbackListBuilder=EngineFallbackListBuilder_v8; +} + + + + diff --git a/docs/xml/de/d1e/cudnn__frontend__EngineConfigGenerator_8h.xml b/docs/xml/de/d1e/cudnn__frontend__EngineConfigGenerator_8h.xml new file mode 100644 index 000000000..4bebc3a31 --- /dev/null +++ b/docs/xml/de/d1e/cudnn__frontend__EngineConfigGenerator_8h.xml @@ -0,0 +1,481 @@ + + + + cudnn_frontend_EngineConfigGenerator.h + cudnn_frontend.h + cudnn_frontend_find_plan.h + cudnn_frontend_get_plan.h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + cudnn_frontend::executionOption + cudnn_frontend::EngineConfigGenerator + cudnn_frontend + + + + + +/* +*Copyright(c)2021,NVIDIACORPORATION.Allrightsreserved. +* +*Permissionisherebygranted,freeofcharge,toanypersonobtaininga +*copyofthissoftwareandassociateddocumentationfiles(the"Software"), +*todealintheSoftwarewithoutrestriction,includingwithoutlimitation +*therightstouse,copy,modify,merge,publish,distribute,sublicense, +*and/orsellcopiesoftheSoftware,andtopermitpersonstowhomthe +*Softwareisfurnishedtodoso,subjecttothefollowingconditions: +* +*Theabovecopyrightnoticeandthispermissionnoticeshallbeincludedin +*allcopiesorsubstantialportionsoftheSoftware. +* +*THESOFTWAREISPROVIDED"ASIS",WITHOUTWARRANTYOFANYKIND,EXPRESSOR +*IMPLIED,INCLUDINGBUTNOTLIMITEDTOTHEWARRANTIESOFMERCHANTABILITY, +*FITNESSFORAPARTICULARPURPOSEANDNONINFRINGEMENT.INNOEVENTSHALL +*THEAUTHORSORCOPYRIGHTHOLDERSBELIABLEFORANYCLAIM,DAMAGESOROTHER +*LIABILITY,WHETHERINANACTIONOFCONTRACT,TORTOROTHERWISE,ARISING +*FROM,OUTOFORINCONNECTIONWITHTHESOFTWAREORTHEUSEOROTHER +*DEALINGSINTHESOFTWARE. +*/ + +#pragmaonce + +#include<cudnn_frontend.h> + +namespacecudnn_frontend{ +structexecutionOption{ +cudnn_frontend::ExecutionPlanplan; +floattime_ms; +}; + +usingexecutionOptions_t=std::vector<structexecutionOption>; +usingexecutionPlans_t=std::vector<cudnn_frontend::ExecutionPlan>; +usingPredicate=std::function<bool(cudnn_frontend::ExecutionPlanconst&plan)>; +usingGeneratorSource=std::function<cudnn_frontend::EngineConfigList(cudnn_frontend::OperationGraph&)>; + +enumclassCudnnFindSamplingTechnique{ +CUDNN_FIND_SAMPLE_ONCE, +CUDNN_FIND_SAMPLE_MEDIAN_OF_THREE, +CUDNN_FIND_SAMPLE_TILL_STABLE +}; + +classEngineConfigGenerator{ +private: +std::vector<GeneratorSource>engine_config_generators; + +public: +EngineConfigGenerator(intconstsourceSize,GeneratorSourceconst*sources){ +for(inti=0;i<sourceSize;i++){ +engine_config_generators.push_back(sources[i]); +} +}; + +auto +generate_engine_config(cudnn_frontend::OperationGraph&opGraph)->cudnn_frontend::EngineConfigList{ +cudnn_frontend::EngineConfigListengine_configs; +for(autofn:engine_config_generators){ +cudnn_frontend::EngineConfigListnew_engine_config=fn(opGraph); +std::copy(new_engine_config.begin(),new_engine_config.end(),std::back_inserter(engine_configs)); +new_engine_config.clear(); +} +returnengine_configs; +} + +auto +cudnnGetPlan(cudnnHandle_thandle,cudnn_frontend::OperationGraph&&opGraph,Predicatepred)->executionPlans_t; + +template<CudnnFindSamplingTechniquesamplingTechnique> +auto +cudnnFindPlan(cudnnHandle_thandle, +cudnn_frontend::OperationGraph&&opGraph, +cudnn_frontend::VariantPack&variantPack, +Predicatepred)->executionOptions_t; +}; + +auto +filter(Predicatepred,executionPlans_t&plans)->executionPlans_t{ +executionPlans_tfiltered_plans; +for(auto&plan:plans){ +if(!pred(plan)){ +filtered_plans.emplace_back(std::move(plan)); +} +} +returnfiltered_plans; +} +} + + + + diff --git a/docs/xml/de/d6d/cudnn__frontend__Engine_8h.xml b/docs/xml/de/d6d/cudnn__frontend__Engine_8h.xml new file mode 100644 index 000000000..976240727 --- /dev/null +++ b/docs/xml/de/d6d/cudnn__frontend__Engine_8h.xml @@ -0,0 +1,593 @@ + + + + cudnn_frontend_Engine.h + algorithm + array + functional + memory + sstream + utility + vector + cudnn.h + cudnn_backend.h + cudnn_frontend_OperationGraph.h + cudnn_frontend_utils.h + cudnn_frontend.h + cudnn_frontend_EngineConfig.h + cudnn_frontend_ExecutionPlan.h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + cudnn_frontend::Engine_v8 + cudnn_frontend::Engine_v8::Knob + cudnn_frontend::EngineBuilder_v8 + cudnn_frontend + + + + + +/* +*Copyright(c)2021,NVIDIACORPORATION.Allrightsreserved. +* +*Permissionisherebygranted,freeofcharge,toanypersonobtaininga +*copyofthissoftwareandassociateddocumentationfiles(the"Software"), +*todealintheSoftwarewithoutrestriction,includingwithoutlimitation +*therightstouse,copy,modify,merge,publish,distribute,sublicense, +*and/orsellcopiesoftheSoftware,andtopermitpersonstowhomthe +*Softwareisfurnishedtodoso,subjecttothefollowingconditions: +* +*Theabovecopyrightnoticeandthispermissionnoticeshallbeincludedin +*allcopiesorsubstantialportionsoftheSoftware. +* +*THESOFTWAREISPROVIDED"ASIS",WITHOUTWARRANTYOFANYKIND,EXPRESSOR +*IMPLIED,INCLUDINGBUTNOTLIMITEDTOTHEWARRANTIESOFMERCHANTABILITY, +*FITNESSFORAPARTICULARPURPOSEANDNONINFRINGEMENT.INNOEVENTSHALL +*THEAUTHORSORCOPYRIGHTHOLDERSBELIABLEFORANYCLAIM,DAMAGESOROTHER +*LIABILITY,WHETHERINANACTIONOFCONTRACT,TORTOROTHERWISE,ARISING +*FROM,OUTOFORINCONNECTIONWITHTHESOFTWAREORTHEUSEOROTHER +*DEALINGSINTHESOFTWARE. +*/ + +#pragmaonce + +#include<algorithm> +#include<array> +#include<functional> +#include<memory> +#include<sstream> +#include<utility> +#include<vector> + +#include<cudnn.h> +#include<cudnn_backend.h> + +#include"cudnn_frontend_OperationGraph.h" +#include"cudnn_frontend_utils.h" + +namespacecudnn_frontend{ + +classEngine_v8:publicBackendDescriptor{ +private: +Engine_v8()=default; +Engine_v8(Engine_v8const&)=delete; +Engine_v8& +operator=(Engine_v8const&)=delete; + +classKnob{ +public: +Knob(cudnnBackendKnobType_ttype_,int64_tmax,int64_tmin,int64_tstride_) +:knobType(type_),maxValue(max),minValue(min),stride(stride_){} + +std::string +describe()const{ +std::stringstreamss; +ss<<"Knob:"<<knobType; +ss<<"Min:"<<minValue; +ss<<"Max:"<<maxValue; +ss<<"Stride:"<<stride; +returnss.str(); +} + +void +setChoice(uint64_tval_){ +choice=val_; +} + +int64_t +getChoice()const{ +returnchoice; +} + +cudnnBackendKnobType_t +getKnobType()const{ +returnknobType; +} + +int64_t +getMinValue()const{ +returnminValue; +} + +int64_t +getMaxValue()const{ +returnminValue; +} + +int64_t +getStride()const{ +returnstride; +} + +private: +cudnnBackendKnobType_tknobType=CUDNN_KNOB_TYPE_COUNTS; +int64_tmaxValue=0,minValue=0,stride=0; +int64_tchoice=0; +}; + +ManagedOpaqueDescriptoropGraph=nullptr; +int64_tidx=-1; +int64_tnumKnobs=0; +std::array<ManagedOpaqueDescriptor,CUDNN_KNOB_TYPE_COUNTS>bKnobs={}; +std::vector<Knob>knobs; +std::stringopGraphTag; + +void +buildKnobs(){ +cudnnStatus_tstatus; +for(autoi=0;i<numKnobs;i++){ +autobKnob=bKnobs[i]->get_backend_descriptor(); +cudnnBackendKnobType_ttype; +int64_tmaxValue,minValue,stride,elemCount; +status= +cudnnBackendGetAttribute(bKnob,CUDNN_ATTR_KNOB_INFO_TYPE,CUDNN_TYPE_KNOB_TYPE,1,&elemCount,&type); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception(this, +status, +"CUDNN_BACKEND_ENGINE_DESCRIPTOR:CUDNN_BACKEND_KNOB_INFO_DESCRIPTOR" +"GetAttributeCUDNN_ATTR_KNOB_INFO_TYPEfailed"); +} +status=cudnnBackendGetAttribute( +bKnob,CUDNN_ATTR_KNOB_INFO_MAXIMUM_VALUE,CUDNN_TYPE_INT64,1,&elemCount,&maxValue); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception(this, +status, +"CUDNN_BACKEND_ENGINE_DESCRIPTOR:CUDNN_BACKEND_KNOB_INFO_DESCRIPTOR" +"GetAttributeCUDNN_ATTR_KNOB_INFO_MAXIMUM_VALUEFailed"); +} +status=cudnnBackendGetAttribute( +bKnob,CUDNN_ATTR_KNOB_INFO_MINIMUM_VALUE,CUDNN_TYPE_INT64,1,&elemCount,&minValue); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception(this, +status, +"CUDNN_BACKEND_ENGINE_DESCRIPTOR:CUDNN_BACKEND_KNOB_INFO_DESCRIPTOR" +"GetAttributeCUDNN_ATTR_KNOB_INFO_MINIMUM_VALUEFailed"); +} +status= +cudnnBackendGetAttribute(bKnob,CUDNN_ATTR_KNOB_INFO_STRIDE,CUDNN_TYPE_INT64,1,&elemCount,&stride); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception(this, +status, +"CUDNN_BACKEND_ENGINE_DESCRIPTOR:CUDNN_BACKEND_KNOB_INFO_DESCRIPTOR" +"GetAttributeCUDNN_ATTR_KNOB_INFO_STRIDEFailed"); +} +knobs.emplace_back(Knob(type,maxValue,minValue,stride)); +} +} + +public: +friendclassEngineBuilder_v8; +std::string +describe()constoverride{ +std::stringstreamss; +ss<<"CUDNN_BACKEND_ENGINE_DESCRIPTOR:"; +ss<<"ID:"<<idx; +ss<<"Has"<<numKnobs<<"knobs"; +returnss.str(); +} +Engine_v8(Engine_v8&&from) +:BackendDescriptor(from.get_desc(),from.get_status(),from.get_error()), +opGraph(from.opGraph), +idx(from.idx), +opGraphTag(from.opGraphTag){ +cudnnStatus_tstatus; +for(uint64_ti=0;i<bKnobs.size();i++){ +bKnobs[i]=make_shared_backend_pointer(CUDNN_BACKEND_KNOB_INFO_DESCRIPTOR); +if(bKnobs[i]->is_good()==false){ +status=bKnobs[i]->get_status(); +set_error_and_throw_exception( +this, +status, +"CUDNN_BACKEND_ENGINE_DESCRIPTOR:CUDNN_BACKEND_KNOB_INFO_DESCRIPTORcudnnCreateFailed"); +} +} + +std::array<cudnnBackendDescriptor_t,CUDNN_KNOB_TYPE_COUNTS>bKnobs_= +{}; +for(std::uint32_ti=0;i<bKnobs.size();i++){ +bKnobs_[i]=bKnobs[i]->get_backend_descriptor(); +} +status=cudnnBackendGetAttribute(pointer->get_backend_descriptor(), +CUDNN_ATTR_ENGINE_KNOB_INFO, +CUDNN_TYPE_BACKEND_DESCRIPTOR, +CUDNN_KNOB_TYPE_COUNTS, +&numKnobs, +bKnobs_.data()); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +this,status,"CUDNN_BACKEND_ENGINE_DESCRIPTOR:GetAttributeCUDNN_ATTR_ENGINE_KNOB_INFOQueryFailed"); +} +buildKnobs(); +} +~Engine_v8()=default; + +std::stringconst& +getTag()const{ +returnopGraphTag; +} + +std::vector<Knob>& +getSupportedKnobs(){ +returnknobs; +} + +std::vector<Knob>const& +getFinalizedKnobs()const{ +returnknobs; +} +}; + +classEngineBuilder_v8{ +public: +auto +setOperationGraph(OperationGraph_v8const&opGraph_)->EngineBuilder_v8&{ +m_engine.opGraph=opGraph_.get_desc(); +m_engine.opGraphTag=opGraph_.getTag(); +return*this; +} + +auto +setOperationGraph(ManagedOpaqueDescriptordesc_)->EngineBuilder_v8&{ +m_engine.opGraph=desc_; +return*this; +} +auto +setGlobalEngineIdx(int64_tidx_)->EngineBuilder_v8&{ +m_engine.idx=idx_; +return*this; +} +Engine_v8&& +build(){ +if(m_engine.idx<0){ +set_error_and_throw_exception( +&m_engine, +CUDNN_STATUS_BAD_PARAM, +"CUDNN_BACKEND_ENGINE_DESCRIPTOR:CheckandSettheCUDNN_ATTR_ENGINE_GLOBAL_INDEXtovalidvalue"); +returnstd::move(m_engine); +} +if(m_engine.opGraph==nullptr){ +set_error_and_throw_exception( +&m_engine, +CUDNN_STATUS_BAD_PARAM, +"CUDNN_BACKEND_ENGINE_DESCRIPTOR:CheckandSetCUDNN_ATTR_ENGINE_OPERATION_GRAPHtovalidvalue"); +returnstd::move(m_engine); +} + +//Createadescriptor.Memoryallocationhappenshere. +autostatus=m_engine.initialize_managed_backend_pointer(CUDNN_BACKEND_ENGINE_DESCRIPTOR); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_engine,status,"CUDNN_BACKEND_ENGINE_DESCRIPTOR:cudnnCreateDescriptorFailed"); +returnstd::move(m_engine); +} + +status=cudnnBackendSetAttribute(m_engine.pointer->get_backend_descriptor(), +CUDNN_ATTR_ENGINE_OPERATION_GRAPH, +CUDNN_TYPE_BACKEND_DESCRIPTOR, +1, +&(m_engine.opGraph->get_backend_descriptor())); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_engine, +status, +"CUDNN_BACKEND_ENGINE_DESCRIPTOR:SetAttributeCUDNN_ATTR_ENGINE_OPERATION_GRAPHFailed"); +returnstd::move(m_engine); +} + +status=cudnnBackendSetAttribute(m_engine.pointer->get_backend_descriptor(), +CUDNN_ATTR_ENGINE_GLOBAL_INDEX, +CUDNN_TYPE_INT64, +1, +&m_engine.idx); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_engine, +status, +"CUDNN_BACKEND_ENGINE_DESCRIPTOR:SetAttributeCUDNN_ATTR_ENGINE_GLOBAL_INDEXFailed"); +returnstd::move(m_engine); +} + +//Finalizingthedescriptor +status=cudnnBackendFinalize(m_engine.pointer->get_backend_descriptor()); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception(&m_engine,status,"CUDNN_BACKEND_ENGINE_DESCRIPTOR:cudnnFinalizeFailed"); +returnstd::move(m_engine); +} + +returnstd::move(m_engine); +} + +explicitEngineBuilder_v8()=default; +~EngineBuilder_v8()=default; +EngineBuilder_v8(EngineBuilder_v8&&)=delete; +EngineBuilder_v8(EngineBuilder_v8const&)=delete; +EngineBuilder_v8& +operator=(EngineBuilder_v8const&)=delete; + +private: +Engine_v8m_engine; +}; +} + + + + diff --git a/docs/xml/de/dd9/classcudnn__frontend_1_1OperationGraph__v8.xml b/docs/xml/de/dd9/classcudnn__frontend_1_1OperationGraph__v8.xml new file mode 100644 index 000000000..5e6aa2922 --- /dev/null +++ b/docs/xml/de/dd9/classcudnn__frontend_1_1OperationGraph__v8.xml @@ -0,0 +1,336 @@ + + + + cudnn_frontend::OperationGraph_v8 + cudnn_frontend::BackendDescriptor + cudnn_frontend_OperationGraph.h + + + friend class + friend class OperationGraphBuilder_v8 + + OperationGraphBuilder_v8 + + + + + + + + cudnn_frontend::OperationGraphBuilder_v8::build + + + + + cudnnHandle_t + cudnnHandle_t cudnn_frontend::OperationGraph_v8::handle + + handle + = nullptr + + + + + + + + + + std::array< ManagedOpaqueDescriptor, 10 > + std::array<ManagedOpaqueDescriptor, 10> cudnn_frontend::OperationGraph_v8::ops + + ops + {} + + + + + + + + + + int64_t + int64_t cudnn_frontend::OperationGraph_v8::numOps + + numOps + = -1 + + + + + + + + + + std::string + std::string cudnn_frontend::OperationGraph_v8::opGraphTag + + opGraphTag + = "" + + + + + + + + getTag + + + + + std::string + std::string cudnn_frontend::OperationGraph_v8::describe + () const override + describe + describe + +Return a string describing the backend Descriptor. + + + + + + + + + cudnn_frontend::OperationGraph_v8::OperationGraph_v8 + (OperationGraph_v8 &&from) + OperationGraph_v8 + + OperationGraph_v8 && + from + + + + + + + + + ~OperationGraph_v8 + + + + cudnn_frontend::OperationGraph_v8::~OperationGraph_v8 + ()=default + ~OperationGraph_v8 + + + + + + + + OperationGraph_v8 + + + auto + auto cudnn_frontend::OperationGraph_v8::getEngineCount + (void) const -> int64_t + getEngineCount + + void + + +Query the total count of the engines for the Operation Set. + + + + + + cudnn_frontend::BackendDescriptor::pointer + cudnn_frontend::set_error_and_throw_exception + cudnn_frontend::BackendDescriptor::status + + + std::string const & + std::string const& cudnn_frontend::OperationGraph_v8::getTag + () const + getTag + + + + + + + + OperationGraph_v8 + operator= + opGraphTag + + + + + + cudnn_frontend::OperationGraph_v8::OperationGraph_v8 + ()=default + OperationGraph_v8 + + + + + + + + getTag + + + + cudnn_frontend::OperationGraph_v8::OperationGraph_v8 + (OperationGraph_v8 const &)=delete + OperationGraph_v8 + + OperationGraph_v8 const & + + + + + + + + + + + OperationGraph_v8 & + OperationGraph_v8& cudnn_frontend::OperationGraph_v8::operator= + (OperationGraph_v8 const &)=delete + operator= + + OperationGraph_v8 const & + + + + + + + + + cudnn_frontend::OperationGraphBuilder_v8::build + getTag + + + + + +OperationGraph_v8 Class This class tells the properties of the Tensor_v8 on which the operation will be performed Properties: +handleoperation +Use OperationGraphBuilder_v8 to build this class. Describe returns a string describing the tensor class + + + + + + + + + + + + + + + + + + + + + + + + + + +elements + + + + + + +elements + + + < ManagedOpaqueDescriptor, 10 > + + + + + + + + + + + + + + + -numOps + + + -ops + + + -opGraphTag + + + -handle + + + + + + + + + + + + + #err_msg + + + #pointer + + + #status + + + + + + + + + + + cudnn_frontend::OperationGraph_v8BackendDescriptor + cudnn_frontend::OperationGraph_v8BackendDescriptor + cudnn_frontend::OperationGraph_v8describe + cudnn_frontend::OperationGraph_v8err_msg + cudnn_frontend::OperationGraph_v8get_desc + cudnn_frontend::OperationGraph_v8get_error + cudnn_frontend::OperationGraph_v8get_raw_desc + cudnn_frontend::OperationGraph_v8get_status + cudnn_frontend::OperationGraph_v8getEngineCount + cudnn_frontend::OperationGraph_v8getTag + cudnn_frontend::OperationGraph_v8handle + cudnn_frontend::OperationGraph_v8initialize_managed_backend_pointer + cudnn_frontend::OperationGraph_v8numOps + cudnn_frontend::OperationGraph_v8OperationGraph_v8 + cudnn_frontend::OperationGraph_v8OperationGraph_v8 + cudnn_frontend::OperationGraph_v8OperationGraph_v8 + cudnn_frontend::OperationGraph_v8OperationGraphBuilder_v8 + cudnn_frontend::OperationGraph_v8operator= + cudnn_frontend::OperationGraph_v8opGraphTag + cudnn_frontend::OperationGraph_v8ops + cudnn_frontend::OperationGraph_v8pointer + cudnn_frontend::OperationGraph_v8set_error + cudnn_frontend::OperationGraph_v8set_status + cudnn_frontend::OperationGraph_v8status + cudnn_frontend::OperationGraph_v8~OperationGraph_v8 + + + diff --git a/docs/xml/df/d17/cudnn__frontend__utils_8h.xml b/docs/xml/df/d17/cudnn__frontend__utils_8h.xml new file mode 100644 index 000000000..4f5b7c58e --- /dev/null +++ b/docs/xml/df/d17/cudnn__frontend__utils_8h.xml @@ -0,0 +1,260 @@ + + + + cudnn_frontend_utils.h + exception + string + cudnn_backend_base.h + cudnn_frontend_ConvDesc.h + cudnn_frontend_PointWiseDesc.h + cudnn_frontend_MatMulDesc.h + cudnn_frontend_Tensor.h + cudnn_frontend_Operation.h + cudnn_frontend_OperationGraph.h + cudnn_frontend_Heuristics.h + cudnn_frontend_Engine.h + cudnn_frontend_EngineConfig.h + cudnn_frontend_ExecutionPlan.h + cudnn_frontend_VariantPack.h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + cudnn_frontend::cudnnException + cudnn_frontend + + + + + +/* +*Copyright(c)2021,NVIDIACORPORATION.Allrightsreserved. +* +*Permissionisherebygranted,freeofcharge,toanypersonobtaininga +*copyofthissoftwareandassociateddocumentationfiles(the"Software"), +*todealintheSoftwarewithoutrestriction,includingwithoutlimitation +*therightstouse,copy,modify,merge,publish,distribute,sublicense, +*and/orsellcopiesoftheSoftware,andtopermitpersonstowhomthe +*Softwareisfurnishedtodoso,subjecttothefollowingconditions: +* +*Theabovecopyrightnoticeandthispermissionnoticeshallbeincludedin +*allcopiesorsubstantialportionsoftheSoftware. +* +*THESOFTWAREISPROVIDED"ASIS",WITHOUTWARRANTYOFANYKIND,EXPRESSOR +*IMPLIED,INCLUDINGBUTNOTLIMITEDTOTHEWARRANTIESOFMERCHANTABILITY, +*FITNESSFORAPARTICULARPURPOSEANDNONINFRINGEMENT.INNOEVENTSHALL +*THEAUTHORSORCOPYRIGHTHOLDERSBELIABLEFORANYCLAIM,DAMAGESOROTHER +*LIABILITY,WHETHERINANACTIONOFCONTRACT,TORTOROTHERWISE,ARISING +*FROM,OUTOFORINCONNECTIONWITHTHESOFTWAREORTHEUSEOROTHER +*DEALINGSINTHESOFTWARE. +*/ + +#pragmaonce +#include<exception> +#include<string> + +#include"cudnn_backend_base.h" + +namespacecudnn_frontend{ + +#ifndefNV_CUDNN_DISABLE_EXCEPTION +classcudnnException:publicstd::runtime_error{ +public: +cudnnException(constchar*message)throw():std::runtime_error(message){} +virtualconstchar* +what()constthrow(){ +returnstd::runtime_error::what(); +} +}; +#endif + +staticinlinevoid +throw_if(std::function<bool()>expr,constchar*message){ +if(expr()){ +#ifndefNV_CUDNN_DISABLE_EXCEPTION +throwcudnnException(message); +#endif +} +} +staticinlinevoid +throw_if(boolexpr,constchar*message){ +if(expr){ +#ifndefNV_CUDNN_DISABLE_EXCEPTION +throwcudnnException(message); +#endif +} +} + +staticinlinevoid +set_error_and_throw_exception(BackendDescriptorconst*desc,cudnnStatus_tstatus,constchar*message){ +if(desc!=nullptr){ +desc->set_status(status); +desc->set_error(message); +} +#ifndefNV_CUDNN_DISABLE_EXCEPTION +throwcudnnException( +std::string(std::string(message)+std::string("cudnn_status:")+std::to_string(status)).c_str()); +#endif +} +} + + + + diff --git a/docs/xml/df/d3e/cudnn__frontend__EngineFallbackList_8h.xml b/docs/xml/df/d3e/cudnn__frontend__EngineFallbackList_8h.xml new file mode 100644 index 000000000..f2823246c --- /dev/null +++ b/docs/xml/df/d3e/cudnn__frontend__EngineFallbackList_8h.xml @@ -0,0 +1,222 @@ + + + + cudnn_frontend_EngineFallbackList.h + cudnn.h + numeric + cudnn_frontend.h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + cudnn_frontend::EngineFallbackList_v8 + cudnn_frontend::EngineFallbackListBuilder_v8 + cudnn_frontend + + + + + +/* +*Copyright(c)2021,NVIDIACORPORATION.Allrightsreserved. +* +*Permissionisherebygranted,freeofcharge,toanypersonobtaininga +*copyofthissoftwareandassociateddocumentationfiles(the"Software"), +*todealintheSoftwarewithoutrestriction,includingwithoutlimitation +*therightstouse,copy,modify,merge,publish,distribute,sublicense, +*and/orsellcopiesoftheSoftware,andtopermitpersonstowhomthe +*Softwareisfurnishedtodoso,subjecttothefollowingconditions: +* +*Theabovecopyrightnoticeandthispermissionnoticeshallbeincludedin +*allcopiesorsubstantialportionsoftheSoftware. +* +*THESOFTWAREISPROVIDED"ASIS",WITHOUTWARRANTYOFANYKIND,EXPRESSOR +*IMPLIED,INCLUDINGBUTNOTLIMITEDTOTHEWARRANTIESOFMERCHANTABILITY, +*FITNESSFORAPARTICULARPURPOSEANDNONINFRINGEMENT.INNOEVENTSHALL +*THEAUTHORSORCOPYRIGHTHOLDERSBELIABLEFORANYCLAIM,DAMAGESOROTHER +*LIABILITY,WHETHERINANACTIONOFCONTRACT,TORTOROTHERWISE,ARISING +*FROM,OUTOFORINCONNECTIONWITHTHESOFTWAREORTHEUSEOROTHER +*DEALINGSINTHESOFTWARE. +*/ + +#pragmaonce + +#include<cudnn.h> +#include<numeric> + +namespacecudnn_frontend{ + +autostaticget_fallback_engine_list(cudnnBackendDescriptorType_tmode)->std::vector<int>{ +automajor_version=cudnnGetVersion()/1000; +; +autominor_version=(cudnnGetVersion()/100)%10; +if(major_version>=8){ +if(minor_version==0){ +if(mode==CUDNN_BACKEND_OPERATION_CONVOLUTION_FORWARD_DESCRIPTOR){ +return{0,1,28}; +}elseif(mode==CUDNN_BACKEND_OPERATION_CONVOLUTION_BACKWARD_DATA_DESCRIPTOR){ +return{0,1,25}; +}elseif(mode==CUDNN_BACKEND_OPERATION_CONVOLUTION_BACKWARD_FILTER_DESCRIPTOR){ +return{0,1,20}; +}else{ +return{}; +} +}elseif(minor_version<=2){ +if(mode==CUDNN_BACKEND_OPERATION_CONVOLUTION_FORWARD_DESCRIPTOR){ +std::vector<int>engine_list(50); +std::iota(engine_list.begin(),engine_list.end(),0); +returnengine_list; +}elseif(mode==CUDNN_BACKEND_OPERATION_CONVOLUTION_BACKWARD_DATA_DESCRIPTOR){ +std::vector<int>engine_list(61); +std::iota(engine_list.begin(),engine_list.end(),0); +returnengine_list; +}elseif(mode==CUDNN_BACKEND_OPERATION_CONVOLUTION_BACKWARD_FILTER_DESCRIPTOR){ +return{0,1,20}; +}else{ +return{}; +} +}else{ +return{}; +} +}else{ +return{}; +} +} + +classEngineFallbackList_v8:publicBackendDescriptor{ +public: +friendclassEngineFallbackListBuilder_v8; + +std::string +describe()constoverride{ +std::stringstreamss; +ss<<"CUDNN_BACKEND_FALLBACKENGINES:"; +returnss.str(); +} + +auto +getFallbackList()->std::vector<ManagedOpaqueDescriptor>&{ +returnm_engine_configs; +} + +~EngineFallbackList_v8()=default; + +EngineFallbackList_v8(EngineFallbackList_v8&&from) +:BackendDescriptor(from.get_desc(),from.get_status(),from.get_error()), +opGraph(from.opGraph), +mode(from.mode), +opGraphTag(from.opGraphTag){ +m_engine_configs.swap(from.m_engine_configs); +} + +private: +EngineFallbackList_v8()=default; +EngineFallbackList_v8(EngineFallbackList_v8const&)=delete; +EngineFallbackList_v8& +operator=(EngineFallbackList_v8const&)=delete; + +ManagedOpaqueDescriptoropGraph=nullptr; +cudnnBackendDescriptorType_tmode; +std::vector<ManagedOpaqueDescriptor>m_engine_configs; +std::stringopGraphTag; +}; + +classEngineFallbackListBuilder_v8{ +public: +auto +setOperationGraph(OperationGraph_v8&opGraph_)->EngineFallbackListBuilder_v8&{ +m_fallback_list.opGraph=opGraph_.get_desc(); +m_fallback_list.opGraphTag=opGraph_.getTag(); +return*this; +} +auto +setOperation(cudnnBackendDescriptorType_tmode)->EngineFallbackListBuilder_v8&{ +m_fallback_list.mode=mode; +return*this; +} +EngineFallbackList_v8&& +build(){ +if(m_fallback_list.opGraph==nullptr){ +set_error_and_throw_exception(&m_fallback_list, +CUDNN_STATUS_BAD_PARAM, +"CUDNN_BACKEND_ENGINEHEUR_DESCRIPTOR:CheckandSetthe" +"CUDNN_ATTR_ENGINEHEUR_OPERATION_GRAPHfieldforheuristic"); +returnstd::move(m_fallback_list); +}; +autofallback_engine_list=get_fallback_engine_list(m_fallback_list.mode); +for(std::uint32_ti=0;i<fallback_engine_list.size();i++){ +#ifndefNV_CUDNN_DISABLE_EXCEPTION +try{ +#endif +autoengine=cudnn_frontend::EngineBuilder_v8() +.setGlobalEngineIdx(fallback_engine_list[i]) +.setOperationGraph(m_fallback_list.opGraph) +.build(); +autoengine_config=cudnn_frontend::EngineConfigBuilder_v8().setEngine(engine).build(); +m_fallback_list.m_engine_configs.emplace_back(engine_config.get_desc()); +#ifndefNV_CUDNN_DISABLE_EXCEPTION +}catch(cudnn_frontend::cudnnException){ +continue; +} +#endif +} +returnstd::move(m_fallback_list); +} + +explicitEngineFallbackListBuilder_v8()=default; +~EngineFallbackListBuilder_v8()=default; +EngineFallbackListBuilder_v8(EngineFallbackListBuilder_v8&&)=delete; +EngineFallbackListBuilder_v8(EngineFallbackListBuilder_v8const&)=delete; +EngineFallbackListBuilder_v8& +operator=(EngineFallbackListBuilder_v8const&)=delete; + +private: +EngineFallbackList_v8m_fallback_list; +}; +} + + + + diff --git a/docs/xml/df/d83/classcudnn__frontend_1_1EngineConfig__v8.xml b/docs/xml/df/d83/classcudnn__frontend_1_1EngineConfig__v8.xml new file mode 100644 index 000000000..095bd243a --- /dev/null +++ b/docs/xml/df/d83/classcudnn__frontend_1_1EngineConfig__v8.xml @@ -0,0 +1,318 @@ + + + + cudnn_frontend::EngineConfig_v8 + cudnn_frontend::BackendDescriptor + cudnn_frontend_EngineConfig.h + + + friend class + friend class EngineConfigBuilder_v8 + + EngineConfigBuilder_v8 + + + + + + + + cudnn_frontend::EngineConfigBuilder_v8::build + + + + + ManagedOpaqueDescriptor + ManagedOpaqueDescriptor cudnn_frontend::EngineConfig_v8::engine + + engine + = nullptr + + + + + + + + + + int64_t + int64_t cudnn_frontend::EngineConfig_v8::numKnobs + + numKnobs + = 0 + + + + + + + + describe + + + std::string + std::string cudnn_frontend::EngineConfig_v8::opGraphTag + + opGraphTag + + + + + + + + getTag + + + std::array< ManagedOpaqueDescriptor, CUDNN_KNOB_TYPE_COUNTS > + std::array<ManagedOpaqueDescriptor, CUDNN_KNOB_TYPE_COUNTS> cudnn_frontend::EngineConfig_v8::bChoices + + bChoices + = {} + +Opaque pointer to the backend knobs. + + + + + + EngineConfig_v8 + + + + + std::string + std::string cudnn_frontend::EngineConfig_v8::describe + () const override + describe + describe + +Return a string describing the backend Descriptor. + + + + + + numKnobs + + + + cudnn_frontend::EngineConfig_v8::EngineConfig_v8 + (EngineConfig_v8 &&from) + EngineConfig_v8 + + EngineConfig_v8 && + from + + + + + + + + + bChoices + ~EngineConfig_v8 + + + + cudnn_frontend::EngineConfig_v8::~EngineConfig_v8 + ()=default + ~EngineConfig_v8 + + + + + + + + EngineConfig_v8 + + + std::string const & + std::string const& cudnn_frontend::EngineConfig_v8::getTag + () const + getTag + + + + + + + + opGraphTag + + + + + + cudnn_frontend::EngineConfig_v8::EngineConfig_v8 + () + EngineConfig_v8 + + + + + + + + bChoices + cudnn_frontend::make_shared_backend_pointer + operator= + cudnn_frontend::set_error_and_throw_exception + cudnn_frontend::BackendDescriptor::status + + + + cudnn_frontend::EngineConfig_v8::EngineConfig_v8 + (EngineConfig_v8 const &)=delete + EngineConfig_v8 + + EngineConfig_v8 const & + + + + + + + + + + + EngineConfig_v8 & + EngineConfig_v8& cudnn_frontend::EngineConfig_v8::operator= + (EngineConfig_v8 const &)=delete + operator= + + EngineConfig_v8 const & + + + + + + + + + cudnn_frontend::EngineConfigBuilder_v8::build + EngineConfig_v8 + + + + + +EngineConfig_v8 Class This class tells the Configuration of the Engine_v8 in terms of the knob choices Properties: +num knobsChoiceEngine_v8 +Use EngineConfigBuilder_v8 to build this class. Describe returns a string describing the tensor class + + + + + + + + + + + + + + + + + + + + + + + +elements + + + + + + +elements + + + < ManagedOpaqueDescriptor, CUDNN_KNOB_TYPE_COUNTS > + + + + + + + + + -bChoices + + + -numKnobs + + + -opGraphTag + + + -engine + + + + + + + + + + + + + + + + + + + #err_msg + + + #pointer + + + #status + + + + + + + + + + + cudnn_frontend::EngineConfig_v8BackendDescriptor + cudnn_frontend::EngineConfig_v8BackendDescriptor + cudnn_frontend::EngineConfig_v8bChoices + cudnn_frontend::EngineConfig_v8describe + cudnn_frontend::EngineConfig_v8engine + cudnn_frontend::EngineConfig_v8EngineConfig_v8 + cudnn_frontend::EngineConfig_v8EngineConfig_v8 + cudnn_frontend::EngineConfig_v8EngineConfig_v8 + cudnn_frontend::EngineConfig_v8EngineConfigBuilder_v8 + cudnn_frontend::EngineConfig_v8err_msg + cudnn_frontend::EngineConfig_v8get_desc + cudnn_frontend::EngineConfig_v8get_error + cudnn_frontend::EngineConfig_v8get_raw_desc + cudnn_frontend::EngineConfig_v8get_status + cudnn_frontend::EngineConfig_v8getTag + cudnn_frontend::EngineConfig_v8initialize_managed_backend_pointer + cudnn_frontend::EngineConfig_v8numKnobs + cudnn_frontend::EngineConfig_v8operator= + cudnn_frontend::EngineConfig_v8opGraphTag + cudnn_frontend::EngineConfig_v8pointer + cudnn_frontend::EngineConfig_v8set_error + cudnn_frontend::EngineConfig_v8set_status + cudnn_frontend::EngineConfig_v8status + cudnn_frontend::EngineConfig_v8~EngineConfig_v8 + + + diff --git a/docs/xml/df/dc0/cudnn__frontend__VariantPack_8h.xml b/docs/xml/df/dc0/cudnn__frontend__VariantPack_8h.xml new file mode 100644 index 000000000..01ab35175 --- /dev/null +++ b/docs/xml/df/dc0/cudnn__frontend__VariantPack_8h.xml @@ -0,0 +1,301 @@ + + + + cudnn_frontend_VariantPack.h + algorithm + array + functional + memory + set + sstream + utility + cudnn.h + cudnn_backend.h + cudnn_frontend_utils.h + cudnn_frontend.h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + cudnn_frontend::VariantPack_v8 + cudnn_frontend::VariantPackBuilder_v8 + cudnn_frontend + + + + + +/* +*Copyright(c)2021,NVIDIACORPORATION.Allrightsreserved. +* +*Permissionisherebygranted,freeofcharge,toanypersonobtaininga +*copyofthissoftwareandassociateddocumentationfiles(the"Software"), +*todealintheSoftwarewithoutrestriction,includingwithoutlimitation +*therightstouse,copy,modify,merge,publish,distribute,sublicense, +*and/orsellcopiesoftheSoftware,andtopermitpersonstowhomthe +*Softwareisfurnishedtodoso,subjecttothefollowingconditions: +* +*Theabovecopyrightnoticeandthispermissionnoticeshallbeincludedin +*allcopiesorsubstantialportionsoftheSoftware. +* +*THESOFTWAREISPROVIDED"ASIS",WITHOUTWARRANTYOFANYKIND,EXPRESSOR +*IMPLIED,INCLUDINGBUTNOTLIMITEDTOTHEWARRANTIESOFMERCHANTABILITY, +*FITNESSFORAPARTICULARPURPOSEANDNONINFRINGEMENT.INNOEVENTSHALL +*THEAUTHORSORCOPYRIGHTHOLDERSBELIABLEFORANYCLAIM,DAMAGESOROTHER +*LIABILITY,WHETHERINANACTIONOFCONTRACT,TORTOROTHERWISE,ARISING +*FROM,OUTOFORINCONNECTIONWITHTHESOFTWAREORTHEUSEOROTHER +*DEALINGSINTHESOFTWARE. +*/ + +#pragmaonce + +#include<algorithm> +#include<array> +#include<functional> +#include<memory> +#include<set> +#include<sstream> +#include<utility> + +#include<cudnn.h> +#include<cudnn_backend.h> + +#include"cudnn_frontend_utils.h" + +namespacecudnn_frontend{ + +classVariantPack_v8:publicBackendDescriptor{ +public: +friendclassVariantPackBuilder_v8; +std::string +describe()constoverride{ +std::stringstreamss; +ss<<"CUDNN_BACKEND_VARIANT_PACK_DESCRIPTOR:" +<<"has"<<num_ptrs<<"datapointers"; +returnss.str(); +} +VariantPack_v8(VariantPack_v8&&from) +:BackendDescriptor(from.get_desc(),from.get_status(),from.get_error()), +workspace(from.workspace), +num_ptrs(from.num_ptrs){ +std::copy(std::begin(from.data_pointers),std::end(from.data_pointers),data_pointers); +std::copy(std::begin(from.uid),std::end(from.uid),uid); +} +~VariantPack_v8()=default; + +private: +VariantPack_v8()=default; +VariantPack_v8(VariantPack_v8const&)=delete; +VariantPack_v8& +operator=(VariantPack_v8const&)=delete; + +void*workspace=nullptr; +void*data_pointers[10]={nullptr}; +int64_tuid[10]={-1}; +int64_tnum_ptrs=-1; +}; + +classVariantPackBuilder_v8{ +public: +auto +setDataPointers(int64_tnum_ptr,void**ptrs)->VariantPackBuilder_v8&{ +std::copy(ptrs,ptrs+num_ptr,m_variant_pack.data_pointers); +m_variant_pack.num_ptrs=num_ptr; +return*this; +} +auto +setUids(int64_tnum_uids,int64_t*uid)->VariantPackBuilder_v8&{ +std::copy(uid,uid+num_uids,m_variant_pack.uid); +return*this; +} +auto +setDataPointers(std::set<std::pair<uint64_t,void*>>const&data_pointers)->VariantPackBuilder_v8&{ +autoi=0; +for(auto&data_pointer:data_pointers){ +m_variant_pack.uid[i]=data_pointer.first; +m_variant_pack.data_pointers[i]=data_pointer.second; +i++; +} +m_variant_pack.num_ptrs=data_pointers.size(); +return*this; +} +auto +setWorkspacePointer(void*ws)->VariantPackBuilder_v8&{ +m_variant_pack.workspace=ws; +return*this; +} +VariantPack_v8&& +build(){ +//Createadescriptor.Memoryallocationhappenshere. +autostatus=m_variant_pack.initialize_managed_backend_pointer(CUDNN_BACKEND_VARIANT_PACK_DESCRIPTOR); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_variant_pack,status,"CUDNN_BACKEND_VARIANT_PACK_DESCRIPTOR:cudnnCreateFailed"); +returnstd::move(m_variant_pack); +} + +status=cudnnBackendSetAttribute(m_variant_pack.pointer->get_backend_descriptor(), +CUDNN_ATTR_VARIANT_PACK_DATA_POINTERS, +CUDNN_TYPE_VOID_PTR, +m_variant_pack.num_ptrs, +m_variant_pack.data_pointers); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_variant_pack, +status, +"CUDNN_BACKEND_VARIANT_PACK_DESCRIPTOR:SetAttributeCUDNN_ATTR_VARIANT_PACK_DATA_POINTERSFailed"); +returnstd::move(m_variant_pack); +} + +status=cudnnBackendSetAttribute(m_variant_pack.pointer->get_backend_descriptor(), +CUDNN_ATTR_VARIANT_PACK_UNIQUE_IDS, +CUDNN_TYPE_INT64, +m_variant_pack.num_ptrs, +m_variant_pack.uid); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_variant_pack, +status, +"CUDNN_BACKEND_VARIANT_PACK_DESCRIPTOR:SetAttributeCUDNN_ATTR_VARIANT_PACK_UNIQUE_IDSFailed"); +returnstd::move(m_variant_pack); +} + +status=cudnnBackendSetAttribute(m_variant_pack.pointer->get_backend_descriptor(), +CUDNN_ATTR_VARIANT_PACK_WORKSPACE, +CUDNN_TYPE_VOID_PTR, +1, +&m_variant_pack.workspace); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_variant_pack, +status, +"CUDNN_BACKEND_VARIANT_PACK_DESCRIPTOR:SetAttributeCUDNN_ATTR_VARIANT_PACK_WORKSPACEFailed"); +returnstd::move(m_variant_pack); +} + +//Finalizingthedescriptor +status=cudnnBackendFinalize(m_variant_pack.pointer->get_backend_descriptor()); +if(status!=CUDNN_STATUS_SUCCESS){ +set_error_and_throw_exception( +&m_variant_pack,status,"CUDNN_BACKEND_VARIANT_PACK_DESCRIPTOR:cudnnFinalizeFailed"); +returnstd::move(m_variant_pack); +} +returnstd::move(m_variant_pack); +} + +explicitVariantPackBuilder_v8()=default; +~VariantPackBuilder_v8()=default; +VariantPackBuilder_v8(VariantPackBuilder_v8&&)=delete; +VariantPackBuilder_v8(VariantPackBuilder_v8const&)=delete; +VariantPackBuilder_v8& +operator=(VariantPackBuilder_v8const&)=delete; + +private: +VariantPack_v8m_variant_pack; +}; +} + + + + diff --git a/docs/xml/df/de1/namespacecudnn__frontend.xml b/docs/xml/df/de1/namespacecudnn__frontend.xml new file mode 100644 index 000000000..10a50f0f9 --- /dev/null +++ b/docs/xml/df/de1/namespacecudnn__frontend.xml @@ -0,0 +1,718 @@ + + + + cudnn_frontend + cudnn_frontend::BackendDescriptor + cudnn_frontend::ConvDesc_v8 + cudnn_frontend::ConvDescBuilder_v8 + cudnn_frontend::cudnnException + cudnn_frontend::Engine_v8 + cudnn_frontend::EngineBuilder_v8 + cudnn_frontend::EngineConfig_v8 + cudnn_frontend::EngineConfigBuilder_v8 + cudnn_frontend::EngineConfigGenerator + cudnn_frontend::EngineFallbackList_v8 + cudnn_frontend::EngineFallbackListBuilder_v8 + cudnn_frontend::EngineHeuristics_v8 + cudnn_frontend::EngineHeuristicsBuilder_v8 + cudnn_frontend::executionOption + cudnn_frontend::ExecutionPlan_v8 + cudnn_frontend::ExecutionPlanBuilder_v8 + cudnn_frontend::MatMulDesc_v8 + cudnn_frontend::MatMulDescBuilder_v8 + cudnn_frontend::OpaqueBackendPointer + cudnn_frontend::Operation_v8 + cudnn_frontend::OperationBuilder_v8 + cudnn_frontend::OperationGraph_v8 + cudnn_frontend::OperationGraphBuilder_v8 + cudnn_frontend::PointWiseDesc_v8 + cudnn_frontend::PointWiseDescBuilder_v8 + cudnn_frontend::Tensor_v8 + cudnn_frontend::TensorBuilder_v8 + cudnn_frontend::VariantPack_v8 + cudnn_frontend::VariantPackBuilder_v8 + + + CudnnFindSamplingTechnique + + CUDNN_FIND_SAMPLE_ONCE + +Sample once quick but may have unstable values. + + + + + CUDNN_FIND_SAMPLE_MEDIAN_OF_THREE + +Sample 3 times and take median. + + + + + CUDNN_FIND_SAMPLE_TILL_STABLE + +Sample multiple times till stable. + + + + + + + + + + + + + + + std::shared_ptr< OpaqueBackendPointer > + using cudnn_frontend::ManagedOpaqueDescriptor = typedef std::shared_ptr<OpaqueBackendPointer> + + ManagedOpaqueDescriptor + + + + + + + + + + Tensor_v8 + using cudnn_frontend::Tensor = typedef Tensor_v8 + + Tensor + + + + + + + + + + TensorBuilder_v8 + using cudnn_frontend::TensorBuilder = typedef TensorBuilder_v8 + + TensorBuilder + + + + + + + + + + ConvDesc_v8 + using cudnn_frontend::ConvDesc = typedef ConvDesc_v8 + + ConvDesc + + + + + + + + + + ConvDescBuilder_v8 + using cudnn_frontend::ConvDescBuilder = typedef ConvDescBuilder_v8 + + ConvDescBuilder + + + + + + + + + + PointWiseDescBuilder_v8 + using cudnn_frontend::PointWiseDescBuilder = typedef PointWiseDescBuilder_v8 + + PointWiseDescBuilder + + + + + + + + + + PointWiseDesc_v8 + using cudnn_frontend::PointWiseDesc = typedef PointWiseDesc_v8 + + PointWiseDesc + + + + + + + + + + MatMulDesc_v8 + using cudnn_frontend::MatMulDesc = typedef MatMulDesc_v8 + + MatMulDesc + + + + + + + + + + MatMulDescBuilder_v8 + using cudnn_frontend::MatMulDescBuilder = typedef MatMulDescBuilder_v8 + + MatMulDescBuilder + + + + + + + + + + Operation_v8 + using cudnn_frontend::Operation = typedef Operation_v8 + + Operation + + + + + + + + + + OperationBuilder_v8 + using cudnn_frontend::OperationBuilder = typedef OperationBuilder_v8 + + OperationBuilder + + + + + + + + + + OperationGraph_v8 + using cudnn_frontend::OperationGraph = typedef OperationGraph_v8 + + OperationGraph + + + + + + + + + + OperationGraphBuilder_v8 + using cudnn_frontend::OperationGraphBuilder = typedef OperationGraphBuilder_v8 + + OperationGraphBuilder + + + + + + + + + + EngineHeuristicsBuilder_v8 + using cudnn_frontend::EngineHeuristicsBuilder = typedef EngineHeuristicsBuilder_v8 + + EngineHeuristicsBuilder + + + + + + + + + + EngineHeuristics_v8 + using cudnn_frontend::EngineHeuristics = typedef EngineHeuristics_v8 + + EngineHeuristics + + + + + + + + + + EngineBuilder_v8 + using cudnn_frontend::EngineBuilder = typedef EngineBuilder_v8 + + EngineBuilder + + + + + + + + + + Engine_v8 + using cudnn_frontend::Engine = typedef Engine_v8 + + Engine + + + + + + + + + + EngineConfig_v8 + using cudnn_frontend::EngineConfig = typedef EngineConfig_v8 + + EngineConfig + + + + + + + + + + EngineConfigBuilder_v8 + using cudnn_frontend::EngineConfigBuilder = typedef EngineConfigBuilder_v8 + + EngineConfigBuilder + + + + + + + + + + ExecutionPlan_v8 + using cudnn_frontend::ExecutionPlan = typedef ExecutionPlan_v8 + + ExecutionPlan + + + + + + + + + + ExecutionPlanBuilder_v8 + using cudnn_frontend::ExecutionPlanBuilder = typedef ExecutionPlanBuilder_v8 + + ExecutionPlanBuilder + + + + + + + + + + VariantPack_v8 + using cudnn_frontend::VariantPack = typedef VariantPack_v8 + + VariantPack + + + + + + + + + + VariantPackBuilder_v8 + using cudnn_frontend::VariantPackBuilder = typedef VariantPackBuilder_v8 + + VariantPackBuilder + + + + + + + + + + EngineFallbackList_v8 + using cudnn_frontend::EngineFallbackList = typedef EngineFallbackList_v8 + + EngineFallbackList + + + + + + + + + + EngineFallbackListBuilder_v8 + using cudnn_frontend::EngineFallbackListBuilder = typedef EngineFallbackListBuilder_v8 + + EngineFallbackListBuilder + + + + + + + + + + std::vector< ManagedOpaqueDescriptor > + using cudnn_frontend::EngineConfigList = typedef std::vector<ManagedOpaqueDescriptor> + + EngineConfigList + + + +EngineConfigList class This is a RAII type class that holds naked EngineConfig backendDescriptor. The purpose of this class is to provide an easy interface to store the EngineConfigs generated from various source and apply a filter. + + + + + + std::vector< struct executionOption > + using cudnn_frontend::executionOptions_t = typedef std::vector<struct executionOption> + + executionOptions_t + +Variety of renames. + + + + + + + + std::vector< cudnn_frontend::ExecutionPlan > + using cudnn_frontend::executionPlans_t = typedef std::vector<cudnn_frontend::ExecutionPlan> + + executionPlans_t + + + + + + + + + + std::function< bool(cudnn_frontend::ExecutionPlan const &plan)> + using cudnn_frontend::Predicate = typedef std::function<bool(cudnn_frontend::ExecutionPlan const &plan)> + + Predicate + + + + + + + + + + std::function< cudnn_frontend::EngineConfigList(cudnn_frontend::OperationGraph &)> + using cudnn_frontend::GeneratorSource = typedef std::function<cudnn_frontend::EngineConfigList(cudnn_frontend::OperationGraph &)> + + GeneratorSource + + + + + + + + + + + + ManagedOpaqueDescriptor + static ManagedOpaqueDescriptor cudnn_frontend::make_shared_backend_pointer + (cudnnBackendDescriptorType_t type) + make_shared_backend_pointer + + cudnnBackendDescriptorType_t + type + + + + + + + + + cudnn_frontend::ExecutionPlan_v8::computeTag + cudnn_frontend::Engine_v8::Engine_v8 + cudnn_frontend::EngineConfig_v8::EngineConfig_v8 + cudnn_frontend::EngineHeuristics_v8::getEngineConfig + hasNumericalNote + cudnn_frontend::BackendDescriptor::initialize_managed_backend_pointer + + + auto + auto cudnn_frontend::filter + (Predicate pred, executionPlans_t &plans) -> executionPlans_t + filter + + Predicate + pred + + + executionPlans_t & + plans + + + + +Filter out the execution plan based on the prerequisite conditions. Goes through vector of execution plans and if the predicate returns not to block, it is inserted into the filtered plans. + + + + cudnn_frontend::executionOption::plan + cudnn_frontend::EngineConfigGenerator::cudnnFindPlan + cudnn_frontend::EngineConfigGenerator::cudnnGetPlan + + + auto + static auto cudnn_frontend::get_fallback_engine_list + (cudnnBackendDescriptorType_t mode) -> std::vector< int > + get_fallback_engine_list + + cudnnBackendDescriptorType_t + mode + + + + + + + + + cudnn_frontend::EngineFallbackListBuilder_v8::build + + + void + static void cudnn_frontend::filter + (EngineConfigList &from, EngineConfigList &to, std::function< bool(cudnnBackendDescriptor_t)> filter_fn) + filter + + EngineConfigList & + from + + + EngineConfigList & + to + + + std::function< bool(cudnnBackendDescriptor_t)> + filter_fn + + + + + + + + + + + + + cudnnBackendNumericalNote_t + NUMERIC_NOTE + NUMERIC_NOTE + + + bool + bool cudnn_frontend::hasNumericalNote + (cudnnBackendDescriptor_t engine_config) + hasNumericalNote + + cudnnBackendDescriptor_t + engine_config + + + + + + + + + make_shared_backend_pointer + + + + + CudnnFindSamplingTechnique + samplingTechnique + samplingTechnique + + + auto + auto cudnn_frontend::time_sorted_plan + (cudnnHandle_t handle, executionPlans_t plans, VariantPack &variantPack) -> executionOptions_t + time_sorted_plan + + cudnnHandle_t + handle + + + executionPlans_t + plans + + + VariantPack & + variantPack + + + + +Sorts the execution plans by their run time. The run time of plan may not trivial and hence we run it multiple times till we get a stable value. We have an additional dry-run which helps stabilize the time further. + + + + CUDNN_FIND_SAMPLE_MEDIAN_OF_THREE + CUDNN_FIND_SAMPLE_ONCE + CUDNN_FIND_SAMPLE_TILL_STABLE + + + void + static void cudnn_frontend::throw_if + (std::function< bool()> expr, const char *message) + throw_if + + std::function< bool()> + expr + + + const char * + message + + + + + + + + + cudnn_frontend::cudnnException::cudnnException + + + void + static void cudnn_frontend::throw_if + (bool expr, const char *message) + throw_if + + bool + expr + + + const char * + message + + + + + + + + + cudnn_frontend::cudnnException::cudnnException + + + void + static void cudnn_frontend::set_error_and_throw_exception + (BackendDescriptor const *desc, cudnnStatus_t status, const char *message) + set_error_and_throw_exception + + BackendDescriptor const * + desc + + + cudnnStatus_t + status + + + const char * + message + + + + + + + + + cudnn_frontend::cudnnException::cudnnException + cudnn_frontend::BackendDescriptor::set_error + cudnn_frontend::BackendDescriptor::set_status + cudnn_frontend::MatMulDescBuilder_v8::build + cudnn_frontend::VariantPackBuilder_v8::build + cudnn_frontend::EngineFallbackListBuilder_v8::build + cudnn_frontend::OperationGraphBuilder_v8::build + cudnn_frontend::TensorBuilder_v8::build + cudnn_frontend::EngineConfigBuilder_v8::build + cudnn_frontend::EngineHeuristicsBuilder_v8::build + cudnn_frontend::ConvDescBuilder_v8::build + cudnn_frontend::PointWiseDescBuilder_v8::build + cudnn_frontend::ExecutionPlanBuilder_v8::build + cudnn_frontend::EngineBuilder_v8::build + cudnn_frontend::OperationBuilder_v8::build + cudnn_frontend::Engine_v8::buildKnobs + cudnn_frontend::ExecutionPlan_v8::computeTag + cudnn_frontend::Engine_v8::Engine_v8 + cudnn_frontend::EngineConfig_v8::EngineConfig_v8 + cudnn_frontend::EngineHeuristics_v8::getEngineConfig + cudnn_frontend::EngineHeuristics_v8::getEngineConfigCount + cudnn_frontend::OperationGraph_v8::getEngineCount + cudnn_frontend::ExecutionPlan_v8::getWorkspaceSize + cudnn_frontend::OperationBuilder_v8::setaMatDesc + cudnn_frontend::OperationBuilder_v8::setbDesc + cudnn_frontend::OperationBuilder_v8::setbMatDesc + cudnn_frontend::OperationBuilder_v8::setcDesc + cudnn_frontend::OperationBuilder_v8::setcMatDesc + cudnn_frontend::EngineConfigBuilder_v8::setEngine + cudnn_frontend::OperationBuilder_v8::setmatmulDesc + cudnn_frontend::OperationBuilder_v8::setpwDesc + cudnn_frontend::OperationBuilder_v8::setwDesc + + + + + + + + + diff --git a/docs/xml/dir_d44c64559bbebec7f509842c48db8b23.xml b/docs/xml/dir_d44c64559bbebec7f509842c48db8b23.xml new file mode 100644 index 000000000..c89f4f778 --- /dev/null +++ b/docs/xml/dir_d44c64559bbebec7f509842c48db8b23.xml @@ -0,0 +1,30 @@ + + + + include + cudnn_backend_base.h + cudnn_frontend.h + cudnn_frontend_ConvDesc.h + cudnn_frontend_Engine.h + cudnn_frontend_EngineConfig.h + cudnn_frontend_EngineConfigGenerator.h + cudnn_frontend_EngineFallbackList.h + cudnn_frontend_ExecutionPlan.h + cudnn_frontend_Filters.h + cudnn_frontend_find_plan.h + cudnn_frontend_get_plan.h + cudnn_frontend_Heuristics.h + cudnn_frontend_MatMulDesc.h + cudnn_frontend_Operation.h + cudnn_frontend_OperationGraph.h + cudnn_frontend_PointWiseDesc.h + cudnn_frontend_Tensor.h + cudnn_frontend_utils.h + cudnn_frontend_VariantPack.h + + + + + + + diff --git a/docs/xml/index.xml b/docs/xml/index.xml new file mode 100644 index 000000000..ad3a0e5be --- /dev/null +++ b/docs/xml/index.xml @@ -0,0 +1,630 @@ + + + cudnn_frontend::BackendDescriptor + pointer + status + err_msg + describe + get_raw_desc + get_status + set_status + set_error + get_error + get_desc + initialize_managed_backend_pointer + BackendDescriptor + BackendDescriptor + + cudnn_frontend::ConvDesc_v8 + ConvDescBuilder_v8 + data_type + mode + nDims + padLower + padUpper + dilation + stride + describe + ConvDesc_v8 + ~ConvDesc_v8 + ConvDesc_v8 + ConvDesc_v8 + operator= + + cudnn_frontend::ConvDescBuilder_v8 + m_convDesc + setDataType + setPrePadding + setPostPadding + setDilation + setStrides + setNDims + setMathMode + build + ConvDescBuilder_v8 + ~ConvDescBuilder_v8 + ConvDescBuilder_v8 + ConvDescBuilder_v8 + operator= + + cudnn_frontend::cudnnException + cudnnException + what + + cudnn_frontend::Engine_v8 + opGraph + idx + numKnobs + bKnobs + knobs + opGraphTag + EngineBuilder_v8 + Engine_v8 + Engine_v8 + operator= + buildKnobs + describe + Engine_v8 + ~Engine_v8 + getTag + getSupportedKnobs + getFinalizedKnobs + + cudnn_frontend::EngineBuilder_v8 + m_engine + setOperationGraph + setOperationGraph + setGlobalEngineIdx + build + EngineBuilder_v8 + ~EngineBuilder_v8 + EngineBuilder_v8 + EngineBuilder_v8 + operator= + + cudnn_frontend::EngineConfig_v8 + EngineConfigBuilder_v8 + engine + numKnobs + opGraphTag + bChoices + describe + EngineConfig_v8 + ~EngineConfig_v8 + getTag + EngineConfig_v8 + EngineConfig_v8 + operator= + + cudnn_frontend::EngineConfigBuilder_v8 + m_engine_config + setEngine + build + EngineConfigBuilder_v8 + ~EngineConfigBuilder_v8 + EngineConfigBuilder_v8 + EngineConfigBuilder_v8 + operator= + + cudnn_frontend::EngineConfigGenerator + engine_config_generators + EngineConfigGenerator + generate_engine_config + cudnnGetPlan + cudnnFindPlan + + cudnn_frontend::EngineFallbackList_v8 + EngineFallbackListBuilder_v8 + opGraph + mode + m_engine_configs + opGraphTag + describe + getFallbackList + ~EngineFallbackList_v8 + EngineFallbackList_v8 + EngineFallbackList_v8 + EngineFallbackList_v8 + operator= + + cudnn_frontend::EngineFallbackListBuilder_v8 + m_fallback_list + setOperationGraph + setOperation + build + EngineFallbackListBuilder_v8 + ~EngineFallbackListBuilder_v8 + EngineFallbackListBuilder_v8 + EngineFallbackListBuilder_v8 + operator= + + cudnn_frontend::EngineHeuristics_v8 + EngineHeuristicsBuilder_v8 + mode + opGraph + m_heuristic_results + opGraphTag + describe + EngineHeuristics_v8 + ~EngineHeuristics_v8 + getEngineConfig + getEngineConfigCount + EngineHeuristics_v8 + EngineHeuristics_v8 + operator= + + cudnn_frontend::EngineHeuristicsBuilder_v8 + m_heuristics + setOperationGraph + setHeurMode + build + EngineHeuristicsBuilder_v8 + ~EngineHeuristicsBuilder_v8 + EngineHeuristicsBuilder_v8 + EngineHeuristicsBuilder_v8 + operator= + + cudnn_frontend::executionOption + plan + time_ms + + cudnn_frontend::ExecutionPlan_v8 + ExecutionPlanBuilder_v8 + engine_config + handle + planTag + ExecutionPlan_v8 + ~ExecutionPlan_v8 + getWorkspaceSize + describe + getTag + computeTag + ExecutionPlan_v8 + ExecutionPlan_v8 + operator= + + cudnn_frontend::ExecutionPlanBuilder_v8 + m_execution_plan + setHandle + setEngineConfig + setEngineConfig + build + ExecutionPlanBuilder_v8 + ~ExecutionPlanBuilder_v8 + ExecutionPlanBuilder_v8 + ExecutionPlanBuilder_v8 + operator= + + cudnn_frontend::Engine_v8::Knob + knobType + maxValue + minValue + stride + choice + Knob + describe + setChoice + getChoice + getKnobType + getMinValue + getMaxValue + getStride + + cudnn_frontend::MatMulDesc_v8 + MatMulDescBuilder_v8 + math_precision + describe + MatMulDesc_v8 + ~MatMulDesc_v8 + MatMulDesc_v8 + MatMulDesc_v8 + operator= + + cudnn_frontend::MatMulDescBuilder_v8 + m_matMulDesc + setMathPrecision + build + MatMulDescBuilder_v8 + ~MatMulDescBuilder_v8 + MatMulDescBuilder_v8 + MatMulDescBuilder_v8 + operator= + + cudnn_frontend::OpaqueBackendPointer + m_desc + status + OpaqueBackendPointer + operator= + OpaqueBackendPointer + OpaqueBackendPointer + ~OpaqueBackendPointer + get_backend_descriptor + get_status + is_good + + cudnn_frontend::Operation_v8 + OperationBuilder_v8 + op_mode + xdesc + ydesc + wdesc + bdesc + dydesc + dxdesc + dwdesc + cdesc + amatdesc + bmatdesc + cmatdesc + pwdesc + matmuldesc + alphabetaType + alpha_s + beta_s + alpha2_s + alpha_d + beta_d + alpha2_d + pointwise_port_count + pointwise_mode + is_pointwise_activation_fwd_op + is_pointwise_activation_bwd_op + is_pointwise_math_op + operationTag + describe + Operation_v8 + getOutputTensor + getTag + ~Operation_v8 + Operation_v8 + Operation_v8 + operator= + + cudnn_frontend::OperationBuilder_v8 + m_operation + is_convolution_op + is_pointwise_op + is_matmul_op + setxDesc + setxDesc + setbDesc + setyDesc + setwDesc + setdyDesc + setdyDesc + setdxDesc + setdwDesc + setcDesc + setaMatDesc + setbMatDesc + setcMatDesc + setmatmulDesc + setpwDesc + setAlpha + setAlpha + setAlpha2 + setAlpha2 + setBeta + setBeta + OperationBuilder_v8 + build + + cudnn_frontend::OperationGraph_v8 + OperationGraphBuilder_v8 + handle + ops + numOps + opGraphTag + describe + OperationGraph_v8 + ~OperationGraph_v8 + getEngineCount + getTag + OperationGraph_v8 + OperationGraph_v8 + operator= + + cudnn_frontend::OperationGraphBuilder_v8 + m_operationGraph + setHandle + setOperationGraph + build + OperationGraphBuilder_v8 + ~OperationGraphBuilder_v8 + OperationGraphBuilder_v8 + OperationGraphBuilder_v8 + operator= + + cudnn_frontend::PointWiseDesc_v8 + PointWiseDescBuilder_v8 + math_precision + mode + nan_propagation + upper_clip + lower_clip + lower_clip_slope + elu_alpha + softplus_beta + swish_beta + describe + getPortCount + getPointWiseMode + PointWiseDesc_v8 + ~PointWiseDesc_v8 + PointWiseDesc_v8 + PointWiseDesc_v8 + operator= + + cudnn_frontend::PointWiseDescBuilder_v8 + m_pointWiseDesc + setMathPrecision + setClipping + setMode + setMode + setReluLowerClip + setReluUpperClip + setReluLowerClipSlope + setEluAlpha + setSoftplusBeta + setSwishBeta + build + PointWiseDescBuilder_v8 + ~PointWiseDescBuilder_v8 + PointWiseDescBuilder_v8 + PointWiseDescBuilder_v8 + operator= + + cudnn_frontend::Tensor_v8 + TensorBuilder_v8 + data_type + btensor_dimA + btensor_strA + id + alignment + nDims + isVirtual + describe + Tensor_v8 + ~Tensor_v8 + Tensor_v8 + Tensor_v8 + operator= + + cudnn_frontend::TensorBuilder_v8 + m_tensor + setDataType + setDim + setStrides + setId + setAlignment + setVirtual + build + TensorBuilder_v8 + ~TensorBuilder_v8 + TensorBuilder_v8 + TensorBuilder_v8 + operator= + + cudnn_frontend::VariantPack_v8 + VariantPackBuilder_v8 + workspace + data_pointers + uid + num_ptrs + describe + VariantPack_v8 + ~VariantPack_v8 + VariantPack_v8 + VariantPack_v8 + operator= + + cudnn_frontend::VariantPackBuilder_v8 + m_variant_pack + setDataPointers + setUids + setDataPointers + setWorkspacePointer + build + VariantPackBuilder_v8 + ~VariantPackBuilder_v8 + VariantPackBuilder_v8 + VariantPackBuilder_v8 + operator= + + cudnn_frontend + CudnnFindSamplingTechnique + CUDNN_FIND_SAMPLE_ONCE + CUDNN_FIND_SAMPLE_MEDIAN_OF_THREE + CUDNN_FIND_SAMPLE_TILL_STABLE + ManagedOpaqueDescriptor + Tensor + TensorBuilder + ConvDesc + ConvDescBuilder + PointWiseDescBuilder + PointWiseDesc + MatMulDesc + MatMulDescBuilder + Operation + OperationBuilder + OperationGraph + OperationGraphBuilder + EngineHeuristicsBuilder + EngineHeuristics + EngineBuilder + Engine + EngineConfig + EngineConfigBuilder + ExecutionPlan + ExecutionPlanBuilder + VariantPack + VariantPackBuilder + EngineFallbackList + EngineFallbackListBuilder + EngineConfigList + executionOptions_t + executionPlans_t + Predicate + GeneratorSource + make_shared_backend_pointer + filter + get_fallback_engine_list + filter + hasNumericalNote + time_sorted_plan + throw_if + throw_if + set_error_and_throw_exception + + std + + cudnn_backend_base.h + + cudnn_frontend.h + + cudnn_frontend_ConvDesc.h + + cudnn_frontend_Engine.h + + cudnn_frontend_EngineConfig.h + + cudnn_frontend_EngineConfigGenerator.h + + cudnn_frontend_EngineFallbackList.h + + cudnn_frontend_ExecutionPlan.h + + cudnn_frontend_Filters.h + + cudnn_frontend_find_plan.h + + cudnn_frontend_get_plan.h + + cudnn_frontend_Heuristics.h + + cudnn_frontend_MatMulDesc.h + + cudnn_frontend_Operation.h + + cudnn_frontend_OperationGraph.h + + cudnn_frontend_PointWiseDesc.h + + cudnn_frontend_Tensor.h + + cudnn_frontend_utils.h + + cudnn_frontend_VariantPack.h + + ConvDescBuilder_v8 + setDataType + setPrePadding + setPostPadding + setDilation + setStrides + setNDims + setMathMode + + EngineBuilder_v8 + setOperationGraph + setOperationGraph + setGlobalEngineIdx + + EngineConfigBuilder_v8 + setEngine + + EngineFallbackListBuilder_v8 + setOperationGraph + setOperation + + ExecutionPlanQuery + engine_config + handle + planTag + m_execution_plan + getWorkspaceSize + describe + getTag + computeTag + ExecutionPlan_v8 + ExecutionPlan_v8 + operator= + build + ExecutionPlanBuilder_v8 + ~ExecutionPlanBuilder_v8 + ExecutionPlanBuilder_v8 + ExecutionPlanBuilder_v8 + operator= + + ExecutionPlanBuilder_v8 + setHandle + setEngineConfig + setEngineConfig + + EngineHeuristicsQuery + getEngineConfig + getEngineConfigCount + + EngineHeuristicsBuilder_v8 + setOperationGraph + setHeurMode + + MatMulDescBuilder_v8 + setMathPrecision + + OperationBuilder_v8 + setxDesc + setxDesc + setbDesc + setyDesc + setwDesc + setdyDesc + setdyDesc + setdxDesc + setdwDesc + setcDesc + setaMatDesc + setbMatDesc + setcMatDesc + setmatmulDesc + setpwDesc + setAlpha + setAlpha + setAlpha2 + setAlpha2 + setBeta + setBeta + OperationBuilder_v8 + + OperationGraphQuery + getEngineCount + + OperationGraphBuilder_v8 + setHandle + setOperationGraph + + PointWiseDescBuilder_v8 + setMathPrecision + setClipping + setMode + setMode + + TensorBuilder_v8 + setDataType + setDim + setStrides + setId + setAlignment + setVirtual + + VariantPackBuilder_v8 + setDataPointers + setUids + setDataPointers + setWorkspacePointer + + include + + index + + diff --git a/docs/xml/index.xsd b/docs/xml/index.xsd new file mode 100644 index 000000000..d7ab2a906 --- /dev/null +++ b/docs/xml/index.xsd @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/xml/indexpage.xml b/docs/xml/indexpage.xml new file mode 100644 index 000000000..dbb88ef9f --- /dev/null +++ b/docs/xml/indexpage.xml @@ -0,0 +1,68 @@ + + + + index + CUDNN FRONTEND API + + +Introduction +The cuDNN Frontend API is a C++ header-only library that demonstrates how to use the cuDNN C backend API. The cuDNN C backend API is documented in the cuDNN developer guide. + +Why use Frontend API +Consider the following code snippet which showcases cudnnBackendTensor creation using the backend API and its equivalent front-end API code. Many among the backend constructs follow similar pattern.=========================================================================================== +autocheck_status=[](cudnnStatus_tstatus){assert(status==CUDNN_STATUS_SUCCESS);}; +=========================================================================================== +//BackendcodeforTensorCreation. +cudnnBackendDescriptor_ttensor; + +check_status(cudnnBackendCreateDescriptor(CUDNN_BACKEND_TENSOR_DESCRIPTOR,&tensor)); + +check_status(cudnnBackendSetAttribute(tensor, +CUDNN_ATTR_TENSOR_DATA_TYPE, +CUDNN_TYPE_DATA_TYPE, +1, +&data_type)); +check_status(cudnnBackendSetAttribute(tensor, +CUDNN_ATTR_TENSOR_DIMENSIONS, +CUDNN_TYPE_INT64, +tensor_dim.size(), +tensor_dim.data())); +check_status(cudnnBackendSetAttribute(tensor, +CUDNN_ATTR_TENSOR_STRIDES, +CUDNN_TYPE_INT64, +tensor_str.size(), +tensor_str.data())); +check_status(cudnnBackendSetAttribute(tensor, +CUDNN_ATTR_TENSOR_UNIQUE_ID, +CUDNN_TYPE_INT64, +1, +&id)); +check_status(cudnnBackendSetAttribute(tensor, +CUDNN_ATTR_TENSOR_BYTE_ALIGNMENT, +CUDNN_TYPE_INT64, +1, +&alignment)); +check_status(cudnnBackendFinalize(tensor)); + +check_status(cudnnBackendDestroyDescriptor(tensor)); +=========================================================================================== +//FrontEndequivalentcode. +autotensor=cudnn_frontend::TensorBuilder() +.setDim(tensor_dim.size(),tensor_dim.data()) +.setStrides(tensor_str.size(),tensor_str.data()) +.setId(id) +.setAlignment(alignment) +.setDataType(data_type) +.build(); +check_status(tensor.get_status()); +=========================================================================================== +Frontend API serves two major purpose as a companion to the backend API. +Functional additions: +Support for auto-tuning. (cudnnGet and cudnnFind)Errata filters. +Programmatic ease: +Easy memory management for the cudnnBackendDescriptor_t (RAII based classes).Error handling with optional exception support. Better error messages.Fewer lines of code (5-10x reduction in LOC).Simpler samples on how to use the new API. + + + + + diff --git a/include/cudnn_frontend.h b/include/cudnn_frontend.h index 2dfec2aa3..39ed4125b 100644 --- a/include/cudnn_frontend.h +++ b/include/cudnn_frontend.h @@ -22,6 +22,79 @@ #pragma once +/*! \mainpage CUDNN FRONTEND API + * + * \section Introduction + * + * The cuDNN Frontend API is a C++ header-only library that demonstrates how to use the cuDNN C backend API. The cuDNN C backend API is documented in the cuDNN developer guide. + * + * \section Need Why use Frontend API + * + * Consider the following code snippet which showcases cudnnBackendTensor creation using the backend API and its equivalent front-end API code. Many among the backend constructs follow similar pattern. + * + * ~~~~~~~~~~~~~~~{.cpp} + * + * =========================================================================================== + * auto check_status = [](cudnnStatus_t status) { assert (status == CUDNN_STATUS_SUCCESS); }; + * =========================================================================================== + * // Backend code for Tensor Creation. + * cudnnBackendDescriptor_t tensor; + * + * check_status (cudnnBackendCreateDescriptor(CUDNN_BACKEND_TENSOR_DESCRIPTOR, &tensor)); + * + * check_status (cudnnBackendSetAttribute(tensor, + * CUDNN_ATTR_TENSOR_DATA_TYPE, + * CUDNN_TYPE_DATA_TYPE, + * 1, + * &data_type)); + * check_status (cudnnBackendSetAttribute(tensor, + * CUDNN_ATTR_TENSOR_DIMENSIONS, + * CUDNN_TYPE_INT64, + * tensor_dim.size(), + * tensor_dim.data())); + * check_status (cudnnBackendSetAttribute(tensor, + * CUDNN_ATTR_TENSOR_STRIDES, + * CUDNN_TYPE_INT64, + * tensor_str.size(), + * tensor_str.data())); + * check_status (cudnnBackendSetAttribute(tensor, + * CUDNN_ATTR_TENSOR_UNIQUE_ID, + * CUDNN_TYPE_INT64, + * 1, + * &id)); + * check_status (cudnnBackendSetAttribute(tensor, + * CUDNN_ATTR_TENSOR_BYTE_ALIGNMENT, + * CUDNN_TYPE_INT64, + * 1, + * &alignment)); + * check_status (cudnnBackendFinalize(tensor)); + * + * check_status (cudnnBackendDestroyDescriptor(tensor)); + * =========================================================================================== + * // FrontEnd equivalent code. + * auto tensor = cudnn_frontend::TensorBuilder() + * .setDim(tensor_dim.size(), tensor_dim.data()) + * .setStrides(tensor_str.size(), tensor_str.data()) + * .setId(id) + * .setAlignment(alignment) + * .setDataType(data_type) + * .build(); + * check_status(tensor.get_status()); + * =========================================================================================== + * + * ~~~~~~~~~~~~~~~ + * + * Frontend API serves two major purpose as a companion to the backend API. + * - Functional additions: + * - Support for auto-tuning. (cudnnGet and cudnnFind) + * - Errata filters. + * - Programmatic ease: + * - Easy memory management for the cudnnBackendDescriptor_t (RAII based classes). + * - Error handling with optional exception support. Better error messages. + * - Fewer lines of code (5-10x reduction in LOC). + * - Simpler samples on how to use the new API. + */ + #include "cudnn_frontend_ConvDesc.h" #include "cudnn_frontend_Heuristics.h" #include "cudnn_frontend_Engine.h" @@ -34,6 +107,7 @@ #include "cudnn_frontend_Tensor.h" #include "cudnn_frontend_VariantPack.h" #include "cudnn_frontend_PointWiseDesc.h" +#include "cudnn_frontend_MatMulDesc.h" namespace cudnn_frontend { using Tensor = Tensor_v8; @@ -42,6 +116,8 @@ using ConvDesc = ConvDesc_v8; using ConvDescBuilder = ConvDescBuilder_v8; using PointWiseDescBuilder = PointWiseDescBuilder_v8; using PointWiseDesc = PointWiseDesc_v8; +using MatMulDesc = MatMulDesc_v8; +using MatMulDescBuilder = MatMulDescBuilder_v8; using Operation = Operation_v8; using OperationBuilder = OperationBuilder_v8; using OperationGraph = OperationGraph_v8; diff --git a/include/cudnn_frontend_Engine.h b/include/cudnn_frontend_Engine.h index 7b3c612ec..644a75975 100644 --- a/include/cudnn_frontend_Engine.h +++ b/include/cudnn_frontend_Engine.h @@ -79,27 +79,27 @@ class Engine_v8 : public BackendDescriptor { choice = val_; } - const int64_t + int64_t getChoice() const { return choice; } - const cudnnBackendKnobType_t + cudnnBackendKnobType_t getKnobType() const { return knobType; } - const int64_t + int64_t getMinValue() const { return minValue; } - const int64_t + int64_t getMaxValue() const { return minValue; } - const int64_t + int64_t getStride() const { return stride; } @@ -190,7 +190,7 @@ class Engine_v8 : public BackendDescriptor { std::array bKnobs_ = {}; //!< Opaque pointer to the backend knobs - for (auto i = 0; i < bKnobs.size(); i++) { + for (std::uint32_t i = 0; i < bKnobs.size(); i++) { bKnobs_[i] = bKnobs[i]->get_backend_descriptor(); } status = cudnnBackendGetAttribute(pointer->get_backend_descriptor(), @@ -241,12 +241,7 @@ class EngineBuilder_v8 { m_engine.opGraphTag = opGraph_.getTag(); return *this; } - //! Set operationGraph for the engine - auto - setOperationGraph(cudnnBackendDescriptor_t desc_) -> EngineBuilder_v8 & { - // TBD - return *this; - } + //! Set operationGraph for the engine auto setOperationGraph(ManagedOpaqueDescriptor desc_) -> EngineBuilder_v8 & { diff --git a/include/cudnn_frontend_EngineConfig.h b/include/cudnn_frontend_EngineConfig.h index 37b4e9921..3e37848c5 100644 --- a/include/cudnn_frontend_EngineConfig.h +++ b/include/cudnn_frontend_EngineConfig.h @@ -113,7 +113,7 @@ class EngineConfigBuilder_v8 { m_engine_config.opGraphTag = engine_.getTag(); auto &knobs = engine_.getFinalizedKnobs(); m_engine_config.numKnobs = knobs.size(); - for (auto i = 0; i < knobs.size(); i++) { + for (std::uint32_t i = 0; i < knobs.size(); i++) { cudnnStatus_t status; cudnnBackendKnobType_t type = knobs[i].getKnobType(); int64_t value = knobs[i].getChoice(); diff --git a/include/cudnn_frontend_EngineFallbackList.h b/include/cudnn_frontend_EngineFallbackList.h index 4fadb4497..6c3164d25 100644 --- a/include/cudnn_frontend_EngineFallbackList.h +++ b/include/cudnn_frontend_EngineFallbackList.h @@ -42,7 +42,7 @@ auto static get_fallback_engine_list(cudnnBackendDescriptorType_t mode) -> std:: } else { return {}; } - } else if (minor_version == 1) { + } else if (minor_version <= 2) { if (mode == CUDNN_BACKEND_OPERATION_CONVOLUTION_FORWARD_DESCRIPTOR) { std::vector engine_list(50); std::iota(engine_list.begin(), engine_list.end(), 0); @@ -84,8 +84,8 @@ class EngineFallbackList_v8 : public BackendDescriptor { EngineFallbackList_v8(EngineFallbackList_v8 &&from) : BackendDescriptor(from.get_desc(), from.get_status(), from.get_error()), - mode(from.mode), opGraph(from.opGraph), + mode(from.mode), opGraphTag(from.opGraphTag) { m_engine_configs.swap(from.m_engine_configs); } @@ -137,7 +137,7 @@ class EngineFallbackListBuilder_v8 { return std::move(m_fallback_list); }; auto fallback_engine_list = get_fallback_engine_list(m_fallback_list.mode); - for (auto i = 0; i < fallback_engine_list.size(); i++) { + for (std::uint32_t i = 0; i < fallback_engine_list.size(); i++) { #ifndef NV_CUDNN_DISABLE_EXCEPTION try { #endif diff --git a/include/cudnn_frontend_ExecutionPlan.h b/include/cudnn_frontend_ExecutionPlan.h index 03be7ec08..9e29f1e03 100644 --- a/include/cudnn_frontend_ExecutionPlan.h +++ b/include/cudnn_frontend_ExecutionPlan.h @@ -54,8 +54,8 @@ class ExecutionPlan_v8 : public BackendDescriptor { ExecutionPlan_v8(ExecutionPlan_v8 &&from) : BackendDescriptor(from.get_desc(), from.get_status(), from.get_error()), - handle(from.handle), engine_config(from.engine_config), + handle(from.handle), planTag(from.planTag) {} ~ExecutionPlan_v8() = default; /** @defgroup ExecutionPlanQuery @@ -65,7 +65,7 @@ class ExecutionPlan_v8 : public BackendDescriptor { //! Query the workspace requirement for the given plan auto getWorkspaceSize(void) const -> int64_t { - uint64_t workSpaceSize = 0; + std::int64_t workSpaceSize = 0; auto status = cudnnBackendGetAttribute(pointer->get_backend_descriptor(), CUDNN_ATTR_EXECUTION_PLAN_WORKSPACE_SIZE, CUDNN_TYPE_INT64, @@ -126,7 +126,7 @@ class ExecutionPlan_v8 : public BackendDescriptor { cudnnBackendDescriptor_t extractedEngine_ = extractedEngine->get_backend_descriptor(); std::array extractedKnobs_{{nullptr}}; - for (auto i = 0; i < extractedKnobs.size(); i++) { + for (std::uint32_t i = 0; i < extractedKnobs.size(); i++) { extractedKnobs_[i] = extractedKnobs[i]->get_backend_descriptor(); } @@ -227,11 +227,7 @@ class ExecutionPlanBuilder_v8 { m_execution_plan.planTag = engine_config_.getTag(); return *this; } - auto - setEngineConfig(cudnnBackendDescriptor_t &desc, std::string const &opGraphTag_ = "") -> ExecutionPlanBuilder_v8 & { - // TBD - return *this; - } + //! Set engine Config for the Plan auto setEngineConfig(ManagedOpaqueDescriptor &desc, std::string const &opGraphTag_ = "") -> ExecutionPlanBuilder_v8 & { diff --git a/include/cudnn_frontend_Heuristics.h b/include/cudnn_frontend_Heuristics.h index 13a2e3204..446f932b3 100644 --- a/include/cudnn_frontend_Heuristics.h +++ b/include/cudnn_frontend_Heuristics.h @@ -81,7 +81,7 @@ class EngineHeuristics_v8 : public BackendDescriptor { m_heuristic_results.emplace_back(engConfig); } std::vector heuristic_results_; - for (auto i = 0; i < m_heuristic_results.size(); i++) { + for (std::uint32_t i = 0; i < m_heuristic_results.size(); i++) { heuristic_results_.emplace_back(m_heuristic_results[i]->get_backend_descriptor()); } int64_t result = -1; diff --git a/include/cudnn_frontend_MatMulDesc.h b/include/cudnn_frontend_MatMulDesc.h new file mode 100644 index 000000000..e41600260 --- /dev/null +++ b/include/cudnn_frontend_MatMulDesc.h @@ -0,0 +1,135 @@ +/* + * Copyright (c) 2021, NVIDIA CORPORATION. All rights reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#pragma once + +#include +#include +#include +#include +#include +#include + +#include +#include + +#include "cudnn_frontend_utils.h" + +namespace cudnn_frontend { +/// +/// MatMulDesc Descriptor Class +/// This class tells the properties of the MatMul operation +/// Properties: +/// - math_precision +/// +/// Use MatMulDesc_v8 to build this class. +/// Describe returns a string describing the MatMul operation +/// +class MatMulDesc_v8 : public BackendDescriptor { + public: + friend class MatMulDescBuilder_v8; + std::string + describe() const override { + std::stringstream ss; + ss << "CUDNN_BACKEND_MATMUL_DESCRIPTOR :" + << " Math precision " << (math_precision); + return ss.str(); + } + + MatMulDesc_v8(MatMulDesc_v8 &&from) + : BackendDescriptor(from.get_desc(), from.get_status(), from.get_error()), + math_precision(from.math_precision) {} + + ~MatMulDesc_v8() = default; + + private: + MatMulDesc_v8() = default; + MatMulDesc_v8(MatMulDesc_v8 const &) = delete; + MatMulDesc_v8 & + operator=(MatMulDesc_v8 const &) = delete; + + cudnnDataType_t math_precision = CUDNN_DATA_FLOAT; +}; + +//// +/// MatMulDescBuilder_v8 Class +/// Helper class used to build MatMulDesc_v8 class +class MatMulDescBuilder_v8 { + public: + /** @defgroup MatMulDescBuilder_v8 + * Set individual property of MatMulDesc_v8 class + * @{ + */ + //! Set Math Precision Data Type for the Matmul Operation + auto + setMathPrecision(cudnnDataType_t data_type_) -> MatMulDescBuilder_v8 & { + m_matMulDesc.math_precision = data_type_; + return *this; + } + /** @} */ + + //! constructs the MatMulDesc_v8 by calling the cudnn API + //! Throws the appropriate error message + MatMulDesc_v8 && + build() { + // Create a descriptor. Memory allocation happens here. + auto status = m_matMulDesc.initialize_managed_backend_pointer(CUDNN_BACKEND_MATMUL_DESCRIPTOR); + if (status != CUDNN_STATUS_SUCCESS) { + set_error_and_throw_exception(&m_matMulDesc, status, "CUDNN_BACKEND_MATMUL_DESCRIPTOR: cudnnCreate Failed"); + return std::move(m_matMulDesc); + } + + // Once Created lets set the descriptor parameters. + status = cudnnBackendSetAttribute(m_matMulDesc.pointer->get_backend_descriptor(), + CUDNN_ATTR_MATMUL_COMP_TYPE, + CUDNN_TYPE_DATA_TYPE, + 1, + &m_matMulDesc.math_precision); + if (status != CUDNN_STATUS_SUCCESS) { + set_error_and_throw_exception( + &m_matMulDesc, + status, + "CUDNN_BACKEND_MATMUL_DESCRIPTOR: SetAttribute CUDNN_ATTR_MATMUL_COMP_TYPE Failed"); + return std::move(m_matMulDesc); + } + + // Finalizing the descriptor + status = cudnnBackendFinalize(m_matMulDesc.pointer->get_backend_descriptor()); + if (status != CUDNN_STATUS_SUCCESS) { + set_error_and_throw_exception(&m_matMulDesc, status, "CUDNN_BACKEND_MATMUL_DESCRIPTOR: cudnnFinalize Failed"); + return std::move(m_matMulDesc); + } + + return std::move(m_matMulDesc); + } + + explicit MatMulDescBuilder_v8() = default; + ~MatMulDescBuilder_v8() = default; + MatMulDescBuilder_v8(MatMulDescBuilder_v8 &&) = delete; + MatMulDescBuilder_v8(MatMulDescBuilder_v8 const &) = delete; + MatMulDescBuilder_v8 & + operator=(MatMulDescBuilder_v8 const &) = delete; + + private: + MatMulDesc_v8 m_matMulDesc; +}; +} diff --git a/include/cudnn_frontend_Operation.h b/include/cudnn_frontend_Operation.h index f79c69c6b..e672c73b4 100644 --- a/include/cudnn_frontend_Operation.h +++ b/include/cudnn_frontend_Operation.h @@ -34,11 +34,11 @@ #include "cudnn_frontend_ConvDesc.h" #include "cudnn_frontend_PointWiseDesc.h" +#include "cudnn_frontend_MatMulDesc.h" #include "cudnn_frontend_Tensor.h" #include "cudnn_frontend_utils.h" namespace cudnn_frontend { - /// /// Operation_v8 Class /// This class has the properties of the operation @@ -46,9 +46,18 @@ namespace cudnn_frontend { /// - xDesc /// - yDesc /// - wdesc +/// - bdesc +/// - dydesc +/// - dxdesc /// - cdesc +/// - amatdesc +/// - bmatdesc +/// - cmatdesc +/// - pwdesc +/// - matmuldesc /// - alpha /// - beta +/// - alpha2 /// /// Use OperationBuilder_v8 to build this class. /// Describe returns a string describing the convolution operation @@ -65,8 +74,15 @@ class Operation_v8 : public BackendDescriptor { ss << std::hex << " Y " << ydesc; ss << std::hex << " W " << wdesc; ss << std::hex << " B " << bdesc; + ss << std::hex << " DW " << dwdesc; + ss << std::hex << " DY " << dydesc; + ss << std::hex << " DX " << dxdesc; ss << std::hex << " C " << cdesc; + ss << std::hex << " A Mtrix " << amatdesc; + ss << std::hex << " B Mtrix " << bmatdesc; + ss << std::hex << " C Mtrix " << cmatdesc; ss << std::hex << " P " << pwdesc; + ss << std::hex << " MatMul " << matmuldesc; ss << std::dec << " alphabetaType " << alphabetaType; ss << " Alpha: " << alpha_s << " " << alpha_d; ss << " Alpha2: " << alpha2_s << " " << alpha2_d; @@ -80,20 +96,29 @@ class Operation_v8 : public BackendDescriptor { ydesc(from.ydesc), wdesc(from.wdesc), bdesc(from.bdesc), + dydesc(from.dydesc), + dxdesc(from.dxdesc), + dwdesc(from.dwdesc), cdesc(from.cdesc), + amatdesc(from.amatdesc), + bmatdesc(from.bmatdesc), + cmatdesc(from.cmatdesc), pwdesc(from.pwdesc), + matmuldesc(from.matmuldesc), alphabetaType(from.alphabetaType), alpha_s(from.alpha_s), - alpha_d(from.alpha_d), beta_s(from.beta_s), + alpha2_s(from.alpha2_s), + alpha_d(from.alpha_d), beta_d(from.beta_d), + alpha2_d(from.alpha2_d), pointwise_port_count(from.pointwise_port_count), pointwise_mode(from.pointwise_mode), operationTag(from.operationTag) {} ManagedOpaqueDescriptor getOutputTensor() { - return ydesc; + return (op_mode == CUDNN_BACKEND_OPERATION_MATMUL_DESCRIPTOR) ? cmatdesc : ydesc; } std::string const & @@ -111,18 +136,28 @@ class Operation_v8 : public BackendDescriptor { cudnnBackendDescriptorType_t op_mode = CUDNN_BACKEND_OPERATION_CONVOLUTION_FORWARD_DESCRIPTOR; - ManagedOpaqueDescriptor xdesc = nullptr; - ManagedOpaqueDescriptor ydesc = nullptr; - ManagedOpaqueDescriptor wdesc = nullptr; - ManagedOpaqueDescriptor bdesc = nullptr; - ManagedOpaqueDescriptor cdesc = nullptr; - ManagedOpaqueDescriptor pwdesc = nullptr; + ManagedOpaqueDescriptor xdesc = nullptr; + ManagedOpaqueDescriptor ydesc = nullptr; + ManagedOpaqueDescriptor wdesc = nullptr; + ManagedOpaqueDescriptor bdesc = nullptr; + ManagedOpaqueDescriptor dydesc = nullptr; + ManagedOpaqueDescriptor dxdesc = nullptr; + ManagedOpaqueDescriptor dwdesc = nullptr; + ManagedOpaqueDescriptor cdesc = nullptr; + ManagedOpaqueDescriptor amatdesc = nullptr; + ManagedOpaqueDescriptor bmatdesc = nullptr; + ManagedOpaqueDescriptor cmatdesc = nullptr; + ManagedOpaqueDescriptor pwdesc = nullptr; + ManagedOpaqueDescriptor matmuldesc = nullptr; cudnnBackendAttributeType_t alphabetaType = CUDNN_TYPE_FLOAT; float alpha_s = 1.0f, beta_s = .0f, alpha2_s = 1.0f; double alpha_d = 1.0, beta_d = 0.0, alpha2_d = 1.0; int64_t pointwise_port_count = -1; cudnnPointwiseMode_t pointwise_mode; + bool is_pointwise_activation_fwd_op = false; + bool is_pointwise_activation_bwd_op = false; + bool is_pointwise_math_op = false; std::string operationTag; }; @@ -134,6 +169,8 @@ class OperationBuilder_v8 { private: Operation_v8 m_operation; bool is_convolution_op = false; + bool is_pointwise_op = false; + bool is_matmul_op = false; public: /** @defgroup OperationBuilder_v8 @@ -153,11 +190,11 @@ class OperationBuilder_v8 { } auto setbDesc(Tensor_v8 const &tensor) -> OperationBuilder_v8 & { - if (is_convolution_op == true) { + if (is_pointwise_op == false) { set_error_and_throw_exception( &m_operation, CUDNN_STATUS_BAD_PARAM, - "CUDNN_BACKEND_OPERATION_*_DESCRIPTOR: Convolution operation does not need bTensor"); + "CUDNN_BACKEND_OPERATION_*_DESCRIPTOR: Non Pointwise operation does not need bTensor"); } m_operation.bdesc = tensor.get_desc(); return *this; @@ -178,6 +215,28 @@ class OperationBuilder_v8 { m_operation.wdesc = tensor.get_desc(); return *this; } + + auto + setdyDesc(ManagedOpaqueDescriptor const &raw_tensor) -> OperationBuilder_v8 & { + m_operation.dydesc = raw_tensor; + return *this; + } + auto + setdyDesc(Tensor_v8 const &tensor) -> OperationBuilder_v8 & { + m_operation.dydesc = tensor.get_desc(); + return *this; + } + auto + setdxDesc(Tensor_v8 const &tensor) -> OperationBuilder_v8 & { + m_operation.dxdesc = tensor.get_desc(); + return *this; + } + auto + setdwDesc(Tensor_v8 const &tensor) -> OperationBuilder_v8 & { + m_operation.dwdesc = tensor.get_desc(); + return *this; + } + auto setcDesc(ConvDesc_v8 const &conv) -> OperationBuilder_v8 & { if (is_convolution_op == false) { @@ -190,18 +249,86 @@ class OperationBuilder_v8 { return *this; } auto + setaMatDesc(Tensor_v8 const &tensor) -> OperationBuilder_v8 & { + if (is_matmul_op == false) { + set_error_and_throw_exception( + &m_operation, + CUDNN_STATUS_BAD_PARAM, + "CUDNN_BACKEND_OPERATION_*_DESCRIPTOR: Non Matmul operation does not need a Matrix Tensor"); + } + m_operation.amatdesc = tensor.get_desc(); + return *this; + } + auto + setbMatDesc(Tensor_v8 const &tensor) -> OperationBuilder_v8 & { + if (is_matmul_op == false) { + set_error_and_throw_exception( + &m_operation, + CUDNN_STATUS_BAD_PARAM, + "CUDNN_BACKEND_OPERATION_*_DESCRIPTOR: Non Matmul operation does not need b Matrix Tensor"); + } + m_operation.bmatdesc = tensor.get_desc(); + return *this; + } + auto + setcMatDesc(Tensor_v8 const &tensor) -> OperationBuilder_v8 & { + if (is_matmul_op == false) { + set_error_and_throw_exception( + &m_operation, + CUDNN_STATUS_BAD_PARAM, + "CUDNN_BACKEND_OPERATION_*_DESCRIPTOR: Non Matmul operation does not need c Matrix Tensor"); + } + m_operation.cmatdesc = tensor.get_desc(); + return *this; + } + auto + setmatmulDesc(MatMulDesc_v8 const &matmulDesc) -> OperationBuilder_v8 & { + if (is_matmul_op == false) { + set_error_and_throw_exception( + &m_operation, + CUDNN_STATUS_BAD_PARAM, + "CUDNN_BACKEND_OPERATION_*_DESCRIPTOR: Non Matmul operation does not need MATMUL DESCRIPTOR"); + } + m_operation.matmuldesc = matmulDesc.get_desc(); + return *this; + } + auto setpwDesc(PointWiseDesc_v8 const &pointWiseDesc) -> OperationBuilder_v8 & { - if (is_convolution_op == true) { + if (is_pointwise_op == false) { set_error_and_throw_exception( &m_operation, CUDNN_STATUS_BAD_PARAM, - "CUDNN_BACKEND_OPERATION_*_DESCRIPTOR: Convolution operation does not need POINTWISE DESCRIPTOR"); + "CUDNN_BACKEND_OPERATION_*_DESCRIPTOR: Non Pointwise operation does not need POINTWISE DESCRIPTOR"); } m_operation.pwdesc = pointWiseDesc.get_desc(); m_operation.pointwise_port_count = pointWiseDesc.getPortCount(); m_operation.pointwise_mode = pointWiseDesc.getPointWiseMode(); + + m_operation.is_pointwise_math_op = ((m_operation.pointwise_mode == CUDNN_POINTWISE_ADD) || + (m_operation.pointwise_mode == CUDNN_POINTWISE_MUL) || + (m_operation.pointwise_mode == CUDNN_POINTWISE_MIN) || + (m_operation.pointwise_mode == CUDNN_POINTWISE_MAX) || + (m_operation.pointwise_mode == CUDNN_POINTWISE_SQRT)); + + m_operation.is_pointwise_activation_fwd_op = ((m_operation.pointwise_mode == CUDNN_POINTWISE_RELU_FWD) || + (m_operation.pointwise_mode == CUDNN_POINTWISE_TANH_FWD) || + (m_operation.pointwise_mode == CUDNN_POINTWISE_SIGMOID_FWD) || + (m_operation.pointwise_mode == CUDNN_POINTWISE_ELU_FWD) || + (m_operation.pointwise_mode == CUDNN_POINTWISE_GELU_FWD) || + (m_operation.pointwise_mode == CUDNN_POINTWISE_SOFTPLUS_FWD) || + (m_operation.pointwise_mode == CUDNN_POINTWISE_SWISH_FWD)); + + m_operation.is_pointwise_activation_bwd_op = ((m_operation.pointwise_mode == CUDNN_POINTWISE_RELU_BWD) || + (m_operation.pointwise_mode == CUDNN_POINTWISE_TANH_BWD) || + (m_operation.pointwise_mode == CUDNN_POINTWISE_SIGMOID_BWD) || + (m_operation.pointwise_mode == CUDNN_POINTWISE_ELU_BWD) || + (m_operation.pointwise_mode == CUDNN_POINTWISE_GELU_BWD) || + (m_operation.pointwise_mode == CUDNN_POINTWISE_SOFTPLUS_BWD) || + (m_operation.pointwise_mode == CUDNN_POINTWISE_SWISH_BWD)); + return *this; } + auto setAlpha(float alpha) -> OperationBuilder_v8 & { m_operation.alphabetaType = CUDNN_TYPE_FLOAT; @@ -250,6 +377,9 @@ class OperationBuilder_v8 { is_convolution_op = ((m_operation.op_mode == CUDNN_BACKEND_OPERATION_CONVOLUTION_FORWARD_DESCRIPTOR) || (m_operation.op_mode == CUDNN_BACKEND_OPERATION_CONVOLUTION_BACKWARD_FILTER_DESCRIPTOR) || (m_operation.op_mode == CUDNN_BACKEND_OPERATION_CONVOLUTION_BACKWARD_DATA_DESCRIPTOR)); + + is_pointwise_op = (m_operation.op_mode == CUDNN_BACKEND_OPERATION_POINTWISE_DESCRIPTOR); + is_matmul_op = (m_operation.op_mode == CUDNN_BACKEND_OPERATION_MATMUL_DESCRIPTOR); } /** @} */ @@ -262,32 +392,206 @@ class OperationBuilder_v8 { &m_operation, m_operation.status, "CUDNN_BACKEND_OPERATION: Operation not initialized properly"); return std::move(m_operation); } - if (m_operation.xdesc == nullptr) { - set_error_and_throw_exception( - &m_operation, - CUDNN_STATUS_BAD_PARAM, - "CUDNN_BACKEND_OPERATION: Check and Set the CUDNN_ATTR_OPERATION_CONVOLUTION_*_X"); - return std::move(m_operation); - } - if (m_operation.wdesc == nullptr && is_convolution_op) { - set_error_and_throw_exception( - &m_operation, - CUDNN_STATUS_BAD_PARAM, - "CUDNN_BACKEND_OPERATION: Check and Set the CUDNN_ATTR_OPERATION_CONVOLUTION_*_W"); - return std::move(m_operation); - } - if (m_operation.ydesc == nullptr && is_convolution_op) { - set_error_and_throw_exception( - &m_operation, - CUDNN_STATUS_BAD_PARAM, - "CUDNN_BACKEND_OPERATION: Check and Set the CUDNN_ATTR_OPERATION_CONVOLUTION_*_Y"); - return std::move(m_operation); - } - if (m_operation.cdesc == nullptr && is_convolution_op) { - set_error_and_throw_exception( - &m_operation, - CUDNN_STATUS_BAD_PARAM, - "CUDNN_BACKEND_OPERATION: Check and Set the CUDNN_ATTR_OPERATION_CONVOLUTION_*_CONV_DESC"); + + if (is_convolution_op) { + if (m_operation.cdesc == nullptr) { + set_error_and_throw_exception( + &m_operation, + CUDNN_STATUS_BAD_PARAM, + "CUDNN_BACKEND_OPERATION: Check and Set the CUDNN_ATTR_OPERATION_CONVOLUTION_*_CONV_DESC"); + return std::move(m_operation); + } + if (m_operation.op_mode == CUDNN_BACKEND_OPERATION_CONVOLUTION_FORWARD_DESCRIPTOR) { + if (m_operation.xdesc == nullptr) { + set_error_and_throw_exception( + &m_operation, + CUDNN_STATUS_BAD_PARAM, + "CUDNN_BACKEND_OPERATION: Check and Set the CUDNN_ATTR_OPERATION_CONVOLUTION_*_X"); + return std::move(m_operation); + } + if (m_operation.wdesc == nullptr) { + set_error_and_throw_exception( + &m_operation, + CUDNN_STATUS_BAD_PARAM, + "CUDNN_BACKEND_OPERATION: Check and Set the CUDNN_ATTR_OPERATION_CONVOLUTION_*_W"); + return std::move(m_operation); + } + if (m_operation.ydesc == nullptr) { + set_error_and_throw_exception( + &m_operation, + CUDNN_STATUS_BAD_PARAM, + "CUDNN_BACKEND_OPERATION: Check and Set the CUDNN_ATTR_OPERATION_CONVOLUTION_*_Y"); + return std::move(m_operation); + } + + } else if (m_operation.op_mode == CUDNN_BACKEND_OPERATION_CONVOLUTION_BACKWARD_FILTER_DESCRIPTOR) { + if (m_operation.ydesc != nullptr && m_operation.dydesc != nullptr) { + set_error_and_throw_exception(&m_operation, + CUDNN_STATUS_BAD_PARAM, + "CUDNN_BACKEND_OPERATION: Ambiguous specification. Choose and Set " + "only one of setyDesc() or setdyDesc()"); + return std::move(m_operation); + } + if (m_operation.ydesc == nullptr && m_operation.dydesc == nullptr) { + set_error_and_throw_exception( + &m_operation, + CUDNN_STATUS_BAD_PARAM, + "CUDNN_BACKEND_OPERATION: Choose and Set one of setyDesc() or setdyDesc()"); + return std::move(m_operation); + } + if (m_operation.xdesc == nullptr) { + set_error_and_throw_exception( + &m_operation, + CUDNN_STATUS_BAD_PARAM, + "CUDNN_BACKEND_OPERATION: Check and Set the CUDNN_ATTR_OPERATION_CONVOLUTION_*_X"); + return std::move(m_operation); + } + if (m_operation.wdesc != nullptr && m_operation.dwdesc != nullptr) { + set_error_and_throw_exception(&m_operation, + CUDNN_STATUS_BAD_PARAM, + "CUDNN_BACKEND_OPERATION: Ambiguous specification. Choose and Set " + "only one of setwDesc() or setdwDesc()"); + return std::move(m_operation); + } + if (m_operation.wdesc == nullptr && m_operation.dwdesc == nullptr) { + set_error_and_throw_exception( + &m_operation, + CUDNN_STATUS_BAD_PARAM, + "CUDNN_BACKEND_OPERATION: Choose and Set one of setwDesc() or setdwDesc()"); + return std::move(m_operation); + } + } else if (m_operation.op_mode == CUDNN_BACKEND_OPERATION_CONVOLUTION_BACKWARD_DATA_DESCRIPTOR) { + if (m_operation.ydesc != nullptr && m_operation.dydesc != nullptr) { + set_error_and_throw_exception(&m_operation, + CUDNN_STATUS_BAD_PARAM, + "CUDNN_BACKEND_OPERATION: Ambiguous specification. Choose and Set " + "only one of setyDesc() or setdyDesc()"); + return std::move(m_operation); + } + if (m_operation.ydesc == nullptr && m_operation.dydesc == nullptr) { + set_error_and_throw_exception( + &m_operation, + CUDNN_STATUS_BAD_PARAM, + "CUDNN_BACKEND_OPERATION: Choose and Set one of setyDesc() or setdyDesc()"); + return std::move(m_operation); + } + if (m_operation.wdesc == nullptr) { + set_error_and_throw_exception( + &m_operation, + CUDNN_STATUS_BAD_PARAM, + "CUDNN_BACKEND_OPERATION: Check and Set the CUDNN_ATTR_OPERATION_CONVOLUTION_*_W"); + return std::move(m_operation); + } + if (m_operation.xdesc != nullptr && m_operation.dxdesc != nullptr) { + set_error_and_throw_exception(&m_operation, + CUDNN_STATUS_BAD_PARAM, + "CUDNN_BACKEND_OPERATION: Ambiguous specification. Choose and Set " + "only one of setxDesc() or setdxDesc()"); + return std::move(m_operation); + } + if (m_operation.xdesc == nullptr && m_operation.dxdesc == nullptr) { + set_error_and_throw_exception( + &m_operation, + CUDNN_STATUS_BAD_PARAM, + "CUDNN_BACKEND_OPERATION: Choose and Set one of setxDesc() or setdxDesc()"); + return std::move(m_operation); + } + } else { + set_error_and_throw_exception(&m_operation, + CUDNN_STATUS_BAD_PARAM, + "CUDNN_BACKEND_OPERATION: Unsupported convolution operation. Check and " + "set CUDNN_BACKEND_OPERATION_CONVOLUTION_*_DESCRIPTOR"); + return std::move(m_operation); + } + } else if (is_pointwise_op) { + if (m_operation.xdesc == nullptr) { + set_error_and_throw_exception( + &m_operation, + CUDNN_STATUS_BAD_PARAM, + "CUDNN_BACKEND_OPERATION: Check and Set the CUDNN_ATTR_OPERATION_POINTWISE_XDESC"); + return std::move(m_operation); + } + + if (m_operation.is_pointwise_math_op) { + if (m_operation.pointwise_port_count == 3 && m_operation.bdesc == nullptr) { + set_error_and_throw_exception( + &m_operation, + CUDNN_STATUS_BAD_PARAM, + "CUDNN_BACKEND_OPERATION: Check and Set the CUDNN_ATTR_OPERATION_POINTWISE_BDESC"); + return std::move(m_operation); + } + if (m_operation.ydesc == nullptr) { + set_error_and_throw_exception( + &m_operation, + CUDNN_STATUS_BAD_PARAM, + "CUDNN_BACKEND_OPERATION: Check and Set the CUDNN_ATTR_OPERATION_POINTWISE_YDESC"); + return std::move(m_operation); + } + } else if (m_operation.is_pointwise_activation_fwd_op) { + if (m_operation.ydesc == nullptr) { + set_error_and_throw_exception( + &m_operation, + CUDNN_STATUS_BAD_PARAM, + "CUDNN_BACKEND_OPERATION: Check and Set the CUDNN_ATTR_OPERATION_POINTWISE_YDESC"); + return std::move(m_operation); + } + } else if (m_operation.is_pointwise_activation_bwd_op) { + if (m_operation.dydesc == nullptr) { + set_error_and_throw_exception( + &m_operation, + CUDNN_STATUS_BAD_PARAM, + "CUDNN_BACKEND_OPERATION: Check and Set the CUDNN_ATTR_OPERATION_POINTWISE_DYDESC"); + return std::move(m_operation); + } + if (m_operation.dxdesc == nullptr) { + set_error_and_throw_exception( + &m_operation, + CUDNN_STATUS_BAD_PARAM, + "CUDNN_BACKEND_OPERATION: Check and Set the CUDNN_ATTR_OPERATION_POINTWISE_DXDESC"); + return std::move(m_operation); + } + } else { + set_error_and_throw_exception( + &m_operation, + CUDNN_STATUS_BAD_PARAM, + "CUDNN_BACKEND_OPERATION: Unsupported cudnn pointwise mode. Check and set CUDNN_POINTWISE_*"); + return std::move(m_operation); + } + + } else if (is_matmul_op) { + if (m_operation.matmuldesc == nullptr) { + set_error_and_throw_exception( + &m_operation, + CUDNN_STATUS_BAD_PARAM, + "CUDNN_BACKEND_OPERATION: Check and Set the CUDNN_ATTR_OPERATION_MATMUL_DESC"); + return std::move(m_operation); + } + if (m_operation.amatdesc == nullptr) { + set_error_and_throw_exception( + &m_operation, + CUDNN_STATUS_BAD_PARAM, + "CUDNN_BACKEND_OPERATION: Check and Set the CUDNN_ATTR_OPERATION_MATMUL_ADESC"); + return std::move(m_operation); + } + if (m_operation.bmatdesc == nullptr) { + set_error_and_throw_exception( + &m_operation, + CUDNN_STATUS_BAD_PARAM, + "CUDNN_BACKEND_OPERATION: Check and Set the CUDNN_ATTR_OPERATION_MATMUL_BDESC"); + return std::move(m_operation); + } + if (m_operation.cmatdesc == nullptr) { + set_error_and_throw_exception( + &m_operation, + CUDNN_STATUS_BAD_PARAM, + "CUDNN_BACKEND_OPERATION: Check and Set the CUDNN_ATTR_OPERATION_MATMUL_CDESC"); + return std::move(m_operation); + } + } else { + set_error_and_throw_exception(&m_operation, + CUDNN_STATUS_BAD_PARAM, + "CUDNN_BACKEND_OPERATION_DESCRIPTOR: Unsupported cudnn backend descriptor " + "type. Check and set CUDNN_BACKEND_OPERATION_*_DESCRIPTOR"); return std::move(m_operation); } @@ -297,6 +601,7 @@ class OperationBuilder_v8 { set_error_and_throw_exception(&m_operation, status, "CUDNN_BACKEND_OPERATION: cudnnCreate Failed"); return std::move(m_operation); } + if (m_operation.op_mode == CUDNN_BACKEND_OPERATION_CONVOLUTION_FORWARD_DESCRIPTOR) { m_operation.operationTag = "ConvFwd"; @@ -391,11 +696,13 @@ class OperationBuilder_v8 { "CUDNN_BACKEND_OPERATION: SetAttribute CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_FILTER_X Failed"); return std::move(m_operation); } + + auto dwdesc_ = m_operation.dwdesc != nullptr ? m_operation.dwdesc : m_operation.wdesc; status = cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(), CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_FILTER_DW, CUDNN_TYPE_BACKEND_DESCRIPTOR, 1, - &(m_operation.wdesc->get_backend_descriptor())); + &(dwdesc_->get_backend_descriptor())); if (status != CUDNN_STATUS_SUCCESS) { set_error_and_throw_exception( &m_operation, @@ -403,11 +710,13 @@ class OperationBuilder_v8 { "CUDNN_BACKEND_OPERATION: SetAttribute CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_FILTER_DW Failed"); return std::move(m_operation); } + + auto dydesc_ = m_operation.dydesc != nullptr ? m_operation.dydesc : m_operation.ydesc; status = cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(), CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_FILTER_DY, CUDNN_TYPE_BACKEND_DESCRIPTOR, 1, - &(m_operation.ydesc->get_backend_descriptor())); + &(dydesc_->get_backend_descriptor())); if (status != CUDNN_STATUS_SUCCESS) { set_error_and_throw_exception( &m_operation, @@ -415,6 +724,7 @@ class OperationBuilder_v8 { "CUDNN_BACKEND_OPERATION: SetAttribute CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_FILTER_DY Failed"); return std::move(m_operation); } + status = cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(), CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_FILTER_CONV_DESC, CUDNN_TYPE_BACKEND_DESCRIPTOR, @@ -458,11 +768,12 @@ class OperationBuilder_v8 { } else if (m_operation.op_mode == CUDNN_BACKEND_OPERATION_CONVOLUTION_BACKWARD_DATA_DESCRIPTOR) { m_operation.operationTag = "ConvBwdData"; + auto dxdesc_ = m_operation.dxdesc != nullptr ? m_operation.dxdesc : m_operation.xdesc; status = cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(), CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_DATA_DX, CUDNN_TYPE_BACKEND_DESCRIPTOR, 1, - &(m_operation.xdesc->get_backend_descriptor())); + &(dxdesc_->get_backend_descriptor())); if (status != CUDNN_STATUS_SUCCESS) { set_error_and_throw_exception( &m_operation, @@ -470,6 +781,7 @@ class OperationBuilder_v8 { "CUDNN_BACKEND_OPERATION: SetAttribute CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_DATA_DX Failed"); return std::move(m_operation); } + status = cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(), CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_DATA_W, CUDNN_TYPE_BACKEND_DESCRIPTOR, @@ -482,11 +794,13 @@ class OperationBuilder_v8 { "CUDNN_BACKEND_OPERATION: SetAttribute CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_DATA_W Failed"); return std::move(m_operation); } + + auto dydesc_ = m_operation.dydesc != nullptr ? m_operation.dydesc : m_operation.ydesc; status = cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(), CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_DATA_DY, CUDNN_TYPE_BACKEND_DESCRIPTOR, 1, - &(m_operation.ydesc->get_backend_descriptor())); + &(dydesc_->get_backend_descriptor())); if (status != CUDNN_STATUS_SUCCESS) { set_error_and_throw_exception( &m_operation, @@ -494,6 +808,7 @@ class OperationBuilder_v8 { "CUDNN_BACKEND_OPERATION: SetAttribute CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_DATA_DY Failed"); return std::move(m_operation); } + status = cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(), CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_DATA_CONV_DESC, CUDNN_TYPE_BACKEND_DESCRIPTOR, @@ -506,6 +821,7 @@ class OperationBuilder_v8 { "CUDNN_BACKEND_OPERATION: SetAttribute CUDNN_ATTR_OPERATION_CONVOLUTION_BWD_DATA_CONV_DESC Failed"); return std::move(m_operation); } + void *alpha = (m_operation.alphabetaType == CUDNN_TYPE_FLOAT ? static_cast(&m_operation.alpha_s) : static_cast(&m_operation.alpha_d)); void *beta = (m_operation.alphabetaType == CUDNN_TYPE_FLOAT ? static_cast(&m_operation.beta_s) @@ -563,20 +879,41 @@ class OperationBuilder_v8 { case CUDNN_POINTWISE_ELU_FWD: m_operation.operationTag = "EluFwd"; break; + case CUDNN_POINTWISE_GELU_FWD: + m_operation.operationTag = "GeluFwd"; + break; + case CUDNN_POINTWISE_SOFTPLUS_FWD: + m_operation.operationTag = "SoftplusFwd"; + break; + case CUDNN_POINTWISE_SWISH_FWD: + m_operation.operationTag = "SwishFwd"; + break; + case CUDNN_POINTWISE_RELU_BWD: + m_operation.operationTag = "ReluBwd"; + break; + case CUDNN_POINTWISE_TANH_BWD: + m_operation.operationTag = "TanhBwd"; + break; + case CUDNN_POINTWISE_SIGMOID_BWD: + m_operation.operationTag = "SigmoidBwd"; + break; + case CUDNN_POINTWISE_ELU_BWD: + m_operation.operationTag = "EluBwd"; + break; + case CUDNN_POINTWISE_GELU_BWD: + m_operation.operationTag = "GeluBwd"; + break; + case CUDNN_POINTWISE_SOFTPLUS_BWD: + m_operation.operationTag = "SoftplusBwd"; + break; + case CUDNN_POINTWISE_SWISH_BWD: + m_operation.operationTag = "SwishBwd"; + break; + default: + m_operation.operationTag = "OtherOp"; + break; } - status = cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(), - CUDNN_ATTR_OPERATION_POINTWISE_XDESC, - CUDNN_TYPE_BACKEND_DESCRIPTOR, - 1, - &(m_operation.xdesc->get_backend_descriptor())); - if (status != CUDNN_STATUS_SUCCESS) { - set_error_and_throw_exception( - &m_operation, - status, - "CUDNN_BACKEND_OPERATION: SetAttribute CUDNN_ATTR_OPERATION_POINTWISE_XDESC Failed"); - return std::move(m_operation); - } status = cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(), CUDNN_ATTR_OPERATION_POINTWISE_PW_DESCRIPTOR, CUDNN_TYPE_BACKEND_DESCRIPTOR, @@ -589,18 +926,61 @@ class OperationBuilder_v8 { "CUDNN_BACKEND_OPERATION: SetAttribute CUDNN_ATTR_OPERATION_POINTWISE_PW_DESCRIPTOR Failed"); return std::move(m_operation); } + status = cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(), - CUDNN_ATTR_OPERATION_POINTWISE_YDESC, + CUDNN_ATTR_OPERATION_POINTWISE_XDESC, CUDNN_TYPE_BACKEND_DESCRIPTOR, 1, - &(m_operation.ydesc->get_backend_descriptor())); + &(m_operation.xdesc->get_backend_descriptor())); if (status != CUDNN_STATUS_SUCCESS) { set_error_and_throw_exception( &m_operation, status, - "CUDNN_BACKEND_OPERATION: SetAttribute CUDNN_ATTR_OPERATION_POINTWISE_YDESC Failed"); + "CUDNN_BACKEND_OPERATION: SetAttribute CUDNN_ATTR_OPERATION_POINTWISE_XDESC Failed"); return std::move(m_operation); } + + if (!m_operation.is_pointwise_activation_bwd_op) { + status = cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(), + CUDNN_ATTR_OPERATION_POINTWISE_YDESC, + CUDNN_TYPE_BACKEND_DESCRIPTOR, + 1, + &(m_operation.ydesc->get_backend_descriptor())); + if (status != CUDNN_STATUS_SUCCESS) { + set_error_and_throw_exception( + &m_operation, + status, + "CUDNN_BACKEND_OPERATION: SetAttribute CUDNN_ATTR_OPERATION_POINTWISE_YDESC Failed"); + return std::move(m_operation); + } + } else { + status = cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(), + CUDNN_ATTR_OPERATION_POINTWISE_DYDESC, + CUDNN_TYPE_BACKEND_DESCRIPTOR, + 1, + &(m_operation.dydesc->get_backend_descriptor())); + if (status != CUDNN_STATUS_SUCCESS) { + set_error_and_throw_exception( + &m_operation, + status, + "CUDNN_BACKEND_OPERATION: SetAttribute CUDNN_ATTR_OPERATION_POINTWISE_DYDESC Failed"); + return std::move(m_operation); + } + + status = cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(), + CUDNN_ATTR_OPERATION_POINTWISE_DXDESC, + CUDNN_TYPE_BACKEND_DESCRIPTOR, + 1, + &(m_operation.dxdesc->get_backend_descriptor())); + if (status != CUDNN_STATUS_SUCCESS) { + set_error_and_throw_exception( + &m_operation, + status, + "CUDNN_BACKEND_OPERATION: SetAttribute CUDNN_ATTR_OPERATION_POINTWISE_DXDESC Failed"); + return std::move(m_operation); + } + } + void *alpha = (m_operation.alphabetaType == CUDNN_TYPE_FLOAT ? static_cast(&m_operation.alpha_s) : static_cast(&m_operation.alpha_d)); void *alpha2 = (m_operation.alphabetaType == CUDNN_TYPE_FLOAT ? static_cast(&m_operation.alpha2_s) @@ -629,7 +1009,8 @@ class OperationBuilder_v8 { "CUDNN_BACKEND_OPERATION: SetAttribute CUDNN_ATTR_OPERATION_POINTWISE_ALPHA2 Failed"); return std::move(m_operation); } - if (m_operation.pointwise_port_count == 3) { + + if (m_operation.pointwise_port_count == 3 && !m_operation.is_pointwise_activation_bwd_op) { status = cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(), CUDNN_ATTR_OPERATION_POINTWISE_BDESC, CUDNN_TYPE_BACKEND_DESCRIPTOR, @@ -643,6 +1024,56 @@ class OperationBuilder_v8 { return std::move(m_operation); } } + } else if (m_operation.op_mode == CUDNN_BACKEND_OPERATION_MATMUL_DESCRIPTOR) { + m_operation.operationTag = "Matmul"; + status = cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(), + CUDNN_ATTR_OPERATION_MATMUL_ADESC, + CUDNN_TYPE_BACKEND_DESCRIPTOR, + 1, + &(m_operation.amatdesc->get_backend_descriptor())); + if (status != CUDNN_STATUS_SUCCESS) { + set_error_and_throw_exception( + &m_operation, + status, + "CUDNN_BACKEND_OPERATION: SetAttribute CUDNN_ATTR_OPERATION_MATMUL_ADESC Failed"); + return std::move(m_operation); + } + status = cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(), + CUDNN_ATTR_OPERATION_MATMUL_BDESC, + CUDNN_TYPE_BACKEND_DESCRIPTOR, + 1, + &(m_operation.bmatdesc->get_backend_descriptor())); + if (status != CUDNN_STATUS_SUCCESS) { + set_error_and_throw_exception( + &m_operation, + status, + "CUDNN_BACKEND_OPERATION: SetAttribute CUDNN_ATTR_OPERATION_MATMUL_BDESC Failed"); + return std::move(m_operation); + } + status = cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(), + CUDNN_ATTR_OPERATION_MATMUL_CDESC, + CUDNN_TYPE_BACKEND_DESCRIPTOR, + 1, + &(m_operation.cmatdesc->get_backend_descriptor())); + if (status != CUDNN_STATUS_SUCCESS) { + set_error_and_throw_exception( + &m_operation, + status, + "CUDNN_BACKEND_OPERATION: SetAttribute CUDNN_ATTR_OPERATION_MATMUL_CDESC Failed"); + return std::move(m_operation); + } + status = cudnnBackendSetAttribute(m_operation.pointer->get_backend_descriptor(), + CUDNN_ATTR_OPERATION_MATMUL_DESC, + CUDNN_TYPE_BACKEND_DESCRIPTOR, + 1, + &(m_operation.matmuldesc->get_backend_descriptor())); + if (status != CUDNN_STATUS_SUCCESS) { + set_error_and_throw_exception( + &m_operation, + status, + "CUDNN_BACKEND_OPERATION: SetAttribute CUDNN_ATTR_OPERATION_MATMUL_DESC Failed"); + return std::move(m_operation); + } } status = cudnnBackendFinalize(m_operation.pointer->get_backend_descriptor()); if (status != CUDNN_STATUS_SUCCESS) { diff --git a/include/cudnn_frontend_PointWiseDesc.h b/include/cudnn_frontend_PointWiseDesc.h index 471597122..64a8dcbc0 100644 --- a/include/cudnn_frontend_PointWiseDesc.h +++ b/include/cudnn_frontend_PointWiseDesc.h @@ -44,6 +44,10 @@ namespace cudnn_frontend { /// - nan_propagation /// - upper_clip /// - lower_clip +/// - lower_clip_slope +/// - elu_alpha +/// - softplus_beta +/// - swish_beta /// /// Use PointWiseDesc_v8 to build this class. /// Describe returns a string describing the PointWise operation @@ -54,7 +58,6 @@ class PointWiseDesc_v8 : public BackendDescriptor { std::string describe() const override { std::stringstream ss; - char sep = ' '; ss << "CUDNN_BACKEND_POINTWISE_DESCRIPTOR :" << " Mode: " << (mode) << " Math precision " << (math_precision); return ss.str(); @@ -67,12 +70,22 @@ class PointWiseDesc_v8 : public BackendDescriptor { case CUDNN_POINTWISE_MUL: case CUDNN_POINTWISE_MIN: case CUDNN_POINTWISE_MAX: + case CUDNN_POINTWISE_RELU_BWD: + case CUDNN_POINTWISE_TANH_BWD: + case CUDNN_POINTWISE_SIGMOID_BWD: + case CUDNN_POINTWISE_ELU_BWD: + case CUDNN_POINTWISE_GELU_BWD: + case CUDNN_POINTWISE_SOFTPLUS_BWD: + case CUDNN_POINTWISE_SWISH_BWD: return 3; case CUDNN_POINTWISE_SQRT: case CUDNN_POINTWISE_RELU_FWD: case CUDNN_POINTWISE_TANH_FWD: case CUDNN_POINTWISE_SIGMOID_FWD: case CUDNN_POINTWISE_ELU_FWD: + case CUDNN_POINTWISE_GELU_FWD: + case CUDNN_POINTWISE_SOFTPLUS_FWD: + case CUDNN_POINTWISE_SWISH_FWD: return 2; default: return -1; @@ -90,7 +103,11 @@ class PointWiseDesc_v8 : public BackendDescriptor { mode(from.mode), nan_propagation(from.nan_propagation), upper_clip(from.upper_clip), - lower_clip(from.lower_clip) {} + lower_clip(from.lower_clip), + lower_clip_slope(from.lower_clip_slope), + elu_alpha(from.elu_alpha), + softplus_beta(from.softplus_beta), + swish_beta(from.swish_beta) {} ~PointWiseDesc_v8() = default; @@ -104,7 +121,11 @@ class PointWiseDesc_v8 : public BackendDescriptor { cudnnPointwiseMode_t mode = CUDNN_POINTWISE_ADD; cudnnNanPropagation_t nan_propagation = CUDNN_NOT_PROPAGATE_NAN; double upper_clip = std::numeric_limits::max(); - double lower_clip = std::numeric_limits::min(); + double lower_clip = 0.0; + double lower_clip_slope = 0.0; + double elu_alpha = 1.0; + double softplus_beta = 1.0; + double swish_beta = 1.0; }; //// @@ -143,6 +164,42 @@ class PointWiseDescBuilder_v8 { } /** @} */ + auto + setReluLowerClip(double lower_clip_) -> PointWiseDescBuilder_v8 & { + m_pointWiseDesc.lower_clip = lower_clip_; + return *this; + } + + auto + setReluUpperClip(double upper_clip_) -> PointWiseDescBuilder_v8 & { + m_pointWiseDesc.upper_clip = upper_clip_; + return *this; + } + + auto + setReluLowerClipSlope(double lower_clip_slope_) -> PointWiseDescBuilder_v8 & { + m_pointWiseDesc.lower_clip_slope = lower_clip_slope_; + return *this; + } + + auto + setEluAlpha(double elu_alpha_) -> PointWiseDescBuilder_v8 & { + m_pointWiseDesc.elu_alpha = elu_alpha_; + return *this; + } + + auto + setSoftplusBeta(double softplus_beta_) -> PointWiseDescBuilder_v8 & { + m_pointWiseDesc.softplus_beta = softplus_beta_; + return *this; + } + + auto + setSwishBeta(double swish_beta_) -> PointWiseDescBuilder_v8 & { + m_pointWiseDesc.swish_beta = swish_beta_; + return *this; + } + //! constructs the PointWiseDesc_v8 by calling the cudnn API //! Throws the appropriate error message PointWiseDesc_v8 && @@ -182,7 +239,7 @@ class PointWiseDescBuilder_v8 { return std::move(m_pointWiseDesc); } - if (m_pointWiseDesc.mode == CUDNN_POINTWISE_RELU_FWD) { + if (m_pointWiseDesc.mode == CUDNN_POINTWISE_RELU_FWD || m_pointWiseDesc.mode == CUDNN_POINTWISE_RELU_BWD) { status = cudnnBackendSetAttribute(m_pointWiseDesc.pointer->get_backend_descriptor(), CUDNN_ATTR_POINTWISE_NAN_PROPAGATION, CUDNN_TYPE_NAN_PROPOGATION, @@ -209,16 +266,81 @@ class PointWiseDescBuilder_v8 { return std::move(m_pointWiseDesc); } + if (m_pointWiseDesc.math_precision == CUDNN_DATA_FLOAT) { + double clamped_upper_clip = + std::min(m_pointWiseDesc.upper_clip, std::numeric_limits::max()); + status = cudnnBackendSetAttribute(m_pointWiseDesc.pointer->get_backend_descriptor(), + CUDNN_ATTR_POINTWISE_RELU_UPPER_CLIP, + CUDNN_TYPE_DOUBLE, + 1, + &clamped_upper_clip); + + } else { + status = cudnnBackendSetAttribute(m_pointWiseDesc.pointer->get_backend_descriptor(), + CUDNN_ATTR_POINTWISE_RELU_UPPER_CLIP, + CUDNN_TYPE_DOUBLE, + 1, + &m_pointWiseDesc.upper_clip); + } + if (status != CUDNN_STATUS_SUCCESS) { + set_error_and_throw_exception( + &m_pointWiseDesc, + status, + "CUDNN_BACKEND_POINTWISE_DESCRIPTOR: SetAttribute CUDNN_ATTR_POINTWISE_RELU_UPPER_CLIP, Failed"); + return std::move(m_pointWiseDesc); + } + status = cudnnBackendSetAttribute(m_pointWiseDesc.pointer->get_backend_descriptor(), - CUDNN_ATTR_POINTWISE_RELU_UPPER_CLIP, + CUDNN_ATTR_POINTWISE_RELU_LOWER_CLIP_SLOPE, CUDNN_TYPE_DOUBLE, 1, - &m_pointWiseDesc.upper_clip); + &m_pointWiseDesc.lower_clip_slope); + if (status != CUDNN_STATUS_SUCCESS) { + set_error_and_throw_exception(&m_pointWiseDesc, + status, + "CUDNN_BACKEND_POINTWISE_DESCRIPTOR: SetAttribute " + "CUDNN_ATTR_POINTWISE_RELU_LOWER_CLIP_SLOPE, Failed"); + return std::move(m_pointWiseDesc); + } + } else if (m_pointWiseDesc.mode == CUDNN_POINTWISE_ELU_FWD || m_pointWiseDesc.mode == CUDNN_POINTWISE_ELU_BWD) { + status = cudnnBackendSetAttribute(m_pointWiseDesc.pointer->get_backend_descriptor(), + CUDNN_ATTR_POINTWISE_ELU_ALPHA, + CUDNN_TYPE_DOUBLE, + 1, + &m_pointWiseDesc.elu_alpha); if (status != CUDNN_STATUS_SUCCESS) { set_error_and_throw_exception( &m_pointWiseDesc, status, - "CUDNN_BACKEND_POINTWISE_DESCRIPTOR: SetAttribute CUDNN_ATTR_POINTWISE_RELU_UPPER_CLIP, Failed"); + "CUDNN_BACKEND_POINTWISE_DESCRIPTOR: SetAttribute CUDNN_ATTR_POINTWISE_ELU_ALPHA, Failed"); + return std::move(m_pointWiseDesc); + } + } else if (m_pointWiseDesc.mode == CUDNN_POINTWISE_SOFTPLUS_FWD || + m_pointWiseDesc.mode == CUDNN_POINTWISE_SOFTPLUS_BWD) { + status = cudnnBackendSetAttribute(m_pointWiseDesc.pointer->get_backend_descriptor(), + CUDNN_ATTR_POINTWISE_SOFTPLUS_BETA, + CUDNN_TYPE_DOUBLE, + 1, + &m_pointWiseDesc.softplus_beta); + if (status != CUDNN_STATUS_SUCCESS) { + set_error_and_throw_exception( + &m_pointWiseDesc, + status, + "CUDNN_BACKEND_POINTWISE_DESCRIPTOR: SetAttribute CUDNN_ATTR_POINTWISE_SOFTPLUS_BETA, Failed"); + return std::move(m_pointWiseDesc); + } + } else if (m_pointWiseDesc.mode == CUDNN_POINTWISE_SWISH_FWD || + m_pointWiseDesc.mode == CUDNN_POINTWISE_SWISH_BWD) { + status = cudnnBackendSetAttribute(m_pointWiseDesc.pointer->get_backend_descriptor(), + CUDNN_ATTR_POINTWISE_SWISH_BETA, + CUDNN_TYPE_DOUBLE, + 1, + &m_pointWiseDesc.swish_beta); + if (status != CUDNN_STATUS_SUCCESS) { + set_error_and_throw_exception( + &m_pointWiseDesc, + status, + "CUDNN_BACKEND_POINTWISE_DESCRIPTOR: SetAttribute CUDNN_ATTR_POINTWISE_SWISH_BETA, Failed"); return std::move(m_pointWiseDesc); } } diff --git a/samples/.gdb_history b/samples/.gdb_history deleted file mode 100644 index 27167e94f..000000000 --- a/samples/.gdb_history +++ /dev/null @@ -1,256 +0,0 @@ -finish -n -n -n -n -n -n -n -n -n -n -n -where -r -where -cudnn::backend::EngineHeuristics::get_internal -b cudnn::backend::EngineHeuristics::get_internal -c -n -n -n -n -n -n -n -n -c -n -n -n -n -n -n -n -n -c -n -n -n -n -n -p strict_status -n -n -n -n -n -n -n -n -p -p iret -where -info b -c -n -n -n -n -p engcfg.isFinalized() -where -b backend.cpp:2862 -r -r -info b -q -b cudnn::backend::ExecutionPlan::finalize_internal -r -n -n -n -p engcfg.isFinalized() -n -q -b cudnn::backend::ExecutionPlan::finalize_internal -q -r -where -b cudnn::backend::Operation::finalize_internal -r -b cudnn::backend::Convolution::finalize_internal -r -n -n -n -n -p nb_elems_stride -n -n -n -n -n -n -n -n -n -n -n -n -n -n -n -n -n -p status -n -n -n -b cudnn::backend::ConvolutionForwardOperation::finalize_internal -c -n -n -s -s -s -s -s -n -n -n -n -s -s -s -s -s -n -n -n -n -n -n -n -n -n -nn -n -n -n -n -n -n -n -n -n -n -n -n -n -n -n -n -n -n -n -n -n -n -n -n -p _ -p status -wher -b cudnn::ops::setTensorNdDescriptor -r -c -c -s -n -n -n -n -n -n -n -n -n -n -n -n -n -p TENSOR_MAX_NB_ELEMENTS -n -n -n -n -n -n -n -n -n -n -n -n -n -n -n -n -n -n -n -n -n -n -n -n -n -p tensorDesc->nbElemsWithStrides -where -q -where -p m_convDesc -p m_convDesc .pointer -b cudnn_frontend_ConvDesc.h:93 -q -r -p m_convDesc.pointer -q -r -uit -q -q -r -q -r -quit -r -q -q -r -q -b conv_sample.cpp:295 -r -s -s -s -s -s -s -s -s -s -s -s -s -s -s -s -s -n -n -n -n -list 10 -where -q diff --git a/samples/Makefile b/samples/Makefile index f53e9d5d5..dea0320fe 100644 --- a/samples/Makefile +++ b/samples/Makefile @@ -82,7 +82,7 @@ NVCC ?= $(CUDA_PATH)/bin/nvcc -ccbin $(HOST_COMPILER) # internal flags NVCCFLAGS := -m${TARGET_SIZE} -CCFLAGS := -g -O0 -std=c++11 -D__CORRECT_ISO_CPP11_MATH_H_PROTO +CCFLAGS := -g -O0 -std=c++11 -Wall -Wextra -Werror -Wno-unused-function LDFLAGS := # build flags @@ -184,7 +184,7 @@ endif # Target rules all: build -build: conv_sample +build: samples check.deps: ifeq ($(SAMPLE_ENABLED),0) @@ -193,10 +193,10 @@ else @echo "Sample is ready - all dependencies have been met" endif -OBJ = fp16_dev.o fp16_emu.o conv_sample.o test_list.o catch.o helpers.o +OBJ = fp16_dev.o fp16_emu.o conv_sample.o fusion_sample.o test_list.o catch.o helpers.o INC = $(wildcard *.h) -conv_sample: $(OBJ) +samples: $(OBJ) $(EXEC) $(NVCC) $(ALL_LDFLAGS) $(GENCODE_FLAGS) -o $@ $+ $(INCLUDES) $(LIBRARIES) %.o: %.cpp $(INC) @@ -207,10 +207,10 @@ conv_sample: $(OBJ) $(EXEC) $(NVCC) $(CXX_STD) $(INCLUDES) $(ALL_CCFLAGS) $(GENCODE_FLAGS) -o $@ -c $< run: build - $(EXEC) ./conv_sample + $(EXEC) ./samples clean: rm -rf *.o - rm -rf conv_sample + rm -rf samples clobber: clean diff --git a/samples/conv_sample.cpp b/samples/conv_sample.cpp index 00e160fd1..ea985d34b 100644 --- a/samples/conv_sample.cpp +++ b/samples/conv_sample.cpp @@ -25,6 +25,7 @@ #include namespace { + bool isNonDeterministic(cudnnBackendDescriptor_t engine_config) { return cudnn_frontend::hasNumericalNote(engine_config); @@ -47,8 +48,10 @@ isNonDeterministicOrisDownConverting(cudnnBackendDescriptor_t engine_config) { bool allowAll(cudnnBackendDescriptor_t engine_config) { + (void)engine_config; return false; } + } enum { X_TENSOR, @@ -74,15 +77,16 @@ using common_convbias_descriptors = std::tuple; common_convbias_descriptors -create_conv_bias_add_act_descriptors(int64_t* x_dim_padded, +create_conv_add_bias_act_descriptors(int64_t* x_dim_padded, int64_t* padA, int64_t* convstrideA, int64_t* dilationA, int64_t* w_dim_padded, int64_t* y_dim_padded, cudnnDataType_t dataType) { - const int convDim = 2; - + (void)padA; + (void)convstrideA; + (void)dilationA; int64_t b_dim_padded[4]; b_dim_padded[0] = y_dim_padded[0]; b_dim_padded[1] = y_dim_padded[1]; @@ -273,7 +277,8 @@ run_from_heuristics(int64_t* x_dim_padded, cudnnConvolutionMode_t mode, float* devPtrX, float* devPtrW, - float* devPtrY) { + float* devPtrY, + cudnnBackendHeurMode_t heur_mode) { cudnnHandle_t handle_; try { @@ -292,7 +297,7 @@ run_from_heuristics(int64_t* x_dim_padded, auto heuristics = cudnn_frontend::EngineHeuristicsBuilder() .setOperationGraph(opGraph) - .setHeurMode(CUDNN_HEUR_MODE_INSTANT) + .setHeurMode(heur_mode) .build(); std::cout << "Heuristic has " << heuristics.getEngineConfigCount() << " configurations " << std::endl; @@ -324,6 +329,7 @@ run_from_heuristics(int64_t* x_dim_padded, } catch (cudnn_frontend::cudnnException e) { std::cout << "[ERROR] Exception " << e.what() << std::endl; + CHECK(false); } if (handle_) cudnnDestroy(handle_); @@ -358,7 +364,6 @@ run_from_global_index(int64_t* x_dim_padded, descriptors, CUDNN_BACKEND_OPERATION_CONVOLUTION_BACKWARD_FILTER_DESCRIPTOR, handle_); std::cout << opGraph.describe() << std::endl; - auto total_engines = opGraph.getEngineCount(); // We have to randomly pick one engine from [0, total_engines) // Selecting "0" by default auto engine = cudnn_frontend::EngineBuilder().setGlobalEngineIdx(0).setOperationGraph(opGraph).build(); @@ -395,6 +400,7 @@ run_from_global_index(int64_t* x_dim_padded, } catch (cudnn_frontend::cudnnException e) { std::cout << "[ERROR] Exception " << e.what() << std::endl; + CHECK(false); } if (handle_) cudnnDestroy(handle_); @@ -457,7 +463,6 @@ run_with_external_config(int64_t* x_dim_padded, std::cout << "Plan tag: " << plan.getTag() << std::endl; std::cout << plan.describe() << std::endl; - auto workspace_size = plan.getWorkspaceSize(); void* data_ptrs[] = {devPtrX, devPtrY, devPtrW}; int64_t uids[] = {'x', 'y', 'w'}; auto variantPack = cudnn_frontend::VariantPackBuilder() @@ -471,6 +476,7 @@ run_with_external_config(int64_t* x_dim_padded, } catch (cudnn_frontend::cudnnException e) { std::cout << "[ERROR] Exception " << e.what() << std::endl; + CHECK(false); } if (handle_) cudnnDestroy(handle_); @@ -480,7 +486,7 @@ run_with_external_config(int64_t* x_dim_padded, // create_plan(std::vector &) void -run_conv_bias_add_activation(int64_t* x_dim_padded, +run_conv_add_bias_activation(int64_t* x_dim_padded, int64_t* pad, int64_t* convstride, int64_t* dilation, @@ -499,7 +505,7 @@ run_conv_bias_add_activation(int64_t* x_dim_padded, checkCudnnErr(cudnnCreate(&handle_)); // Creates the necessary tensor descriptors - common_convbias_descriptors tensors = create_conv_bias_add_act_descriptors( + common_convbias_descriptors tensors = create_conv_add_bias_act_descriptors( x_dim_padded, pad, convstride, dilation, w_dim_padded, y_dim_padded, dataType); std::cout << std::get(tensors).describe() << std::endl; std::cout << std::get(tensors).describe() << std::endl; @@ -642,6 +648,7 @@ run_conv_bias_add_activation(int64_t* x_dim_padded, } catch (cudnn_frontend::cudnnException e) { std::cout << "[ERROR] Exception " << e.what() << std::endl; + CHECK(false); } } @@ -699,6 +706,7 @@ run_from_cudnn_find(int64_t* x_dim_padded, cudnn_frontend::throw_if([status]() { return (status != CUDNN_STATUS_SUCCESS); }, "Plan execute error"); } catch (cudnn_frontend::cudnnException e) { std::cout << "[ERROR] Exception " << e.what() << std::endl; + CHECK(false); } if (handle_) cudnnDestroy(handle_); @@ -706,7 +714,7 @@ run_from_cudnn_find(int64_t* x_dim_padded, } void -run_conv_bias_add_activation_with_cudnn_find(int64_t* x_dim_padded, +run_conv_add_bias_activation_with_cudnn_find(int64_t* x_dim_padded, int64_t* pad, int64_t* convstride, int64_t* dilation, @@ -725,7 +733,7 @@ run_conv_bias_add_activation_with_cudnn_find(int64_t* x_dim_padded, checkCudnnErr(cudnnCreate(&handle_)); // Creates the necessary tensor descriptors - common_convbias_descriptors tensors = create_conv_bias_add_act_descriptors( + common_convbias_descriptors tensors = create_conv_add_bias_act_descriptors( x_dim_padded, pad, convstride, dilation, w_dim_padded, y_dim_padded, dataType); std::cout << std::get(tensors).describe() << std::endl; std::cout << std::get(tensors).describe() << std::endl; @@ -856,6 +864,7 @@ run_conv_bias_add_activation_with_cudnn_find(int64_t* x_dim_padded, } catch (cudnn_frontend::cudnnException e) { std::cout << "[ERROR] Exception " << e.what() << std::endl; + CHECK(false); } } @@ -911,6 +920,7 @@ run_from_cudnn_get(int64_t* x_dim_padded, cudnn_frontend::throw_if([status]() { return (status != CUDNN_STATUS_SUCCESS); }, "Plan execute error"); } catch (cudnn_frontend::cudnnException e) { std::cout << "[ERROR] Exception " << e.what() << std::endl; + CHECK(false); } if (handle_) cudnnDestroy(handle_); diff --git a/samples/conv_sample.h b/samples/conv_sample.h index fabbf06fc..d0ffc4591 100644 --- a/samples/conv_sample.h +++ b/samples/conv_sample.h @@ -33,7 +33,12 @@ #include #include +#include +#include + #include + + #include "fp16_dev.h" #include "fp16_emu.h" #include "helpers.h" @@ -63,7 +68,8 @@ void run_from_heuristics( cudnnConvolutionMode_t mode, float * devPtrI, float * devPtrF, - float * devPtrO); + float * devPtrO, + cudnnBackendHeurMode_t heur_mode); void run_with_external_config( int64_t* dimA_padded, @@ -79,7 +85,7 @@ void run_with_external_config( float * devPtrO); void -run_conv_bias_add_activation( +run_conv_add_bias_activation( int64_t* x_dim_padded, int64_t* pad, int64_t* convstride, @@ -106,7 +112,7 @@ void run_from_cudnn_find( float * devPtrF, float * devPtrO); -void run_conv_bias_add_activation_with_cudnn_find( +void run_conv_add_bias_activation_with_cudnn_find( int64_t* x_dim_padded, int64_t* pad, int64_t* convstride, diff --git a/samples/fp16_emu.cpp b/samples/fp16_emu.cpp index 6abead8f5..dd2acbbfc 100644 --- a/samples/fp16_emu.cpp +++ b/samples/fp16_emu.cpp @@ -21,9 +21,9 @@ */ -#include "fp16_emu.h" +#include "fp16_emu.h" -#define STATIC_ASSERT(cond) do { typedef char compile_time_assert[(cond) ? 1 : -1]; } while (0) +#define STATIC_ASSERT(cond) { static_assert(cond, "static_assert failed."); } // Host functions for converting between FP32 and FP16 formats // Paulius Micikevicius (pauliusm@nvidia.com) diff --git a/samples/fusion_sample.cpp b/samples/fusion_sample.cpp new file mode 100644 index 000000000..0226eca7a --- /dev/null +++ b/samples/fusion_sample.cpp @@ -0,0 +1,815 @@ +/* + * Copyright (c) 2020, NVIDIA CORPORATION. All rights reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#include "fusion_sample.h" +#include + +void +run_conv_scale_bias_add_relu(int64_t* x_dim, + int64_t* w_dim, + int64_t* y_dim, + int64_t* s_dim, + int64_t* b_dim, + int64_t* a_dim, + cudnnDataType_t dataType, + int convDim, + int64_t* conv_padA, + int64_t* conv_dilationA, + int64_t* conv_strideA, + void* devPtrX, + void* devPtrW, + void* devPtrY, + void* devPtrS, + void* devPtrB, + void* devPtrA) { + cudnnHandle_t handle_; + try { + // Create cudnn handle + checkCudnnErr(cudnnCreate(&handle_)); + + // Creates the necessary tensor descriptors + int64_t stride[4]; + generateStrides(x_dim, stride, 4, CUDNN_TENSOR_NHWC); + auto xTensor = cudnn_frontend::TensorBuilder() + .setDim(4, x_dim) + .setStrides(4, stride) + .setId('x') + .setAlignment(16) // 16B alignment is needed to run a tensor core engine + .setDataType(dataType) + .build(); + generateStrides(w_dim, stride, 4, CUDNN_TENSOR_NHWC); + auto wTensor = cudnn_frontend::TensorBuilder() + .setDim(4, w_dim) + .setStrides(4, stride) + .setId('w') + .setAlignment(16) + .setDataType(dataType) + .build(); + + generateStrides(s_dim, stride, 4, CUDNN_TENSOR_NHWC); + auto sTensor = cudnn_frontend::TensorBuilder() + .setDim(4, s_dim) + .setStrides(4, stride) + .setId('s') + .setAlignment(16) + .setDataType(dataType) + .build(); + generateStrides(b_dim, stride, 4, CUDNN_TENSOR_NHWC); + auto bTensor = cudnn_frontend::TensorBuilder() + .setDim(4, b_dim) + .setStrides(4, stride) + .setId('b') + .setAlignment(16) + .setDataType(dataType) + .build(); + generateStrides(a_dim, stride, 4, CUDNN_TENSOR_NHWC); + auto aTensor = cudnn_frontend::TensorBuilder() + .setDim(4, a_dim) + .setStrides(4, stride) + .setId('a') + .setAlignment(16) + .setDataType(dataType) + .build(); + + generateStrides(y_dim, stride, 4, CUDNN_TENSOR_NHWC); + auto afterConvTensor = cudnn_frontend::TensorBuilder() + .setDim(4, y_dim) + .setStrides(4, stride) + .setId('A') // after conv + .setAlignment(16) + .setVirtual() + .setDataType(dataType) + .build(); + auto afterScaleTensor = cudnn_frontend::TensorBuilder() + .setDim(4, y_dim) + .setStrides(4, stride) + .setId('B') // after scale + .setAlignment(16) + .setVirtual() + .setDataType(dataType) + .build(); + auto afterBiasTensor = cudnn_frontend::TensorBuilder() + .setDim(4, y_dim) + .setStrides(4, stride) + .setId('C') // after bias + .setAlignment(16) + .setVirtual() + .setDataType(dataType) + .build(); + auto afterAddTensor = cudnn_frontend::TensorBuilder() + .setDim(4, y_dim) + .setStrides(4, stride) + .setId('D') // after add + .setAlignment(16) + .setVirtual() + .setDataType(dataType) + .build(); + auto yTensor = cudnn_frontend::TensorBuilder() + .setDim(4, y_dim) + .setStrides(4, stride) + .setId('y') // output + .setAlignment(16) + .setDataType(dataType) + .build(); + + std::cout << xTensor.describe() << std::endl; + std::cout << wTensor.describe() << std::endl; + std::cout << sTensor.describe() << std::endl; + std::cout << bTensor.describe() << std::endl; + std::cout << aTensor.describe() << std::endl; + std::cout << afterConvTensor.describe() << std::endl; + std::cout << afterScaleTensor.describe() << std::endl; + std::cout << afterBiasTensor.describe() << std::endl; + std::cout << afterAddTensor.describe() << std::endl; + std::cout << yTensor.describe() << std::endl; + + // Define the scale descriptor + auto scaleDesc = cudnn_frontend::PointWiseDescBuilder() + .setMode(CUDNN_POINTWISE_MUL) + .setMathPrecision(CUDNN_DATA_FLOAT) + .build(); + std::cout << scaleDesc.describe() << std::endl; + + // Define the bias descriptor + auto biasDesc = cudnn_frontend::PointWiseDescBuilder() + .setMode(CUDNN_POINTWISE_ADD) + .setMathPrecision(CUDNN_DATA_FLOAT) + .build(); + std::cout << biasDesc.describe() << std::endl; + + // Define the add descriptor + auto addDesc = cudnn_frontend::PointWiseDescBuilder() + .setMode(CUDNN_POINTWISE_ADD) + .setMathPrecision(CUDNN_DATA_FLOAT) + .build(); + std::cout << addDesc.describe() << std::endl; + + // Define the activation descriptor + auto actDesc = cudnn_frontend::PointWiseDescBuilder() + .setMode(CUDNN_POINTWISE_RELU_FWD) + .setMathPrecision(CUDNN_DATA_FLOAT) + .build(); + std::cout << actDesc.describe() << std::endl; + + // Define the convolution problem + auto convDesc = cudnn_frontend::ConvDescBuilder() + .setDataType(CUDNN_DATA_FLOAT) + .setMathMode(CUDNN_CROSS_CORRELATION) + .setNDims(convDim) + .setStrides(convDim, conv_strideA) + .setPrePadding(convDim, conv_padA) + .setPostPadding(convDim, conv_padA) + .setDilation(convDim, conv_dilationA) + .build(); + std::cout << convDesc.describe() << std::endl; + + float alpha = 1.0f; + float beta = 0.0f; + + // Create a convolution Node + auto conv_op = cudnn_frontend::OperationBuilder(CUDNN_BACKEND_OPERATION_CONVOLUTION_FORWARD_DESCRIPTOR) + .setxDesc(xTensor) + .setwDesc(wTensor) + .setyDesc(afterConvTensor) + .setcDesc(convDesc) + .setAlpha(alpha) + .setBeta(beta) + .build(); + std::cout << conv_op.describe() << std::endl; + + // Create a Multiplication Node with scaling parameters. + auto scale_op = cudnn_frontend::OperationBuilder(CUDNN_BACKEND_OPERATION_POINTWISE_DESCRIPTOR) + .setxDesc(conv_op.getOutputTensor()) + .setbDesc(sTensor) + .setyDesc(afterScaleTensor) + .setpwDesc(scaleDesc) + .build(); + std::cout << scale_op.describe() << std::endl; + + // Create a Bias Node. + auto bias_op = cudnn_frontend::OperationBuilder(CUDNN_BACKEND_OPERATION_POINTWISE_DESCRIPTOR) + .setxDesc(scale_op.getOutputTensor()) + .setbDesc(bTensor) + .setyDesc(afterBiasTensor) + .setpwDesc(biasDesc) + .build(); + std::cout << bias_op.describe() << std::endl; + + // Create a Add Node. + auto add_op = cudnn_frontend::OperationBuilder(CUDNN_BACKEND_OPERATION_POINTWISE_DESCRIPTOR) + .setxDesc(bias_op.getOutputTensor()) + .setbDesc(aTensor) + .setyDesc(afterAddTensor) + .setpwDesc(addDesc) + .build(); + std::cout << add_op.describe() << std::endl; + + // Create an Activation Node. + auto act_op = cudnn_frontend::OperationBuilder(CUDNN_BACKEND_OPERATION_POINTWISE_DESCRIPTOR) + .setxDesc(add_op.getOutputTensor()) + .setyDesc(yTensor) + .setpwDesc(actDesc) + .build(); + std::cout << act_op.describe() << std::endl; + + // Create an Operation Graph. In this case it is convolution scale bias add activation + std::array ops = {&conv_op, &scale_op, &bias_op, &add_op, &act_op}; + + auto opGraph = cudnn_frontend::OperationGraphBuilder() + .setHandle(handle_) + .setOperationGraph(ops.size(), ops.data()) + .build(); + + // How many engines support this operation graph ? + auto total_engines = opGraph.getEngineCount(); + std::cout << opGraph.describe() << " has " << total_engines << " engines." << std::endl; + auto engine = cudnn_frontend::EngineBuilder().setGlobalEngineIdx(0).setOperationGraph(opGraph).build(); + std::cout << engine.describe() << std::endl; + auto& knobs = engine.getSupportedKnobs(); + for (auto it = std::begin(knobs); it != std::end(knobs); ++it) { + std::cout << it->describe() << std::endl; + } + + // Create the requisite engine config + auto engine_config = cudnn_frontend::EngineConfigBuilder().setEngine(engine).build(); + std::cout << engine_config.describe() << std::endl; + + auto plan = cudnn_frontend::ExecutionPlanBuilder().setHandle(handle_).setEngineConfig(engine_config).build(); + + std::cout << "Plan tag: " << plan.getTag() << std::endl; + + auto workspace_size = plan.getWorkspaceSize(); + std::cout << plan.describe() << " requires workspace " << workspace_size << std::endl; + + void* workspace_ptr = nullptr; + if (workspace_size > 0) { + checkCudaErr(cudaMalloc(&workspace_ptr, workspace_size)); + } + void* data_ptrs[] = {devPtrX, devPtrY, devPtrW, devPtrS, devPtrB, devPtrA}; + int64_t uids[] = {'x', 'y', 'w', 's', 'b', 'a'}; + auto variantPack = cudnn_frontend::VariantPackBuilder() + .setWorkspacePointer(workspace_ptr) + .setDataPointers(6, data_ptrs) + .setUids(6, uids) + .build(); + std::cout << "variantPack " << variantPack.describe() << std::endl; + cudnnStatus_t status = cudnnBackendExecute(handle_, plan.get_raw_desc(), variantPack.get_raw_desc()); + if (workspace_size > 0) { + checkCudaErr(cudaFree(workspace_ptr)); + } + cudnn_frontend::throw_if([status]() { return (status != CUDNN_STATUS_SUCCESS); }, "Plan execute error"); + + } catch (cudnn_frontend::cudnnException e) { + std::cout << "[ERROR] Exception " << e.what() << std::endl; + CHECK(false); + } +} + +void +run_matmul_bias_gelu(int64_t* a_dim, + int64_t* b_dim, + int64_t* c_dim, + int64_t* z_dim, + cudnnDataType_t dataType, + void* devPtrA, + void* devPtrB, + void* devPtrC, + void* devPtrZ) { + cudnnHandle_t handle_; + try { + // Create cudnn handle + checkCudnnErr(cudnnCreate(&handle_)); + + // Creates the necessary tensor descriptors + int64_t stride[3]; + // the intension is to compute stride for a [1, M, K] matrix with K in the inner most dimension, and + // CUDNN_TENSOR_NCHW is a borrowed notation + generateStrides(a_dim, stride, 3, CUDNN_TENSOR_NCHW); + auto aMatrixTensor = cudnn_frontend::TensorBuilder() + .setDim(3, a_dim) + .setStrides(3, stride) + .setId('a') + .setAlignment(16) // 16B alignment is needed to run a tensor core engine + .setDataType(dataType) + .build(); + generateStrides(b_dim, stride, 3, CUDNN_TENSOR_NCHW); + auto bMatrixTensor = cudnn_frontend::TensorBuilder() + .setDim(3, b_dim) + .setStrides(3, stride) + .setId('b') + .setAlignment(16) + .setDataType(dataType) + .build(); + + generateStrides(z_dim, stride, 3, CUDNN_TENSOR_NCHW); + auto biasTensor = cudnn_frontend::TensorBuilder() + .setDim(3, z_dim) + .setStrides(3, stride) + .setId('z') + .setAlignment(16) + .setDataType(dataType) + .build(); + + generateStrides(c_dim, stride, 3, CUDNN_TENSOR_NCHW); + auto afterMatMulTensor = cudnn_frontend::TensorBuilder() + .setDim(3, c_dim) + .setStrides(3, stride) + .setId('A') // after matmul + .setAlignment(16) + .setVirtual() + .setDataType(dataType) + .build(); + auto afterBiasTensor = cudnn_frontend::TensorBuilder() + .setDim(3, c_dim) + .setStrides(3, stride) + .setId('B') // after bias + .setAlignment(16) + .setVirtual() + .setDataType(dataType) + .build(); + auto outputTensor = cudnn_frontend::TensorBuilder() + .setDim(3, c_dim) + .setStrides(3, stride) + .setId('c') // output after gelu + .setAlignment(16) + .setDataType(dataType) + .build(); + + std::cout << aMatrixTensor.describe() << std::endl; + std::cout << bMatrixTensor.describe() << std::endl; + std::cout << biasTensor.describe() << std::endl; + std::cout << afterMatMulTensor.describe() << std::endl; + std::cout << afterBiasTensor.describe() << std::endl; + std::cout << outputTensor.describe() << std::endl; + + // Define the bias descriptor + auto biasDesc = cudnn_frontend::PointWiseDescBuilder() + .setMode(CUDNN_POINTWISE_ADD) + .setMathPrecision(CUDNN_DATA_FLOAT) + .build(); + std::cout << biasDesc.describe() << std::endl; + + // Define the activation descriptor + auto actDesc = cudnn_frontend::PointWiseDescBuilder() + .setMode(CUDNN_POINTWISE_GELU_FWD) + .setMathPrecision(CUDNN_DATA_FLOAT) + .build(); + std::cout << actDesc.describe() << std::endl; + + // Define the matmul desc + auto matmulDesc = cudnn_frontend::MatMulDescBuilder().setMathPrecision(CUDNN_DATA_FLOAT).build(); + std::cout << matmulDesc.describe() << std::endl; + + // Create a matmul Node + auto matmul_op = cudnn_frontend::OperationBuilder(CUDNN_BACKEND_OPERATION_MATMUL_DESCRIPTOR) + .setaMatDesc(aMatrixTensor) + .setbMatDesc(bMatrixTensor) + .setcMatDesc(afterMatMulTensor) + .setmatmulDesc(matmulDesc) + .build(); + std::cout << matmul_op.describe() << std::endl; + + // Create a Bias Node. + auto bias_op = cudnn_frontend::OperationBuilder(CUDNN_BACKEND_OPERATION_POINTWISE_DESCRIPTOR) + .setxDesc(matmul_op.getOutputTensor()) + .setbDesc(biasTensor) + .setyDesc(afterBiasTensor) + .setpwDesc(biasDesc) + .build(); + std::cout << bias_op.describe() << std::endl; + + // Create an Activation Node. + auto act_op = cudnn_frontend::OperationBuilder(CUDNN_BACKEND_OPERATION_POINTWISE_DESCRIPTOR) + .setxDesc(bias_op.getOutputTensor()) + .setyDesc(outputTensor) + .setpwDesc(actDesc) + .build(); + std::cout << act_op.describe() << std::endl; + + // Create an Operation Graph. In this case it is matmul bias activation + std::array ops = {&matmul_op, &bias_op, &act_op}; + + auto opGraph = cudnn_frontend::OperationGraphBuilder() + .setHandle(handle_) + .setOperationGraph(ops.size(), ops.data()) + .build(); + + // How many engines support this operation graph ? + auto total_engines = opGraph.getEngineCount(); + std::cout << opGraph.describe() << " has " << total_engines << " engines." << std::endl; + auto engine = cudnn_frontend::EngineBuilder().setGlobalEngineIdx(0).setOperationGraph(opGraph).build(); + std::cout << engine.describe() << std::endl; + auto& knobs = engine.getSupportedKnobs(); + for (auto it = std::begin(knobs); it != std::end(knobs); ++it) { + std::cout << it->describe() << std::endl; + } + + // Create the requisite engine config + auto engine_config = cudnn_frontend::EngineConfigBuilder().setEngine(engine).build(); + std::cout << engine_config.describe() << std::endl; + + auto plan = cudnn_frontend::ExecutionPlanBuilder().setHandle(handle_).setEngineConfig(engine_config).build(); + + std::cout << "Plan tag: " << plan.getTag() << std::endl; + + auto workspace_size = plan.getWorkspaceSize(); + std::cout << plan.describe() << " requires workspace " << workspace_size << std::endl; + + void* workspace_ptr = nullptr; + if (workspace_size > 0) { + checkCudaErr(cudaMalloc(&workspace_ptr, workspace_size)); + } + void* data_ptrs[] = {devPtrA, devPtrB, devPtrC, devPtrZ}; + int64_t uids[] = {'a', 'b', 'c', 'z'}; + auto variantPack = cudnn_frontend::VariantPackBuilder() + .setWorkspacePointer(workspace_ptr) + .setDataPointers(4, data_ptrs) + .setUids(4, uids) + .build(); + std::cout << "variantPack " << variantPack.describe() << std::endl; + cudnnStatus_t status = cudnnBackendExecute(handle_, plan.get_raw_desc(), variantPack.get_raw_desc()); + if (workspace_size > 0) { + checkCudaErr(cudaFree(workspace_ptr)); + } + cudnn_frontend::throw_if([status]() { return (status != CUDNN_STATUS_SUCCESS); }, "Plan execute error"); + + } catch (cudnn_frontend::cudnnException e) { + std::cout << "[ERROR] Exception " << e.what() << std::endl; + CHECK(false); + } +} + +void +run_conv_drelu(int64_t* x_dim, + int64_t* pad, + int64_t* convstride, + int64_t* dilation, + int64_t* w_dim, + int64_t* y_dim, + cudnnDataType_t dataType, + void* dev_ptr_x, + void* dev_ptr_w, + void* dev_ptr_y, + void* dev_ptr_bwd_act_x) { + cudnnHandle_t handle_; + try { + int convDim = 2; + + checkCudnnErr(cudnnCreate(&handle_)); + + int64_t x_id = 101; + int64_t w_id = 102; + int64_t bwd_act_x_id = 201; + int64_t y_id = 301; + + int64_t after_conv_id = 1001; + + int64_t x_stride_padded[4]; + int64_t y_stride_padded[4]; + int64_t w_stride_padded[4]; + + generateStrides(w_dim, w_stride_padded, 4, CUDNN_TENSOR_NHWC); + generateStrides(x_dim, x_stride_padded, 4, CUDNN_TENSOR_NHWC); + generateStrides(y_dim, y_stride_padded, 4, CUDNN_TENSOR_NHWC); + + auto x_tensor = cudnn_frontend::TensorBuilder() + .setDim(4, x_dim) + .setStrides(4, x_stride_padded) + .setId(x_id) + .setAlignment(4) + .setDataType(dataType) + .build(); + + auto w_tensor = cudnn_frontend::TensorBuilder() + .setDim(4, w_dim) + .setStrides(4, w_stride_padded) + .setId(w_id) + .setAlignment(4) + .setDataType(dataType) + .build(); + + auto after_conv_tensor = cudnn_frontend::TensorBuilder() + .setDim(4, y_dim) + .setStrides(4, y_stride_padded) + .setId(after_conv_id) + .setAlignment(4) + .setVirtual() + .setDataType(dataType) + .build(); + + auto bwd_act_x_tensor = cudnn_frontend::TensorBuilder() + .setDim(4, y_dim) + .setStrides(4, y_stride_padded) + .setId(bwd_act_x_id) + .setAlignment(4) + .setDataType(dataType) + .build(); + + auto after_activation_tensor = cudnn_frontend::TensorBuilder() + .setDim(4, y_dim) + .setStrides(4, y_stride_padded) + .setId(y_id) + .setAlignment(4) + .setDataType(dataType) + .build(); + + std::cout << x_tensor.describe() << std::endl; + std::cout << w_tensor.describe() << std::endl; + std::cout << after_conv_tensor.describe() << std::endl; + std::cout << bwd_act_x_tensor.describe() << std::endl; + std::cout << after_activation_tensor.describe() << std::endl; + + auto convDesc = cudnn_frontend::ConvDescBuilder() + .setDataType(CUDNN_DATA_FLOAT) + .setMathMode(CUDNN_CROSS_CORRELATION) + .setNDims(convDim) + .setStrides(convDim, convstride) + .setPrePadding(convDim, pad) + .setPostPadding(convDim, pad) + .setDilation(convDim, dilation) + .build(); + std::cout << convDesc.describe() << std::endl; + + auto conv_op = cudnn_frontend::OperationBuilder(CUDNN_BACKEND_OPERATION_CONVOLUTION_FORWARD_DESCRIPTOR) + .setxDesc(x_tensor) + .setwDesc(w_tensor) + .setyDesc(after_conv_tensor) + .setcDesc(convDesc) + .setAlpha(1.0f) + .setBeta(0.0f) + .build(); + std::cout << conv_op.describe() << std::endl; + + auto actDesc = cudnn_frontend::PointWiseDescBuilder() + .setMode(CUDNN_POINTWISE_RELU_BWD) + .setMathPrecision(CUDNN_DATA_FLOAT) + .build(); + std::cout << actDesc.describe() << std::endl; + + auto act_op = cudnn_frontend::OperationBuilder(CUDNN_BACKEND_OPERATION_POINTWISE_DESCRIPTOR) + .setdyDesc(after_conv_tensor) + .setxDesc(bwd_act_x_tensor) + .setdxDesc(after_activation_tensor) + .setpwDesc(actDesc) + .build(); + std::cout << act_op.describe() << std::endl; + + std::array ops = {&conv_op, &act_op}; + + auto opGraph = cudnn_frontend::OperationGraphBuilder() + .setHandle(handle_) + .setOperationGraph(ops.size(), ops.data()) + .build(); + + // How many engines support this operation graph ? + auto total_engines = opGraph.getEngineCount(); + std::cout << opGraph.describe() << " has " << total_engines << " engines." << std::endl; + // We have to randomly pick one engine from [0, total_engines) + // Selecting "0" by default + auto engine = cudnn_frontend::EngineBuilder().setGlobalEngineIdx(0).setOperationGraph(opGraph).build(); + std::cout << engine.describe() << std::endl; + auto& knobs = engine.getSupportedKnobs(); + for (auto it = std::begin(knobs); it != std::end(knobs); ++it) { + std::cout << it->describe() << std::endl; + } + if (knobs.begin() != knobs.end()) { + std::cout << "Updated knob choice" << std::endl; + knobs.begin()->setChoice(knobs.begin()->getMinValue() + 1); + std::cout << knobs.begin()->describe() << std::endl; + } + + // Create the requisite engine config + auto engine_config = cudnn_frontend::EngineConfigBuilder().setEngine(engine).build(); + std::cout << engine_config.describe() << std::endl; + + auto plan = cudnn_frontend::ExecutionPlanBuilder().setHandle(handle_).setEngineConfig(engine_config).build(); + + std::cout << "Plan tag: " << plan.getTag() << std::endl; + + auto workspace_size = plan.getWorkspaceSize(); + std::cout << plan.describe() << " requires workspace " << workspace_size << std::endl; + + void* workspace_ptr = nullptr; + if (workspace_size > 0) { + checkCudaErr(cudaMalloc(&workspace_ptr, workspace_size)); + } + void* data_ptrs[] = {dev_ptr_x, dev_ptr_w, dev_ptr_bwd_act_x, dev_ptr_y}; + int64_t uids[] = {x_id, w_id, bwd_act_x_id, y_id}; + + auto variantPack = cudnn_frontend::VariantPackBuilder() + .setWorkspacePointer(workspace_ptr) + .setDataPointers(4, data_ptrs) + .setUids(4, uids) + .build(); + std::cout << "variantPack " << variantPack.describe() << std::endl; + + cudnnStatus_t status = cudnnBackendExecute(handle_, plan.get_raw_desc(), variantPack.get_raw_desc()); + if (workspace_size > 0) { + checkCudaErr(cudaFree(workspace_ptr)); + } + + cudnn_frontend::throw_if([status]() { return (status != CUDNN_STATUS_SUCCESS); }, "Plan execute error"); + + } catch (cudnn_frontend::cudnnException e) { + std::cout << "[ERROR] Exception " << e.what() << std::endl; + CHECK(false); + } +} + +void +run_dgrad_drelu(int64_t* dx_dim, + int64_t* pad, + int64_t* convstride, + int64_t* dilation, + int64_t* w_dim, + int64_t* dy_dim, + cudnnDataType_t dataType, + void* dev_ptr_dx, + void* dev_ptr_w, + void* dev_ptr_dy, + void* dev_ptr_bwd_act_x) { + cudnnHandle_t handle_; + try { + int convDim = 2; + + checkCudnnErr(cudnnCreate(&handle_)); + + int64_t dx_id = 101; + int64_t w_id = 102; + int64_t bwd_act_x_id = 201; + int64_t dy_id = 301; + + int64_t after_dgrad_id = 1001; + + int64_t dx_stride[4]; + int64_t dy_stride[4]; + int64_t w_stride[4]; + + generateStrides(w_dim, w_stride, 4, CUDNN_TENSOR_NHWC); + generateStrides(dx_dim, dx_stride, 4, CUDNN_TENSOR_NHWC); + generateStrides(dy_dim, dy_stride, 4, CUDNN_TENSOR_NHWC); + + auto after_dgrad_dx_tensor = cudnn_frontend::TensorBuilder() + .setDim(4, dx_dim) + .setStrides(4, dx_stride) + .setId(after_dgrad_id) + .setAlignment(4) + .setVirtual() + .setDataType(dataType) + .build(); + + auto w_tensor = cudnn_frontend::TensorBuilder() + .setDim(4, w_dim) + .setStrides(4, w_stride) + .setId(w_id) + .setAlignment(4) + .setDataType(dataType) + .build(); + + auto dy_tensor = cudnn_frontend::TensorBuilder() + .setDim(4, dy_dim) + .setStrides(4, dy_stride) + .setId(dy_id) + .setAlignment(4) + .setDataType(dataType) + .build(); + + auto bwd_act_x_tensor = cudnn_frontend::TensorBuilder() + .setDim(4, dx_dim) + .setStrides(4, dx_stride) + .setId(bwd_act_x_id) + .setAlignment(4) + .setDataType(dataType) + .build(); + + auto after_bwd_activation_dx_tensor = cudnn_frontend::TensorBuilder() + .setDim(4, dx_dim) + .setStrides(4, dx_stride) + .setId(dx_id) + .setAlignment(4) + .setDataType(dataType) + .build(); + + std::cout << after_dgrad_dx_tensor.describe() << std::endl; + std::cout << w_tensor.describe() << std::endl; + std::cout << dy_tensor.describe() << std::endl; + std::cout << bwd_act_x_tensor.describe() << std::endl; + std::cout << after_bwd_activation_dx_tensor.describe() << std::endl; + + auto convDesc = cudnn_frontend::ConvDescBuilder() + .setDataType(CUDNN_DATA_FLOAT) + .setMathMode(CUDNN_CROSS_CORRELATION) + .setNDims(convDim) + .setStrides(convDim, convstride) + .setPrePadding(convDim, pad) + .setPostPadding(convDim, pad) + .setDilation(convDim, dilation) + .build(); + std::cout << convDesc.describe() << std::endl; + + auto conv_op = cudnn_frontend::OperationBuilder(CUDNN_BACKEND_OPERATION_CONVOLUTION_BACKWARD_DATA_DESCRIPTOR) + .setdyDesc(dy_tensor) + // .setyDesc(dy_tensor) + .setwDesc(w_tensor) + .setdxDesc(after_dgrad_dx_tensor) + // .setxDesc(after_dgrad_dx_tensor) + .setcDesc(convDesc) + .setAlpha(1.0f) + .setBeta(0.0f) + .build(); + std::cout << conv_op.describe() << std::endl; + + auto actDesc = cudnn_frontend::PointWiseDescBuilder() + .setMode(CUDNN_POINTWISE_RELU_BWD) + .setMathPrecision(CUDNN_DATA_FLOAT) + .build(); + std::cout << actDesc.describe() << std::endl; + + auto act_op = cudnn_frontend::OperationBuilder(CUDNN_BACKEND_OPERATION_POINTWISE_DESCRIPTOR) + .setdyDesc(after_dgrad_dx_tensor) + .setxDesc(bwd_act_x_tensor) + .setdxDesc(after_bwd_activation_dx_tensor) + .setpwDesc(actDesc) + .build(); + std::cout << act_op.describe() << std::endl; + + std::array ops = {&conv_op, &act_op}; + + auto opGraph = cudnn_frontend::OperationGraphBuilder() + .setHandle(handle_) + .setOperationGraph(ops.size(), ops.data()) + .build(); + + // How many engines support this operation graph ? + auto total_engines = opGraph.getEngineCount(); + std::cout << opGraph.describe() << " has " << total_engines << " engines." << std::endl; + // We have to randomly pick one engine from [0, total_engines) + // Selecting "0" by default + auto engine = cudnn_frontend::EngineBuilder().setGlobalEngineIdx(0).setOperationGraph(opGraph).build(); + std::cout << engine.describe() << std::endl; + auto& knobs = engine.getSupportedKnobs(); + for (auto it = std::begin(knobs); it != std::end(knobs); ++it) { + std::cout << it->describe() << std::endl; + } + if (knobs.begin() != knobs.end()) { + std::cout << "Updated knob choice" << std::endl; + knobs.begin()->setChoice(knobs.begin()->getMinValue() + 1); + std::cout << knobs.begin()->describe() << std::endl; + } + + // Create the requisite engine config + auto engine_config = cudnn_frontend::EngineConfigBuilder().setEngine(engine).build(); + std::cout << engine_config.describe() << std::endl; + + auto plan = cudnn_frontend::ExecutionPlanBuilder().setHandle(handle_).setEngineConfig(engine_config).build(); + + std::cout << "Plan tag: " << plan.getTag() << std::endl; + + auto workspace_size = plan.getWorkspaceSize(); + std::cout << plan.describe() << " requires workspace " << workspace_size << std::endl; + + void* workspace_ptr = nullptr; + if (workspace_size > 0) { + checkCudaErr(cudaMalloc(&workspace_ptr, workspace_size)); + } + void* data_ptrs[] = {dev_ptr_dx, dev_ptr_w, dev_ptr_bwd_act_x, dev_ptr_dy}; + int64_t uids[] = {dx_id, w_id, bwd_act_x_id, dy_id}; + + auto variantPack = cudnn_frontend::VariantPackBuilder() + .setWorkspacePointer(workspace_ptr) + .setDataPointers(4, data_ptrs) + .setUids(4, uids) + .build(); + std::cout << "variantPack " << variantPack.describe() << std::endl; + + cudnnStatus_t status = cudnnBackendExecute(handle_, plan.get_raw_desc(), variantPack.get_raw_desc()); + if (workspace_size > 0) { + checkCudaErr(cudaFree(workspace_ptr)); + } + + cudnn_frontend::throw_if([status]() { return (status != CUDNN_STATUS_SUCCESS); }, "Plan execute error"); + + } catch (cudnn_frontend::cudnnException e) { + std::cout << "[ERROR] Exception " << e.what() << std::endl; + CHECK(false); + } +} diff --git a/samples/fusion_sample.h b/samples/fusion_sample.h new file mode 100644 index 000000000..4e9976daf --- /dev/null +++ b/samples/fusion_sample.h @@ -0,0 +1,94 @@ +/* + * Copyright (c) 2020, NVIDIA CORPORATION. All rights reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#pragma once + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include "fp16_dev.h" +#include "fp16_emu.h" +#include "helpers.h" + +void +run_conv_scale_bias_add_relu(int64_t* x_dim, + int64_t* w_dim, + int64_t* y_dim, + int64_t* s_dim, + int64_t* b_dim, + int64_t* a_dim, + cudnnDataType_t dataType, + int convDim, + int64_t* conv_padA, + int64_t* conv_dilationA, + int64_t* conv_strideA, + void* devPtrX, + void* devPtrW, + void* devPtrY, + void* devPtrS, + void* devPtrB, + void* devPtrA); + +void +run_matmul_bias_gelu(int64_t* a_dim, + int64_t* b_dim, + int64_t* c_dim, + int64_t* z_dim, + cudnnDataType_t dataType, + void* devPtrA, + void* devPtrB, + void* devPtrC, + void* devPtrZ); + +void +run_conv_drelu(int64_t* x, + int64_t* pad, + int64_t* convstride, + int64_t* dilation, + int64_t* w, + int64_t* y, + cudnnDataType_t dataType, + void* devPtrX, + void* devPtrW, + void* devPtrY, + void* devPtrExtra_X); + +void +run_dgrad_drelu(int64_t* x, + int64_t* pad, + int64_t* convstride, + int64_t* dilation, + int64_t* w, + int64_t* y, + cudnnDataType_t dataType, + void* devPtrX, + void* devPtrW, + void* devPtrY, + void* devPtrExtra_X); diff --git a/samples/helpers.h b/samples/helpers.h index a97ca9bf4..2fdebd477 100644 --- a/samples/helpers.h +++ b/samples/helpers.h @@ -29,7 +29,9 @@ #include #include -#include "cudnn_frontend.h" +#include "catch.hpp" + +#include #include "fp16_dev.h" #include "fp16_emu.h" @@ -77,20 +79,28 @@ static int32_t doFma(int8_t fval, int8_t ival, int32_t tmp) { // Garbage function, resolves overloaded function ambiguity for an invalid type combination static int32_t doFma(float fval, float ival, int32_t tmp) { + (void)fval; + (void)ival; + (void)tmp; return 0; } // Garbage function, resolves overloaded function ambiguity for an invalid type combination static int32_t doFma(half1 fval, half1 ival, int32_t tmp) { + (void)fval; + (void)ival; + (void)tmp; return 0; } // Garbage function, resolves overloaded function ambiguity for an invalid type combination static float doFma(int8_t fval, int8_t ival, float tmp) { + (void)fval; + (void)ival; + (void)tmp; return 0; } - #define checkCudaErr(...) \ do { \ int err = checkCudaError(__VA_ARGS__, #__VA_ARGS__, __FILE__, __LINE__); \ @@ -154,6 +164,8 @@ explicit SurfaceManager(int64_t Xsize, int64_t Wsize, int64_t Ysize, int ref_siz } explicit SurfaceManager(int64_t Xsize, int64_t Wsize, int64_t Ysize, int64_t Bsize, bool isConvBiasAdd) { + (void)isConvBiasAdd; + checkCudaErr(cudaMalloc((void**)&(devPtrX), (Xsize) * sizeof(devPtrX[0]))); checkCudaErr(cudaMalloc((void**)&(devPtrW), (Wsize) * sizeof(devPtrW[0]))); checkCudaErr(cudaMalloc((void**)&(devPtrY), (Ysize) * sizeof(devPtrY[0]))); @@ -216,3 +228,30 @@ explicit SurfaceManager(int64_t Xsize, int64_t Wsize, int64_t Ysize, int64_t Bsi } }; + + + +template +struct Surface { + T_ELEM* devPtr = NULL; + T_ELEM* hostPtr = NULL; + T_ELEM* hostRefPtr = NULL; + + explicit Surface(int64_t size, bool hasRef) { + checkCudaErr(cudaMalloc((void**)&(devPtr), (size) * sizeof(devPtr[0]))); + hostPtr = (T_ELEM*) calloc(size, sizeof(hostPtr[0])); + if(hasRef) { + hostRefPtr = (T_ELEM*) calloc(size, sizeof(hostRefPtr[0])); + } + initImage(hostPtr, size); + checkCudaErr(cudaMemcpy(devPtr, hostPtr, sizeof(hostPtr[0]) * size, cudaMemcpyHostToDevice)); + checkCudaErr(cudaDeviceSynchronize()); + } + + ~Surface() { + if (devPtr) cudaFree(devPtr); + if (hostPtr) free(hostPtr); + if (hostRefPtr) free(hostRefPtr); + } + +}; diff --git a/samples/samples_common.mk b/samples/samples_common.mk index ed8f5644f..75711ed52 100644 --- a/samples/samples_common.mk +++ b/samples/samples_common.mk @@ -29,7 +29,7 @@ endif #ifneq ($(TARGET_ARCH), ppc64le) endif #ifeq ($(CUDA_VERSION),8000 ) SMS_A100 = -ifeq ($(CUDA_VERSION), 11000) +ifeq ($(shell test $(CUDA_VERSION) -ge 11000; echo $$?),0) SMS_A100 = 80 endif diff --git a/samples/test_list.cpp b/samples/test_list.cpp index 2203dcd4e..423e44a89 100644 --- a/samples/test_list.cpp +++ b/samples/test_list.cpp @@ -26,6 +26,83 @@ #include "cpu_references.h" #include "conv_sample.h" +#include "fusion_sample.h" + +TEST_CASE("Tensor creation comparison", "[frontend][comparison][backend]") { + // Consider creation of a 2d Tensor + // n,c,h,w as 4,32,32,32 + std::array tensor_dim = {4, 32, 32, 32}; + std::array tensor_str = {32768, 1024, 32, 1}; // NCHW format + cudnnDataType_t data_type = CUDNN_DATA_FLOAT; + int64_t alignment = sizeof(float); + int64_t id = 0xD0D0CACA; // Some magic number + + // Creating Frontend code + + try { + auto tensor = cudnn_frontend::TensorBuilder() + .setDim(tensor_dim.size(), tensor_dim.data()) + .setStrides(tensor_str.size(), tensor_str.data()) + .setId(id) + .setAlignment(alignment) + .setDataType(data_type) + .build(); + + std::cout << "Created Tensor" << tensor.describe() << std::endl; + } catch (cudnn_frontend::cudnnException e) { + std::cout << "Exception in tensor creation " << e.what() << std::endl; + } + + auto check_status = [](cudnnStatus_t status) { REQUIRE (status == CUDNN_STATUS_SUCCESS); }; + + // Equivalent Backend code + { + cudnnBackendDescriptor_t tensor; + + // Allocate memory for the descriptor + // This is a c-style malloc which requires + // a equivalent 1-time deletion. Raw backend code + // requires tracking allocation and free unlike raw + // pointers, else it may lead to memory leak. + check_status (cudnnBackendCreateDescriptor(CUDNN_BACKEND_TENSOR_DESCRIPTOR, &tensor)); + + // Set the following attributes + // Dimensions, Strides, Alignment, Id, DataType + check_status (cudnnBackendSetAttribute(tensor, + CUDNN_ATTR_TENSOR_DATA_TYPE, + CUDNN_TYPE_DATA_TYPE, + 1, + &data_type)); + check_status (cudnnBackendSetAttribute(tensor, + CUDNN_ATTR_TENSOR_DIMENSIONS, + CUDNN_TYPE_INT64, + tensor_dim.size(), + tensor_dim.data())); + check_status (cudnnBackendSetAttribute(tensor, + CUDNN_ATTR_TENSOR_STRIDES, + CUDNN_TYPE_INT64, + tensor_str.size(), + tensor_str.data())); + check_status (cudnnBackendSetAttribute(tensor, + CUDNN_ATTR_TENSOR_UNIQUE_ID, + CUDNN_TYPE_INT64, + 1, + &id)); + check_status (cudnnBackendSetAttribute(tensor, + CUDNN_ATTR_TENSOR_BYTE_ALIGNMENT, + CUDNN_TYPE_INT64, + 1, + &alignment)); + // Finalize the descriptor + check_status (cudnnBackendFinalize(tensor)); + + // Free the memory allocated above. Any short-circuit return will + // cause a memory leak. + check_status (cudnnBackendDestroyDescriptor(tensor)); + } + + +} TEST_CASE("Use global(index) for execution", "[frontend][global_index][wgrad]" ) { INFO("TEST_CASE :: Use global index for engine generation"); @@ -36,9 +113,6 @@ TEST_CASE("Use global(index) for execution", "[frontend][global_index][wgrad]" ) int64_t dilationA[] = {1, 1}; int64_t convstrideA[] = {1, 1}; - int64_t dimA_padded[4]; - int64_t outdimA_padded[4]; - int64_t filterdimA_padded[4]; int numErrors = 0; @@ -48,31 +122,22 @@ TEST_CASE("Use global(index) for execution", "[frontend][global_index][wgrad]" ) outdimA[dim + 2] = getFwdConvOutputDim(dimA[dim + 2], padA[dim], filterdimA[dim + 2], convstrideA[dim], dilationA[dim]); } - for (int i = 0; i < 4; i++) { - dimA_padded[i] = dimA[i]; - outdimA_padded[i] = outdimA[i]; - filterdimA_padded[i] = filterdimA[i]; - } cudnnConvolutionMode_t mode = CUDNN_CONVOLUTION; - printf("====USER DIMENSIONS====\n"); + printf("====DIMENSIONS====\n"); printf("input dims are %" PRId64 ", %" PRId64 ", %" PRId64 ", %" PRId64 "\n", dimA[0], dimA[1], dimA[2], dimA[3]); printf("filter dims are %" PRId64 ", %" PRId64 ", %" PRId64 ", %" PRId64 "\n", filterdimA[0], filterdimA[1], filterdimA[2], filterdimA[3]); printf("output dims are %" PRId64 ", %" PRId64 ", %" PRId64 ", %" PRId64 "\n", outdimA[0], outdimA[1], outdimA[2], outdimA[3]); - printf("====PADDING DIMENSIONS====\n"); - printf("padded input dims are %" PRId64 ", %" PRId64 ", %" PRId64 ", %" PRId64 "\n", dimA_padded[0], dimA_padded[1], dimA_padded[2], dimA_padded[3]); - printf("padded filter dims are %" PRId64 ", %" PRId64 ", %" PRId64 ", %" PRId64 "\n", filterdimA_padded[0], filterdimA_padded[1], filterdimA_padded[2], filterdimA_padded[3]); - printf("padded output dims are %" PRId64 ", %" PRId64 ", %" PRId64 ", %" PRId64 "\n", outdimA_padded[0], outdimA_padded[1], outdimA_padded[2], outdimA_padded[3]); - int Xsize = dimA_padded[0] * dimA_padded[1] * dimA_padded[2] * dimA_padded[3]; - int Wsize = filterdimA_padded[0] * filterdimA_padded[1] * filterdimA_padded[2] * filterdimA_padded[3]; - int Ysize = outdimA_padded[0] * outdimA_padded[1] * outdimA_padded[2] * outdimA_padded[3]; + int Xsize = dimA[0] * dimA[1] * dimA[2] * dimA[3]; + int Wsize = filterdimA[0] * filterdimA[1] * filterdimA[2] * filterdimA[3]; + int Ysize = outdimA[0] * outdimA[1] * outdimA[2] * outdimA[3]; SurfaceManager sm(Xsize, Wsize, Ysize, Wsize); - run_from_global_index(dimA, padA, convstrideA, dilationA, filterdimA_padded, outdimA, CUDNN_DATA_FLOAT, mode, sm.devPtrX, sm.devPtrW, sm.devPtrY); + run_from_global_index(dimA, padA, convstrideA, dilationA, filterdimA, outdimA, CUDNN_DATA_FLOAT, mode, sm.devPtrX, sm.devPtrW, sm.devPtrY); checkCudaErr(cudaDeviceSynchronize()); checkCudaErr(cudaMemcpy(sm.hostW, sm.devPtrW, sizeof(sm.hostW[0]) * Wsize, cudaMemcpyDeviceToHost)); @@ -97,10 +162,6 @@ TEST_CASE("Use heuristics for execution", "[frontend][heuristics][conv]" ) { int64_t dilationA[] = {1, 1}; int64_t convstrideA[] = {1, 1}; - int64_t dimA_padded[4]; - int64_t outdimA_padded[4]; - int64_t filterdimA_padded[4]; - int numErrors = 0; outdimA[0] = dimA[0]; @@ -109,31 +170,70 @@ TEST_CASE("Use heuristics for execution", "[frontend][heuristics][conv]" ) { outdimA[dim + 2] = getFwdConvOutputDim(dimA[dim + 2], padA[dim], filterdimA[dim + 2], convstrideA[dim], dilationA[dim]); } - for (int i = 0; i < 4; i++) { - dimA_padded[i] = dimA[i]; - outdimA_padded[i] = outdimA[i]; - filterdimA_padded[i] = filterdimA[i]; + + cudnnConvolutionMode_t mode = CUDNN_CONVOLUTION; + + printf("====DIMENSIONS====\n"); + printf("input dims are %" PRId64 ", %" PRId64 ", %" PRId64 ", %" PRId64 "\n", dimA[0], dimA[1], dimA[2], dimA[3]); + printf("filter dims are %" PRId64 ", %" PRId64 ", %" PRId64 ", %" PRId64 "\n", filterdimA[0], filterdimA[1], filterdimA[2], filterdimA[3]); + printf("output dims are %" PRId64 ", %" PRId64 ", %" PRId64 ", %" PRId64 "\n", outdimA[0], outdimA[1], outdimA[2], outdimA[3]); + + + int Xsize = dimA[0] * dimA[1] * dimA[2] * dimA[3]; + int Wsize = filterdimA[0] * filterdimA[1] * filterdimA[2] * filterdimA[3]; + int Ysize = outdimA[0] * outdimA[1] * outdimA[2] * outdimA[3]; + + SurfaceManager sm(Xsize, Wsize, Ysize, Ysize); + + run_from_heuristics(dimA, padA, convstrideA, dilationA, filterdimA, outdimA, CUDNN_DATA_FLOAT, mode, sm.devPtrX, sm.devPtrW, sm.devPtrY, CUDNN_HEUR_MODE_INSTANT); + + checkCudaErr(cudaDeviceSynchronize()); + checkCudaErr(cudaMemcpy(sm.hostY, sm.devPtrY, sizeof(sm.hostY[0]) * Ysize, cudaMemcpyDeviceToHost)); + checkCudaErr(cudaDeviceSynchronize()); + + conv_cpu_ref(sm.hostX, sm.hostW, sm.host_ref, 1, CUDNN_TENSOR_NCHW, dimA, filterdimA, outdimA, convstrideA, padA, dilationA, 4/*Dims*/); + + for (int index = 0; index < Ysize; index++) { // assuming in data is packed + float diff = getError(sm.hostY[index], sm.host_ref[index]); + if (diff < 0) diff = -diff; + if (diff > THRESHOLD) { numErrors++;} + } + REQUIRE(numErrors == 0); +} + +TEST_CASE("Use DNN based heuristics for execution", "[frontend][dnn_heuristics][conv]" ) { + INFO("TEST_CASE :: Use DNN based heuristics for engine generation"); + int64_t dimA[] = {8, 32, 4, 4}; + int64_t filterdimA[] = {32, 32, 1, 1}; + int64_t outdimA[] = {0, 0, 0, 0}; // Computed Below + int64_t padA[] = {0, 0}; + int64_t dilationA[] = {1, 1}; + int64_t convstrideA[] = {1, 1}; + + int numErrors = 0; + + outdimA[0] = dimA[0]; + outdimA[1] = filterdimA[0]; + for (int dim = 0; dim < 2; dim++) { + outdimA[dim + 2] = getFwdConvOutputDim(dimA[dim + 2], padA[dim], filterdimA[dim + 2], convstrideA[dim], dilationA[dim]); } + cudnnConvolutionMode_t mode = CUDNN_CONVOLUTION; - printf("====USER DIMENSIONS====\n"); + printf("====DIMENSIONS====\n"); printf("input dims are %" PRId64 ", %" PRId64 ", %" PRId64 ", %" PRId64 "\n", dimA[0], dimA[1], dimA[2], dimA[3]); printf("filter dims are %" PRId64 ", %" PRId64 ", %" PRId64 ", %" PRId64 "\n", filterdimA[0], filterdimA[1], filterdimA[2], filterdimA[3]); printf("output dims are %" PRId64 ", %" PRId64 ", %" PRId64 ", %" PRId64 "\n", outdimA[0], outdimA[1], outdimA[2], outdimA[3]); - printf("====PADDING DIMENSIONS====\n"); - printf("padded input dims are %" PRId64 ", %" PRId64 ", %" PRId64 ", %" PRId64 "\n", dimA_padded[0], dimA_padded[1], dimA_padded[2], dimA_padded[3]); - printf("padded filter dims are %" PRId64 ", %" PRId64 ", %" PRId64 ", %" PRId64 "\n", filterdimA_padded[0], filterdimA_padded[1], filterdimA_padded[2], filterdimA_padded[3]); - printf("padded output dims are %" PRId64 ", %" PRId64 ", %" PRId64 ", %" PRId64 "\n", outdimA_padded[0], outdimA_padded[1], outdimA_padded[2], outdimA_padded[3]); - int Xsize = dimA_padded[0] * dimA_padded[1] * dimA_padded[2] * dimA_padded[3]; - int Wsize = filterdimA_padded[0] * filterdimA_padded[1] * filterdimA_padded[2] * filterdimA_padded[3]; - int Ysize = outdimA_padded[0] * outdimA_padded[1] * outdimA_padded[2] * outdimA_padded[3]; + int Xsize = dimA[0] * dimA[1] * dimA[2] * dimA[3]; + int Wsize = filterdimA[0] * filterdimA[1] * filterdimA[2] * filterdimA[3]; + int Ysize = outdimA[0] * outdimA[1] * outdimA[2] * outdimA[3]; SurfaceManager sm(Xsize, Wsize, Ysize, Ysize); - run_from_heuristics(dimA, padA, convstrideA, dilationA, filterdimA_padded, outdimA, CUDNN_DATA_FLOAT, mode, sm.devPtrX, sm.devPtrW, sm.devPtrY); + run_from_heuristics(dimA, padA, convstrideA, dilationA, filterdimA, outdimA, CUDNN_DATA_FLOAT, mode, sm.devPtrX, sm.devPtrW, sm.devPtrY, CUDNN_HEUR_MODE_B); checkCudaErr(cudaDeviceSynchronize()); checkCudaErr(cudaMemcpy(sm.hostY, sm.devPtrY, sizeof(sm.hostY[0]) * Ysize, cudaMemcpyDeviceToHost)); @@ -158,9 +258,6 @@ TEST_CASE("Use fallback for execution", "[frontend][global_index][dgrad]" ) { int64_t dilationA[] = {1, 1}; int64_t convstrideA[] = {1, 1}; - int64_t dimA_padded[4]; - int64_t outdimA_padded[4]; - int64_t filterdimA_padded[4]; int numErrors = 0; @@ -170,31 +267,21 @@ TEST_CASE("Use fallback for execution", "[frontend][global_index][dgrad]" ) { outdimA[dim + 2] = getFwdConvOutputDim(dimA[dim + 2], padA[dim], filterdimA[dim + 2], convstrideA[dim], dilationA[dim]); } - for (int i = 0; i < 4; i++) { - dimA_padded[i] = dimA[i]; - outdimA_padded[i] = outdimA[i]; - filterdimA_padded[i] = filterdimA[i]; - } - cudnnConvolutionMode_t mode = CUDNN_CONVOLUTION; - printf("====USER DIMENSIONS====\n"); + printf("====DIMENSIONS====\n"); printf("input dims are %" PRId64 ", %" PRId64 ", %" PRId64 ", %" PRId64 "\n", dimA[0], dimA[1], dimA[2], dimA[3]); printf("filter dims are %" PRId64 ", %" PRId64 ", %" PRId64 ", %" PRId64 "\n", filterdimA[0], filterdimA[1], filterdimA[2], filterdimA[3]); printf("output dims are %" PRId64 ", %" PRId64 ", %" PRId64 ", %" PRId64 "\n", outdimA[0], outdimA[1], outdimA[2], outdimA[3]); - printf("====PADDING DIMENSIONS====\n"); - printf("padded input dims are %" PRId64 ", %" PRId64 ", %" PRId64 ", %" PRId64 "\n", dimA_padded[0], dimA_padded[1], dimA_padded[2], dimA_padded[3]); - printf("padded filter dims are %" PRId64 ", %" PRId64 ", %" PRId64 ", %" PRId64 "\n", filterdimA_padded[0], filterdimA_padded[1], filterdimA_padded[2], filterdimA_padded[3]); - printf("padded output dims are %" PRId64 ", %" PRId64 ", %" PRId64 ", %" PRId64 "\n", outdimA_padded[0], outdimA_padded[1], outdimA_padded[2], outdimA_padded[3]); - int Xsize = dimA_padded[0] * dimA_padded[1] * dimA_padded[2] * dimA_padded[3]; - int Wsize = filterdimA_padded[0] * filterdimA_padded[1] * filterdimA_padded[2] * filterdimA_padded[3]; - int Ysize = outdimA_padded[0] * outdimA_padded[1] * outdimA_padded[2] * outdimA_padded[3]; + int Xsize = dimA[0] * dimA[1] * dimA[2] * dimA[3]; + int Wsize = filterdimA[0] * filterdimA[1] * filterdimA[2] * filterdimA[3]; + int Ysize = outdimA[0] * outdimA[1] * outdimA[2] * outdimA[3]; SurfaceManager sm(Xsize, Wsize, Ysize, Xsize); - run_with_external_config(dimA, padA, convstrideA, dilationA, filterdimA_padded, outdimA, CUDNN_DATA_FLOAT, mode, sm.devPtrX, sm.devPtrW, sm.devPtrY); + run_with_external_config(dimA, padA, convstrideA, dilationA, filterdimA, outdimA, CUDNN_DATA_FLOAT, mode, sm.devPtrX, sm.devPtrW, sm.devPtrY); checkCudaErr(cudaDeviceSynchronize()); checkCudaErr(cudaMemcpy(sm.hostX, sm.devPtrX, sizeof(sm.hostX[0]) * Xsize, cudaMemcpyDeviceToHost)); @@ -219,11 +306,6 @@ TEST_CASE("ConvBiasAct sample", "[frontend][convAddBiasAct]") { int64_t dilation[] = {1, 1}; int64_t convstride[] = {1, 1}; - int64_t xTensorDim_padded[4]; - int64_t yTensorDim_padded[4]; - int64_t wTensorDim_padded[4]; - - int numErrors = 0; yTensorDim[0] = xTensorDim[0]; yTensorDim[1] = wTensorDim[0]; @@ -231,25 +313,20 @@ TEST_CASE("ConvBiasAct sample", "[frontend][convAddBiasAct]") { yTensorDim[dim + 2] = getFwdConvOutputDim(xTensorDim[dim + 2], padding[dim], wTensorDim[dim + 2], convstride[dim], dilation[dim]); } - for (int i = 0; i < 4; i++) { - xTensorDim_padded[i] = xTensorDim[i]; - yTensorDim_padded[i] = yTensorDim[i]; - wTensorDim_padded[i] = wTensorDim[i]; - } - printf("====PADDING DIMENSIONS====\n"); - printf("padded input dims are %" PRId64 ", %" PRId64 ", %" PRId64 ", %" PRId64 "\n", xTensorDim_padded[0], xTensorDim_padded[1], xTensorDim_padded[2], xTensorDim_padded[3]); - printf("padded filter dims are %" PRId64 ", %" PRId64 ", %" PRId64 ", %" PRId64 "\n", wTensorDim_padded[0], wTensorDim_padded[1], wTensorDim_padded[2], wTensorDim_padded[3]); - printf("padded output dims are %" PRId64 ", %" PRId64 ", %" PRId64 ", %" PRId64 "\n", yTensorDim_padded[0], yTensorDim_padded[1], yTensorDim_padded[2], yTensorDim_padded[3]); + printf("====DIMENSIONS====\n"); + printf("input dims are %" PRId64 ", %" PRId64 ", %" PRId64 ", %" PRId64 "\n", xTensorDim[0], xTensorDim[1], xTensorDim[2], xTensorDim[3]); + printf("filter dims are %" PRId64 ", %" PRId64 ", %" PRId64 ", %" PRId64 "\n", wTensorDim[0], wTensorDim[1], wTensorDim[2], wTensorDim[3]); + printf("output dims are %" PRId64 ", %" PRId64 ", %" PRId64 ", %" PRId64 "\n", yTensorDim[0], yTensorDim[1], yTensorDim[2], yTensorDim[3]); - int Xsize = xTensorDim_padded[0] * xTensorDim_padded[1] * xTensorDim_padded[2] * xTensorDim_padded[3]; - int Ysize = yTensorDim_padded[0] * yTensorDim_padded[1] * yTensorDim_padded[2] * yTensorDim_padded[3]; - int Wsize = wTensorDim_padded[0] * wTensorDim_padded[1] * wTensorDim_padded[2] * wTensorDim_padded[3]; - int Bsize = yTensorDim_padded[0] * yTensorDim_padded[1] * 1 * 1; + int Xsize = xTensorDim[0] * xTensorDim[1] * xTensorDim[2] * xTensorDim[3]; + int Ysize = yTensorDim[0] * yTensorDim[1] * yTensorDim[2] * yTensorDim[3]; + int Wsize = wTensorDim[0] * wTensorDim[1] * wTensorDim[2] * wTensorDim[3]; + int Bsize = yTensorDim[0] * yTensorDim[1] * 1 * 1; SurfaceManager sm(Xsize, Wsize, Ysize, Bsize, true); - run_conv_bias_add_activation(xTensorDim_padded, padding, convstride, dilation, wTensorDim_padded, yTensorDim_padded, CUDNN_DATA_FLOAT, sm.devPtrX, sm.devPtrW, sm.devPtrY, sm.devPtrZ, sm.devPtrB); + run_conv_add_bias_activation(xTensorDim, padding, convstride, dilation, wTensorDim, yTensorDim, CUDNN_DATA_FLOAT, sm.devPtrX, sm.devPtrW, sm.devPtrY, sm.devPtrZ, sm.devPtrB); checkCudaErr(cudaDeviceSynchronize()); checkCudaErr(cudaMemcpy(sm.hostY, sm.devPtrY, sizeof(sm.hostY[0]) * Ysize, cudaMemcpyDeviceToHost)); @@ -265,10 +342,6 @@ TEST_CASE("Use cudnnFindPlan for execution", "[frontend][cudnnFindPlan][conv]" ) int64_t dilationA[] = {1, 1}; int64_t convstrideA[] = {1, 1}; - int64_t dimA_padded[4]; - int64_t outdimA_padded[4]; - int64_t filterdimA_padded[4]; - int numErrors = 0; outdimA[0] = dimA[0]; @@ -277,31 +350,22 @@ TEST_CASE("Use cudnnFindPlan for execution", "[frontend][cudnnFindPlan][conv]" ) outdimA[dim + 2] = getFwdConvOutputDim(dimA[dim + 2], padA[dim], filterdimA[dim + 2], convstrideA[dim], dilationA[dim]); } - for (int i = 0; i < 4; i++) { - dimA_padded[i] = dimA[i]; - outdimA_padded[i] = outdimA[i]; - filterdimA_padded[i] = filterdimA[i]; - } cudnnConvolutionMode_t mode = CUDNN_CONVOLUTION; - printf("====USER DIMENSIONS====\n"); + printf("====DIMENSIONS====\n"); printf("input dims are %" PRId64 ", %" PRId64 ", %" PRId64 ", %" PRId64 "\n", dimA[0], dimA[1], dimA[2], dimA[3]); printf("filter dims are %" PRId64 ", %" PRId64 ", %" PRId64 ", %" PRId64 "\n", filterdimA[0], filterdimA[1], filterdimA[2], filterdimA[3]); printf("output dims are %" PRId64 ", %" PRId64 ", %" PRId64 ", %" PRId64 "\n", outdimA[0], outdimA[1], outdimA[2], outdimA[3]); - printf("====PADDING DIMENSIONS====\n"); - printf("padded input dims are %" PRId64 ", %" PRId64 ", %" PRId64 ", %" PRId64 "\n", dimA_padded[0], dimA_padded[1], dimA_padded[2], dimA_padded[3]); - printf("padded filter dims are %" PRId64 ", %" PRId64 ", %" PRId64 ", %" PRId64 "\n", filterdimA_padded[0], filterdimA_padded[1], filterdimA_padded[2], filterdimA_padded[3]); - printf("padded output dims are %" PRId64 ", %" PRId64 ", %" PRId64 ", %" PRId64 "\n", outdimA_padded[0], outdimA_padded[1], outdimA_padded[2], outdimA_padded[3]); - int Xsize = dimA_padded[0] * dimA_padded[1] * dimA_padded[2] * dimA_padded[3]; - int Wsize = filterdimA_padded[0] * filterdimA_padded[1] * filterdimA_padded[2] * filterdimA_padded[3]; - int Ysize = outdimA_padded[0] * outdimA_padded[1] * outdimA_padded[2] * outdimA_padded[3]; + int Xsize = dimA[0] * dimA[1] * dimA[2] * dimA[3]; + int Wsize = filterdimA[0] * filterdimA[1] * filterdimA[2] * filterdimA[3]; + int Ysize = outdimA[0] * outdimA[1] * outdimA[2] * outdimA[3]; SurfaceManager sm(Xsize, Wsize, Ysize, Ysize); - run_from_cudnn_find(dimA, padA, convstrideA, dilationA, filterdimA_padded, outdimA, CUDNN_DATA_FLOAT, mode, sm.devPtrX, sm.devPtrW, sm.devPtrY); + run_from_cudnn_find(dimA, padA, convstrideA, dilationA, filterdimA, outdimA, CUDNN_DATA_FLOAT, mode, sm.devPtrX, sm.devPtrW, sm.devPtrY); checkCudaErr(cudaDeviceSynchronize()); checkCudaErr(cudaMemcpy(sm.hostY, sm.devPtrY, sizeof(sm.hostY[0]) * Ysize, cudaMemcpyDeviceToHost)); @@ -326,11 +390,6 @@ TEST_CASE("ConvBiasAct sample with cudnnFindPlan", "[frontend][cudnnFindPlan][co int64_t dilation[] = {1, 1}; int64_t convstride[] = {1, 1}; - int64_t xTensorDim_padded[4]; - int64_t yTensorDim_padded[4]; - int64_t wTensorDim_padded[4]; - - int numErrors = 0; yTensorDim[0] = xTensorDim[0]; yTensorDim[1] = wTensorDim[0]; @@ -338,25 +397,20 @@ TEST_CASE("ConvBiasAct sample with cudnnFindPlan", "[frontend][cudnnFindPlan][co yTensorDim[dim + 2] = getFwdConvOutputDim(xTensorDim[dim + 2], padding[dim], wTensorDim[dim + 2], convstride[dim], dilation[dim]); } - for (int i = 0; i < 4; i++) { - xTensorDim_padded[i] = xTensorDim[i]; - yTensorDim_padded[i] = yTensorDim[i]; - wTensorDim_padded[i] = wTensorDim[i]; - } printf("====PADDING DIMENSIONS====\n"); - printf("padded input dims are %" PRId64 ", %" PRId64 ", %" PRId64 ", %" PRId64 "\n", xTensorDim_padded[0], xTensorDim_padded[1], xTensorDim_padded[2], xTensorDim_padded[3]); - printf("padded filter dims are %" PRId64 ", %" PRId64 ", %" PRId64 ", %" PRId64 "\n", wTensorDim_padded[0], wTensorDim_padded[1], wTensorDim_padded[2], wTensorDim_padded[3]); - printf("padded output dims are %" PRId64 ", %" PRId64 ", %" PRId64 ", %" PRId64 "\n", yTensorDim_padded[0], yTensorDim_padded[1], yTensorDim_padded[2], yTensorDim_padded[3]); + printf("input dims are %" PRId64 ", %" PRId64 ", %" PRId64 ", %" PRId64 "\n", xTensorDim[0], xTensorDim[1], xTensorDim[2], xTensorDim[3]); + printf("filter dims are %" PRId64 ", %" PRId64 ", %" PRId64 ", %" PRId64 "\n", wTensorDim[0], wTensorDim[1], wTensorDim[2], wTensorDim[3]); + printf("output dims are %" PRId64 ", %" PRId64 ", %" PRId64 ", %" PRId64 "\n", yTensorDim[0], yTensorDim[1], yTensorDim[2], yTensorDim[3]); - int Xsize = xTensorDim_padded[0] * xTensorDim_padded[1] * xTensorDim_padded[2] * xTensorDim_padded[3]; - int Ysize = yTensorDim_padded[0] * yTensorDim_padded[1] * yTensorDim_padded[2] * yTensorDim_padded[3]; - int Wsize = wTensorDim_padded[0] * wTensorDim_padded[1] * wTensorDim_padded[2] * wTensorDim_padded[3]; - int Bsize = yTensorDim_padded[0] * yTensorDim_padded[1] * 1 * 1; + int Xsize = xTensorDim[0] * xTensorDim[1] * xTensorDim[2] * xTensorDim[3]; + int Ysize = yTensorDim[0] * yTensorDim[1] * yTensorDim[2] * yTensorDim[3]; + int Wsize = wTensorDim[0] * wTensorDim[1] * wTensorDim[2] * wTensorDim[3]; + int Bsize = yTensorDim[0] * yTensorDim[1] * 1 * 1; SurfaceManager sm(Xsize, Wsize, Ysize, Bsize, true); - run_conv_bias_add_activation_with_cudnn_find(xTensorDim_padded, padding, convstride, dilation, wTensorDim_padded, yTensorDim_padded, CUDNN_DATA_FLOAT, sm.devPtrX, sm.devPtrW, sm.devPtrY, sm.devPtrZ, sm.devPtrB); + run_conv_add_bias_activation_with_cudnn_find(xTensorDim, padding, convstride, dilation, wTensorDim, yTensorDim, CUDNN_DATA_FLOAT, sm.devPtrX, sm.devPtrW, sm.devPtrY, sm.devPtrZ, sm.devPtrB); checkCudaErr(cudaDeviceSynchronize()); checkCudaErr(cudaMemcpy(sm.hostY, sm.devPtrY, sizeof(sm.hostY[0]) * Ysize, cudaMemcpyDeviceToHost)); @@ -372,9 +426,6 @@ TEST_CASE("Use cudnnGetPlan for execution", "[frontend][cudnnGetPlan][conv]" ) { int64_t dilationA[] = {1, 1}; int64_t convstrideA[] = {1, 1}; - int64_t dimA_padded[4]; - int64_t outdimA_padded[4]; - int64_t filterdimA_padded[4]; int numErrors = 0; @@ -384,31 +435,22 @@ TEST_CASE("Use cudnnGetPlan for execution", "[frontend][cudnnGetPlan][conv]" ) { outdimA[dim + 2] = getFwdConvOutputDim(dimA[dim + 2], padA[dim], filterdimA[dim + 2], convstrideA[dim], dilationA[dim]); } - for (int i = 0; i < 4; i++) { - dimA_padded[i] = dimA[i]; - outdimA_padded[i] = outdimA[i]; - filterdimA_padded[i] = filterdimA[i]; - } cudnnConvolutionMode_t mode = CUDNN_CONVOLUTION; - printf("====USER DIMENSIONS====\n"); + printf("====DIMENSIONS====\n"); printf("input dims are %" PRId64 ", %" PRId64 ", %" PRId64 ", %" PRId64 "\n", dimA[0], dimA[1], dimA[2], dimA[3]); printf("filter dims are %" PRId64 ", %" PRId64 ", %" PRId64 ", %" PRId64 "\n", filterdimA[0], filterdimA[1], filterdimA[2], filterdimA[3]); printf("output dims are %" PRId64 ", %" PRId64 ", %" PRId64 ", %" PRId64 "\n", outdimA[0], outdimA[1], outdimA[2], outdimA[3]); - printf("====PADDING DIMENSIONS====\n"); - printf("padded input dims are %" PRId64 ", %" PRId64 ", %" PRId64 ", %" PRId64 "\n", dimA_padded[0], dimA_padded[1], dimA_padded[2], dimA_padded[3]); - printf("padded filter dims are %" PRId64 ", %" PRId64 ", %" PRId64 ", %" PRId64 "\n", filterdimA_padded[0], filterdimA_padded[1], filterdimA_padded[2], filterdimA_padded[3]); - printf("padded output dims are %" PRId64 ", %" PRId64 ", %" PRId64 ", %" PRId64 "\n", outdimA_padded[0], outdimA_padded[1], outdimA_padded[2], outdimA_padded[3]); - int Xsize = dimA_padded[0] * dimA_padded[1] * dimA_padded[2] * dimA_padded[3]; - int Wsize = filterdimA_padded[0] * filterdimA_padded[1] * filterdimA_padded[2] * filterdimA_padded[3]; - int Ysize = outdimA_padded[0] * outdimA_padded[1] * outdimA_padded[2] * outdimA_padded[3]; + int Xsize = dimA[0] * dimA[1] * dimA[2] * dimA[3]; + int Wsize = filterdimA[0] * filterdimA[1] * filterdimA[2] * filterdimA[3]; + int Ysize = outdimA[0] * outdimA[1] * outdimA[2] * outdimA[3]; SurfaceManager sm(Xsize, Wsize, Ysize, Ysize); - run_from_cudnn_get(dimA, padA, convstrideA, dilationA, filterdimA_padded, outdimA, CUDNN_DATA_FLOAT, mode, sm.devPtrX, sm.devPtrW, sm.devPtrY); + run_from_cudnn_get(dimA, padA, convstrideA, dilationA, filterdimA, outdimA, CUDNN_DATA_FLOAT, mode, sm.devPtrX, sm.devPtrW, sm.devPtrY); checkCudaErr(cudaDeviceSynchronize()); checkCudaErr(cudaMemcpy(sm.hostY, sm.devPtrY, sizeof(sm.hostY[0]) * Ysize, cudaMemcpyDeviceToHost)); @@ -423,3 +465,212 @@ TEST_CASE("Use cudnnGetPlan for execution", "[frontend][cudnnGetPlan][conv]" ) { } REQUIRE(numErrors == 0); } + + +TEST_CASE("ConvScaleBiasAddAct sample", "[frontend][fusion][ConvScaleBiasAddAct]") { + INFO("TEST_CASE :: Sample runtime fusion code with backend API"); + int64_t xTensorDim[] = { 4, 24, 31, 31}; + int64_t wTensorDim[] = {32, 24, 9, 9}; + int64_t yTensorDim[] = { 4, 32, 5, 5}; + + int64_t conv_padA[] = {3, 3}; + int64_t conv_dilationA[] = {1, 1}; + int64_t conv_strideA[] = {7, 7}; + + int64_t sTensorDim[] = {1, 32, 1, 1}; //scale + int64_t bTensorDim[] = {1, 32, 1, 1}; //bias + int64_t aTensorDim[] = {4, 32, 5, 5}; //add + + + + printf("====DIMENSIONS====\n"); + printf("input dims are %" PRId64 ", %" PRId64 ", %" PRId64 ", %" PRId64 "\n", xTensorDim[0], xTensorDim[1], xTensorDim[2], xTensorDim[3]); + printf("filter dims are %" PRId64 ", %" PRId64 ", %" PRId64 ", %" PRId64 "\n", wTensorDim[0], wTensorDim[1], wTensorDim[2], wTensorDim[3]); + printf("output dims are %" PRId64 ", %" PRId64 ", %" PRId64 ", %" PRId64 "\n", yTensorDim[0], yTensorDim[1], yTensorDim[2], yTensorDim[3]); + + int Ysize = yTensorDim[0] * yTensorDim[1] * yTensorDim[2] * yTensorDim[3]; + + Surface X(xTensorDim[0] * xTensorDim[1] * xTensorDim[2] * xTensorDim[3], false); + Surface W(wTensorDim[0] * wTensorDim[1] * wTensorDim[2] * wTensorDim[3], false); + Surface Y(Ysize, true); + + Surface S(sTensorDim[0] * sTensorDim[1] * sTensorDim[2] * sTensorDim[3], false); + Surface B(bTensorDim[0] * bTensorDim[1] * bTensorDim[2] * bTensorDim[3], false); + Surface A(aTensorDim[0] * aTensorDim[1] * aTensorDim[2] * aTensorDim[3], false); + + run_conv_scale_bias_add_relu(xTensorDim, wTensorDim, yTensorDim, sTensorDim, bTensorDim, aTensorDim, CUDNN_DATA_HALF, + 2, conv_padA, conv_dilationA, conv_strideA, + X.devPtr, W.devPtr, Y.devPtr, S.devPtr, B.devPtr, A.devPtr); + + checkCudaErr(cudaDeviceSynchronize()); + checkCudaErr(cudaMemcpy(Y.hostPtr, Y.devPtr, sizeof(Y.hostPtr[0]) * Ysize, cudaMemcpyDeviceToHost)); + checkCudaErr(cudaDeviceSynchronize()); +} + + +TEST_CASE("MatmulBiasAct sample", "[frontend][fusion][MatmulBiasAct]") { + INFO("TEST_CASE :: Sample matmul runtime fusion code with backend API"); + int64_t aTensorDim[] = {1, 64, 32}; //batch M K + int64_t bTensorDim[] = {1, 32, 64}; //batch K N + int64_t cTensorDim[] = {1, 64, 64}; //batch M N + + int64_t zTensorDim[] = {1, 1, 64}; //bias + + + printf("====DIMENSIONS====\n"); + printf("a matrix dims are %" PRId64 ", %" PRId64 ", %" PRId64 "\n", aTensorDim[0], aTensorDim[1], aTensorDim[2]); + printf("b matrix dims are %" PRId64 ", %" PRId64 ", %" PRId64 "\n", bTensorDim[0], bTensorDim[1], bTensorDim[2]); + printf("c matrix dims are %" PRId64 ", %" PRId64 ", %" PRId64 "\n", cTensorDim[0], cTensorDim[1], cTensorDim[2]); + + int Csize = cTensorDim[0] * cTensorDim[1] * cTensorDim[2]; + + Surface A(aTensorDim[0] * aTensorDim[1] * aTensorDim[2], false); + Surface B(bTensorDim[0] * bTensorDim[1] * bTensorDim[2], false); + Surface C(Csize, true); + + Surface Z(zTensorDim[0] * zTensorDim[1] * zTensorDim[2], false); + + run_matmul_bias_gelu(aTensorDim, bTensorDim, cTensorDim, zTensorDim, CUDNN_DATA_HALF, A.devPtr, B.devPtr, C.devPtr, Z.devPtr); + + checkCudaErr(cudaDeviceSynchronize()); + checkCudaErr(cudaMemcpy(C.hostPtr, C.devPtr, sizeof(C.hostPtr[0]) * Csize, cudaMemcpyDeviceToHost)); + checkCudaErr(cudaDeviceSynchronize()); +} + +TEST_CASE("ConvDrelu sample", "[frontend][convDrelu][drelu]") { + INFO("TEST_CASE :: Sample conv drelu"); + int64_t xTensorDim[] = {4, 24, 31, 31}; + int64_t wTensorDim[] = {32, 24, 9, 9}; + int64_t yTensorDim[] = {0, 0, 0, 0}; // Computed Below + int64_t padding[] = {3, 3}; + int64_t dilation[] = {1, 1}; + int64_t convstride[] = {7, 7}; + + int64_t xTensorDim_padded[4]; + int64_t yTensorDim_padded[4]; + int64_t wTensorDim_padded[4]; + + yTensorDim[0] = xTensorDim[0]; + yTensorDim[1] = wTensorDim[0]; + for (int dim = 0; dim < 2; dim++) { + yTensorDim[dim + 2] = + getFwdConvOutputDim(xTensorDim[dim + 2], padding[dim], wTensorDim[dim + 2], convstride[dim], dilation[dim]); + } + + for (int i = 0; i < 4; i++) { + xTensorDim_padded[i] = xTensorDim[i]; + yTensorDim_padded[i] = yTensorDim[i]; + wTensorDim_padded[i] = wTensorDim[i]; + } + + printf("====PADDING DIMENSIONS====\n"); + printf("padded input dims are %" PRId64 ", %" PRId64 ", %" PRId64 ", %" PRId64 "\n", + xTensorDim_padded[0], + xTensorDim_padded[1], + xTensorDim_padded[2], + xTensorDim_padded[3]); + printf("padded filter dims are %" PRId64 ", %" PRId64 ", %" PRId64 ", %" PRId64 "\n", + wTensorDim_padded[0], + wTensorDim_padded[1], + wTensorDim_padded[2], + wTensorDim_padded[3]); + printf("padded output dims are %" PRId64 ", %" PRId64 ", %" PRId64 ", %" PRId64 "\n", + yTensorDim_padded[0], + yTensorDim_padded[1], + yTensorDim_padded[2], + yTensorDim_padded[3]); + + int Xsize = xTensorDim_padded[0] * xTensorDim_padded[1] * xTensorDim_padded[2] * xTensorDim_padded[3]; + int Ysize = yTensorDim_padded[0] * yTensorDim_padded[1] * yTensorDim_padded[2] * yTensorDim_padded[3]; + int Wsize = wTensorDim_padded[0] * wTensorDim_padded[1] * wTensorDim_padded[2] * wTensorDim_padded[3]; + + Surface x_mem(Xsize, false); + Surface w_mem(Wsize, false); + Surface y_mem(Ysize, false); + Surface extra_x_mem(Xsize, false); + + run_conv_drelu(xTensorDim_padded, + padding, + convstride, + dilation, + wTensorDim_padded, + yTensorDim_padded, + CUDNN_DATA_HALF, + x_mem.devPtr, + w_mem.devPtr, + y_mem.devPtr, + extra_x_mem.devPtr); + + checkCudaErr(cudaDeviceSynchronize()); + checkCudaErr(cudaMemcpy(y_mem.hostPtr, y_mem.devPtr, sizeof(y_mem.hostPtr[0]) * Ysize, cudaMemcpyDeviceToHost)); + checkCudaErr(cudaDeviceSynchronize()); +} + +TEST_CASE("DgradDrelu sample", "[frontend][dgradDrelu][drelu]") { + INFO("TEST_CASE :: Sample dgrad drelu"); + int64_t xTensorDim[] = {4, 32, 32, 32}; + int64_t wTensorDim[] = {32, 32, 3, 3}; + int64_t yTensorDim[] = {0, 0, 0, 0}; // Computed Below + int64_t padding[] = {0, 0}; + int64_t dilation[] = {1, 1}; + int64_t convstride[] = {1, 1}; + + int64_t xTensorDim_padded[4]; + int64_t yTensorDim_padded[4]; + int64_t wTensorDim_padded[4]; + + yTensorDim[0] = xTensorDim[0]; + yTensorDim[1] = wTensorDim[0]; + for (int dim = 0; dim < 2; dim++) { + yTensorDim[dim + 2] = + getFwdConvOutputDim(xTensorDim[dim + 2], padding[dim], wTensorDim[dim + 2], convstride[dim], dilation[dim]); + } + + for (int i = 0; i < 4; i++) { + xTensorDim_padded[i] = xTensorDim[i]; + yTensorDim_padded[i] = yTensorDim[i]; + wTensorDim_padded[i] = wTensorDim[i]; + } + + printf("====PADDING DIMENSIONS====\n"); + printf("padded input dims are %" PRId64 ", %" PRId64 ", %" PRId64 ", %" PRId64 "\n", + xTensorDim_padded[0], + xTensorDim_padded[1], + xTensorDim_padded[2], + xTensorDim_padded[3]); + printf("padded filter dims are %" PRId64 ", %" PRId64 ", %" PRId64 ", %" PRId64 "\n", + wTensorDim_padded[0], + wTensorDim_padded[1], + wTensorDim_padded[2], + wTensorDim_padded[3]); + printf("padded output dims are %" PRId64 ", %" PRId64 ", %" PRId64 ", %" PRId64 "\n", + yTensorDim_padded[0], + yTensorDim_padded[1], + yTensorDim_padded[2], + yTensorDim_padded[3]); + + int Xsize = xTensorDim_padded[0] * xTensorDim_padded[1] * xTensorDim_padded[2] * xTensorDim_padded[3]; + int Ysize = yTensorDim_padded[0] * yTensorDim_padded[1] * yTensorDim_padded[2] * yTensorDim_padded[3]; + int Wsize = wTensorDim_padded[0] * wTensorDim_padded[1] * wTensorDim_padded[2] * wTensorDim_padded[3]; + + Surface x_mem(Xsize, false); + Surface w_mem(Wsize, false); + Surface y_mem(Ysize, false); + Surface extra_x_mem(Xsize, false); + + run_dgrad_drelu(xTensorDim_padded, + padding, + convstride, + dilation, + wTensorDim_padded, + yTensorDim_padded, + CUDNN_DATA_HALF, + x_mem.devPtr, + w_mem.devPtr, + y_mem.devPtr, + extra_x_mem.devPtr); + + checkCudaErr(cudaDeviceSynchronize()); + checkCudaErr(cudaMemcpy(x_mem.hostPtr, x_mem.devPtr, sizeof(x_mem.hostPtr[0]) * Xsize, cudaMemcpyDeviceToHost)); + checkCudaErr(cudaDeviceSynchronize()); +}