Add lock to addFatBinary and removeFatBinary

In case hipModule(Un)Load is called from different thread as hipInit we need to grab the lock
as both are going to modify modules_
Also add some logging for __hipExtractCodeObjectFromFatBinary in case binary isn't found for GPU
SWDEV-236032

Change-Id: Icbd72b412502df80d5066cea42a4fbcd5b0b8a98
This commit is contained in:
Christophe Paquot
2020-05-12 15:51:52 -07:00
parent da01762f1a
commit f100ae3679
2 ha cambiato i file con 6 aggiunte e 2 eliminazioni
+2
Vedi File
@@ -212,6 +212,7 @@ public:
void init();
std::vector<std::pair<hipModule_t, bool>>* addFatBinary(const void*data)
{
amd::ScopedLock lock(lock_);
if (initialized_) {
digestFatBinary(data, modules_[data]);
}
@@ -219,6 +220,7 @@ public:
}
void removeFatBinary(std::vector<std::pair<hipModule_t, bool>>* module)
{
amd::ScopedLock lock(lock_);
for (auto& mod : modules_) {
if (&mod.second == module) {
modules_.erase(&mod);
+4 -2
Vedi File
@@ -122,10 +122,12 @@ hipError_t __hipExtractCodeObjectFromFatBinary(const void* data,
num_code_objs++;
}
}
if (num_code_objs == devices.size())
if (num_code_objs == devices.size()) {
return hipSuccess;
else
} else {
DevLogError("hipErrorNoBinaryForGpu: Coudn't find binary for current devices!");
return hipErrorNoBinaryForGpu;
}
}
extern "C" std::vector<std::pair<hipModule_t, bool>>* __hipRegisterFatBinary(const void* data)