Распределенная обработка информации
3

Лабораторная работа №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();

}

 

Результат выполнения:

D:\необходимое\Учёба\ново начатое 3\Голубев\Proga2\Работа.jpg

Рисунок 2