Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.03.2010, 05:48   #1
cheparamba
Новичок
Джуниор
 
Регистрация: 09.03.2010
Сообщений: 1
По умолчанию MPI: send и recv

Всем привет! Только начал изучать параллельное программирование и вот возникла трудность.
Необходимо написать программу, которая пересылает по кольцу процессоров массив чисел, прибавляя на каждом по единице и отправляя дальше. Я написал вот такой код, однако преподаватель говорит что он не будет работать. Проверить мне его пока негде. что скажите?
Код:

#include <stdio.h>
#include <mpi.h>
# define N 5

int main( int argc, char *argv[ ] ){
	int rank, size,b [N], next,prev,count;
  MPI_Status status;
  MPI_Init( &argc, &argv );
  MPI_Comm_rank( MPI_COMM_WORLD, &rank );
  MPI_Comm_size( MPI_COMM_WORLD, &size );
  next=rank+1;
  prev=rank-1;
  if (rank==0) 
		prev=size-1;
  if (rank==size-1)
		next=0;
  if (rank==0){ 
	b[0]=0;
	MPI_Send(b,1,MPI_INT,next,1,MPI_COMM_WORLD);
	MPI_Probe( prev, 1, MPI_COMM_WORLD, &status ); 
	MPI_Get_count( &status, MPI_INT, &count );
	MPI_Recv(b,count, MPI_INT,prev,1,MPI_COMM_WORLD,&status);}

  else {
	 {
	MPI_Probe( prev, 1, MPI_COMM_WORLD, &status ); 
	MPI_Get_count( &status, MPI_INT, &count );
	MPI_Recv(b,count, MPI_INT,prev,1,MPI_COMM_WORLD,&status);
	b[rank]=b[prev]+1;
	
	MPI_Send(b,rank+1,MPI_INT,next,1,MPI_COMM_WORLD);}
	if (rank==0) 
		for (int i=0; i<size;i++) printf( "Number %d on proc: %d ! \n",b[i],rank );
  
  MPI_Finalize();
  return(0);

}
Заранее спасибо!
cheparamba вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Функция recv (Winsock) YYYYY Работа с сетью в Delphi 0 18.02.2010 02:16
Зацикливается recv. asdo Общие вопросы C/C++ 4 23.01.2010 23:38
recv() Артэс C/C++ Сетевое программирование 7 15.01.2010 14:51
WinSock (send, recv) AidarBik Работа с сетью в Delphi 1 27.07.2008 15:22
Send Message _SERGEYX_ Работа с сетью в Delphi 5 30.10.2007 06:38