SWDEV-304151 - Reset file descriptor after Module Load
File descriptors opened during hipModuleLoad are not closed until hipModuleUnLoad. In large models, this exceeds the ulimit for no. of open file descriptors causing out of resource issues. Hence, close the file descriptors once the required data is read from the file, and not wait until unload. Change-Id: Ic50d424e5ca388715b1e6309a0de72a480321582
Этот коммит содержится в:
1 родитель
ce58dae704
Коммит
3b157b3d5f
3 files changed
+22
-14
No files matched your search
@@ -509,6 +509,9 @@ hipError_t DynCO::loadCodeObject(const char* fname, const void* image) {
|
||||
// Define Global functions
|
||||
IHIP_RETURN_ONFAIL(populateDynGlobalFuncs());
|
||||
|
||||
// Resets the file info such as desc, size and name
|
||||
// as they are not necessary once the code object is loaded
|
||||
fb_info_->ResetFileInfo();
|
||||
return hipSuccess;
|
||||
}
|
||||
|
||||
|
||||
@@ -29,20 +29,7 @@ FatBinaryInfo::~FatBinaryInfo() {
|
||||
delete fbd;
|
||||
}
|
||||
|
||||
if (fdesc_ > 0) {
|
||||
if (fsize_ && !amd::Os::MemoryUnmapFile(image_, fsize_)) {
|
||||
guarantee(false, "Cannot unmap file");
|
||||
}
|
||||
if (!amd::Os::CloseFileHandle(fdesc_)) {
|
||||
guarantee(false, "Cannot close file");
|
||||
}
|
||||
}
|
||||
|
||||
fname_ = std::string();
|
||||
fdesc_ = amd::Os::FDescInit();
|
||||
fsize_ = 0;
|
||||
image_ = nullptr;
|
||||
uri_ = std::string();
|
||||
ResetFileInfo();
|
||||
}
|
||||
|
||||
hipError_t FatBinaryInfo::ExtractFatBinary(const std::vector<hip::Device*>& devices) {
|
||||
|
||||
@@ -67,6 +67,24 @@ public:
|
||||
return hipSuccess;
|
||||
}
|
||||
|
||||
// Resets the file information
|
||||
void ResetFileInfo() {
|
||||
if (fdesc_ > 0) {
|
||||
if (fsize_ && !amd::Os::MemoryUnmapFile(image_, fsize_)) {
|
||||
guarantee(false, "Cannot unmap file");
|
||||
}
|
||||
if (!amd::Os::CloseFileHandle(fdesc_)) {
|
||||
guarantee(false, "Cannot close file");
|
||||
}
|
||||
}
|
||||
|
||||
fname_ = std::string();
|
||||
fdesc_ = amd::Os::FDescInit();
|
||||
fsize_ = 0;
|
||||
image_ = nullptr;
|
||||
uri_ = std::string();
|
||||
}
|
||||
|
||||
private:
|
||||
std::string fname_; // File name
|
||||
amd::Os::FileDesc fdesc_; // File descriptor
|
||||
|
||||
Reference in new issue
Block a user