Обнаружено 64 ядра, но параллельно может выполняться больше заданий - PullRequest
0 голосов
/ 27 июня 2018

В узле, где я выполняю параллельные вычисления, я получаю

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 строк из-за пробела)

Я не понимаю, почему он работает хорошо. Не могли бы вы дать мне знать, что мне не хватает? Как узнать максимальное количество заданий, которое я могу отправить?


Я использую

  • Linux

$ 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
  • R 3.4.3

Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.


Пример кода будет выглядеть так:

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...