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


[ROCm/clr commit: 3b157b3d5f]
Bu işleme şunda yer alıyor:
Satyanvesh Dittakavi
2021-10-26 13:53:22 +00:00
ebeveyn 239cc6b437
işleme 6ef56f09f1
3 değiştirilmiş dosya ile 22 ekleme ve 14 silme
+3
Dosyayı Görüntüle
@@ -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;
}
+1 -14
Dosyayı Görüntüle
@@ -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) {
+18
Dosyayı Görüntüle
@@ -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