#include<mpi.
h>
#include<stdio.h>
int main(int argc, char* argv[]){
MPI_Init(&argc,&argv);
int size;
MPI_Comm_size(MPI_COMM_WORLD,&size);
//printf("number of processes: %d\n",size); //this will be printed as many number of process
we have
int rank;
MPI_Comm_rank(MPI_COMM_WORLD,&rank);
if(rank==0){
int data=5;
MPI_Bcast(&data,1,MPI_INT,0,MPI_COMM_WORLD);
printf("Process: %d is broadcasting %d\n",rank,data);
}
else if(rank == 1){
int data;
MPI_Bcast(&data,1,MPI_INT,0,MPI_COMM_WORLD);
printf("Process: %d recieved %d\n",rank,data);
}
else if (rank==3)
{
int data;
MPI_Bcast(&data,1,MPI_INT,0,MPI_COMM_WORLD);
printf("Process: %d recieved %d\n",rank,data);
}
else if (rank==2)
{
int data;
MPI_Bcast(&data,1,MPI_INT,0,MPI_COMM_WORLD);
printf("Process: %d recieved %d\n",rank,data);
}
MPI_Finalize();
return 0;
}
#include<mpi.h>
#include<stdio.h>
int main(int argc, char* argv[]){
MPI_Init(&argc,&argv);
int size;
MPI_Comm_size(MPI_COMM_WORLD,&size);
//printf("number of processes: %d\n",size); //this will be printed as many number of process
we have
int rank;
MPI_Comm_rank(MPI_COMM_WORLD,&rank);
int data;
if(rank==0)
{
data=5;
printf("Process: %d is broadcasting %d\n",rank,data);
}
else
{
data=0;
}
MPI_Bcast(&data,1,MPI_INT,0,MPI_COMM_WORLD);
printf("Process: %d has data %d\n",rank,data);
MPI_Finalize();
return 0;
}
#include<mpi.h>
#include<stdio.h>
int main(int argc, char* argv[]){
MPI_Init(&argc,&argv);
int size;
MPI_Comm_size(MPI_COMM_WORLD,&size);
int rank;
MPI_Comm_rank(MPI_COMM_WORLD,&rank);
int data;
int recv_data=-1;
if(rank==0)
{
data=5;
}
else if (rank==1)
{
data=5;
}
else if (rank==2)
{
data=10;
}
else if(rank==3)
{
data=10;
}
MPI_Reduce(&data,&recv_data,1,MPI_INT,MPI_MAX,0,MPI_COMM_WORLD);
printf("Process: %d has data %d\n",rank,recv_data);
MPI_Finalize();
return 0;
}
#include<mpi.h>
#include<stdio.h>
int main(int argc, char* argv[]){
MPI_Init(&argc,&argv);
int size;
MPI_Comm_size(MPI_COMM_WORLD,&size);
int rank;
MPI_Comm_rank(MPI_COMM_WORLD,&rank);
int data;
int recv_data=-1;
if(rank==0)
{
data=5;
}
else if (rank==1)
{
data=5;
}
else if (rank==2)
{
data=10;
}
else if(rank==3)
{
data=10;
}
MPI_Allreduce(&data,&recv_data,1,MPI_INT,MPI_MAX,MPI_COMM_WORLD);
printf("Process: %d has data %d\n",rank,recv_data);
MPI_Finalize();
return 0;
}
#include<mpi.h>
#include<stdio.h>
int main(int argc, char* argv[]){
MPI_Init(&argc,&argv);
int size;
MPI_Comm_size(MPI_COMM_WORLD,&size);
int rank;
MPI_Comm_rank(MPI_COMM_WORLD,&rank);
int data;
int recv_data=-1;
if(rank==0)
{
data=4;
}
else if (rank==1)
{
data=2;
}
else if (rank==2)
{
data=1;
}
else if(rank==3)
{
data=10;
}
MPI_Scan(&data,&recv_data,1,MPI_INT,MPI_SUM,MPI_COMM_WORLD);
printf("Process: %d has data %d\n",rank,recv_data);
MPI_Finalize();
return 0;
}
#include<mpi.h>
#include<stdio.h>
int main(int argc, char* argv[]){
MPI_Init(&argc,&argv);
int size;
MPI_Comm_size(MPI_COMM_WORLD,&size);
int rank;
MPI_Comm_rank(MPI_COMM_WORLD,&rank);
int data;
int recv_data;
if(rank==0)
{
data=4;
}
else if (rank==1)
{
data=2;
}
else if (rank==2)
{
data=1;
}
else if(rank==3)
{
data=10;
}
MPI_Exscan(&data,&recv_data,1,MPI_INT,MPI_SUM,MPI_COMM_WORLD);
printf("Process: %d has data %d\n",rank,recv_data);
MPI_Finalize();
return 0;
}
0 for sum, -infinity for Max, infinity for Min, 1 for multiplication, and upto so on.
#include<mpi.h>
#include<stdio.h>
int main(int argc, char* argv[]){
MPI_Init(&argc,&argv);
int size;
MPI_Comm_size(MPI_COMM_WORLD,&size);
int rank;
MPI_Comm_rank(MPI_COMM_WORLD,&rank);
int data;
int recv_data=-1;
if(rank==0)
{
data=4;
}
else if (rank==1)
{
data=2;
}
else if (rank==2)
{
data=1;
}
else if(rank==3)
{
data=10;
}
MPI_Exscan(&data,&recv_data,1,MPI_INT,MPI_SUM,MPI_COMM_WORLD);
printf("Process: %d has data %d\n",rank,recv_data);
MPI_Finalize();
return 0;
}
#include<mpi.h>
#include<stdio.h>
int main(int argc, char* argv[]){
MPI_Init(&argc,&argv);
int size;
MPI_Comm_size(MPI_COMM_WORLD,&size);
int rank;
MPI_Comm_rank(MPI_COMM_WORLD,&rank);
int data;
int recv_data[4];
if(rank==0)
{
data=4;
}
else if (rank==1)
{
data=2;
}
else if (rank==2)
{
data=1;
}
else if(rank==3)
{
data=10;
}
MPI_Gather(&data,1,MPI_INT,recv_data,1,MPI_INT,0,MPI_COMM_WORLD);
printf("Process: %d has data: \n",rank);
int i=0;
for(i=0;i<4;i++)
printf(" %d ",recv_data[i]);
printf("\n");
MPI_Finalize();
return 0;
}
#include<mpi.h>
#include<stdio.h>
int main(int argc, char* argv[]){
MPI_Init(&argc,&argv);
int size;
MPI_Comm_size(MPI_COMM_WORLD,&size);
int rank;
MPI_Comm_rank(MPI_COMM_WORLD,&rank);
int recvcount[4]={3,4,1,5};
int displs[4]={0,3,7,8};
int recv_data[15];
if(rank==0)
{
int data[3];
data[0]=4;
data[1]=6;
data[2]=2;
MPI_Gatherv(data,3,MPI_INT,recv_data,recvcount,displs,MPI_INT,0,MPI_COMM_WORLD);
}
else if (rank==1)
{
int data[4];
data[0]=9;
data[1]=7;
data[2]=33;
data[3]=50;
MPI_Gatherv(data,4,MPI_INT,recv_data,recvcount,displs,MPI_INT,0,MPI_COMM_WORLD);
}
else if (rank==2)
{
int data[1];
data[0]=90;
MPI_Gatherv(data,1,MPI_INT,recv_data,recvcount,displs,MPI_INT,0,MPI_COMM_WORLD);
}
else if(rank==3)
{
int data[5];
data[0]=75;
data[1]=37;
data[2]=73;
data[3]=52;
data[4]=0;
MPI_Gatherv(data,5,MPI_INT,recv_data,recvcount,displs,MPI_INT,0,MPI_COMM_WORLD);
if (rank==0)
{
printf("Process: %d has data: \n",rank);
int i=0,j=0;
for(i=0;i<15;i++)
{
printf("%d\n",recv_data[i]);
}
printf("\n");
for(i=0;i<size;i++)
{
printf("Sent by %d: ",i);
for(j=displs[i];j<displs[i]+recvcount[i];j++)
{
printf(" %d ",recv_data[j]);
}
printf("\n");
}
}
MPI_Finalize();
return 0;
}
#include<mpi.h>
#include<stdio.h>
int main(int argc, char* argv[]){
MPI_Init(&argc,&argv);
int size;
MPI_Comm_size(MPI_COMM_WORLD,&size);
int rank;
MPI_Comm_rank(MPI_COMM_WORLD,&rank);
int data;
int recv_data[4];
if(rank==0)
{
data=4;
}
else if (rank==1)
{
data=2;
}
else if (rank==2)
{
data=1;
}
else if(rank==3)
{
data=10;
}
MPI_Allgather(&data,1,MPI_INT,recv_data,1,MPI_INT,MPI_COMM_WORLD);
printf("Process: %d has data: \n",rank);
int i=0;
for(i=0;i<4;i++)
printf(" %d ",recv_data[i]);
printf("\n");
MPI_Finalize();
return 0;
}
#include<mpi.h>
#include<stdio.h>
int main(int argc, char* argv[]){
MPI_Init(&argc,&argv);
int size;
MPI_Comm_size(MPI_COMM_WORLD,&size);
int rank;
MPI_Comm_rank(MPI_COMM_WORLD,&rank);
int recvcount[4]={3,4,1,5};
int displs[4]={0,3,7,8};
int recv_data[13];
if(rank==0)
{
int data[3];
data[0]=4;
data[1]=6;
data[2]=2;
MPI_Allgatherv(data,3,MPI_INT,recv_data,recvcount,displs,MPI_INT,MPI_COMM_WORLD);
}
else if (rank==1)
{
int data[4];
data[0]=9;
data[1]=7;
data[2]=33;
data[3]=50;
MPI_Allgatherv(data,4,MPI_INT,recv_data,recvcount,displs,MPI_INT,MPI_COMM_WORLD);
}
else if (rank==2)
{
int data[1];
data[0]=90;
MPI_Allgatherv(data,1,MPI_INT,recv_data,recvcount,displs,MPI_INT,MPI_COMM_WORLD);
}
else if(rank==3)
{
int data[5];
data[0]=75;
data[1]=37;
data[2]=73;
data[3]=52;
data[4]=0;
MPI_Allgatherv(data,5,MPI_INT,recv_data,recvcount,displs,MPI_INT,MPI_COMM_WORLD);
}
printf("Process: %d has data: \n",rank);
int i=0,j=0;
for(i=0;i<13;i++)
{
printf("%d\n",recv_data[i]);
}
printf("\n");
for(i=0;i<size;i++)
{
printf("Sent by %d: ",i);
for(j=displs[i];j<displs[i]+recvcount[i];j++)
{
printf(" %d ",recv_data[j]);
}
printf("\n");
}
MPI_Finalize();
return 0;
}
#include<mpi.h>
#include<stdio.h>
int main(int argc, char* argv[]){
MPI_Init(&argc,&argv);
int size;
MPI_Comm_size(MPI_COMM_WORLD,&size);
int rank;
MPI_Comm_rank(MPI_COMM_WORLD,&rank);
int data[4];
int recv_data;
if(rank==0)
{
data[0]=4;
data[1]=6;
data[2]=1;
data[3]=7;
}
else if (rank==1)
{
}
else if (rank==2)
{
}
else if(rank==3)
{
MPI_Scatter(&data,1,MPI_INT,&recv_data,1,MPI_INT,0,MPI_COMM_WORLD);
printf("Process: %d has data: %d \n",rank,recv_data);
MPI_Finalize();
return 0;
}
#include<mpi.h>
#include<stdio.h>
int main(int argc, char* argv[]){
MPI_Init(&argc,&argv);
int size;
MPI_Comm_size(MPI_COMM_WORLD,&size);
int rank;
MPI_Comm_rank(MPI_COMM_WORLD,&rank);
int sendcount[4]={3,4,1,5};
int displs[4]={0,3,7,8};
int i=0;
int data[13];
if(rank==0)
{
data[0]=4;
data[1]=6;
data[2]=2;
data[3]=9;
data[4]=7;
data[5]=33;
data[6]=50;
data[7]=90;
data[8]=75;
data[9]=37;
data[10]=73;
data[11]=52;
data[12]=0;
int recv_data[3];
MPI_Scatterv(data,sendcount,displs,MPI_INT,recv_data,3,MPI_INT,0,MPI_COMM_WORLD);
for(i=0;i<3;i++)
{
printf("Process %d data:%d\n",rank,recv_data[i]);
}
printf("\n");
}
else if (rank==1)
{
int recv_data[4];
MPI_Scatterv(data,sendcount,displs,MPI_INT,recv_data,4,MPI_INT,0,MPI_COMM_WORLD);
for(i=0;i<4;i++)
{
printf("Process %d data:%d\n",rank,recv_data[i]);
}
printf("\n");
}
else if (rank==2)
{
int recv_data[1];
MPI_Scatterv(data,sendcount,displs,MPI_INT,recv_data,1,MPI_INT,0,MPI_COMM_WORLD);
for(i=0;i<1;i++)
{
printf("Process %d data:%d\n",rank,recv_data[i]);
}
printf("\n");
}
else if(rank==3)
{
int recv_data[5];
MPI_Scatterv(data,sendcount,displs,MPI_INT,recv_data,5,MPI_INT,0,MPI_COMM_WORLD);
for(i=0;i<5;i++)
{
printf("Process %d data:%d\n",rank,recv_data[i]);
}
printf("\n");
MPI_Finalize();
return 0;
}
#include<mpi.h>
#include<stdio.h>
int main(int argc, char* argv[]){
MPI_Init(&argc,&argv);
int size;
MPI_Comm_size(MPI_COMM_WORLD,&size);
int rank;
MPI_Comm_rank(MPI_COMM_WORLD,&rank);
int data[8];
int recv_data[8];
if(rank==0)
{
data[0]=0;
data[1]=0;
data[2]=0;
data[3]=0;
data[4]=0;
data[5]=0;
data[6]=0;
data[7]=0;
}
else if (rank==1)
{
data[0]=5;
data[1]=4;
data[2]=2;
data[3]=9;
data[4]=1;
data[5]=1;
data[6]=1;
data[7]=1;
}
else if (rank==2)
{
data[0]=2;
data[1]=2;
data[2]=2;
data[3]=2;
data[4]=2;
data[5]=2;
data[6]=2;
data[7]=2;
}
else if(rank==3)
{
data[0]=3;
data[1]=3;
data[2]=3;
data[3]=3;
data[4]=3;
data[5]=3;
data[6]=3;
data[7]=3;
}
MPI_Alltoall(data,2,MPI_INT,recv_data,2,MPI_INT,MPI_COMM_WORLD);
printf("Process: %d has data:\n",rank);
int i=0;
for (i=0;i<8;i++)
printf(" %d ",recv_data[i]);
printf("\n");
MPI_Finalize();
return 0;
}