Skip to main content

06_bnns_activation/
06_bnns_activation.rs

1use 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}