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

Вычисление суммы чисел, от параллельных процессов MPI - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Не работает рекурсивная функция http://www.cyberforum.ru/cpp/thread1846981.html
У меня есть поле 80 на 80 клеток, с препятствиями. Функция должна в отдельный массив записавыть в соответствующую клеточку число, означающее, за сколько ходов туда можно добраться из начальных...
C++ C++ to C converter (OOP C) Всем привет! Не встречал ли кто подобного конвертера, который может код на языке высокого уровня конвертировать в Си-шный код (плохочитаемый, для выкладки в качестве опенсорца для любопытных и для... http://www.cyberforum.ru/cpp/thread1846824.html
C++ H323Plus + PTLib: PDU Read Error: Timed Out на приемном канале
Здравствуйте товарищи, помогите кто чем может разобраться с ошибкой. Анамнез: Есть самописная софтина которая должна осуществлять телефонную связь с удаленным терминалом по протоколу H.323. При...
Структура с не известными переменными C++
Добрый вечер. Допустим есть структура (не моя) с некоторыми переменными. Можно ли сделать свою структуру, но, при этом заранее указать переменным этой структуры нужное смещение? Пример: ...
C++ Стандарт C++ вышел на русском http://www.cyberforum.ru/cpp/thread1844402.html
Небезызвестный Евгений Зуев выполнил таки свое обещание и перевел Стандарт. Книжка доступна только (настолько мне известно) здесь. Цена кусается, мнения у всех по этому вопросу разные. Смотрите...
C++ Как разреженную матрицу перевести в формат CRS? Привет кодеры! Моя задача заключается в том чтобы перемножить две разреженные матрицы. Но для того чтобы это сделать нужно эти матрицы привести к виду CRS. Я весь день а то и два не могу понять как... подробнее

Показать сообщение отдельно
ainur_fa
0 / 0 / 0
Регистрация: 09.10.2015
Сообщений: 34

Вычисление суммы чисел, от параллельных процессов MPI - C++

11.11.2016, 09:49. Просмотров 350. Ответов 1
Метки (Все метки)

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

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
#include <mpi.h>
#include <stdio.h>
#include <iostream>
 
    int rank, size;
    //int spisok1[5]={0};
    int *spisok1 = new int[5];
    int summ = 0;
 
int main (int argc, char **argv)
{
    MPI_Status status;
    MPI_Init(&argc, &argv);
    MPI_Comm_rank(MPI_COMM_WORLD, &rank);
    MPI_Comm_size(MPI_COMM_WORLD, &size);
    //Каждый процесс высылает следующему сообщение 
    int chislo = rank * 100 + rand() % 50+1;
    MPI_Sendrecv(&chislo, 1, MPI_INT,(rank+1)%size,(rank+1)%size,
                &spisok1[rank], 1, MPI_INT,(rank+size-1)%size, rank,
                MPI_COMM_WORLD, &status);
    printf("process %d imeet chislo %d \n", rank, chislo);
 
    MPI_Finalize();
 
    for (int i =0; i<5; i++)
    {
        summ+=spisok1[i];
    }
    printf("summa = %d \n", summ);
    return 0;
}
запускаю
C:\temp>mpirun -np 5 Testmpich.exe
process 1 imeet chislo 142
process 3 imeet chislo 342
process 2 imeet chislo 242
process 4 imeet chislo 442
process 0 imeet chislo 42
summa = 1734830266
summa = 1734830066
summa = 1734830166
summa = 1734829966
summa = 892679473
_______________________________________
передача "по кольцу" процессами проходит успешно, но в сумме выводит нечто непонятное мне...
Насколько я понимаю после MPI_Finalize(); параллельные процессы завершаются, и в конце должна вычисляться сумма. Что тут не так, спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru