Какое использование MPI в python3? - PullRequest
0 голосов
/ 01 декабря 2018

Я пытаюсь найти использование mpi4py для многопроцессорной обработки в python3.В документации я читаю информацию о рангах и их использовании, а также о том, как переносить данные из ранга в другой, но я не мог понять, как это реализовать, предположим, у меня есть функция, которую я хочу запустить на одном процессоре, поэтому я должен написать эту функциюв случае, если rank == 0, а для другой функции, если rank == 1 ..., синтаксис здесь меня смущаетЭто как порождение process1 = multiprocessing.Process ()

1 Ответ

0 голосов
/ 21 декабря 2018

MPI4PY обеспечивает привязки стандарта интерфейса передачи сообщений (MPI) для Python и позволяет любой программе Python использовать несколько процессоров.

Поддерживает связь любого выбираемого объекта Python

point-to-point (sends, receives)

collective (broadcasts, scatters, gathers) 

В качестве примера коллективных разбросов

рассмотрим список, имеющий значения от 0 до 79

 import mpi4py
 from mpi4py import MPI
 mpi4py.rc.initialize = True

 comm = MPI.COMM_WORLD
 size = comm.Get_size() 
 rank = comm.Get_rank()



def processParallel(unitList):
    subList=[i**2 for i in unitList]
    return subList


if comm.rank == 0:
    #Read the data in to a list
    elementList=list(range(80))
    #divide the data in do different chunks [small groups]
    mainList = [elementList[x:x+10] for x in range(0, len(elementList), 10)]
else:
    mainList = None

unitList = comm.scatter(mainList, root=0)

comm.Barrier()
processedResult=processParallel(unitList)

# Gathering the results back to Rank 0
final_detected_data = comm.gather(processedResult, root=0)


if comm.rank == 0:
    print(final_detected_data)

Запустите код как: python -n python, например: python -n 8 python sample.py

Сравните время, необходимое для обработки всего списка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...