Установить милость кластера PSOCK в R

Я хотел бы повысить привлекательность работы моего кластера. Следующий код успешен:

> cl <- makePSOCKcluster(rep('localhost', 2))
> clusterEvalQ(cl = cl, rnorm(3))
[[1]]
[1] -0.6452848 -0.9899609  0.3083131

[[2]]
[1]  1.1687733 -0.1930413  1.1576510

Это, однако, нет.

cl <- makePSOCKcluster(names = rep('localhost', 8), renice = 15)
nice: +15: No such file or directory

Я могу установить привлекательность после создания кластера, используя следующий код:

clusterEvalQ(cl = cl, tools::psnice(value = 15))

После прочтения документации для makePSOCKclusterЯ не уверен, что я делаю неправильно на этапе создания кластера, и не смог отследить проблему. Как я могу создать кластер и установить все рабочие потоки одновременно?

1 ответ

Решение

Я считаю, что это ошибка в "параллельном" пакете. Когда вы используете опцию "renice" makePSOCKcluster, она использует форму команды "nice", которая не работает с bash, но я считаю, что работает с csh/tcsh. Вы можете увидеть сгенерированную команду, используя опцию "manual=TRUE":

> library(parallel)
> cl <- makePSOCKcluster(2, renice=15, manual=TRUE)
Manually start worker on localhost with
  nice +15 '/home/sw/R/sources/R-3.3.0/bin/Rscript' --default-packages=datasets,utils,grDevices,graphics,stats,methods -e 'parallel:::.slaveRSOCK()' MASTER=localhost PORT=11379 OUT=/dev/null TIMEOUT=2592000 XDR=TRUE 

Если вы попытаетесь выполнить это из bash, вы получите то же сообщение об ошибке, о котором вы сообщили. Синтаксис для bash должен быть:

$ nice -n 15 '/home/sw/R/sources/R-3.3.0/bin/Rscript' ...
Другие вопросы по тегам