Ответ 1
Пакет doParallel
представляет собой слияние doSNOW
и doMC
, так как parallel
является слиянием snow
и multicore
. Но хотя doParallel
имеет все функции doMC
, мне сказал Rich Calaway of Revolution Analytics, что они хотят поддерживать doMC
, потому что он был более эффективным при определенных обстоятельствах, хотя doMC
теперь использует parallel
> просто как doParallel
. Я лично не провел никаких тестов, чтобы определить, есть ли и когда есть существенная разница.
Я использую doMC
на компьютере под управлением Linux или Mac OS X, doParallel
на компьютере под управлением Windows и doMPI
в кластере Linux, но doParallel
работает на всех этих платформах.
Что касается разных методов регистрации, выполните следующие действия:
registerDoParallel(cores=3)
на машине Windows, он будет создавать объект кластера неявно для последующего использования с clusterApplyLB
, тогда как в Linux и Mac OS X не создается или не используется объект кластера. Количество ядер просто запоминается и используется в качестве значения аргумента mc.cores
позже при вызове mclapply
.
Если вы выполните:
cl <- makeCluster(3)
registerDoParallel(cl)
тогда зарегистрированный объект кластера будет использоваться с clusterApplyLB
независимо от платформы. Вы правы, что в этом случае вы несете ответственность за выключение объекта кластера с момента его создания, тогда как неявный объект кластера автоматически отключается.