Warning: session_start(): open(/var/lib/php/sessions/sess_ne94vs8u93eq3hf3j8pp6f9hkb, O_RDWR) failed: No space left on device (28) in /var/www/tb-usercake/models/config.php on line 51
Warning: session_start(): Failed to read session data: files (path: /var/lib/php/sessions) in /var/www/tb-usercake/models/config.php on line 51
srecord noeq StupidFib_collab(ICollab collab, int n) {
// if n <= parallelizationThreshold, we calculate serially
settable int parallelizationThreshold = 24;
record noeq Step(int n, LongConsumer continuation) extends LongPairCollector is Runnable {
// if below parallelization threshold, go serial, otherwise parallelize
run {
if (n < max(3, parallelizationThreshold))
continuation.accept(serialComputation(n));
else {
collab.addWork(new Step(n-1, setterForA()));
collab.addWork(new Step(n-2, setterForB()));
}
}
// calculate and forward result when subcomputations have completed
void complete(long a, long b) {
continuation.accept(a+b);
}
}
long serialComputation(int n) {
ret stupidFib(n);
}
// if one core, go serial, otherwise parallelize
long get() {
if (collab.coresToUse() == 1)
ret serialComputation(n);
else
ret collab_computeLong(collab, receiver -> new Step(n, receiver));
}
}