Learning

Форк
0
/
learn_mpi_1.py 
36 строк · 2.1 Кб
1
"""
2
    Изучение MPI.
3
    Основы. Урок 1.
4
    Не забудь, что нужно запускать через терминал.
5
    'mpiexec -n 4 python your_script.py'
6
    - Ранг - это уникальное число, которое идентифицирует каждый процесс.
7

8
"""
9
from mpi4py import MPI
10

11

12
# Инициализация MPI
13

14
# Инициализация MPI коммуникатора, который представляет собой
15
# набор процессов, участвующих в MPI приложениях.
16
comm = MPI.COMM_WORLD  # Представляет все процессы, доступные в текущем запуске MPI
17
rank = comm.Get_rank()  # Возвращает ранг(id) текущего процесса в коммуникаторе comm.
18
size = comm.Get_size()  # Возвращает общее кол - во процессов в коммуникаторе comm.
19

20
if rank == 0:  # обычно под 0 находиться главный процесс.
21
    # текстовое послание
22
    data = f"Привет, от процесса rank: {rank}, процессу с rank: !=0."
23
    # отправка текстового письма(data) процессу 1 (dest=1)
24
    comm.send(data, dest=1)
25
    # Ожидаем получения сообщения от последнего(други) процесса(ов), с рангом size - 1
26
    received_data = comm.recv(source=size - 1)
27
    print("Процесс 0 получил: ", received_data)
28
else:  # Другие процессы
29
    # получаем сообщение от предыдущего процесса (с рангом - 1)
30
    received_data = comm.recv(source=rank - 1)
31
    # выводим полученнное сообщение
32
    print(f"Процесс {rank} получил: ", received_data)
33
    data = "Привет, от процесса: " + str(rank)
34
    # Отправка письма от текушего процесса
35
    comm.send(data, dest=(rank + 1) % size)
36
    # (rank + 1) % size - обеспечивает круговой обмен сообщениями

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.