В узле, где я выполняю параллельные вычисления, я получаю
parallel::detectCores()
[1] 64
Однако, когда я запускаю свою работу, которая одновременно запускает 120 параллельных подзадач, она начинает работать! Другими словами, он назначает 120 рабочих, произносящих эти сообщения;
starting worker pid=22473 on localhost:11962 at 15:59:09.328
starting worker pid=22482 on localhost:11962 at 15:59:09.611
starting worker pid=22491 on localhost:11962 at 15:59:09.892
starting worker pid=22500 on localhost:11962 at 15:59:10.172
...
(я не опубликовал все 120 строк из-за пробела)
Я не понимаю, почему он работает хорошо. Не могли бы вы дать мне знать, что мне не хватает?
Как узнать максимальное количество заданий, которое я могу отправить?
Я использую
$ lsb_release -a
дает мне это;
LSB Version: :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
Distributor ID: CentOS
Description: CentOS release 6.9 (Final)
Release: 6.9
Codename: Final
Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.
Пример кода будет выглядеть так:
library(doParallel)
library(foreach)
n_cluster <- 120
cl <- makeCluster(n_cluster, outfile = "./out.txt")
cat(sprintf("---------------------------------\n"))
cat(sprintf("No. of clusters registered = %d\n", n_cluster))
cat(sprintf("---------------------------------\n"))
registerDoParallel(cl)
res_fit <- foreach(i = 1:n_cluster) %dopar% {
cat(sprintf("i=%d\n", i))
}
stopCluster(cl)