ort 2.0.0-rc.13

A safe Rust wrapper for ONNX Runtime 1.28 - Optimize and accelerate machine learning inference & training
Documentation
use alloc::string::ToString;

use super::{ExecutionProvider, ExecutionProviderOptions};
use crate::{AsPointer, error::Result, ortsys, 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 register(&self, session_builder: &mut SessionBuilder) -> Result<()> {
		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()
			)?
		];
		Ok(())
	}
}