chela 0.0.2

High-performance Machine Learning, Auto-Differentiation and Tensor Algebra crate for Rust
Documentation
use chela::*;
use std::env;

use cpu_time::ProcessTime;


const N: usize = 10000000;

type T = f32;


fn reduce0() -> u128 {
    let tensor = NdArray::<f32>::rand([N]).astype::<T>();

    let start = ProcessTime::now();
    _ = tensor.sum();
    start.elapsed().as_nanos()
}

fn reduce1() -> u128 {
    let tensor = NdArray::<f32>::rand([N]).astype::<T>();

    let start = ProcessTime::now();
    _ = tensor.product();
    start.elapsed().as_nanos()
}

fn reduce2() -> u128 {
    let tensor = NdArray::<f32>::rand([N]).astype::<T>();

    let start = ProcessTime::now();
    _ = tensor.min();
    start.elapsed().as_nanos()
}

fn reduce3() -> u128 {
    let tensor = NdArray::<f32>::rand([N]).astype::<T>();

    let start = ProcessTime::now();
    _ = tensor.max();
    start.elapsed().as_nanos()
}

fn reduce10() -> u128 {
    let tensor = NdArray::<f32>::rand([N, 2]).astype::<T>();
    let tensor = tensor.slice_along(Axis(1), 0);

    let start = ProcessTime::now();
    _ = tensor.sum();
    start.elapsed().as_nanos()
}

fn reduce11() -> u128 {
    let tensor = NdArray::<f32>::rand([N, 2]).astype::<T>();
    let tensor = tensor.slice_along(Axis(1), 0);

    let start = ProcessTime::now();
    _ = tensor.product();
    start.elapsed().as_nanos()
}

fn reduce12() -> u128 {
    let tensor = NdArray::<f32>::rand([N, 2]).astype::<T>();
    let tensor = tensor.slice_along(Axis(1), 0);

    let start = ProcessTime::now();
    _ = tensor.min();
    start.elapsed().as_nanos()
}

fn reduce13() -> u128 {
    let tensor = NdArray::<f32>::rand([N, 2]).astype::<T>();
    let tensor = tensor.slice_along(Axis(1), 0);

    let start = ProcessTime::now();
    _ = tensor.max();
    start.elapsed().as_nanos()
}

fn main() {
    let args: Vec<String> = env::args().collect();
    let id = args[1].parse::<usize>().unwrap();

    let time =
        if id == 0 { reduce0() }
        else if id == 1 { reduce1() }
        else if id == 2 { reduce2() }
        else if id == 3 { reduce3() }

        else if id == 10 { reduce10() }
        else if id == 11 { reduce11() }
        else if id == 12 { reduce12() }
        else if id == 13 { reduce13() }

        else { panic!("invalid ID") };

    println!("{}", time);
}