This material is part of the course Practical Introduction to Parallel Programming and meant for educational purposes only.
Task
Implement a parallel program that generates a stream of uniform random numbers within the range \([0,1]\) within each process.
The program should stop if it has found ten numbers that are smaller than \(\epsilon = 1 \cdot 10^{-7}\).
When the program has found ten numbers (or more), the master process (with rank zero) should collect all found numbers and print them to the terminal.
The code below implements a sequential version of the program.
Hints
Use the provided function next_random
to generate the stream of random numbers. This function will set a different random seed for each process. Without this, no speedup is possible. Why not?
Use collective MPI functions to determine when the program should stop and to collect the results on the master.
Measure the parallel speedup of your program. What can you do to improve the performance?