From b2844bb3c905af9879a1fe0151eb57793a7b592a Mon Sep 17 00:00:00 2001 From: Roman Dzhabarov Date: Wed, 12 Jun 2019 11:36:47 -0700 Subject: [PATCH] List all registered backends in case particular backend is not found (#3088) Summary: Print all backends, improve debuggability in case particular backend is missing. Documentation: n/a Pull Request resolved: https://github.com/pytorch/glow/pull/3088 Differential Revision: D15781780 Pulled By: rdzhabarov fbshipit-source-id: 5edb63be413dfd934effafcda18f54b7aa41b9df --- include/glow/Support/Register.h | 2 +- lib/Backends/Backends.cpp | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/include/glow/Support/Register.h b/include/glow/Support/Register.h index 402ede10e5..e880c7e2fa 100644 --- a/include/glow/Support/Register.h +++ b/include/glow/Support/Register.h @@ -62,7 +62,7 @@ template class FactoryRegistry { return it->second->create(); } -private: + /// \returns all registered factories. static FactoryMap &factories() { static FactoryMap *factories = new FactoryMap(); return *factories; diff --git a/lib/Backends/Backends.cpp b/lib/Backends/Backends.cpp index 8b06861628..4c8aae9fb9 100644 --- a/lib/Backends/Backends.cpp +++ b/lib/Backends/Backends.cpp @@ -25,6 +25,14 @@ Backend *createBackend(BackendKind backendKind) { Backend *createBackend(llvm::StringRef backendName) { auto *backend = FactoryRegistry::get(backendName); + + if (backend == nullptr) { + LOG(INFO) << "List of all registered backends:"; + for (const auto &factory : + FactoryRegistry::factories()) { + LOG(INFO) << factory.first; + } + } CHECK(backend) << strFormat("Cannot find registered backend: %s", backendName.data()); return backend;