Задать вопрос
@vkopeluk

Не могу осуществить циклический свдиг на 1 шаг при пересылке данных?

В каждом процессе дано целое число. С помощью функций MPI_Send и MPI_Recv осуществить для всех процессов циклический сдвиг данных с шагом 1, переслав число из процесса 0 в процесс 1, из процесса 1 в процесс 2, …, из последнего процесса в процесс 0. В каждом процессе вывести полученное число.
#include <windows.h>
#pragma hdrstop
#include "mpi.h"
#include "pt4.h"
void Solve()
{
	Task("MPIBegin18");
	int flag;
	MPI_Initialized(&flag);
	if (flag == 0)
		return;
	int rank, size;
	MPI_Comm_size(MPI_COMM_WORLD, &size);
	MPI_Comm_rank(MPI_COMM_WORLD, &rank);
	MPI_Status s;
	int n;

	pt >> n;
	//Show(n);

	for (int i = 0; i < size; ++i)
	{

		MPI_Send(&n, 1, MPI_INT, i, 0, MPI_COMM_WORLD);
	}

	
}

вот что есть, будь то массив сделал бы без проблем, а тут что-то нету идей. Помогите если не сложно
  • Вопрос задан
  • 215 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы