使用plyr和doMC并行化的R代码:错误消息:do.ply(i)中出错:任务1失败-“;找不到函数“;getClass"&引用;

使用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

我刚刚开始学习如何使用远程超级计算机来执行并行代码。我从上一篇文章中得到了很多初始帮助,还有一个特别有帮助和耐心的XSEDE家伙

我只使用一个节点(目前),但每个节点都有32个核心。我使用doMC而不是snow,因为超级计算机的家伙正在运行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")
定义一组函数
加载数据
呼叫库
要求(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))