Форум программистов, компьютерный форум CyberForum.ru

Программа на MPI модуле - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Введение произвольного количества элементов массива http://www.cyberforum.ru/cpp-beginners/thread201101.html
Собственно, как это реализовать? Кто не понял, пример: вводим элементы массива до тех пор, пока не будет набрано число 666, или слово stop, или ещё что-то. Извиняюсь за идиотский вопрос, скорее всего это было на лекции, но попасть на неё мне было не суждено. Заранее спасибо.
C++ матрицы Доброй ночи, помогите пожалуйста упростить\оптимизировать\изменить(в лучшую сторону) код следующей программы: #include <iostream> #include <ctime> #include <cmath> using std::cout; using std::cin; using std::endl; http://www.cyberforum.ru/cpp-beginners/thread201095.html
Преобразование типов C++
есть следующая маленькая программка #include <iostream> #include <conio.h> using namespace std; int main() { int oldFunt, oldShilling, oldPenc; //устаревшиая денежная система cout <<"Wwedite funti: ";
оператор цикла WHILE C++
задание: написать програму при помощи оператора цикла WHILE для подсчета суммы ряда с точность Е=10-4 общий член которого a(c индексом n)=n!/n^n попробовал сделать вот так но препод сказал что не правильно записан n! помогите переделать. #include <cstdlib> #include <iostream> #include <math.h>
C++ Перемножение многочленов http://www.cyberforum.ru/cpp-beginners/thread201063.html
Помогите создать программу: Процедура перемножения 2 многочленоа в Каждый из многочленов самножетелей,а также многочлен-результат. Задаётся масивом коэфициентов Аррей(0...Н) где НН-степеь многочленна..
C++ Вычисление среднего арефметического КАК создать среднее арефметическоє? подробнее

Показать сообщение отдельно
Student[ka]
Сообщений: n/a
01.12.2010, 15:52     Программа на MPI модуле
Здравствуйте! Дана такая задачка следующего вида:
q = max(3*MA+5*MB)
где MA, MB – матриці размером NxM.
Числа N та M задаются пользователем . Все элемент матрицы заполнить целыми числа в диапазоне [-5;5].
Количество узлов 4. Написать паралельную программу с помощью модулей PTHRead & MPI.
Эту программу надо написать с помощью MPI.
Мучала прошлую ночь.. ну ничего не получается..

Код
#include <windows.h>
#include <time.h>
#include <mpi.h>
#include <iostream>
#define comm MPI_COMM_WORLD
using namespace std;
int i,j,k,N,M,a,b,rank,maxi;
int MA[100][100],MB[100][100],MAX[100],MQ[100][100];
static MPI_Status status;
 int  size=4;



int main(int argc, char *argv[])
{
  
    
    MPI_Init(&argc, &argv);
	MPI_Comm_rank(comm, &rank);

if (rank == 0) { 
    cout<<"Введите количество строк матрицы кратно 4 = ";
    cin>>N;
    cout<<'\n';
    cout<<"Введите количество столбцов матрицы = ";
    cin>>M;  
    system("cls");
    
         for(i=1;i<size;i++)
         { MPI_Send(&N, 1, MPI_INT, i, 1, MPI_COMM_WORLD);
           MPI_Send(&M, 1, MPI_INT, i, 1, MPI_COMM_WORLD);
           }
             a=3*rank;
             b=3*rank+N/size;         
            
             for (i=a;i<=b;i++)
             for (j=1;j<=M;j++)
             MA[i][j]=rand() %11-5;           
 
             for (i=a;i<=b;i++)
             for (j=1;j<=M;j++)
             MB[i][j]=rand() %11-5;

             for(i=a; i<=b; i++)
                  {
                      for(j=1; j<=M; j++)
                      {
                       MQ[i][j]=3*MA[i][j]+5*MB[i][j];
                      }     
                  }
               
              MAX[rank]=MQ[a][1];
              for(i=a; i<=b; i++)
                 {
                     for(j=1; j<=M; j++)
                     if (MAX[rank]<MQ[i][j])
                     MAX[rank]=MQ[i][j];
                 }
	} else {
           MPI_Recv(&N, 1, MPI_INT, 0, 1, MPI_COMM_WORLD, &status);
           MPI_Recv(&M, 1, MPI_INT, 0, 1, MPI_COMM_WORLD, &status);
             
             a=3*rank;
             b=3*rank+N/size;         
            
             for (i=a;i<=b;i++)
             for (j=1;j<=M;j++)
             MA[i][j]=rand() %11-5;           
 
             for (i=a;i<=b;i++)
             for (j=1;j<=M;j++)
             MB[i][j]=rand() %11-5;
 
             for(i=a; i<=b; i++)
                  {
                      for(j=1; j<=M; j++)
                      {
                       MQ[i][j]=3*MA[i][j]+5*MB[i][j];
                      }     
                  }
              MAX[rank]=MQ[a][1];
              for(i=a; i<=b; i++)
                 {
                     for(j=1; j<=M; j++)
                 if (MAX[rank]<MQ[i][j])
                     MAX[rank]=MQ[i][j];
                 }
              MPI_Send(&MQ, (b-a)*M, MPI_INT, 0, 1, MPI_COMM_WORLD);   
              MPI_Send(&MAX, 1, MPI_INT, 0, 1, MPI_COMM_WORLD);    
}   
       if (rank == 0) 
       for(i=1;i<size;i++)
      {  MPI_Recv(&MAX, 1, MPI_INT, 0, 1, MPI_COMM_WORLD, &status);
         MPI_Recv(&MQ, 1, MPI_INT, 0, 1, MPI_COMM_WORLD, &status);  }
       
       for (i=0;i>size;i++)
        if (maxi<MAX[i])
        maxi=MAX[i];
         
  MPI_Finalize();
  cout<<"Матрица A"<<'\n';
  for (i=1;i<=N;i++)
  {
      for (j=1;j<=M;j++)
      cout<<MA[i][j]<<' ';
      cout<<'\n';
  }         
  cout<<'\n'; 
  cout<<"Матрица В"<<'\n';
  for (i=1;i<=N;i++)
  {
      for (j=1;j<=M;j++)
      cout<<MB[i][j]<<' ';
      cout<<'\n';
  }
  cout<<'\n';
 cout<<"Матрица Q"<<'\n';
  
  for (i=1;i<=N;i++)
  {
      for (j=1;j<=M;j++)
      cout<<MQ[i][j]<<' ';
      cout<<'\n'; 
  } 
     
       cout<<'\n';


 cout<<"Максимальный элемент="<<Maxi<<'\n';    
cin.get();    
cin.get();
    return 0;
}


Вот чет накатала.. ну не работает.. Буду безумно благодарна если подскажите и дадите пару советиков.. после завтра сдавать курсак над...

З.Ы. За синтаксис сильно не ругать.. я 2 месяц только вижу С++ и 2 ночь модуль MPI ...

Добавлено через 13 часов 13 минут
Мне б пару идей в чем проблема могла б быть.. сама б переделала..
Эх..
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 10:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru