Форум программистов, компьютерный форум, киберфорум
MPI
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
1 / 1 / 0
Регистрация: 14.02.2021
Сообщений: 173
1

Как сделать правильный вывод матрицы, строки которой разделены между процессами?

19.12.2022, 12:22. Показов 744. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Пытаюсь написать программу с использованием MPI, в которой создается матрица и заполняется случайными числами в нулевом процессе. Затем строки матрицы разделяются между процессами и каждый процесс должен вывести свою строку. Но правильно выводится только матрица, хранящаяся в 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
38
39
40
41
42
43
44
45
46
47
#include "mpi.h"
#include <iostream>
#include <sys/time.h>
 
int commsize, rank;
 
int main(int argc, char **argv) {
  int **Matrix;
  int Size = 6;
  int *StringProc; // Строки матрицы для текущего процесса
  int NumStringProc; // Число строк для текущего процесса
  MPI_Init(&argc, &argv);
  MPI_Comm_size(MPI_COMM_WORLD, &commsize);
  MPI_Comm_rank(MPI_COMM_WORLD, &rank);
  MPI_Bcast(&Size, 1, MPI_INT, 0, MPI_COMM_WORLD);
  NumStringProc = Size / commsize;
  StringProc = new int[Size * NumStringProc];
  if (rank == 0) {
    Matrix = new int *[Size];
    for (int i = 0; i < Size; i++) {
      Matrix[i] = new int[Size];
    }
    for (int i = 0; i < Size; i++) {
      for (int j = 0; j < Size; j++) {
        Matrix[i][j] = random() % 99;
      }
    }
  }
 
  MPI_Scatter(Matrix, NumStringProc * Size, MPI_INT, StringProc,
              NumStringProc * Size, MPI_INT, 0, MPI_COMM_WORLD);
 
  for (int i = 0; i < commsize; i++) {
    if (rank == i) {
      std::cout << "rank: " << rank << std::endl;
      for (int i = 0; i < Size; i++) {
        for (int j = 0; j < Size; j++) {
          std::cout << Matrix[i][j] << " ";
        }
        std::cout << std::endl;
      }
    }
  }
  MPI_Barrier(MPI_COMM_WORLD);
  MPI_Finalize();
  return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.12.2022, 12:22
Ответы с готовыми решениями:

Вывод матрицы B, элементы которой Bij, определяются как результат скалярного произведения i-й строки и j-го столбца A
Требуется считать натуральное число n и квадратную матрицу A, представляющую собой двумерный массив...

Как сделать правильный выбор между C# и Java?
Здравствуйте. В далеком прошлом, я занимался пустой тратой времени. А именно - выбором языков...

Как сделать правильный вывод?
Выводит всё, но не помещается, как правильно сделать? (Интересует просмотр файла (3 пункт)):...

Как сделать правильный вывод в excel
Скопировал с инета команду Get-ADComputer -Filter * -Properties * | FT Name, LastLogonDate...

0
19.12.2022, 12:22
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.12.2022, 12:22
Помогаю со студенческими работами здесь

Как сделать правильный вывод счетчиков php
Доброго времени суток У меня такой вопрос как сделать чтобы когда выводишь счетчик тем , постов ...

Строки: Дана строка, слова в которой разделены пробелами. Верно ли, что последнее слово строки состоит только из букв первого слова
Привет, всем! Помогите плииз решить задачу! Дана строка, слова в которой разделены...

Вывод на экран строки матрицы, сумма элементов которой наибольшая
Напишите программу, которая заполняет квадратную матрицу 5 на 5 элементов случайными целыми числами...

Получить новую строку, в которой слова исходной строки будут разделены тремя пробелами
Заданная строка символов, которая состоит из трех слов, разделенных пробелом. Получить новую...

Дана строка, слова в которой разделены пробелами. Удалить из строки самое длинное слово
ПОМОГИТЕ ПОЖАЛУЙСТА ВЫПОЛНИТЬ ЗАДАНИЕ ПО С++... Дана строка, слова в которой разделены пробелами....

Дана строка, слова в которой разделены пробелами. Удалите из строки самое короткое слово
Помогите пожалуйста бьюсь час над задачей

Найти сумму элементов той строки матрицы, в которой разница между max и min элементами максимальна
Дана вещественная, квадратная матрица порядка N. Найти сумму элементов той строки в которой разница...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru