Skip to content

Commit 1758509

Browse files
committed
make a version of nbody that uses as_parallel
1 parent 3b1fa38 commit 1758509

File tree

2 files changed

+9
-1
lines changed

2 files changed

+9
-1
lines changed

rayon-demo/src/nbody/bench.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,11 @@ fn nbody_par(b: &mut ::test::Bencher) {
3030
nbody_bench(b, |n| { n.tick_par(); });
3131
}
3232

33+
#[bench]
34+
fn nbody_par_as_parallel(b: &mut ::test::Bencher) {
35+
nbody_bench(b, |n| { n.tick_par_as_parallel(); });
36+
}
37+
3338
#[bench]
3439
fn nbody_parreduce(b: &mut ::test::Bencher) {
3540
nbody_bench(b, |n| { n.tick_par_reduce(); });

rayon-demo/src/nbody/nbody.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@
3232
use cgmath::{InnerSpace, Point3, Vector3, Zero};
3333
use rand::{Rand, Rng};
3434
use rayon::prelude::*;
35+
#[cfg(test)]
36+
use rayon::iter::AsParallel;
3537
use std::f64::consts::PI;
3638

3739
const INITIAL_VELOCITY: f64 = 8.0; // set to 0.0 to turn off.
@@ -111,6 +113,7 @@ impl NBodyBenchmark {
111113
out_bodies
112114
}
113115

116+
#[cfg(test)]
114117
pub fn tick_par_as_parallel(&mut self) -> &[Body] {
115118
let (in_bodies, out_bodies) = if (self.time & 1) == 0 {
116119
(&self.bodies.0, &mut self.bodies.1)
@@ -121,8 +124,8 @@ impl NBodyBenchmark {
121124
let time = self.time;
122125
out_bodies
123126
.iter_mut()
124-
.as_parallel()
125127
.zip(&in_bodies[..])
128+
.as_parallel()
126129
.for_each(|(out, prev)| {
127130
let (vel, vel2) = next_velocity(time, prev, in_bodies);
128131
out.velocity = vel;

0 commit comments

Comments
 (0)