我刚刚开始学习如何使用远程超级计算机来执行并行代码。我从上一篇文章中得到了很多初步帮助,以及一位特别乐于助人和耐心的 XSEDE 人。
我只使用一个节点(同时),但每个节点都有 32 个核心。我正在使用 doMC 而不是雪,因为超级计算机的那个人正在让 Rmpi 运行。目前,32 个内核对我来说应该(超过)足够了。我的脚本是这样的:
define a bunch of functions
load the data
call libraries
require(doMC)
require(plyr)
registerDoMC(32)
main.function <- function(data){
*the function*
}
results = llply(1:500, function(idx){out<-main.function(data)},.parallel=TRUE)
save(results,file="trestles_results")
这在我自己的机器上运行良好(将其设置为仅运行几次并仅注册几个内核)。但是当我在集群上运行它时,输出文件显示它运行了 500 次迭代中的每一个,但我没有得到任何输出文件,并且我收到以下错误消息:
Error in do.ply(i) : task 1 failed - "could not find function "getClass""
Calls: llply -> %dopar% -> <Anonymous>
Execution halted
Nodes: trestles-10-28
有人知道这里发生了什么吗?
提前致谢!