From 8eebf5f6c4323c33ee11ea3d2b990f46bf6dbc5e Mon Sep 17 00:00:00 2001 From: Tianqi Chen <tqchen@users.noreply.github.com> Date: Fri, 13 Apr 2018 14:59:42 -0700 Subject: [PATCH] [RUNTIME] Fault tolerant vulkan init error (#1107) --- src/runtime/vulkan/vulkan_device_api.cc | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/runtime/vulkan/vulkan_device_api.cc b/src/runtime/vulkan/vulkan_device_api.cc index ce2cea65b..aaf658bba 100644 --- a/src/runtime/vulkan/vulkan_device_api.cc +++ b/src/runtime/vulkan/vulkan_device_api.cc @@ -661,13 +661,18 @@ void VulkanWorkspace::Init() { std::lock_guard<std::mutex> lock(this->mu); if (initialized_) return; initialized_ = true; - instance_ = CreateInstance(); - context_ = GetContext(instance_); - LOG(INFO) << "Initialzie Vulkan with " << context_.size() << " devices.."; - for (size_t i = 0; i < context_.size(); ++i) { - LOG(INFO) << "vulkan(" << i - << ")=\'" << context_[i].phy_device_prop.deviceName - << "\' phy_dev_id=" << context_[i].phy_device; + try { + instance_ = CreateInstance(); + context_ = GetContext(instance_); + LOG(INFO) << "Initialzie Vulkan with " << context_.size() << " devices.."; + for (size_t i = 0; i < context_.size(); ++i) { + LOG(INFO) << "vulkan(" << i + << ")=\'" << context_[i].phy_device_prop.deviceName + << "\' phy_dev_id=" << context_[i].phy_device; + } + } catch (const dmlc::Error& err) { + LOG(INFO) << "Cannot initialize vulkan: " << err.what() << "\n" + << "You can still compile vulkan module but cannot run locally"; } } -- GitLab