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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Спроектировать класс Множество реализовав конструкторы и соответствующие методы http://www.cyberforum.ru/cpp-beginners/thread1310263.html
Спроектировать классы, реализовав конструкторы и соответствующие методы. В главной функции продемонстрировать их использование. Множество (2 класса: элемент множества и множество состоят в отношении агрегации) Конструкторы: пот умолчанию, с параметрами и копирования. Деструктор. Функции: прибавления элемента к множеству; вывод всех элементов множества на экран; проверка вхождения...
C++ Реализовать класс Срочно помогите пжл, сижу на контрольной) надо написать реализацию класса Animal с информацией о животном и примером применения http://www.cyberforum.ru/cpp-beginners/thread1310256.html
C++ Прочитать текст из файла и обозначить заглавные буквы
Напечатать текст из файла, подчёркивая все входящие в него заглавные буквы (ставя минусы в соответствующих позициях следующей строки). Как вообще так сделать?
C++ Определить, является ли старшая цифра числа его делителем
Целое длинное число А задается в диалоговом окне. Определить,является ли старшая цифра числа его делителем. Заранее спасибо.
C++ Переделать код для 400-ичной системы счисления http://www.cyberforum.ru/cpp-beginners/thread1310204.html
#include "stdafx.h" #include "iostream" #include "math.h" #include "conio.h" using namespace std; class chisla {
C++ Вывести на экран все числа-палиндромы (числа, которые одинаково читаются как слева так и справа) Вывести на экран все числа палиндромы (т.е числа которые читаются одинаково как слева, так и справа) из заданного интервала натурального ряда на языке С++ подробнее

Показать сообщение отдельно
twinkle_sunny
1 / 1 / 0
Регистрация: 29.09.2013
Сообщений: 29

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

25.11.2014, 11:05. Просмотров 468. Ответов 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;
}
Миниатюры
Работа с массивом с MPI C++ (есть код)  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru