35 return filter_fn(const_cast<cudnnBackendDescriptor_t>(p->get_backend_descriptor()));
38 to.insert(to.end(), std::make_move_iterator(p), std::make_move_iterator(from.end()));
40 from.erase(p, from.end());
43 template <cudnnBackendNumericalNote_t NUMERIC_NOTE>
46 bool hasNumerics =
false;
47 auto status = CUDNN_STATUS_SUCCESS;
49 cudnnBackendDescriptor_t engine_ = engine->get_backend_descriptor();
50 int64_t engine_count = -1;
51 status = cudnnBackendGetAttribute(
52 engine_config, CUDNN_ATTR_ENGINECFG_ENGINE, CUDNN_TYPE_BACKEND_DESCRIPTOR, 1, &engine_count, &engine_);
53 if (status == CUDNN_STATUS_SUCCESS) {
54 cudnnBackendNumericalNote_t notes[CUDNN_NUMERICAL_NOTE_TYPE_COUNT];
55 int64_t elem_count = 0;
56 cudnnBackendGetAttribute(engine->get_backend_descriptor(),
57 CUDNN_ATTR_ENGINE_NUMERICAL_NOTE,
58 CUDNN_TYPE_NUMERICAL_NOTE,
59 CUDNN_NUMERICAL_NOTE_TYPE_COUNT,
63 notes, notes + elem_count, [](cudnnBackendNumericalNote_t note) {
return note == NUMERIC_NOTE; })) {
static ManagedOpaqueDescriptor make_shared_backend_pointer(cudnnBackendDescriptorType_t type)
bool hasNumericalNote(cudnnBackendDescriptor_t engine_config)
std::shared_ptr< OpaqueBackendPointer > ManagedOpaqueDescriptor
auto filter(Predicate pred, executionPlans_t &plans) -> executionPlans_t
std::vector< ManagedOpaqueDescriptor > EngineConfigList