public:
BackendResolver(::internal::BackendManager &backend_manager) : _backend_manager(backend_manager)
{
-#define OP(InternalName, NnApiName) \
- { \
- const auto &backend_str = \
- ::nnfw::util::EnvVar{std::string("OP_BACKEND_") + #NnApiName}.asString("acl_cl"); \
- auto backend = _backend_manager.get(backend_str); \
- _gen_map[typeid(::internal::tflite::op::InternalName::Node)] = backend; \
+ const auto &backend_all_str =
+ ::nnfw::util::EnvVar{std::string("OP_BACKEND_ALLOPS")}.asString("none");
+ if (backend_all_str.compare("none") != 0)
+ {
+ VERBOSE(BackendResolver) << "Use backend for all ops: " << backend_all_str << std::endl;
+#define OP(InternalName, NnApiName) \
+ { \
+ auto backend = _backend_manager.get(backend_all_str); \
+ _gen_map[typeid(::internal::tflite::op::InternalName::Node)] = backend; \
+ }
+#include "internal/op/Op.lst"
+#undef OP
+ }
+ else
+ {
+#define OP(InternalName, NnApiName) \
+ { \
+ const auto &backend_str = \
+ ::nnfw::util::EnvVar{std::string("OP_BACKEND_") + #NnApiName}.asString("acl_cl"); \
+ auto backend = _backend_manager.get(backend_str); \
+ VERBOSE(BackendResolver) << "backend for " << #NnApiName << ": " << backend_str << std::endl; \
+ _gen_map[typeid(::internal::tflite::op::InternalName::Node)] = backend; \
}
#include "internal/op/Op.lst"
#undef OP
+ }
// TODO : It's just workaround. It's logic should be changed.
_gen_map[typeid(::internal::tflite::op::TensorConvert::CpuFromCommon::Node)] =