-
Notifications
You must be signed in to change notification settings - Fork 289
Open
Description
Following along here:
https://timelydataflow.github.io/timely-dataflow/chapter_1/chapter_1_1.html
I've downloaded a fresh copy of timely and find when I run the "parallel primes" program, timely gets much slower with more workers, opposite of what I'd expect. Is there a recent regression with Timely?
``
$ time cargo run --release --example primes -- -w16 > output16.txt
Finished release [optimized + debuginfo] target(s) in 0.02s
Running target/release/examples/primes -w16
real 1m9.235s
user 15m27.958s
sys 0m1.987s
$ time cargo run --release --example primes -- -w1 > output1.txt
Finished release [optimized + debuginfo] target(s) in 0.02s
Running target/release/examples/primes -w1
real 0m0.279s
user 0m0.204s
sys 0m0.076s
``
#![allow(unused_variables)]
extern crate timely;
use timely::dataflow::{InputHandle};
use timely::dataflow::operators::{Input, Exchange, Inspect, Probe};
fn main() {
// initializes and runs a timely dataflow.
timely::execute_from_args(std::env::args(), |worker| {
let index = worker.index();
let mut input = InputHandle::new();
// create a new input, exchange data, and inspect its output
let probe = worker.dataflow(|scope| {
scope.input_from(&mut input)
.exchange(|x| *x)
.inspect( //move |x| println!("worker {}:\thello {}", index, x))
|x| {
let limit = (*x as f64).sqrt() as u64;
if *x > 1 && (2 .. limit + 1).all(|i| x % i > 0) {
// why can't i capture index?
println!("{} is prime", x);
}
})
.probe();
});
// introduce data and watch!
for round in 0..200000 {
if index == 0 {
input.send(round);
}
input.advance_to(round + 1);
}
}).unwrap();
}Metadata
Metadata
Assignees
Labels
No labels