diff --git a/src/Manager.cpp b/src/Manager.cpp index 98d07e49a..7885c2eb2 100644 --- a/src/Manager.cpp +++ b/src/Manager.cpp @@ -58,6 +58,16 @@ Manager::~Manager() return; } + if (this->mManagedSequences.size()) { + SPDLOG_DEBUG("Kompute Manager explicitly running destructor for " + "managed sequences"); + for (const std::pair>& sqPair : + this->mManagedSequences) { + sqPair.second->freeMemoryDestroyGPUResources(); + } + this->mManagedSequences.clear(); + } + if (this->mManagedTensors.size()) { SPDLOG_DEBUG("Kompute Manager explicitly freeing tensors"); for (const std::shared_ptr& tensor : this->mManagedTensors) { @@ -70,16 +80,6 @@ Manager::~Manager() this->mManagedTensors.clear(); } - if (this->mManagedSequences.size()) { - SPDLOG_DEBUG("Kompute Manager explicitly running destructor for " - "managed sequences"); - for (const std::pair>& sqPair : - this->mManagedSequences) { - sqPair.second->freeMemoryDestroyGPUResources(); - } - this->mManagedSequences.clear(); - } - if (this->mFreeDevice) { SPDLOG_INFO("Destroying device"); this->mDevice->destroy( diff --git a/src/Sequence.cpp b/src/Sequence.cpp index 50ef8b0f1..3c3b7b10a 100644 --- a/src/Sequence.cpp +++ b/src/Sequence.cpp @@ -20,7 +20,7 @@ Sequence::Sequence(std::shared_ptr physicalDevice, this->mDevice = device; this->mComputeQueue = computeQueue; this->mQueueIndex = queueIndex; - this->mIsInit = true; + this->mIsInit = false; } Sequence::~Sequence() @@ -203,6 +203,8 @@ Sequence::isInit() void Sequence::freeMemoryDestroyGPUResources() { + SPDLOG_DEBUG("Kompute Sequence freeMemoryDestroyGPUResources called"); + if (!this->mIsInit) { SPDLOG_ERROR("Kompute Sequence freeMemoryDestroyGPUResources called " "but Sequence is not initialized so there's no relevant "