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

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

Войти
Регистрация
Восстановить пароль
 
maksimkalon
9 / 8 / 2
Регистрация: 03.03.2013
Сообщений: 71
#1

Прием MPI_Bcast - C++

30.04.2014, 11:51. Просмотров 1073. Ответов 6
Метки нет (Все метки)

При передаче сообщений с помощью функции MPI_Send, принять процессом-получателем можно с помощью функции MPI_Recv, а как принимать сообщения, отправленные MPI_Bcast?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.04.2014, 11:51
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Прием MPI_Bcast (C++):

Прием врача - C++
Очень тяжелая задача(( я пробовал сам писать но ни чего не получилось(( Помогите!!! Прием врача. Врач принимает по четным дням в...

Задача Прием у директора - C++
Здравствуйте, уважаемые пользователи этого замечательного форума! Написал несложную программу на работу со структурой (E-olymp №13),...

Server Socket и прием данных - C++
Доброго времени суток. Никак не могу разобраться с компонентом ServerSocket. Итак, ситуация. У меня есть модуль XBee WiFi, на него с...

UDP отправка и прием пакетов - C++
Вообщем такая ситуация. Отправляю пакеты объемом по 1 кБайту, пачками по 32 через определенное время (маленькое). Вообщем около 8000...

Подскажите, как называется этот прием? - C++
Всем привет:) Допустим, имеется какой-либо класс, имеющий поля данных и два метода: class someClass { private: ...

Прием, передача и сравнение последовательности Баркера - C++
Подскажите пожалуйста.Пишу программу клиент-сервер. Клиент передает м-последовательность или последовательность Баркера, сервер ее...

6
nullpointer
46 / 46 / 5
Регистрация: 30.03.2009
Сообщений: 522
30.04.2014, 12:05 #2
maksimkalon, посмотрите на MPI_Allgather, она позволяет осуществлять прием на всех процессах
0
gng
644 / 490 / 133
Регистрация: 08.09.2013
Сообщений: 1,326
30.04.2014, 13:26 #3
Цитата Сообщение от maksimkalon Посмотреть сообщение
а как принимать сообщения, отправленные MPI_Bcast?
Один из процессов, вызывающих MPI_Bcast, передает сообщение, остальные - принимают.
0
maksimkalon
9 / 8 / 2
Регистрация: 03.03.2013
Сообщений: 71
30.04.2014, 14:15  [ТС] #4
Цитата Сообщение от nullpointer Посмотреть сообщение
maksimkalon, посмотрите на MPI_Allgather, она позволяет осуществлять прием на всех процессах
Делаю так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
    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);
    
    MPI_Status s;
    int a;
 
    if(rank == 0)
    {
        *Ввод а*
        MPI_Bcast(&a,1,MPI_INT,0,MPI_COMM_WORLD);
    }
    else
    {
        int b;
        MPI_Allgather(&a,1,MPI_INT,&b,1,MPI_INT,MPI_COMM_WORLD);
        *Вывод b*
    }
Результат: все процессы зависают

Добавлено через 53 секунды
Цитата Сообщение от gng Посмотреть сообщение
Один из процессов, вызывающих MPI_Bcast, передает сообщение, остальные - принимают.
Это я понимаю Мне интересно как принять
0
gng
644 / 490 / 133
Регистрация: 08.09.2013
Сообщений: 1,326
30.04.2014, 14:49 #5
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от maksimkalon Посмотреть сообщение
Это я понимаю Мне интересно как принять
Все процессы вызывают MPI_Bcast. При этом один передает, остальные принимают.
Что тут непонятного?
0
maksimkalon
9 / 8 / 2
Регистрация: 03.03.2013
Сообщений: 71
30.04.2014, 14:57  [ТС] #6
Теперь понятно, спасибо
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
    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);
    
    MPI_Status s;
    int a;
 
    if(rank == 0)
    {
        *Ввод а*
        MPI_Bcast(&a,1,MPI_INT,0,MPI_COMM_WORLD);
    }
    else
    {
        MPI_Bcast(&a,1,MPI_INT,0,MPI_COMM_WORLD);
        *Вывод а*
    }
Тема закрыта.
0
gng
644 / 490 / 133
Регистрация: 08.09.2013
Сообщений: 1,326
30.04.2014, 15:22 #7
Обычно делают проще
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
#include <mpi.h>
 
main (int ac, char *av[]) {
  MPI_Init(&ac, &av);
  int rank, size;
  MPI_Comm_size(MPI_COMM_WORLD, &size);
  MPI_Comm_rank(MPI_COMM_WORLD, &rank);
 
  int a= 17;
  MPI_Bcast(&a,1,MPI_INT,0,MPI_COMM_WORLD);
  printf ("%d: %d\n", rank, a);
 
  MPI_Finalize();
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.04.2014, 15:22
Привет! Вот еще темы с ответами:

Прием по modbus. Как указать число считываемых байтов - C++
Добрый день. Пишу программу для обмена по modbus'у rtu , я slave , принимаю команды и формирую ответы на них. Принимаемые команды могут...

Используя прием накопления суммы, найти сумму нечетных чисел от 1 до N - C++
//Используя прием накопления суммы, найдите сумму нечетных чисел от 1 до N. Число N программа должна запрашивать у пользователя. #include...

Асинхронные сокеты: Как организовать разделение на прием сообщений и прием файлов - C#
Изучив синхронные сокеты, перешел к изучению асинхронных. Столкнулся вот с чем, как, используя асинхронные сокеты, сделать на стороне...

Прием строки - Delphi
Здравствуйте Уважаемые форумчане! Ломаю голову уже 3-ий день не могу понять, почему при передачи строки с Arduino на Android (Delphi XE5)...


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

Или воспользуйтесь поиском по форуму:
7
Yandex
Объявления
30.04.2014, 15:22
Ответ Создать тему
Опции темы

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