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

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

Войти
Регистрация
Восстановить пароль
 
twinkle_sunny
1 / 1 / 0
Регистрация: 29.09.2013
Сообщений: 29
#1

Работа с массивом с MPI C++ (есть код) - C++

25.11.2014, 11:05. Просмотров 527. Ответов 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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
//Инвертирование массива
#include <mpi.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
 
#define MYTAG 1
 
int main(int argc, char *argv[])
{
        int n, size, i, dest, rank;
    int a[10], arr[10];;
        MPI_Status status;
 
        MPI_Init(&argc, &argv);
        MPI_Comm_size(MPI_COMM_WORLD, &size);
        MPI_Comm_rank(MPI_COMM_WORLD, &rank);
 
        if (rank == 0)
                n = 10 / size + 1;
        MPI_Bcast(&n, 1, MPI_INT, 0, MPI_COMM_WORLD);
 
        if (rank == 0) {
                for (dest = 1; dest < size; dest++) {
                        for (i = 0; i < n; i++) {
                                a[i] = i + dest;
                    printf("%d ", a[i]);
                        }
                        MPI_Send(a, n, MPI_INT, dest, MYTAG, MPI_COMM_WORLD);
                }
                n = 10 - n * (size - 1);
            for (i = 0; i < n; i++) {
                a[i] = i;
                printf("%d ", a[i]);
            }
 
        } else {
                MPI_Recv(a, n, MPI_INT, 0, MYTAG, MPI_COMM_WORLD, &status);
        }
 
        int temp;
    for (i = 0; i < n / 2; i++) {
        temp = a[n-i-1];
        a[n-i-1] = a[i];
        a[i] = temp;
    }
 
        //MPI_Gather(a, 1, MPI_INT, arr, 1, MPI_INT, 0, MPI_COMM_WORLD);
 
 
    printf("\n");
        if (rank == 0) {
            for(int i = 0; i < 10; i++) {
                printf("a[%d] = %d \n", i, a[i]);
            }
                
        }
 
        MPI_Finalize();
        return 0;
}
0
Миниатюры
Работа с массивом с MPI C++ (есть код)  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.11.2014, 11:05
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Работа с массивом с MPI C++ (есть код) (C++):

Разбить код на отдельные функции (работа с массивом объектов пользовательского типа) - C++
Нужны отдельные функции инициализации объектов и расчетов, в функции main в цикле вывести меню з пунктами (инициализировать объект,...

Переделать код для работы с файловым вводом/выводом (работа с массивом объектов пользовательского типа) - C++
Доброго времени суток! Можно ли переделать эту прогу на работу с файлом при помощи потоковых функций ввода вывода, подключаемых библиотекой...

Работа с структурой в С++ (код есть, нужно немного доработать) - C++
Приветствую. Есть задание: Создать структуру STUDENT, которая имеет поля: 1. NAME. ФИО. 2. GROUP - номер группы. 3. SES -...

MPI. Ошибка в выводимых данных. (Код присутствует) - C++
Доброе время суток. Программа должна пересылать данные от 3 процесса к 0, и от 0 к 3. Необхожимо использовать в работе функции передачи...

есть код и есть ошибка нужно найти дырку - C++
#include &lt;iostream.h&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt; int main(int argc, char *argv) { int i,size,n; ...

Работа с массивом в СИ++ - C++
Нужно написать программу по вычислению массива(в функции). Сначала полученный массив сортируется, а потом из полученного массива...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.11.2014, 11:05
Привет! Вот еще темы с ответами:

работа с массивом указателей - C++
как имея изначально: char *student={}; получить: char...

Работа с массивом строк - C++
Ребята помогите с реализацией сортировки методом шейкера.Очень нужно. Задание такое: Сортировка Шейкером. Массив строк. Мне не...

Работа с символьным массивом - C++
Помогите пожалуйста.. Определить символьный массив размером строки.С клавиатуры ввести предложение(не менее 5 слов,которые разделены...

Работа с массивом строк - C++
Ввести массив строк символов (текст). В каждой строке найти длину самого ко-роткого слова. Словами считать группы символов, разделённые...


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

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

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