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

Прием MPI_Bcast - C++

Восстановить пароль Регистрация
 
maksimkalon
8 / 7 / 2
Регистрация: 03.03.2013
Сообщений: 70
30.04.2014, 11:51     Прием MPI_Bcast #1
При передаче сообщений с помощью функции MPI_Send, принять процессом-получателем можно с помощью функции MPI_Recv, а как принимать сообщения, отправленные MPI_Bcast?
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nullpointer
 Аватар для nullpointer
45 / 45 / 5
Регистрация: 30.03.2009
Сообщений: 518
30.04.2014, 12:05     Прием MPI_Bcast #2
maksimkalon, посмотрите на MPI_Allgather, она позволяет осуществлять прием на всех процессах
gng
605 / 451 / 122
Регистрация: 08.09.2013
Сообщений: 1,153
30.04.2014, 13:26     Прием MPI_Bcast #3
Цитата Сообщение от maksimkalon Посмотреть сообщение
а как принимать сообщения, отправленные MPI_Bcast?
Один из процессов, вызывающих MPI_Bcast, передает сообщение, остальные - принимают.
maksimkalon
8 / 7 / 2
Регистрация: 03.03.2013
Сообщений: 70
30.04.2014, 14:15  [ТС]     Прием MPI_Bcast #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, передает сообщение, остальные - принимают.
Это я понимаю Мне интересно как принять
gng
605 / 451 / 122
Регистрация: 08.09.2013
Сообщений: 1,153
30.04.2014, 14:49     Прием MPI_Bcast #5
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от maksimkalon Посмотреть сообщение
Это я понимаю Мне интересно как принять
Все процессы вызывают MPI_Bcast. При этом один передает, остальные принимают.
Что тут непонятного?
maksimkalon
8 / 7 / 2
Регистрация: 03.03.2013
Сообщений: 70
30.04.2014, 14:57  [ТС]     Прием MPI_Bcast #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);
        *Вывод а*
    }
Тема закрыта.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.04.2014, 15:22     Прием MPI_Bcast
Еще ссылки по теме:

UDP отправка и прием пакетов C++
C++ Server Socket и прием данных
Прием, передача и сравнение последовательности Баркера C++

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

Или воспользуйтесь поиском по форуму:
gng
605 / 451 / 122
Регистрация: 08.09.2013
Сообщений: 1,153
30.04.2014, 15:22     Прием MPI_Bcast #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();
}
Yandex
Объявления
30.04.2014, 15:22     Прием MPI_Bcast
Ответ Создать тему
Опции темы

Текущее время: 05:41. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru