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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Не работает рекурсивная функция http://www.cyberforum.ru/cpp/thread1846981.html
У меня есть поле 80 на 80 клеток, с препятствиями. Функция должна в отдельный массив записавыть в соответствующую клеточку число, означающее, за сколько ходов туда можно добраться из начальных координат. Если в if приписать && n<3, то она работает, но в маленьком радиусе, если больше тройки число поставить, то уже не работает, никак не могу понять, в чем дело. void search(int x, int y, int n) ...
C++ C++ to C converter (OOP C) Всем привет! Не встречал ли кто подобного конвертера, который может код на языке высокого уровня конвертировать в Си-шный код (плохочитаемый, для выкладки в качестве опенсорца для любопытных и для любителей резюме с открытым кодом ). Есть мысль, что кто-то пользуется. Про существование конвертеров C++ to C# (из одного высокоуровневого ООП языка в другой знаю), код получается рабочий, но... http://www.cyberforum.ru/cpp/thread1846824.html
Как записать формулы? C++
Нужно написать программу для вычисления а и b,используя эти формулы.
C++ H323Plus + PTLib: PDU Read Error: Timed Out на приемном канале
Здравствуйте товарищи, помогите кто чем может разобраться с ошибкой. Анамнез: Есть самописная софтина которая должна осуществлять телефонную связь с удаленным терминалом по протоколу H.323. При подключении к удаленному терминалу открываются два канала: приемный и передающий, при этом связь по передающему каналу работает, а вот приемный канал сообщает посредством h323pdu.cxx: h323pdu.cxx...
C++ Структура с не известными переменными http://www.cyberforum.ru/cpp/thread1844681.html
Добрый вечер. Допустим есть структура (не моя) с некоторыми переменными. Можно ли сделать свою структуру, но, при этом заранее указать переменным этой структуры нужное смещение? Пример: struct UnkStruct { long long SenderGuid; unsigned int Unk; char FormattedMessage;
C++ Стандарт C++ вышел на русском Небезызвестный Евгений Зуев выполнил таки свое обещание и перевел Стандарт. Книжка доступна только (настолько мне известно) здесь. Цена кусается, мнения у всех по этому вопросу разные. Смотрите сами. Если кому интересно про Зуева, можете почитать его рассказ "Редкая профессия". Сам я читал его давненько, понравилось. Вот еще ссылка по теме: http://www.interstron.ru/analitics_3.html подробнее

Показать сообщение отдельно
ainur_fa
0 / 0 / 0
Регистрация: 09.10.2015
Сообщений: 32
11.11.2016, 09:49     Вычисление суммы чисел, от параллельных процессов MPI
Задача такая, запускаются параллельно 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(); параллельные процессы завершаются, и в конце должна вычисляться сумма. Что тут не так, спасибо.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 04:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru