Форум программистов, компьютерный форум 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... http://www.cyberforum.ru/cpp-beginners/thread201095.html
Преобразование типов C++
есть следующая маленькая программка #include <iostream> #include <conio.h> using namespace std; int main() { int oldFunt, oldShilling, oldPenc; //устаревшиая денежная система cout...
оператор цикла WHILE C++
задание: написать програму при помощи оператора цикла WHILE для подсчета суммы ряда с точность Е=10-4 общий член которого a(c индексом n)=n!/n^n попробовал сделать вот так но препод сказал что не...
C++ Перемножение многочленов http://www.cyberforum.ru/cpp-beginners/thread201063.html
Помогите создать программу: Процедура перемножения 2 многочленоа в Каждый из многочленов самножетелей,а также многочлен-результат. Задаётся масивом коэфициентов Аррей(0...Н) где НН-степеь...
C++ Создать и упорядочить массив Используя метод «пузырька», упорядочить по возрастанию значения, содержащиеся в строках двумерного массива C с рабочим размером n х m. Вывести массив C на экран. Массив C должен состоять из целых... подробнее

Показать сообщение отдельно
Student[ka]
Сообщений: n/a

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

01.12.2010, 15:52. Просмотров 1218. Ответов 0
Метки (Все метки)

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

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
#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 минут
Мне б пару идей в чем проблема могла б быть.. сама б переделала..
Эх..
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru