diff --git a/hipamd/api/hip/hip_internal.hpp b/hipamd/api/hip/hip_internal.hpp index 57847e4cbe..cfe5cca7d1 100644 --- a/hipamd/api/hip/hip_internal.hpp +++ b/hipamd/api/hip/hip_internal.hpp @@ -154,13 +154,12 @@ public: bool dyn_undef; }; private: - std::unordered_map functions_; + std::unordered_map functions_; std::unordered_multimap vars_; static PlatformState* platform_; - // the lock_ is recursive - PlatformState() : lock_("Guards global function map", true) {} + PlatformState() : lock_("Guards global function map") {} ~PlatformState() {} public: static PlatformState& instance() { diff --git a/hipamd/api/hip/hip_module.cpp b/hipamd/api/hip/hip_module.cpp index e7a34c896b..bdd792e8a0 100644 --- a/hipamd/api/hip/hip_module.cpp +++ b/hipamd/api/hip/hip_module.cpp @@ -114,28 +114,6 @@ extern bool __hipExtractCodeObjectFromFatBinary(const void* data, const std::vector& devices, std::vector>& code_objs); -bool ihipModuleRegisterFunc(amd::Program* program, hipModule_t* module) { - std::vector func_names; - device::Program* dev_program - = program->getDeviceProgram(*hip::getCurrentContext()->devices()[0]); - - if (!dev_program->getFuncsFromCodeObj(&func_names)) { - return false; - } - - for (auto it = func_names.begin(); it != func_names.end(); ++it) { - auto modules = new std::vector>(g_devices.size()); - for (size_t dev = 0; dev < g_devices.size(); ++dev) { - modules->at(dev) = std::make_pair(*module, true); - } - - PlatformState::DeviceFunction dfunc{std::string{it->c_str()}, modules, - std::vector(g_devices.size())}; - PlatformState::instance().registerFunction(it->c_str(), dfunc); - } - - return true; -} bool ihipModuleRegisterUndefined(amd::Program* program, hipModule_t* module) { std::vector undef_vars; @@ -218,10 +196,6 @@ hipError_t ihipModuleLoadData(hipModule_t *module, const void *image) return hipErrorSharedObjectSymbolNotFound; } - if (!ihipModuleRegisterFunc(program, module)) { - return hipErrorSharedObjectSymbolNotFound; - } - if(CL_SUCCESS != program->build(hip::getCurrentContext()->devices(), nullptr, nullptr, nullptr)) { return hipErrorSharedObjectInitFailed; } diff --git a/hipamd/api/hip/hip_platform.cpp b/hipamd/api/hip/hip_platform.cpp index e4b4ed8a49..37d022faa9 100644 --- a/hipamd/api/hip/hip_platform.cpp +++ b/hipamd/api/hip/hip_platform.cpp @@ -231,7 +231,7 @@ void PlatformState::registerVar(const void* hostvar, void PlatformState::registerFunction(const void* hostFunction, const DeviceFunction& func) { amd::ScopedLock lock(lock_); - functions_.insert(std::make_pair(std::string(reinterpret_cast(hostFunction)), func)); + functions_.insert(std::make_pair(hostFunction, func)); } bool ihipGetFuncAttributes(const char* func_name, amd::Program* program, hipFuncAttributes* func_attr) { @@ -272,7 +272,7 @@ bool CL_CALLBACK getSvarInfo(cl_program program, std::string var_name, void** va hipFunction_t PlatformState::getFunc(const void* hostFunction, int deviceId) { amd::ScopedLock lock(lock_); - const auto it = functions_.find(std::string(reinterpret_cast(hostFunction))); + const auto it = functions_.find(hostFunction); if (it != functions_.cend()) { PlatformState::DeviceFunction& devFunc = it->second; if (devFunc.functions[deviceId] == 0) { @@ -302,12 +302,12 @@ hipFunction_t PlatformState::getFunc(const void* hostFunction, int deviceId) { bool PlatformState::getFuncAttr(const void* hostFunction, hipFuncAttributes* func_attr) { - amd::ScopedLock lock(lock_); + if (func_attr == nullptr) { return false; } - const auto it = functions_.find(std::string(reinterpret_cast(hostFunction))); + const auto it = functions_.find(hostFunction); if (it == functions_.cend()) { return false; }