From c7b146589f1f8c2d704c8658735544ddf42983dd Mon Sep 17 00:00:00 2001 From: Alexander Yee Date: Sat, 15 Aug 2026 13:42:24 -0700 Subject: [PATCH 1/2] Try to actually fix ONNX starving the UI. --- SerialPrograms/Source/ML/Models/ML_ONNXRuntimeHelpers.cpp | 2 ++ SerialPrograms/Source/ML/Models/ML_OrtEnv.cpp | 8 +++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/SerialPrograms/Source/ML/Models/ML_ONNXRuntimeHelpers.cpp b/SerialPrograms/Source/ML/Models/ML_ONNXRuntimeHelpers.cpp index ab4a85bb38..70215bb4f2 100644 --- a/SerialPrograms/Source/ML/Models/ML_ONNXRuntimeHelpers.cpp +++ b/SerialPrograms/Source/ML/Models/ML_ONNXRuntimeHelpers.cpp @@ -200,6 +200,7 @@ Ort::Session create_session( try{ logger.log("Attempting to create Ort::Session with GPU acceleration..."); Ort::SessionOptions gpu_options = create_session_options(model_cache_path, true); + gpu_options.DisablePerSessionThreads(); Ort::Session session{global_ort_env(), onnx_path.c_str(), gpu_options}; logger.log("Ort::Session created"); // when Ort::Ssssion is created, if possible, it will create a model cache @@ -221,6 +222,7 @@ Ort::Session create_session( logger.log("Creating dedicated CPU-only session..."); Ort::SessionOptions cpu_options = create_session_options(model_cache_path, false); + cpu_options.DisablePerSessionThreads(); Ort::Session session{global_ort_env(), onnx_path.c_str(), cpu_options}; logger.log("Ort::Session created"); diff --git a/SerialPrograms/Source/ML/Models/ML_OrtEnv.cpp b/SerialPrograms/Source/ML/Models/ML_OrtEnv.cpp index c5474025ed..255335adb8 100644 --- a/SerialPrograms/Source/ML/Models/ML_OrtEnv.cpp +++ b/SerialPrograms/Source/ML/Models/ML_OrtEnv.cpp @@ -5,6 +5,8 @@ */ #include "Common/Cpp/Exceptions.h" +#include "Common/Cpp/PrettyPrint.h" +#include "CommonFramework/Logging/Logger.h" #include "CommonFramework/Options/Environment/PerformanceOptions.h" #include "ML_OrtEnv.h" @@ -14,7 +16,11 @@ namespace PokemonAutomation{ Ort::ThreadingOptions make_ort_threading_options(){ Ort::ThreadingOptions ret; - ret.SetGlobalIntraOpNumThreads((int)PerformanceOptions::instance().NORMAL_THREAD_POOL.MAX_THREADS); + int threads = (int)PerformanceOptions::instance().NORMAL_THREAD_POOL.MAX_THREADS; + global_logger_tagged().log("Setting ONNX Threads: " + tostr_u_commas(threads)); + ret.SetGlobalIntraOpNumThreads(threads); + ret.SetGlobalInterOpNumThreads(1); + ret.SetGlobalSpinControl(0); return ret; } From fe15ad40be1afb59157274c48d1fee9bf429d0ba Mon Sep 17 00:00:00 2001 From: Alexander Yee Date: Sat, 15 Aug 2026 20:32:51 -0700 Subject: [PATCH 2/2] Wire up global OrtEnv to ONNX options. --- SerialPrograms/Source/ML/Models/ML_OrtEnv.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/SerialPrograms/Source/ML/Models/ML_OrtEnv.cpp b/SerialPrograms/Source/ML/Models/ML_OrtEnv.cpp index 255335adb8..302955ba01 100644 --- a/SerialPrograms/Source/ML/Models/ML_OrtEnv.cpp +++ b/SerialPrograms/Source/ML/Models/ML_OrtEnv.cpp @@ -16,10 +16,16 @@ namespace PokemonAutomation{ Ort::ThreadingOptions make_ort_threading_options(){ Ort::ThreadingOptions ret; - int threads = (int)PerformanceOptions::instance().NORMAL_THREAD_POOL.MAX_THREADS; - global_logger_tagged().log("Setting ONNX Threads: " + tostr_u_commas(threads)); - ret.SetGlobalIntraOpNumThreads(threads); - ret.SetGlobalInterOpNumThreads(1); + { + int threads = (int)PerformanceOptions::instance().ONNX_OPTIONS.MAX_INTRA_OP_THREADS; + global_logger_tagged().log("Setting ONNX Intra-Op Threads: " + tostr_u_commas(threads)); + ret.SetGlobalIntraOpNumThreads(threads); + } + { + int threads = (int)PerformanceOptions::instance().ONNX_OPTIONS.MAX_INTER_OP_THREADS; + global_logger_tagged().log("Setting ONNX Inter-Op Threads: " + tostr_u_commas(threads)); + ret.SetGlobalInterOpNumThreads(threads); + } ret.SetGlobalSpinControl(0); return ret; }