// Copyright © Advanced Micro Devices, Inc., or its affiliates. // SPDX-License-Identifier: MIT #pragma once #include #include #include #include #include #include #include "HipblasltContainer.hpp" #include "HipblasltUtils.hpp" // NOLINTBEGIN struct HipdnnEnginePluginHandle { public: virtual ~HipdnnEnginePluginHandle() = default; hipblasLtHandle_t hipblasltHandle = nullptr; void setStream(hipStream_t stream) { _stream = stream; } hipStream_t getStream() const { return _stream; } std::shared_ptr hipblasltContainer; hipblaslt_plugin::EngineManager& getEngineManager() { return hipblasltContainer->getEngineManager(); } void storeEngineDetailsDetachedBuffer(const void* ptr, std::unique_ptr buffer) { HIPDNN_PLUGIN_LOG_INFO("Storing detached buffer at address: " << ptr); _engineDetailsBuffers[ptr] = std::move(buffer); } void removeEngineDetailsDetachedBuffer(const void* ptr) { HIPDNN_PLUGIN_LOG_INFO("Removing detached buffer at address: " << ptr); auto it = _engineDetailsBuffers.find(ptr); if(it != _engineDetailsBuffers.end()) { _engineDetailsBuffers.erase(it); } else { HIPDNN_PLUGIN_LOG_WARN( "No detached buffer found at address: " << ptr << ". Could not remove engine " "details. Ensure you " "are using the same hipdnn handle you used for engine details creation"); } } private: hipStream_t _stream = nullptr; std::unordered_map> _engineDetailsBuffers; }; // NOLINTEND