ease note this is not Java or C++ Complete the program 'Bcast-Reduce-Assignment.c' to make the program have the output as follows if we run the program using 2 processes.           The input sequence is:              0 1 2 3                     The output sequence is:             0 2 6 12 This is an MPI program and the

Database System Concepts
7th Edition
ISBN:9780078022159
Author:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Chapter1: Introduction
Section: Chapter Questions
Problem 1PE
icon
Related questions
Question

Please note this is not Java or C++

Complete the program 'Bcast-Reduce-Assignment.c' to make the program have the output as follows if we run the program using 2 processes.

          The input sequence is:   

          0 1 2 3          

          The output sequence is:  

          0 2 6 12

This is an MPI program and the code below is partially finished. i am supposed to have input above result in the output above. 

 

//////////////////////////////////////////////////////////////////////////
//
// This is a simple MPI program using MPI_Bcast and MPI_Reduce functions
//
// Compile:  mpicc Bcast-Reduce-Example.c -o  Bcast-Reduce-Example
// 
// Run:      mpiexec -n  <p>  ./Bcast-Reduce-Example
//
//           -p: the number of processes
//
/////////////////////////////////////////////////////////////////////////

#include <stdio.h>
#include <stdlib.h>
#include <mpi.h>


int main(void)

{
int my_rank, comm_sz;
int i;
   int Count = 4;
int Number[4];
   int PartialResult = 0;
int Result;

   MPI_Init(NULL, NULL);

   MPI_Comm_size(MPI_COMM_WORLD, &comm_sz);
   MPI_Comm_rank(MPI_COMM_WORLD, &my_rank);


   if(my_rank == 0)
{
 printf("The input sequence is as follows: \n");

 for (i = 0; i < Count; i++)
 {
  Number[i] = i;
  printf("%d ", Number[i]);
 }

 printf("\n");
   }

// Process 0 sends data to all of the processes
   MPI_Bcast(Number, Count, MPI_INT, 0, MPI_COMM_WORLD);


for (i = 0; i < Count; i++)
{
 Number[i] += my_rank;
  
 PartialResult += Number[i];
}

MPI_Reduce(&PartialResult, &Result, 1, MPI_INT, MPI_PROD, 0, MPI_COMM_WORLD);
 

// Print out the result 
if (my_rank == 0)

 printf("The final resutl is: %d. \n", Result);
 
MPI_Finalize();

return 0;
}

Expert Solution
trending now

Trending now

This is a popular solution!

steps

Step by step

Solved in 2 steps with 1 images

Blurred answer
Knowledge Booster
ADT and Class
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Similar questions
Recommended textbooks for you
Database System Concepts
Database System Concepts
Computer Science
ISBN:
9780078022159
Author:
Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:
McGraw-Hill Education
Starting Out with Python (4th Edition)
Starting Out with Python (4th Edition)
Computer Science
ISBN:
9780134444321
Author:
Tony Gaddis
Publisher:
PEARSON
Digital Fundamentals (11th Edition)
Digital Fundamentals (11th Edition)
Computer Science
ISBN:
9780132737968
Author:
Thomas L. Floyd
Publisher:
PEARSON
C How to Program (8th Edition)
C How to Program (8th Edition)
Computer Science
ISBN:
9780133976892
Author:
Paul J. Deitel, Harvey Deitel
Publisher:
PEARSON
Database Systems: Design, Implementation, & Manag…
Database Systems: Design, Implementation, & Manag…
Computer Science
ISBN:
9781337627900
Author:
Carlos Coronel, Steven Morris
Publisher:
Cengage Learning
Programmable Logic Controllers
Programmable Logic Controllers
Computer Science
ISBN:
9780073373843
Author:
Frank D. Petruzella
Publisher:
McGraw-Hill Education