Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
nelson1992
3 / 3 / 0
Регистрация: 21.10.2009
Сообщений: 77
#1

Динамическое выделение памяти(параллельное программирование). - C++

05.12.2011, 20:55. Просмотров 439. Ответов 0
Метки нет (Все метки)

У меня задание:

Коллективные операции. Головная машина построчно загружает с консоли квадратную матрицу. Пусть для простоты размерность матрицы кратна числу машин. Головная машина раздает матрицу всем машинам в коллективе (каждой – свое подмножество строк). Реализовать транспонирование уже распределенной матрицы.

Вот моя программа.
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
#include "mpi.h"
#include <stdio.h>
#include<stdlib.h>
int main(int argc, char **argv) {
int numtasks, rank, source=0, dest, tag=1, i, j, el;
int *b = (int*)calloc(1, sizeof(*b));
int **a;
MPI_Status stat;
MPI_Datatype columntype;
MPI_Init(&argc,&argv);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_Comm_size(MPI_COMM_WORLD, &numtasks);
  if (rank == 0) {
       a = (int **)calloc(numtasks, sizeof(*a)); 
       for(i = 0; i < numtasks; ++i){
       a[i] = (int*)calloc(numtasks, sizeof(*a[i]));}
       b = (int*)realloc(b, numtasks*sizeof(*b));
       for(i=0;i<numtasks;i++)
       {
            for(j=0;j<numtasks;j++)
            {
              printf("Vvedi a[%d][%d] = ",i,j);
              scanf("%d",&el);
              a[i][j]=el;
            }
       }
MPI_Type_vector(numtasks, 1, numtasks, MPI_INT, &columntype);
MPI_Type_commit(&columntype);
 
       for (i=0; i<numtasks; i++) 
           MPI_Send(&a[0][i], 1, columntype, i, tag, MPI_COMM_WORLD);
       }
  MPI_Recv(b, numtasks, MPI_INT, source, tag, MPI_COMM_WORLD, &stat);
  printf("rank= %d  b= %d %d %d\n",rank,b[0],b[1],b[2]);
MPI_Finalize();
return 0;
}
Почти все работает...не могу разобраться с выделением памяти под массив.Должно выводить:

rank= 0 b= 1 4 7
rank= 1 b= 2 5 8
rank= 2 b= 3 6 9

А выводит

rank= 0 b= 1 12 6
rank= 1 b= 2 4 12
rank= 2 b= 3 5 7

Что-то не правильно работает...помогите разобраться...

Добавлено через 3 часа 10 минут
помогите...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.12.2011, 20:55
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Динамическое выделение памяти(параллельное программирование). (C++):

Распределение памяти. Динамическое выделение памяти - C++
an-1 an-2 ... a2

Динамическое выделение памяти - C++
Всем привет, читал про динам. выделение памяти и тут возник вопрос. Так как для новичков пишут книги не очень глубоко, то в книге ответа на...

Динамическое выделение памяти - C++
Всем привет. Научите, пожалуйста, правильно пользоваться динамическим выделением памяти. Допустим, у меня есть функция, где я пытался...

Динамическое выделение памяти - C++
Подскажите как выделить динамически память мод двумерный массив... Спасибо. ... int *mass = new int ; //int *mass = new int ; ) Не...

Динамическое выделение памяти - C++
Подскажите пожалуйста почему этот код работает: #include &lt;iostream&gt; using namespace std; int main() { int *x = new...

Динамическое выделение памяти - C++
Всем здрасти.Если выделять динамически память,например: char *p=new char; и при этом не перегружать оператор new.То верны ли следующие...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.12.2011, 20:55
Привет! Вот еще темы с ответами:

Динамическое выделение памяти - C++
Добрый день. Возник вопрос: Как мне узнать адрес последнего байта в выделенной памяти? Я выделил память (массив нулей и единиц): ...

Динамическое выделение памяти - C++
Уважаемые программисты!!!! Подскажите как выделить память для двумерного массива. Заранее спасибо!!!

Динамическое выделение памяти! - C++
Программа должна читать с клавы число и имя(до 15 символов). Данные должны вводится в одной функции а выводится во второй. Сохранять данные...

Динамическое выделение памяти - C++
создать динамический масив, создать функцию, которая сумирует все елементы масива, и функцию, которая печатает содержимое масива и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.