Reference no: EM131030914
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 keyboard) 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.
Note: Remember the variable comm_sz in the parallel program must not get its value in the program or via scanf.
//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
if(a[i] > b)
b = a[i];
return b;
}
int main(){
int i, n, a[atmost], comm_sz, biggest, h, b;
printf("How many segments? ");
scanf("%d", &comm_sz);
srand((unsigned)time(NULL));
n = rand()%atmost;
printf("n = %d\n", n);
for(i = 0; i
a[i] = rand() % 10001;
printf("a[%d] = %d, ", i, a[i]);
}
printf("\n");
h = n/(comm_sz-1);
biggest = -1;
printf("h = %d\n", h);
for(i = 0; i
if(i == comm_sz - 2)
b = find(a, i * h, n-1);
else
b = find(a, i * h, (i+1) * h - 1);
if(b > biggest)
biggest = b;
}
printf("The biggest is: %d\n", biggest);
return 0;
}
Note: Since I need to test your project use static array (i.e. Do not use the built-in function: malloc). Name your array: a. Only use one array. Do not sort.
Write a program that produces a list of nz notes and coins
: Money dispenser calculatorWrite a program that produces a list of NZ notes and coins required to give change for a user-entered amount up to $1000.
|
Hierarchical arrangement of lines of authority
: The typically hierarchical arrangement of lines of authority, communications, rights and duties of an organization. Organizational structure determines how the roles, power and responsibilities are assigned, controlled, and coordinated, and how in..
|
What are the key sources of financing these organisations
: Identify the differences in their reports structure and content - What are the key performance indicators?
|
Pros and cons of separating and integrating
: Discuss pros and cons of "separating" and "integrating" the sourcing and logistics functions. Examine whether this BPM project of Gap led to the right decision to split them.
|
Define an array of size 1000
: For m (its value comes from the keyboard) 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)
|
What explanations can you find for high teen pregnancy rates
: What explanations can you find for the high teen pregnancy rates in Texas, Mississippi, Georgia and North Carolina - Why do you think the teen pregnancy rate is lower in the Northeast and some parts of the Midwest and North?
|
Impact of regulatory requirements
: Though sustainability initiatives are often driven by regulatory requirements, an increasing number of companies notice that they frequently result in decreased operating costs and increased revenues.
|
States the argument unilever is likely to make in its appeal
: Recommends to the General Counsel how FDA should respond to these arguments, and what course it should adopt when regulating the sale and labeling of Just Mayo products. Write the memorandum.
|
Would you use dantes classification
: If you were to organize a contemporary hell for the great villains of our day, would you use Dante's classification or would you construct another schema? On what basis would it be organized?
|