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

Создание нового типа MPI - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Раздельный native unit test для проекта скомпилированного как Debug и как Release http://www.cyberforum.ru/cpp-beginners/thread1165888.html
Используя условную компиляцию версия Debug и Release может существенно различаться. Не все ситуации можно смоделировать для теста и могут пригодиться какие-то дополнительные функции в классе, которые...
C++ Перегрузка функций Добрый день! Помогите, пожалуйста. Определить функцию, проверяющую верна ли дата. Выполнить перегрузку функции для следующих типов параметров: -Структура «дата» (год, месяц, день). -Три... http://www.cyberforum.ru/cpp-beginners/thread1165883.html
Найти сумму последнего и максимального элементов массива C++
Исправьте ошибку, пожалуйста Дано линейный массив действительных чисел. Найти сумму последнего и максимального элементов массива Все шаги реализуются в виде функции. Функции должны содержать...
Сортировка C++
Слово на русском языке и вычисленный в процессе ввода порядковый номер буквы, с которой начинается слово в русском алфавите. Ключ сортировки – первая буква, алгоритм сортировки – любой.
C++ Добавить в граф ребро, соединяющее вершины u и v http://www.cyberforum.ru/cpp-beginners/thread1165758.html
Доброго дня, друзья!) Нужно решить задачку, но, к сожаления, не знаю даже с какой стороны подойти, тк с графами ранее не сталкивался. Не могли бы вы помочь решением или идеей как это можно сделать. ...
C++ Подсчёт в строке слов, состоящих только из русских букв Подсчёт в строке слов, состоящих только из русских букв. подробнее

Показать сообщение отдельно
maksimkalon
9 / 8 / 2
Регистрация: 03.03.2013
Сообщений: 71

Создание нового типа MPI - C++

04.05.2014, 14:11. Просмотров 344. Ответов 1
Метки (Все метки)

Задача следующая: в каждом процессе дано три числа(одно вещественное, два целых), используя произвольный тип, переслать числа из подчиненных в главный и в главном вывести. Делаю так:
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
    int flag;
    MPI_Initialized(&flag);
    if (flag == 0)
        return;
    int rank, size;
    MPI_Comm_size(MPI_COMM_WORLD, &size);
    MPI_Comm_rank(MPI_COMM_WORLD, &rank);
    
    typedef struct {
        double a;
        int b,c;
    } doubleint2;
    doubleint2 sbuf,rbuf[10];
    MPI_Datatype newtype;
    int blockers[4]={1,1,1,1};
    MPI_Aint displs[4]={offsetof(doubleint2,a),offsetof(doubleint2,b),offsetof(doubleint2,c),sizeof(doubleint2)};
    MPI_Datatype oldtypes[4]={MPI_DOUBLE,MPI_INT,MPI_INT,MPI_UB};
    
    MPI_Type_struct(4,blockers,displs,oldtypes,&newtype);
    MPI_Type_commit(&newtype);
 
    if(rank>0)
    {
        *Ввод sbuf.a, sbuf.b, sbuf.c*
        MPI_Gather(&sbuf,3,newtype,&rbuf,3,newtype,0,MPI_COMM_WORLD);
    }
    else
    {
        MPI_Gather(&sbuf,3,newtype,&rbuf,3,newtype,0,MPI_COMM_WORLD);
        for(int i=0; i<size-1; i++)
        {
            *Вывод rbuf[i].a, rbuf[i].b, rbuf[i].c*
        }
    }
Запускается через раз, выводит неправильно, иногда возникает ошибка(attach1.png)
0
Миниатюры
Создание нового типа MPI  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.