我关注使用this instruction的makeCluster function,但它似乎不适用于Windows
primary <- '192.168.1.235'
machineAddresses <- list(
list(host=primary,user='johnmount',
ncore=4),
list(host='192.168.1.70',user='johnmount',
ncore=4)
)
spec <- lapply(machineAddresses,
function(machine) {
rep(list(list(host=machine$host,
user=machine$user)),
machine$ncore)
})
spec <- unlist(spec,recursive=FALSE)
parallelCluster <- parallel::makeCluster(type='PSOCK',
master=primary,
spec=spec)
print(parallelCluster)
答案 0 :(得分:4)
执行以下操作:
收集您可以ssh的机器地址列表。这是困难的部分,取决于您的操作系统,如果您以前没有尝试过,应该得到帮助。在这种情况下,我使用的是ipV4地址,但在使用Amazon EC2时,我使用的是主机名。
在我的情况下,我的列表是:
我的机器(主要):“192.168.1.235”,用户“rajeevkumar”另一个 Win-Vector LLC机器:“192.168.1.70”,用户“rajeevkumar”
请注意,我们没有收集密码,因为我们假设我们已在所有这些计算机的“authorized_keys”
配置中设置了正确的“.ssh”
和密钥对。我们正在调用我们用来发布整体计算“主要”的机器。
在尝试使用R之前,在终端shell中使用“ssh”尝试所有这些地址至关重要。
现在我们身后有系统的东西,R部分如下。使用以下命令启动群集:
primary <- '192.168.1.235'
machineAddresses <- list(
list(host=primary,user='johnmount',
ncore=4),
list(host='192.168.1.70',user='johnmount',
ncore=4)
)
spec <- lapply(machineAddresses,
function(machine) {
rep(list(list(host=machine$host,
user=machine$user)),
machine$ncore)
})
spec <- unlist(spec,recursive=FALSE)
parallelCluster <- parallel::makeCluster(type='PSOCK',
master=primary,
spec=spec)
print(parallelCluster)
## socket cluster with 8 nodes on hosts
## ‘192.168.1.235’, ‘192.168.1.70’
就是这样。您现在可以在许多计算机上的许多核心上运行您的作业。
您可以在以下网址阅读更多内容:
http://www.r-bloggers.com/running-r-jobs-quickly-on-many-machines/