Fix mixed UTF16 issue (LabVIEW) and fix ANSFR for Intel
This commit is contained in:
@@ -1396,35 +1396,53 @@ namespace ANSCENTER
|
||||
break;
|
||||
}
|
||||
|
||||
// NPU availability is probed once per process to avoid
|
||||
// repeated "Failed to load shared library" errors.
|
||||
static bool s_npuProbed = false;
|
||||
static bool s_npuAvailable = false;
|
||||
|
||||
const std::string precision = "FP16";
|
||||
const std::string numberOfThreads = "8";
|
||||
const std::string numberOfStreams = "8";
|
||||
|
||||
std::vector<std::unordered_map<std::string, std::string>> try_configs = {
|
||||
{ {"device_type","AUTO:NPU,GPU"}, {"precision",precision},
|
||||
{"num_of_threads",numberOfThreads}, {"num_streams",numberOfStreams},
|
||||
{"enable_opencl_throttling","False"}, {"enable_qdq_optimizer","True"} },
|
||||
{ {"device_type","GPU.0"}, {"precision",precision},
|
||||
{"num_of_threads",numberOfThreads}, {"num_streams",numberOfStreams},
|
||||
{"enable_opencl_throttling","False"}, {"enable_qdq_optimizer","True"} },
|
||||
{ {"device_type","GPU.1"}, {"precision",precision},
|
||||
{"num_of_threads",numberOfThreads}, {"num_streams",numberOfStreams},
|
||||
{"enable_opencl_throttling","False"}, {"enable_qdq_optimizer","True"} },
|
||||
{ {"device_type","AUTO:GPU,CPU"}, {"precision",precision},
|
||||
{"num_of_threads",numberOfThreads}, {"num_streams",numberOfStreams},
|
||||
{"enable_opencl_throttling","False"}, {"enable_qdq_optimizer","True"} }
|
||||
auto makeConfig = [&](const std::string& device) {
|
||||
return std::unordered_map<std::string, std::string>{
|
||||
{"device_type", device}, {"precision", precision},
|
||||
{"num_of_threads", numberOfThreads}, {"num_streams", numberOfStreams},
|
||||
{"enable_opencl_throttling", "False"}, {"enable_qdq_optimizer", "True"}
|
||||
};
|
||||
};
|
||||
|
||||
std::vector<std::unordered_map<std::string, std::string>> try_configs;
|
||||
if (!s_npuProbed || s_npuAvailable) {
|
||||
try_configs.push_back(makeConfig("AUTO:NPU,GPU"));
|
||||
}
|
||||
try_configs.push_back(makeConfig("GPU.0"));
|
||||
try_configs.push_back(makeConfig("GPU.1"));
|
||||
try_configs.push_back(makeConfig("AUTO:GPU,CPU"));
|
||||
|
||||
for (const auto& config : try_configs) {
|
||||
try {
|
||||
_ortLivenessSessionOptions->AppendExecutionProvider_OpenVINO_V2(config);
|
||||
std::cout << "[ANSFDBase] OpenVINO EP attached ("
|
||||
<< config.at("device_type") << ")." << std::endl;
|
||||
attached = true;
|
||||
if (config.at("device_type").find("NPU") != std::string::npos) {
|
||||
s_npuProbed = true;
|
||||
s_npuAvailable = true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
catch (const Ort::Exception& e) {
|
||||
this->_logger.LogError("ANSFDBase::LoadLivenessModel", e.what(), __FILE__, __LINE__);
|
||||
if (config.at("device_type").find("NPU") != std::string::npos) {
|
||||
if (!s_npuProbed) {
|
||||
std::cout << "[ANSFDBase] NPU not available — skipping NPU configs for subsequent models." << std::endl;
|
||||
}
|
||||
s_npuProbed = true;
|
||||
s_npuAvailable = false;
|
||||
} else {
|
||||
this->_logger.LogError("ANSFDBase::LoadLivenessModel", e.what(), __FILE__, __LINE__);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user