#pragma once // Shared runtime switch for enabling the Intel NPU in OpenVINO code paths. // // NPU is DISABLED BY DEFAULT because the NPU plugin on some Intel platforms // (observed: Core Ultra 9 285K / Arrow Lake) crashes inside // ov::Core::compile_model or Ort::Session construction when compiling // multiple ONNX models in quick succession. That failure mode cannot be // caught by the surrounding try/catch (it fires on a plugin worker thread) // and takes down the host process. // // To opt into NPU (e.g. on a machine with a known-good NPU driver), set the // environment variable OPENVINO_ENABLE_NPU to 1 / true / yes / on before // launching the host process. // // Every OpenVINO device-selection site in this codebase consults this helper // rather than probing NPU unconditionally. #include #include #include #include namespace ANSCENTER { inline bool IsOpenVINONpuEnabled() { static const bool enabled = [] { const char* v = std::getenv("OPENVINO_ENABLE_NPU"); if (!v || !*v) return false; std::string s(v); std::transform(s.begin(), s.end(), s.begin(), [](unsigned char c) { return static_cast(std::tolower(c)); }); return s == "1" || s == "true" || s == "yes" || s == "on"; }(); return enabled; } }