Search the user's own runtime directory before the system library
The reference desktop's only system ONNX Runtime is Arch's onnxruntime-opt-cuda: 1.29, built without TensorRT and against cuDNN 8 on a cuDNN 9 machine. The probe rejects both providers correctly and the app runs on the CPU provider, which is right and not what anyone wants. runtime/ beside the models is now searched ahead of /usr/lib, tools/fetch-desktop-runtime.sh fills it with the four libraries from the current onnxruntime-gpu wheel (cuDNN 9, TensorRT 10), and the About caption lists every rung that lost and why, not only the first. Verified: the app selects TensorRT from that directory with no environment variable set.
This commit is contained in:
@@ -60,6 +60,18 @@ pub fn init(runtime_dirs: Vec<PathBuf>) {
|
||||
crate::memory::evict_at(crate::memory::Tier::Gpu, dr_inference_engine::release_all);
|
||||
}
|
||||
|
||||
/// Where a person can put a runtime by hand: `runtime/` beside the models,
|
||||
/// searched before any system library. The system copy on the reference
|
||||
/// desktop is built without TensorRT and against the wrong cuDNN, and a
|
||||
/// working one is four files from the `onnxruntime-gpu` wheel; this is
|
||||
/// where they go, and `tools/fetch-desktop-runtime.sh` puts them there.
|
||||
pub fn user_runtime_dir() -> PathBuf {
|
||||
crate::library::shared_face_models_dir()
|
||||
.parent()
|
||||
.map(|p| p.join("runtime"))
|
||||
.unwrap_or_else(|| PathBuf::from("runtime"))
|
||||
}
|
||||
|
||||
/// Which form the current backend loads `detector` in, given the files on
|
||||
/// this device — the fact `faces.model_id` has to carry (§7).
|
||||
///
|
||||
@@ -94,8 +106,18 @@ pub fn about_lines() -> (String, String) {
|
||||
status.engines.0,
|
||||
status.engines.1
|
||||
)
|
||||
} else {
|
||||
} else if status.failed.is_empty() {
|
||||
status.reason
|
||||
} else {
|
||||
// Every rung that was tried and why it lost, not only the first:
|
||||
// "TensorRT: not enabled in this build" says nothing about why CUDA
|
||||
// was not taken instead.
|
||||
status
|
||||
.failed
|
||||
.iter()
|
||||
.map(|(rung, why)| format!("{}: {why}", rung.label()))
|
||||
.collect::<Vec<_>>()
|
||||
.join(" · ")
|
||||
};
|
||||
(line, detail)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user