06_bnns_activation/
06_bnns_activation.rs1use apple_accelerate::{
2 bnns_graph_optimization_preference, bnns_relu_f32, bnns_sigmoid_f32, BnnsGraphCompileOptions,
3};
4
5fn main() {
6 let relu = bnns_relu_f32(&[-2.0_f32, 0.5, 3.0]).expect("relu");
7 assert!(relu
8 .iter()
9 .zip([0.0_f32, 0.5, 3.0])
10 .all(|(actual, expected)| (*actual - expected).abs() < 1.0e-6));
11
12 let sigmoid = bnns_sigmoid_f32(&[0.0_f32, 2.0]).expect("sigmoid");
13 assert!((sigmoid[0] - 0.5).abs() < 1.0e-6);
14 assert!((sigmoid[1] - 0.880_797).abs() < 1.0e-5);
15
16 if let Some(mut options) = BnnsGraphCompileOptions::new() {
17 options
18 .set_target_single_thread(true)
19 .expect("single thread");
20 options.set_generate_debug_info(true).expect("debug info");
21 options
22 .set_optimization_preference(bnns_graph_optimization_preference::IR_SIZE)
23 .expect("optimization preference");
24 assert!(options.target_single_thread());
25 assert!(options.generate_debug_info());
26 assert_eq!(
27 options.optimization_preference(),
28 bnns_graph_optimization_preference::IR_SIZE
29 );
30 }
31
32 println!("bnns smoke passed: relu={relu:?} sigmoid={sigmoid:?}");
33}