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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.05.2014, 11:00   #1
WebbMan
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 168
По умолчанию guimpirun не запускает приложение

Код:
#include <iostream>
#include <mpi.h>
using namespace std;

int main (int argc, char* argv[])
{
	int d, m;   //d - количество строк матрицы, которые получит каждый процесс, m - остаток строк матрицы, будет распределено по процессам (кроме 0-го процесса)
	int ** A; 	//A*b = c
	int * b, * c;
	int * a;
	int Rank, kp, N;
	int ic[2]; 
	MPI_Status cStatus;

	MPI_Init(&argc, &argv);
	MPI_Comm_size(MPI_COMM_WORLD, &kp);
	MPI_Comm_rank(MPI_COMM_WORLD, &Rank);

	if(Rank == 0)
	{
		cout << "Enter N: "; cin >> N;
		d = N/kp;
		m = N%kp;
		A = new int * [N];
		b = new int[N];
		c = new int[N];
		for( int i = 0; i < N; i++ )
		{
			A[i] = new int[N+1];
			A[i][0] = i;
		}
		cout << "b:" << endl;
		for( int i = 0; i < N; i++ )
		{
			b[i] = rand() % 100;
			if( b[i] / 10 == 0)
			{
				cout << b[i] << "   ";
			}
			else
			{
				cout << b[i] << "  ";
			}
		}
		cout << endl;
		cout << "A:" << endl;
		for(int j = 0; j < N; j++)
		{
			for(int i = 1; i < N+1; i++)
			{
				A[j][i] = rand() % 100;
				if(A[j][i] / 10 == 0)
				{
					cout << A[j][i] << "   ";
				}
				else
				{
					cout << A[j][i] << "  ";
				}
				
			}
			cout << endl;
		}
		int index_vec = d;
		for( int i = 0; i < d; i++ )
		{
			c[i] = 0;
			for( int p = 1; p < N+1; p++ )
			{
				c[i] += A[i][p]*b[p-1];
			}
		}
		for( int i = 1; i < kp; i++ )
		{
			MPI_Send(&N, 1, MPI_INT, i, 99, MPI_COMM_WORLD);
			MPI_Send(b, N, MPI_INT, i, 99, MPI_COMM_WORLD);
			for( int j = 0; j < d; j++ )
			{
				MPI_Send(A[index_vec], N+1, MPI_INT, i, 99, MPI_COMM_WORLD);
				index_vec++;
			}
		}
		cout << m;
		for( int i = 1; i <= m; i++ )
		{
				MPI_Send(A[index_vec], N+1, MPI_INT, i, 99, MPI_COMM_WORLD);
				index_vec++;
		}

		for( int i = 0; i < N - d; i++ )
		{
			MPI_Recv(ic, 2, MPI_INT, MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, &cStatus);
			c[ic[0]] = ic[1];
		}

		for( int i = 0; i < N; i++ )
		{
			cout << c[i] << "  ";
		}
	}
	else
	{
		MPI_Recv(&N, 1, MPI_INT, MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, &cStatus);
		d = N/kp;
		m = N%kp;
		b = new int[N];
		a = new int[N+1];
		MPI_Recv(b, N, MPI_INT, MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, &cStatus);
		for(int i = 0; i < d; i++)
		{
			MPI_Recv(a, N+1, MPI_INT, MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, &cStatus);
			ic[0] = a[0];
			ic[1] = 0;
			for( int i = 0; i < N; i++)
			{
				ic[1] += b[i]*a[i+1];
			}
			MPI_Send(ic, 2, MPI_INT, 0, 99, MPI_COMM_WORLD);
		}
		if(Rank <= m)
		{
			MPI_Recv(a, N+1, MPI_INT, MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, &cStatus);
			ic[0] = a[0];
			ic[1] = 0;
			for( int i = 0; i < N; i++)
			{
				ic[1] += b[i]*a[i+1];
			}
			MPI_Send(ic, 2, MPI_INT, 0, 99, MPI_COMM_WORLD);
		}
	}

	
	MPI_Finalize();
	return 0;
}
Написал распараллеливание операции - умножения матрицы на вектор (не знаю правильно или нет, кажется что не верно, т.к. с mpi до этого не работал)
Запускаю так: mpirun -np N myprogram.exe всё нормально работает, но через guimpirun ничего не запускается, в чем может быть проблема? Возможно, я программу неправильно написал.
WebbMan вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
планировщик заданий не запускает bat lutdan Операционные системы общие вопросы 1 05.04.2013 12:32
не работает .bat файл не запускает *ехе mark 80 Помощь студентам 8 07.12.2010 18:31
Windows 7 не запускает пасьянс!!! Влад09 Windows 3 01.11.2010 16:58
Компилятор не запускает программу Purr Помощь студентам 2 05.10.2010 13:07
Программа не запускает DLL ZahAlex Win Api 4 10.08.2009 20:24