加载来自不同会话的数据集后,%dopar%不起作用

时间:2015-05-05 12:51:26

标签: r doparallel

我在使用doParallel和foreach软件包(OpenMP)的集群节点上使用R.

我运行了第一个脚本,它给了我两个对象作为结果,并将它们保存为RData。

在一个单独的脚本上,我加载了包含要进一步处理的两个对象的RData,但是我得到了一个"任务1,无法打开连接"当我并行使用foreach循环时。我怀疑加载的RData可能有问题。

我决定在台式电脑上尝试这个简单的工作示例:

1 /我首先运行这个简单的代码:

library("doParallel")
library("foreach")
registerDoParallel(cores=3)

x<-matrix(rnorm(2000),nrow=10,ncol=200)
squarex<-foreach(i=1:10)%dopar%{x[,i]^2}

一切正常

2 /然后我加载先前保存在群集上的RData

load("xxx.RData")

这两个对象就在那里。

3 /如果我再次尝试再次运行1,这与2完全无关,那么我得到错误:

mcfork()中的错误:   无法分叉,可能的原因:无法分配内存

实际上,使用并行软件包的所有内容都不再适用。尝试注册核心并不起作用,有时甚至会挂起。

显然必须将某些内容从群集环境导入到导致问题的RData中。但是,我不知道为什么,如果我直接在群集上执行相同的步骤,问题仍然存在。

信息:

在加载数据集之前

ls():

ls()
[1] "squarex" "x" 
加载数据集后

ls():     LS()

[1] "squarex"                      "trandom_list_data_Ana_all"         "trandom_list_data_Anatem_all"
[4] "x"  

trandom_list *是加载的两个对象,每个都是8.7Gb(群集节点有47Gb,我的计算机有32Gb的RAM)

dput(xxx.RData)给出一个以...开头的4,9Gb文本文件     list(结构(c(0,0,0,0,0,0,0,0,5.2

并以奇怪的方式结束

2, 0, 0, 0, 0, 0, 0, 0, 31.5, 11.9, 0.1, 0, 0, 0, 0.1, 0, 2.5, 10.2

没有&#34;)&#34; ..当完成进程时,可能完全没有完成RAM作为完整的RAM(但是交换仍然没问题)。

0 个答案:

没有答案