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
21 .set_generate_debug_info(true)
22 .expect("debug info");
23 options
24 .set_optimization_preference(bnns_graph_optimization_preference::IR_SIZE)
25 .expect("optimization preference");
26 assert!(options.target_single_thread());
27 assert!(options.generate_debug_info());
28 assert_eq!(
29 options.optimization_preference(),
30 bnns_graph_optimization_preference::IR_SIZE
31 );
32 }
33
34 println!("bnns smoke passed: relu={relu:?} sigmoid={sigmoid:?}");
35}