Learning
1"""
2Изучение MPI.
3Основы. Урок 1.
4Не забудь, что нужно запускать через терминал.
5'mpiexec -n 4 python your_script.py'
6- Ранг - это уникальное число, которое идентифицирует каждый процесс.
7
8"""
9from mpi4py import MPI10
11
12# Инициализация MPI
13
14# Инициализация MPI коммуникатора, который представляет собой
15# набор процессов, участвующих в MPI приложениях.
16comm = MPI.COMM_WORLD # Представляет все процессы, доступные в текущем запуске MPI17rank = comm.Get_rank() # Возвращает ранг(id) текущего процесса в коммуникаторе comm.18size = comm.Get_size() # Возвращает общее кол - во процессов в коммуникаторе comm.19
20if rank == 0: # обычно под 0 находиться главный процесс.21# текстовое послание22data = f"Привет, от процесса rank: {rank}, процессу с rank: !=0."23# отправка текстового письма(data) процессу 1 (dest=1)24comm.send(data, dest=1)25# Ожидаем получения сообщения от последнего(други) процесса(ов), с рангом size - 126received_data = comm.recv(source=size - 1)27print("Процесс 0 получил: ", received_data)28else: # Другие процессы29# получаем сообщение от предыдущего процесса (с рангом - 1)30received_data = comm.recv(source=rank - 1)31# выводим полученнное сообщение32print(f"Процесс {rank} получил: ", received_data)33data = "Привет, от процесса: " + str(rank)34# Отправка письма от текушего процесса35comm.send(data, dest=(rank + 1) % size)36# (rank + 1) % size - обеспечивает круговой обмен сообщениями