pub mod common;
use common::*;
use mnn::ForwardType;
#[test]
fn test_basic_cpu() {
test_basic(ForwardType::CPU).unwrap();
}
#[cfg(feature = "metal")]
#[test]
#[ignore = "Doesn't work on ci"]
fn test_basic_metal() {
test_basic(ForwardType::Metal).unwrap();
}
#[cfg(feature = "opencl")]
#[test]
#[ignore = "Doesn't work on ci"]
fn test_basic_opencl() -> Result<(), Box<dyn std::error::Error>> {
let backend = ForwardType::OpenCL;
let realesr = std::path::Path::new("tests/assets/realesr.mnn");
let mut net = mnn::Interpreter::from_file(realesr)?;
net.set_cache_file(realesr.with_extension("cache"), 128)?;
let mut config = ScheduleConfig::new();
config.set_type(backend);
let mut session = net.create_session(config)?;
net.update_cache_file(&mut session)?;
net.inputs(&session).iter().for_each(|x| {
let mut tensor = x.tensor::<f32>().expect("No tensor");
println!("{}: {:?}", x.name(), tensor.shape());
tensor.fill(1.0f32);
});
net.run_session(&session)?;
let outputs = net.outputs(&session);
outputs.iter().for_each(|x| {
let tensor = x.tensor::<f32>().expect("No tensor");
tensor.wait(ffi::MapType::MAP_TENSOR_READ, true);
println!("Waiting for tensor: {}", x.name());
println!("{}: {:?}", x.name(), tensor.shape());
});
Ok(())
}
#[cfg(feature = "coreml")]
#[test]
fn test_basic_coreml() {
test_basic(ForwardType::CoreML).unwrap();
}
#[cfg(feature = "opengl")]
#[test]
fn test_basic_opengl() {
test_basic(ForwardType::OpenGL).unwrap();
}
#[test]
#[ignore = "takes too long and unreliable on CI"]
fn test_multi_path_cpu_cpu() {
test_multipath_session(ForwardType::CPU, ForwardType::CPU).unwrap();
}