MPI-программа должна моделировать работу кругового алгоритма с жеребьевкой для определения живущих процессов. Правила жеребьевки: 1. Процессы с рангом, отличным от 0, участвуют в жеребьевке. 2. Каждый участвующий процесс инициализирует генератор
- Программирование
Условие:
Описание задачи. MPI-программа должна показывать работу кругового алгоритма. Вначале производится жеребьевка: кому жить, а кому не жить. Процесс с рангом RANK в жеребьевке не участвует. Жеребьевка проводится случайным образом по следующим правилам:
Каждый процесс, участвующий в жеребьевке, инициирует генератор случайных чисел своим рангом и получает случайное число. Для инициализации следует использовать функцию srandom(), для получения случайного числа - random().
Процесс, которому выпало нечётное число, продолжает жить. Нечетное число - мертв и прекращает свою работу. Считается, что вся полезная работа живущих процессов сводится к получению и приему сообщений, организующих голосование.
Сообщения ходят трёх типов: «голосование» - предложение принять участие в голосовании (включает в себя список номеров участников), «ок» - ответ на предложение принять участие в голосовании, «координатор» - сообщение, кто стал координатором (включает в себя номер координатора)
Инициатором голосования является процесс с рангом RANK. Для отладки считать RANK = 1.
Процесс, принявший участие в голосовании, сразу после каждой попытки послать сообщение «голосование» выставляет время ожидания ответа на значение TIMEOUT, Для отладки принять TIMEOUT = 2 секунды.
Считаем, что во время процесса голосования процессы не умирают и не возрождаются, поэтому процесс может запомнить, кто является следующим по кругу, для последующей передачи сообщения «координатор».
Живущий процесс завершает свою работу только в следующих ситуациях: Если процесс, инициировавший голосование, обнаружил, что он остался один. Если процесс принял сообщение «координатор», обнаружил, что это не он его посылал, и передал сообщение дальше по кругу. Если процесс принял сообщение «координатор» и обнаружил, что это он его посылал.
Все процессы обязаны полностью комментировать свои действия: какое сообщение от кого он получил, какое сообщение он кому послал, по какой причине он завершил работу.
Решение:
Ниже приведён пошаговый алгоритм решения задачи с объяснением на русском языке. Мы опишем, как можно реализовать MPI-программу, демонстрирующую работу кругового алгоритма с жеребьёвкой и проведением голосования, а также прокомментируем, как и почему осуществляется каждый шаг. ────────────────────────────── Шаг 1. Инициализация MPI • В начале программы подключаем заголовочный файл для MPI (например, mpi.h). • Вызываем функцию MPI_Init для запуска параллельного окружения. • Получаем общее число процессов (size) и уникальный идентификатор (rank) для каждого процесса с помощью MPI_Comm_size ...
Похожие задачи
Не нашел нужную задачу?
Воспользуйся поиском
AI помощники
Выбери предмет
- Правоохранительные органы
- Пожарная безопасность
- Парикмахерское искусство
- Природообустройство и водопользование
- Почвоведение
- Приборостроение и оптотехника
- Промышленный маркетинг и менеджмент
- Производственный маркетинг и менеджмент
- Процессы и аппараты
- Программирование
- Право и юриспруденция
- Психология
- Политология
- Педагогика
- Трудовое право
- Теория государства и права (ТГП)
- Таможенное право
- Теория игр
- Текстильная промышленность
- Теория вероятностей
- Теоретическая механика
- Теория управления
- Технология продовольственных продуктов и товаров
- Технологические машины и оборудование
- Теплоэнергетика и теплотехника
- Туризм
- Товароведение
- Таможенное дело
- Торговое дело
- Теория машин и механизмов
- Транспортные средства