cuDNNのアルゴリズムデータ読み書きの例外対策

This commit is contained in:
lltcggie 2016-07-06 22:33:09 +09:00
parent 2ea99797c6
commit aba4f717fb

View File

@ -318,12 +318,19 @@ private:
fclose(fp); fclose(fp);
CcuDNNAlgorithmElement elm; try
msgpack::unpack(sbuf.data(), sbuf.size()).get().convert(elm); {
sbuf.clear(); CcuDNNAlgorithmElement elm;
msgpack::unpack(sbuf.data(), sbuf.size()).get().convert(elm);
sbuf.clear();
const uint64_t key = InfoToKey(kernel_w, kernel_h, pad_w, pad_h, stride_w, stride_h, batch_size); const uint64_t key = InfoToKey(kernel_w, kernel_h, pad_w, pad_h, stride_w, stride_h, batch_size);
mAlgoEmlMap[key] = std::move(elm); mAlgoEmlMap[key] = std::move(elm);
}
catch (...)
{
boost::filesystem::remove(SavePath);
}
return true; return true;
} }
@ -373,22 +380,27 @@ public:
auto &eml = p.second; auto &eml = p.second;
if (eml.IsModefy()) if (eml.IsModefy())
{ {
msgpack::sbuffer sbuf; try
msgpack::pack(sbuf, eml);
uint8_t kernel_w, kernel_h, pad_w, pad_h, stride_w, stride_h;
uint16_t batch_size;
eml.GetLayerData(kernel_w, kernel_h, pad_w, pad_h, stride_w, stride_h, batch_size);
const std::string SavePath = GetDataPath(kernel_w, kernel_h, pad_w, pad_h, stride_w, stride_h, batch_size);
FILE *fp = fopen(SavePath.c_str(), "wb");
if (fp)
{ {
fwrite(sbuf.data(), 1, sbuf.size(), fp); msgpack::sbuffer sbuf;
fclose(fp); msgpack::pack(sbuf, eml);
eml.Saved(); uint8_t kernel_w, kernel_h, pad_w, pad_h, stride_w, stride_h;
uint16_t batch_size;
eml.GetLayerData(kernel_w, kernel_h, pad_w, pad_h, stride_w, stride_h, batch_size);
const std::string SavePath = GetDataPath(kernel_w, kernel_h, pad_w, pad_h, stride_w, stride_h, batch_size);
FILE *fp = fopen(SavePath.c_str(), "wb");
if (fp)
{
fwrite(sbuf.data(), 1, sbuf.size(), fp);
fclose(fp);
eml.Saved();
}
} }
catch(...)
{}
} }
} }
} }