我正在尝试使用batchtools / BatchJobs在两个基于unix的R服务器上进行并行计算。我对此是完全陌生的,因此跟随一些文章和软件包详细信息来执行此操作。我在下面添加了一些链接: batchtools, BatchJobs
到目前为止,我还没有真正了解如何将批处理工具用于多台计算机。另一方面,有了BatchJobs,我的进度会更好。
我首先从终端建立了ssh连接,然后执行以下几行:
reg = makeRegistry("TestExp")
reg$cluster.functions = makeClusterFunctionsSSH(worker = makeSSHWorker(nodename="sla19438")) #By BatchJobs
#Test Function
piApprox = function(n) {
nums = matrix(runif(2 * n), ncol = 2)
d = sqrt(nums[, 1]^2 + nums[, 2]^2)
4 * mean(d <= 1)
}
set.seed(42)
piApprox(1000)
BatchJobs::batchMap(reg = reg, fun = piApprox, n = rep(1e7, 10))
getJobTable()
BatchJobs::submitJobs(reg = reg, resources = list(walltime = 3600, memory = 1024))
getStatus(reg = reg)
loadResult(reg = reg, id = 5)
mean(sapply(1:10, loadResult, reg = reg))
它可以正常工作并给出结果,但是当我在终端中运行“ top”时,我看不到任何指示正在另一台计算机(sla19438)上运行的作业。
请帮助我了解我在做什么错。也许需要一些配置,但我看不到任何在线材料能像我这样的新手简化工作。
谢谢