В чем разница между использованием пакета doParallel с type = MPI и непосредственным использованием doMPI? - PullRequest
0 голосов
/ 10 мая 2018

В чем разница между использованием пакета 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})

VS

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

1 Ответ

0 голосов
/ 11 мая 2018

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

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

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

  • поддерживает MPI-трансляцию для инициализации рабочих;

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

...