Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.79/34: Рейтинг темы: голосов - 34, средняя оценка - 4.79
10 / 9 / 7
Регистрация: 03.03.2013
Сообщений: 71
1

Прием MPI_Bcast

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

Author24 — интернет-сервис помощи студентам
При передаче сообщений с помощью функции MPI_Send, принять процессом-получателем можно с помощью функции MPI_Recv, а как принимать сообщения, отправленные MPI_Bcast?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.04.2014, 11:51
Ответы с готовыми решениями:

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

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

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

6
 Аватар для nullpointer
48 / 48 / 14
Регистрация: 30.03.2009
Сообщений: 523
30.04.2014, 12:05 2
maksimkalon, посмотрите на MPI_Allgather, она позволяет осуществлять прием на всех процессах
0
923 / 639 / 198
Регистрация: 08.09.2013
Сообщений: 1,693
30.04.2014, 13:26 3
Цитата Сообщение от maksimkalon Посмотреть сообщение
а как принимать сообщения, отправленные MPI_Bcast?
Один из процессов, вызывающих MPI_Bcast, передает сообщение, остальные - принимают.
0
10 / 9 / 7
Регистрация: 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
923 / 639 / 198
Регистрация: 08.09.2013
Сообщений: 1,693
30.04.2014, 14:49 5
Лучший ответ Сообщение было отмечено maksimkalon как решение

Решение

Цитата Сообщение от maksimkalon Посмотреть сообщение
Это я понимаю Мне интересно как принять
Все процессы вызывают MPI_Bcast. При этом один передает, остальные принимают.
Что тут непонятного?
0
10 / 9 / 7
Регистрация: 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
923 / 639 / 198
Регистрация: 08.09.2013
Сообщений: 1,693
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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.04.2014, 15:22
Помогаю со студенческими работами здесь

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

Одновременный прием по двум портам
День добрый возник вопрос - можно ли сделать одновременный прием по двум портам в одном потоке? (по всем сразу не подходит, т.к. в другом...

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

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

Хранение информации о сотрудниках, прием и увольнение с работы
Разработать программу с помощью объектно ориентированного программирования, которая производит хранение информации о сотрудниках (Фамилия...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Новые блоги и статьи
Что нового в C# 14
UnmanagedCoder 10.03.2025
Предстоящая версия C# 14 обещает принести изменения, которые сделают разработку еще более приятной и эффективной. Что стоит отметить, так это влияние сообщества разработчиков на формирование новых. . .
Формулы поворота
Igor3D 10.03.2025
Добрый день Тема Эти формулы приводятся во множестве тьюториалов, часто под видом "матрица вращения на плоскости". x' = x * cos(a) - y * sin(a) y' = y * cos(a) + x * sin(a) Как бы Вы их. . .
Что нового в .NET 10
UnmanagedCoder 10.03.2025
. NET 10 выходит как релиз с длительной поддержкой (LTS), включающей три года обновлений. В этом обновлении Microsoft сфокусировались на нескольких направлениях: производительность, оптимизация. . .
Отложенное высвобождение, RCU и Hazard Pointer в C++26
NullReferenced 09.03.2025
Многопоточное программирование стало важной частью современной разработки. Когда несколько потоков одновременно работают с общими данными, возникает целый ряд проблем, связанных с синхронизацией и. . .
Неблокирующийся стек на C++26
NullReferenced 09.03.2025
Традиционные способы синхронизации в многопоточном программировании — мьютексы, семафоры, условные переменные — часто превращаются в узкое место в плане производительности. При этом неблокирующиеся. . .
Обработка строк в C++26: Новые возможности string и string_view
NullReferenced 09.03.2025
Новый стандарт C++26 предлагает много улучшений для работы с привычными string и относительно новыми string_view. string_view - это невладеющая ссылка на последовательность символов, появившаяся в. . .
Мой первый аддон для Blender 3D, с помощью нейронки (не зная даже азов пайтона, но это не значит что так и с остальным).
Hrethgir 09.03.2025
Потратил весь день. Пол-дня мне хватило, чтобы понять что с версией с 14B мне не одолеть написание функционального кода, на языке с которым я вообще никак не знаком - пайтон. Версия 22B от другого. . .
Einstein@Home сегодня исполняется двадцать лет!
Programma_Boinc 09.03.2025
Einstein@Home сегодня исполняется двадцать лет! Отправлено 19 февраля 2025 года в 17:20:21 UTC Я хочу поздравить всех наших волонтеров, разработчиков и ученых из Einstein@Home. Мы официально. . .
Заполнители и расширенный набор символов в C++26
NullReferenced 09.03.2025
C++26 представляет два важных обновления: заполнители и расширенный набор символов. Заполнители (placeholders) решают давнюю проблему лаконичности кода в шаблонных выражениях и лямбда-функциях. Они. . .
Контракты в C++26
NullReferenced 09.03.2025
Контракты – это механизм, позволяющий указывать предусловия, постусловия и инварианты для функций в коде. Эта функциональность должна была стать частью C++20, но была исключена на встрече комитета. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru