From 0dfadaee66de156c1cda90a3d9f160764e5538d9 Mon Sep 17 00:00:00 2001 From: Sam Skalicky Date: Fri, 3 Jul 2020 00:05:34 +0000 Subject: [PATCH] initial commit --- src/runtime/c_runtime_api.cc | 2 ++ src/runtime/cuda/cuda_device_api.cc | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/runtime/c_runtime_api.cc b/src/runtime/c_runtime_api.cc index 0164b1bc4d39..6d65c755918a 100644 --- a/src/runtime/c_runtime_api.cc +++ b/src/runtime/c_runtime_api.cc @@ -103,6 +103,8 @@ class DeviceAPIManager { std::mutex mutex_; // constructor DeviceAPIManager() { std::fill(api_.begin(), api_.end(), nullptr); } + // destructor + ~DeviceAPIManager() { std::fill(api_.begin(), api_.end(), nullptr); } // Global static variable. static DeviceAPIManager* Global() { static DeviceAPIManager inst; diff --git a/src/runtime/cuda/cuda_device_api.cc b/src/runtime/cuda/cuda_device_api.cc index 14444c92f620..a1e25cefed0f 100644 --- a/src/runtime/cuda/cuda_device_api.cc +++ b/src/runtime/cuda/cuda_device_api.cc @@ -209,6 +209,8 @@ class CUDADeviceAPI final : public DeviceAPI { static const std::shared_ptr& Global() { static std::shared_ptr inst = std::make_shared(); + if (inst.use_count() == 0) + inst = std::make_shared(); return inst; }