Question: My question is about Distributed dot product calculations, where we have to write a parallel MPI version of the code given below. The following code:

My question is about Distributed dot product calculations, where we have to write a parallel MPI version of the code given below.

The following code:

__________________

#include #include #include #include

#define SIZE 10000000

volatile float a[SIZE]; volatile float b[SIZE];

int main(int argc, char **argv) { long int i; double sum; struct timeval time1, time2;

srand(time(0)); for (i = 0; i < SIZE; i++) { a[i] = rand(); b[i] = rand(); } gettimeofday(&time1, 0); sum = 0.0; for (i = 0; i < SIZE; i++) { sum = sum + a[i]*b[i]; }

gettimeofday(&time2, 0); printf("Elapsed time (us) = %d ", (time2.tv_sec-time1.tv_sec)*1000000 + time2.tv_usec - time1.tv_usec);

return 0; }

__________________

TASKS:

We are to write a parallel MPI version of it.

First describe what and how you want to start doing it, step by step, and answer the question below(1). 1. What code do you need to add to the program? What MPI primitives are useful? Write a parallel MPI version of dotprod.c (which is the code above).

After doing the above, follow the steps below, and answer the questions(2). 2. Run your resulting code on different number of processors and produce a plot of speedup versus number of processors up to 16 processors. How do you get statistically sound measurements? For each point what efficiency do you get? What do you think are the underlying overheads leading to the efficiency.

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!