Macro ndarray::par_azip [−][src]
macro_rules! par_azip { ($($t:tt)*) => { ... }; }
Expand description
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:
ⓘ
par_azip!((a in &mut a, &b in &b, &c in &c) { *a = b + c })
Is equivalent to:
ⓘ
Zip::from(&mut a).and(&b).and(&c).par_for_each(|a, &b, &c| { *a = b + c; });
Panics if any of the arrays are not of the same shape.
Examples
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); }