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:
@@ -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);
|
||||
|
||||
@@ -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)
|
||||
|
||||
Fai riferimento in un nuovo problema
Block a user