使用plyr和doMC并行化的R代码:错误消息:do.ply(i)中出错:任务1失败-“;找不到函数“;getClass"&引用;
我刚刚开始学习如何使用远程超级计算机来执行并行代码。我从上一篇文章中得到了很多初始帮助,还有一个特别有帮助和耐心的XSEDE家伙 我只使用一个节点(目前),但每个节点都有32个核心。我使用doMC而不是snow,因为超级计算机的家伙正在运行Rmpi。现在,32个内核对我来说应该足够了。我的脚本是这样的:使用plyr和doMC并行化的R代码:错误消息:do.ply(i)中出错:任务1失败-“;找不到函数“;getClass"&引用;,r,parallel-processing,cluster-computing,R,Parallel Processing,Cluster Computing,我刚刚开始学习如何使用远程超级计算机来执行并行代码。我从上一篇文章中得到了很多初始帮助,还有一个特别有帮助和耐心的XSEDE家伙 我只使用一个节点(目前),但每个节点都有32个核心。我使用doMC而不是snow,因为超级计算机的家伙正在运行Rmpi。现在,32个内核对我来说应该足够了。我的脚本是这样的: define a bunch of functions load the data call libraries require(doMC) require(plyr) registerDoMC
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")
定义一组函数
加载数据
呼叫库
要求(doMC)
需要(plyr)
registerDoMC(32)
主要功能
停止执行
节点:支架-10-28
有人知道这是怎么回事吗
提前谢谢 出现这种情况的一个原因是环境尚未导出到核心。我在这里找到了一个解决方案,包括示例代码: 为了完整起见, *ply函数有一个内置的
.paropts
,您可以在其中指定要发送到集群节点的变量和包
results = llply(1:500,
function(idx){out<-main.function(data)},
.parallel=TRUE,
.paropts=list(.export=c('data','main.function'),
.packages=.packages(all.available=T))
results=llply(1:500,
函数(idx){你使用包方法吗
?不。我应该吗?它做什么?谷歌搜索“R包方法”给不了我多少。不,你不应该。只是“找不到函数”getClass"我知道这个软件包包含这样的功能…你在HPC上使用的是与本地计算机上相同的R core文件吗?还要检查库版本的差异。在启动时检查加载的库,等等;我打赌这是库交互。我尝试过传递一个全局函数,但它似乎找不到。有什么想法吗?@masfenix我有一个打字错误。应该是.export=c('data','main.function')
。您也可以尝试.export=ls()
results = llply(1:500,
function(idx){out<-main.function(data)},
.parallel=TRUE,
.paropts=list(.export=c('data','main.function'),
.packages=.packages(all.available=T))