[][src]Macro ndarray::par_azip

macro_rules! par_azip {
    ($($t:tt)*) => { ... };
}

Parallelized array zip macro: lock step function application across several arrays and producers.

This is a version of the azip macro that requires the crate feature rayon to be enabled.

See the azip macro for more details about the macro syntax!

This example:

This example is not tested
par_azip!((a in &mut a, &b in &b, &c in &c) { *a = b + c })

Is equivalent to:

This example is not tested
Zip::from(&mut a).and(&b).and(&c).par_apply(|a, &b, &c| {
    *a = b + c;
});

Panics if any of the arrays are not of the same shape.

Examples

extern crate ndarray;

use ndarray::Array2;
use ndarray::parallel::par_azip;

type M = Array2<f32>;

fn main() {
    let mut a = M::zeros((16, 16));
    let b = M::from_elem(a.dim(), 1.);
    let c = M::from_elem(a.dim(), 2.);

    // Compute a simple ternary operation:
    // elementwise addition of b and c, stored in a

    par_azip!((a in &mut a, &b in &b, &c in &c) *a = b + c);

    assert_eq!(a, &b + &c);
}