From 92be95d082a865b794660ba75b578ec4d53d598b Mon Sep 17 00:00:00 2001 From: Ryan Hill Date: Wed, 28 Apr 2021 00:41:40 -0700 Subject: [PATCH] Add more diagnostics --- .../core/framework/provider_bridge_ort.cc | 22 +++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/onnxruntime/core/framework/provider_bridge_ort.cc b/onnxruntime/core/framework/provider_bridge_ort.cc index 3addd1b155..3b7aa7c397 100644 --- a/onnxruntime/core/framework/provider_bridge_ort.cc +++ b/onnxruntime/core/framework/provider_bridge_ort.cc @@ -873,6 +873,7 @@ struct ProviderSharedLibrary { Env::Default().GetSymbolFromLibrary(handle_, "Provider_SetHost", (void**)&PProvider_SetHost); PProvider_SetHost(&provider_host_); + LOGS_DEFAULT(ERROR) << "(RyanHill) Initialized Provider Shared Library"; return true; } @@ -895,16 +896,23 @@ struct ProviderSharedLibrary { static ProviderSharedLibrary s_library_shared; -bool InitProvidersSharedLibrary(){ +bool InitProvidersSharedLibrary() { return s_library_shared.Ensure(); } +static bool s_shutdown = false; + struct ProviderLibrary { ProviderLibrary(const char* filename) : filename_{filename} {} ~ProviderLibrary() { /*assert(!handle_);*/ } // We should already be unloaded at this point (disabled until Python shuts down deterministically) Provider* Get() { + if (s_shutdown) { + LOGS_DEFAULT(ERROR) << "(RyanHill) Trying to load provider after shutdown! " << filename_; + return nullptr; + } + if (provider_) return provider_; @@ -912,6 +920,7 @@ struct ProviderLibrary { return nullptr; std::string full_path = Env::Default().GetRuntimePath() + std::string(filename_); + LOGS_DEFAULT(ERROR) << "(RyanHill) Loading provider: " << full_path; auto error = Env::Default().LoadDynamicLibrary(full_path, &handle_); if (!error.IsOK()) { LOGS_DEFAULT(ERROR) << error.ErrorMessage(); @@ -922,17 +931,20 @@ struct ProviderLibrary { Env::Default().GetSymbolFromLibrary(handle_, "GetProvider", (void**)&PGetProvider); provider_ = PGetProvider(); + LOGS_DEFAULT(ERROR) << "(RyanHill) Provider Loaded " << full_path; return provider_; } void Unload() { if (handle_) { + LOGS_DEFAULT(ERROR) << "(RyanHill) Shutting down provider " << filename_; if (provider_) provider_->Shutdown(); Env::Default().UnloadDynamicLibrary(handle_); handle_ = nullptr; provider_ = nullptr; + LOGS_DEFAULT(ERROR) << "(RyanHill) Shut down successful for " << filename_; } } @@ -950,8 +962,9 @@ static ProviderLibrary s_library_openvino(LIBRARY_PREFIX "onnxruntime_providers_ static ProviderLibrary s_library_tensorrt(LIBRARY_PREFIX "onnxruntime_providers_tensorrt" LIBRARY_EXTENSION); void UnloadSharedProviders() { + s_shutdown = true; std::cout << "Unloading shared providers..."; - LOGS_DEFAULT(ERROR) << "LOGS_DEFAULT: Unloading shared providers..."; + LOGS_DEFAULT(ERROR) << "Unloading shared providers... (RyanHill)"; s_library_dnnl.Unload(); s_library_openvino.Unload(); @@ -960,7 +973,7 @@ void UnloadSharedProviders() { s_library_shared.Unload(); std::cout << "Finished Unloading shared providers"; - LOGS_DEFAULT(ERROR) << "LOGS_DEFAULT: Finished Unloading shared providers"; + LOGS_DEFAULT(ERROR) << "Finished Unloading shared providers (RyanHill)"; } // Used by test code @@ -972,9 +985,11 @@ std::unique_ptr CreateCUDAPinnedAllocator(int16_t device_id, const c } std::shared_ptr CreateExecutionProviderFactory_Cuda(const OrtCUDAProviderOptions* provider_options) { + LOGS_DEFAULT(ERROR) << "Trying to load CUDA provider (RyanHill)"; if (auto provider = s_library_cuda.Get()) return provider->CreateExecutionProviderFactory(provider_options); + LOGS_DEFAULT(ERROR) << "FAILED TO LOAD CUDA PROVIDER (RyanHill)"; return nullptr; } @@ -1013,7 +1028,6 @@ ProviderInfo_OpenVINO* GetProviderInfo_OpenVINO() { } ProviderInfo_CUDA* GetProviderInfo_CUDA() { - LOGS_DEFAULT(ERROR) << "GetProviderInfo_CUDA being called..."; if (auto provider = s_library_cuda.Get()) return reinterpret_cast(provider->GetInfo()); LOGS_DEFAULT(ERROR) << "GetProviderInfo_CUDA called, returning nullptr";