Лабораторная работа №2
Написать программу, используя блокирующие коммуникационные функции (MPI_Send, MPI_Recv), реализующую алгоритм передачи данных по двум кольцам: нечетные процессора образуют 1 кольцо, четные – второе.
Модифицировать программу, использую функцию MPI_Sendrecv.
Листинг программы:
#include "C:/Program Files/Microsoft HPC Pack 2008 SDK/include/mpi.h"
#include <stdio.h>
#pragma comment (lib,"C:/Program Files/Microsoft HPC Pack 2008 SDK/lib/i386/msmpi.lib")
int main (int argc,char**argv){
MPI_Init(&argc,&argv);
int proccount,rank,me,size,a;
char *procname=new char[100];
MPI_Comm_size(MPI_COMM_WORLD,&size);
MPI_Comm_rank(MPI_COMM_WORLD,&rank);
MPI_Get_processor_name(procname,&me);
printf("Process %d size %d Yzel %s \n",me,size,procname);
if(rank==0){
int a=148;
MPI_Send(&a,1,MPI_INT,1,0,MPI_COMM_WORLD);
}
else if (rank==1) {
int a;
MPI_Status status;
MPI_Recv(&a,1,MPI_INT,0,0,MPI_COMM_WORLD,&status);
printf("%d",a);
}
MPI_Finalize();
}
Результат выполнения:
Рисунок 2