CUDNN Frontend API
8.3.0
|
Classes | |
class | BackendDescriptor |
class | ConditionalStreamer |
class | ConvDesc_v8 |
class | ConvDescBuilder_v8 |
class | cudnnException |
class | Engine_v8 |
class | EngineBuilder_v8 |
class | EngineConfig_v8 |
class | EngineConfigBuilder_v8 |
class | EngineConfigGenerator |
class | EngineFallbackList_v8 |
class | EngineFallbackListBuilder_v8 |
class | EngineHeuristics_v8 |
class | EngineHeuristicsBuilder_v8 |
class | ExecutionPlan_v8 |
class | ExecutionPlanBuilder_v8 |
class | ExecutionPlanCache_v1 |
Plan Cache structure for the above table. More... | |
class | ExecutionPlanCache_v2 |
class | MatMulDesc_v8 |
class | MatMulDescBuilder_v8 |
class | OpaqueBackendPointer |
class | Operation_v8 |
class | OperationBuilder_v8 |
class | OperationGraph_v8 |
class | OperationGraphBuilder_v8 |
class | PointWiseDesc_v8 |
class | PointWiseDescBuilder_v8 |
class | ReductionDesc_v8 |
class | ReductionDescBuilder_v8 |
class | Tensor_v8 |
class | TensorBuilder_v8 |
class | VariantPack_v8 |
class | VariantPackBuilder_v8 |
Functions | |
static ManagedOpaqueDescriptor | make_shared_backend_pointer (cudnnBackendDescriptorType_t type) |
static auto | filter (Predicate pred, executionPlans_t &plans) -> executionPlans_t |
static auto | get_fallback_engine_list (cudnnBackendDescriptorType_t mode, const std::string &opGraphTag) -> std::vector< int > |
static bool | load_from_config (json &json_handle, const std::string &errata_json) |
template<typename T > | |
static bool | check_rule (const json &json_handle, const std::string &executionPlanTag, cudnnHandle_t handle, T fn) |
template<typename T > | |
static bool | check_errata (const json &json_handle, const std::string &executionPlanTag, cudnnHandle_t handle, T fn) |
static void | filter (EngineConfigList &from, EngineConfigList &to, std::function< bool(cudnnBackendDescriptor_t)> filter_fn) |
template<cudnnBackendNumericalNote_t NUMERIC_NOTE> | |
bool | hasNumericalNote (cudnnBackendDescriptor_t engine_config) |
template<CudnnFindSamplingTechnique samplingTechnique> | |
auto | time_sorted_plan (cudnnHandle_t handle, executionPlans_t plans, VariantPack const &variantPack) -> executionPlans_t |
template<std::size_t SIZE> | |
EngineConfigList | get_heuristics_list (std::array< cudnnBackendHeurMode_t, SIZE > modes, OperationGraph_v8 &opGraph, std::function< bool(cudnnBackendDescriptor_t)> filter_fn) |
bool & | isLoggingEnabled () |
std::ostream & | getStream () |
ConditionalStreamer & | getLogger () |
static std::ostream & | operator<< (std::ostream &os, const BackendDescriptor &desc) |
static cudnnStatus_t | cudnnReorderFilterAndBiasInt8x32 (cudnnHandle_t handle, const Tensor_v8 &tensor, const ConvDesc_v8 &conv_desc, void *dev_filter_ptr, void *reordered_filter_ptr, void *dev_bias_ptr, void *reordered_bias_ptr) |
static void | throw_if (std::function< bool()> expr, const char *message, cudnnStatus_t status) |
static void | throw_if (bool expr, const char *message, cudnnStatus_t status) |
static std::string | to_string (cudnnDataType_t type) |
static std::string | to_string (cudnnStatus_t status) |
static void | set_error_and_throw_exception (BackendDescriptor const *desc, cudnnStatus_t status, const char *message) |
Execution Plan Caching: Goal is to auto-tune once and then save the best auto-tuned result for a problem for later use. For every unique Operation Graph (denoted by a string) we have a set of plans identified by a feature vector. The feature vector could be Tensor dimension/data_type and so on. Multiple operation Graph can share a feature vector type but may have different Execution Plan(s). The v1 cache has the following format. It is the reponsibility of the user to query the correct cache for the given device/operation graph combination.
using cudnn_frontend::ConvDesc = typedef ConvDesc_v8 |
Definition at line 121 of file cudnn_frontend.h.
using cudnn_frontend::ConvDescBuilder = typedef ConvDescBuilder_v8 |
Definition at line 122 of file cudnn_frontend.h.
using cudnn_frontend::Engine = typedef Engine_v8 |
Definition at line 134 of file cudnn_frontend.h.
using cudnn_frontend::EngineBuilder = typedef EngineBuilder_v8 |
Definition at line 133 of file cudnn_frontend.h.
using cudnn_frontend::EngineConfig = typedef EngineConfig_v8 |
Definition at line 135 of file cudnn_frontend.h.
using cudnn_frontend::EngineConfigBuilder = typedef EngineConfigBuilder_v8 |
Definition at line 136 of file cudnn_frontend.h.
using cudnn_frontend::EngineConfigList = typedef std::vector<ManagedOpaqueDescriptor> |
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.
Definition at line 248 of file cudnn_frontend_EngineConfig.h.
using cudnn_frontend::EngineFallbackList = typedef EngineFallbackList_v8 |
Definition at line 139 of file cudnn_frontend.h.
Definition at line 140 of file cudnn_frontend.h.
using cudnn_frontend::EngineHeuristics = typedef EngineHeuristics_v8 |
Definition at line 132 of file cudnn_frontend.h.
using cudnn_frontend::EngineHeuristicsBuilder = typedef EngineHeuristicsBuilder_v8 |
Definition at line 131 of file cudnn_frontend.h.
using cudnn_frontend::ExecutionPlan = typedef ExecutionPlan_v8 |
Definition at line 396 of file cudnn_frontend_ExecutionPlan.h.
using cudnn_frontend::ExecutionPlanBuilder = typedef ExecutionPlanBuilder_v8 |
Definition at line 397 of file cudnn_frontend_ExecutionPlan.h.
using cudnn_frontend::ExecutionPlanCache = typedef ExecutionPlanCache_v2 |
Definition at line 178 of file cudnn_frontend_ExecutionPlanCache.h.
using cudnn_frontend::executionPlans_t = typedef std::vector<cudnn_frontend::ExecutionPlan> |
Variety of renames.
Definition at line 30 of file cudnn_frontend_EngineConfigGenerator.h.
using cudnn_frontend::feature_vector_t = typedef std::vector<int64_t> |
Detailed feature_vector. Generally the Tensor and Operation properties.
Definition at line 34 of file cudnn_frontend_utils.h.
using cudnn_frontend::GeneratorSource = typedef std::function<cudnn_frontend::EngineConfigList(cudnn_frontend::OperationGraph &)> |
Definition at line 32 of file cudnn_frontend_EngineConfigGenerator.h.
using cudnn_frontend::ManagedOpaqueDescriptor = typedef std::shared_ptr<OpaqueBackendPointer> |
Definition at line 84 of file cudnn_backend_base.h.
using cudnn_frontend::MatMulDesc = typedef MatMulDesc_v8 |
Definition at line 125 of file cudnn_frontend.h.
using cudnn_frontend::MatMulDescBuilder = typedef MatMulDescBuilder_v8 |
Definition at line 126 of file cudnn_frontend.h.
using cudnn_frontend::Operation = typedef Operation_v8 |
Definition at line 129 of file cudnn_frontend.h.
using cudnn_frontend::OperationBuilder = typedef OperationBuilder_v8 |
Definition at line 130 of file cudnn_frontend.h.
using cudnn_frontend::OperationGraph = typedef OperationGraph_v8 |
Definition at line 241 of file cudnn_frontend_OperationGraph.h.
using cudnn_frontend::OperationGraphBuilder = typedef OperationGraphBuilder_v8 |
Definition at line 242 of file cudnn_frontend_OperationGraph.h.
using cudnn_frontend::PointWiseDesc = typedef PointWiseDesc_v8 |
Definition at line 124 of file cudnn_frontend.h.
using cudnn_frontend::PointWiseDescBuilder = typedef PointWiseDescBuilder_v8 |
Definition at line 123 of file cudnn_frontend.h.
using cudnn_frontend::Predicate = typedef std::function<bool(cudnn_frontend::ExecutionPlan const &plan)> |
Definition at line 31 of file cudnn_frontend_EngineConfigGenerator.h.
using cudnn_frontend::ReductionDesc = typedef ReductionDesc_v8 |
Definition at line 127 of file cudnn_frontend.h.
using cudnn_frontend::ReductionDescBuilder = typedef ReductionDescBuilder_v8 |
Definition at line 128 of file cudnn_frontend.h.
using cudnn_frontend::Tensor = typedef Tensor_v8 |
Definition at line 119 of file cudnn_frontend.h.
using cudnn_frontend::TensorBuilder = typedef TensorBuilder_v8 |
Definition at line 120 of file cudnn_frontend.h.
using cudnn_frontend::VariantPack = typedef VariantPack_v8 |
Definition at line 137 of file cudnn_frontend.h.
using cudnn_frontend::VariantPackBuilder = typedef VariantPackBuilder_v8 |
Definition at line 138 of file cudnn_frontend.h.
|
strong |
Definition at line 34 of file cudnn_frontend_EngineConfigGenerator.h.
|
static |
Definition at line 90 of file cudnn_frontend_Errata.h.
References getLogger().
|
static |
Definition at line 52 of file cudnn_frontend_Errata.h.
References nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer, BinaryType >::contains(), nlohmann::to_string(), and nlohmann::detail::void().
|
static |
Definition at line 39 of file cudnn_frontend_Reorder_Tensor.h.
References cudnn_frontend::Tensor_v8::getDimArray(), cudnn_frontend::Tensor_v8::getDimensionCount(), and cudnn_frontend::ConvDesc_v8::getDimensionCount().
|
static |
Definition at line 33 of file cudnn_frontend_Filters.h.
|
static |
Filter out the execution plan based on the prerequisite conditions. Goes through vector of execution plans and if the predicate returns not to block (false), it is inserted into the filtered plans.
Definition at line 106 of file cudnn_frontend_EngineConfigGenerator.h.
References getLogger().
Referenced by cudnn_frontend::EngineConfigGenerator::cudnnGetPlan(), and get_heuristics_list().
|
static |
Here we are using the term "bias" in the operationGraph as a proxy for the conv*bias* operation graph. We are not strictly checking the order of the operations in the graph. We propose this as a temporary workaround until the backend API supports querying the fallback list directly from cudnn
Definition at line 30 of file cudnn_frontend_EngineFallbackList.h.
Referenced by cudnn_frontend::EngineFallbackListBuilder_v8::build().
EngineConfigList cudnn_frontend::get_heuristics_list | ( | std::array< cudnnBackendHeurMode_t, SIZE > | modes, |
OperationGraph_v8 & | opGraph, | ||
std::function< bool(cudnnBackendDescriptor_t)> | filter_fn | ||
) |
Definition at line 228 of file cudnn_frontend_Heuristics.h.
References cudnn_frontend::EngineHeuristics_v8::EngineHeuristicsBuilder_v8, filter(), cudnn_frontend::EngineHeuristics_v8::mode, and nlohmann::detail::void().
|
inline |
Definition at line 72 of file cudnn_frontend_Logging.h.
References getStream().
Referenced by cudnn_frontend::ExecutionPlanCache_v1::add_plan_to_cache(), cudnn_frontend::MatMulDescBuilder_v8::build(), cudnn_frontend::ReductionDescBuilder_v8::build(), cudnn_frontend::VariantPackBuilder_v8::build(), cudnn_frontend::EngineFallbackListBuilder_v8::build(), cudnn_frontend::OperationGraphBuilder_v8::build(), cudnn_frontend::EngineHeuristicsBuilder_v8::build(), cudnn_frontend::EngineConfigBuilder_v8::build(), cudnn_frontend::ConvDescBuilder_v8::build(), cudnn_frontend::TensorBuilder_v8::build(), cudnn_frontend::PointWiseDescBuilder_v8::build(), cudnn_frontend::EngineBuilder_v8::build(), cudnn_frontend::ExecutionPlanBuilder_v8::build(), cudnn_frontend::OperationBuilder_v8::build(), cudnn_frontend::OperationBuilder_v8::build_conv_backward_data(), cudnn_frontend::OperationBuilder_v8::build_conv_backward_filter(), cudnn_frontend::OperationBuilder_v8::build_conv_forward(), check_errata(), cudnn_frontend::EngineConfigGenerator::cudnnGetPlan(), filter(), cudnn_frontend::EngineConfigGenerator::generate_engine_config(), cudnn_frontend::ExecutionPlanCache_v1::get_plan_from_cache(), cudnn_frontend::ExecutionPlanCache_v2::is_fastest_plan_stable(), and time_sorted_plan().
|
inline |
Definition at line 39 of file cudnn_frontend_Logging.h.
References isLoggingEnabled().
Referenced by getLogger().
bool cudnn_frontend::hasNumericalNote | ( | cudnnBackendDescriptor_t | engine_config | ) |
Definition at line 45 of file cudnn_frontend_Filters.h.
References make_shared_backend_pointer().
|
inline |
Definition at line 32 of file cudnn_frontend_Logging.h.
Referenced by getStream(), cudnn_frontend::ConditionalStreamer::operator<<(), and operator<<().
|
static |
Definition at line 40 of file cudnn_frontend_Errata.h.
|
static |
Definition at line 88 of file cudnn_backend_base.h.
Referenced by cudnn_frontend::ExecutionPlanBuilder_v8::build(), cudnn_frontend::ExecutionPlan_v8::buildTag(), cudnn_frontend::Engine_v8::Engine_v8(), cudnn_frontend::EngineConfig_v8::EngineConfig_v8(), cudnn_frontend::EngineHeuristics_v8::getEngineConfig(), hasNumericalNote(), and cudnn_frontend::BackendDescriptor::initialize_managed_backend_pointer().
|
static |
Definition at line 79 of file cudnn_frontend_Logging.h.
References cudnn_frontend::BackendDescriptor::describe(), and isLoggingEnabled().
|
inlinestatic |
Definition at line 138 of file cudnn_frontend_utils.h.
References cudnn_frontend::cudnnException::cudnnException(), cudnn_frontend::BackendDescriptor::set_error(), cudnn_frontend::BackendDescriptor::set_status(), and to_string().
Referenced by cudnn_frontend::MatMulDescBuilder_v8::build(), cudnn_frontend::ReductionDescBuilder_v8::build(), cudnn_frontend::VariantPackBuilder_v8::build(), cudnn_frontend::EngineFallbackListBuilder_v8::build(), cudnn_frontend::OperationGraphBuilder_v8::build(), cudnn_frontend::EngineHeuristicsBuilder_v8::build(), cudnn_frontend::EngineConfigBuilder_v8::build(), cudnn_frontend::ConvDescBuilder_v8::build(), cudnn_frontend::TensorBuilder_v8::build(), cudnn_frontend::PointWiseDescBuilder_v8::build(), cudnn_frontend::EngineBuilder_v8::build(), cudnn_frontend::ExecutionPlanBuilder_v8::build(), cudnn_frontend::OperationBuilder_v8::build(), cudnn_frontend::OperationBuilder_v8::build_conv_backward_data(), cudnn_frontend::OperationBuilder_v8::build_conv_backward_filter(), cudnn_frontend::OperationBuilder_v8::build_conv_forward(), cudnn_frontend::OperationBuilder_v8::build_matmul_op(), cudnn_frontend::OperationBuilder_v8::build_pointwise_op(), cudnn_frontend::OperationBuilder_v8::build_reduction_op(), cudnn_frontend::Engine_v8::buildKnobs(), cudnn_frontend::ExecutionPlan_v8::buildTag(), cudnn_frontend::ExecutionPlan_v8::computeWorkSpaceSize(), cudnn_frontend::Engine_v8::Engine_v8(), cudnn_frontend::EngineConfig_v8::EngineConfig_v8(), cudnn_frontend::ExecutionPlan_v8::fetchNotes(), cudnn_frontend::EngineHeuristics_v8::getEngineConfig(), cudnn_frontend::EngineHeuristics_v8::getEngineConfigCount(), cudnn_frontend::OperationGraph_v8::getEngineCount(), 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::setreductionDesc(), and cudnn_frontend::OperationBuilder_v8::setwDesc().
|
inlinestatic |
Definition at line 55 of file cudnn_frontend_utils.h.
References cudnn_frontend::cudnnException::cudnnException().
|
inlinestatic |
Definition at line 63 of file cudnn_frontend_utils.h.
References cudnn_frontend::cudnnException::cudnnException().
auto cudnn_frontend::time_sorted_plan | ( | cudnnHandle_t | handle, |
executionPlans_t | plans, | ||
VariantPack const & | variantPack | ||
) | -> executionPlans_t |
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.
Definition at line 38 of file cudnn_frontend_find_plan.h.
References CUDNN_FIND_SAMPLE_MEDIAN_OF_THREE, CUDNN_FIND_SAMPLE_ONCE, CUDNN_FIND_SAMPLE_TILL_STABLE, cudnn_frontend::ExecutionPlan_v8::getExecutionTime(), getLogger(), and to_string().
|
inlinestatic |
Definition at line 72 of file cudnn_frontend_utils.h.
Referenced by cudnn_frontend::EngineConfigGenerator::cudnnGetPlan(), cudnn_frontend::Tensor_v8::describe(), cudnn_frontend::ConvDesc_v8::describe(), set_error_and_throw_exception(), and time_sorted_plan().
|
inlinestatic |
Definition at line 101 of file cudnn_frontend_utils.h.