mirror of
https://github.com/pykeio/ort
synced 2026-04-25 16:34:55 +02:00
frankly, working on documentation has made me tired of typing out `execution_providers` and `ExecutionProvider` all the time
60 lines
1.5 KiB
Rust
60 lines
1.5 KiB
Rust
use alloc::string::ToString;
|
|
|
|
use super::{ExecutionProvider, ExecutionProviderOptions, RegisterError};
|
|
use crate::{error::Result, session::builder::SessionBuilder};
|
|
|
|
#[derive(Debug, Default, Clone)]
|
|
pub struct Vitis {
|
|
options: ExecutionProviderOptions
|
|
}
|
|
|
|
super::impl_ep!(arbitrary; Vitis);
|
|
|
|
impl Vitis {
|
|
pub fn with_config_file(mut self, config_file: impl ToString) -> Self {
|
|
self.options.set("config_file", config_file.to_string());
|
|
self
|
|
}
|
|
|
|
pub fn with_cache_dir(mut self, cache_dir: impl ToString) -> Self {
|
|
self.options.set("cache_dir", cache_dir.to_string());
|
|
self
|
|
}
|
|
|
|
pub fn with_cache_key(mut self, cache_key: impl ToString) -> Self {
|
|
self.options.set("cache_key", cache_key.to_string());
|
|
self
|
|
}
|
|
}
|
|
|
|
impl ExecutionProvider for Vitis {
|
|
fn name(&self) -> &'static str {
|
|
"VitisAIExecutionProvider"
|
|
}
|
|
|
|
fn supported_by_platform(&self) -> bool {
|
|
cfg!(any(all(target_os = "linux", target_arch = "x86_64"), all(target_os = "windows", target_arch = "x86_64")))
|
|
}
|
|
|
|
#[allow(unused, unreachable_code)]
|
|
fn register(&self, session_builder: &mut SessionBuilder) -> Result<(), RegisterError> {
|
|
#[cfg(any(feature = "load-dynamic", feature = "vitis"))]
|
|
{
|
|
use crate::{AsPointer, ortsys};
|
|
|
|
let ffi_options = self.options.to_ffi();
|
|
ortsys![
|
|
unsafe SessionOptionsAppendExecutionProvider_VitisAI(
|
|
session_builder.ptr_mut(),
|
|
ffi_options.key_ptrs(),
|
|
ffi_options.value_ptrs(),
|
|
ffi_options.len()
|
|
)?
|
|
];
|
|
return Ok(());
|
|
}
|
|
|
|
Err(RegisterError::MissingFeature)
|
|
}
|
|
}
|