Fix model optimisation
This commit is contained in:
@@ -1899,6 +1899,42 @@ namespace ANSCENTER {
|
||||
return results;
|
||||
}
|
||||
catch (const std::exception& e) {
|
||||
const std::string msg = e.what();
|
||||
|
||||
// ── DML device-removal detection ──────────────────────────
|
||||
// HRESULT 887A0005 = DXGI_ERROR_DEVICE_REMOVED ("The GPU
|
||||
// device instance has been suspended"). Once the D3D12
|
||||
// device is gone the ORT session is permanently broken.
|
||||
// Log once, attempt CPU fallback, suppress further flood.
|
||||
if (msg.find("887A0005") != std::string::npos) {
|
||||
if (!_dmlDeviceLost) {
|
||||
_dmlDeviceLost = true;
|
||||
_logger.LogFatal("ANSONNXYOLO::DetectObjects",
|
||||
"DirectML GPU device lost (887A0005) — attempting CPU fallback",
|
||||
__FILE__, __LINE__);
|
||||
ANS_DBG("ONNXYOLO", "DML device lost — recreating session on CPU");
|
||||
try {
|
||||
m_ortEngine.reset();
|
||||
if (InitOrtEngine(ANSCENTER::EngineType::CPU)) {
|
||||
_logger.LogInfo("ANSONNXYOLO::DetectObjects",
|
||||
"CPU fallback session created successfully",
|
||||
__FILE__, __LINE__);
|
||||
ANS_DBG("ONNXYOLO", "CPU fallback OK");
|
||||
} else {
|
||||
_logger.LogFatal("ANSONNXYOLO::DetectObjects",
|
||||
"CPU fallback session creation failed",
|
||||
__FILE__, __LINE__);
|
||||
}
|
||||
} catch (const std::exception& re) {
|
||||
_logger.LogFatal("ANSONNXYOLO::DetectObjects",
|
||||
std::string("CPU fallback exception: ") + re.what(),
|
||||
__FILE__, __LINE__);
|
||||
}
|
||||
}
|
||||
// Suppress flood — already logged above
|
||||
return {};
|
||||
}
|
||||
|
||||
ANS_DBG("ONNXYOLO", "DetectObjects EXCEPTION: %s cam=%s", e.what(), camera_id.c_str());
|
||||
_logger.LogFatal("ANSONNXYOLO::DetectObjects", e.what(), __FILE__, __LINE__);
|
||||
return {};
|
||||
@@ -1939,6 +1975,22 @@ namespace ANSCENTER {
|
||||
return DetectObjectsBatch(inputs, camera_id);
|
||||
}
|
||||
catch (const std::exception& e) {
|
||||
const std::string msg = e.what();
|
||||
if (msg.find("887A0005") != std::string::npos) {
|
||||
if (!_dmlDeviceLost) {
|
||||
_dmlDeviceLost = true;
|
||||
_logger.LogFatal("ANSONNXYOLO::RunInferencesBatch",
|
||||
"DirectML GPU device lost (887A0005) — attempting CPU fallback",
|
||||
__FILE__, __LINE__);
|
||||
try {
|
||||
m_ortEngine.reset();
|
||||
if (!InitOrtEngine(ANSCENTER::EngineType::CPU))
|
||||
_logger.LogFatal("ANSONNXYOLO::RunInferencesBatch",
|
||||
"CPU fallback session creation failed", __FILE__, __LINE__);
|
||||
} catch (...) {}
|
||||
}
|
||||
return {};
|
||||
}
|
||||
_logger.LogFatal("ANSONNXYOLO::RunInferencesBatch",
|
||||
e.what(), __FILE__, __LINE__);
|
||||
return {};
|
||||
@@ -1976,6 +2028,22 @@ namespace ANSCENTER {
|
||||
return batchResults;
|
||||
}
|
||||
catch (const std::exception& e) {
|
||||
const std::string msg = e.what();
|
||||
if (msg.find("887A0005") != std::string::npos) {
|
||||
if (!_dmlDeviceLost) {
|
||||
_dmlDeviceLost = true;
|
||||
_logger.LogFatal("ANSONNXYOLO::DetectObjectsBatch",
|
||||
"DirectML GPU device lost (887A0005) — attempting CPU fallback",
|
||||
__FILE__, __LINE__);
|
||||
try {
|
||||
m_ortEngine.reset();
|
||||
if (!InitOrtEngine(ANSCENTER::EngineType::CPU))
|
||||
_logger.LogFatal("ANSONNXYOLO::DetectObjectsBatch",
|
||||
"CPU fallback session creation failed", __FILE__, __LINE__);
|
||||
} catch (...) {}
|
||||
}
|
||||
return {};
|
||||
}
|
||||
_logger.LogFatal("ANSONNXYOLO::DetectObjectsBatch",
|
||||
e.what(), __FILE__, __LINE__);
|
||||
return {};
|
||||
|
||||
Reference in New Issue
Block a user