Write a parallel program with MPI functions to do the following
1) Define an array of size 1000.
2) Generate a random integer in the range of: 0 t0 999 for: n.
3) Generate n random integers in the range of: 0 to 1000 and save them in array.
4) For m (its value comes from the input) processes divide that array to (m-1) segments. All the segments except the last one must be equal (Note that the last segment may get bigger than other segments)
5) Each of process p1, p2, p3,..., pm-1 obtains the biggest number from its segment and send it to the process with rank = 0.
6) Process 0 receives a number from each process: p1, p2, p3,..., pm-1, finds the biggest number and print it.
Note: If m -1 is bigger n terminate the execution of the program with an appropriate message the shows the value of m-1 and n.
The following is a serial program. It may help.
//File name: a.c
#include
#include
#include
#define atmost 1000
int find(int* a, int from, int to){
int i, b;
printf("%d----%d\n", from,to);
b = a[from];
for(i = from + 1; i <= to; i++)
if(a[i] > b)
b = a[i];