В чем разница между использованием пакета doParallel с type = MPI и непосредственным использованием doMPI?

В чем разница между использованием пакета doParallel с type = MPI и непосредственным использованием doMPI?

library(foreach)
library(doParallel)
cl <- makeCluster(mpi.universe.size(), type='MPI')
registerDoParallel(cl)
system.time(foreach(i = 1:3) %dopar% {Sys.sleep(i); i})

В.С.

library(doMPI)
cl <- startMPIcluster(count=2)
registerDoMPI(cl)
system.time(foreach(i = 1:3) %dopar% {Sys.sleep(i); i})

1 ответ

Решение

Пакет "doParallel" действует как оболочка для функции "clusterApplyLB", которая реализуется путем вызова функций из пакета "Rmpi" при использовании кластера MPI.

Пакет "doMPI" напрямую использует функции "Rmpi" и включает некоторые функции, которые недоступны в "clusterApplyLB":

  • поддерживает выборку входных данных и комбинирование выходных данных на лету для эффективной обработки большого числа итераций цикла;

  • поддерживает вещание MPI для инициализации работников;

  • позволяет рабочим запускаться с помощью mpirun или функции spawn MPI.

Другие вопросы по тегам