我有一个带有以下源代码的R脚本:
genofile<-read.table("D_G.txt", header=T, sep=',')
genofile<-genofile[genofile$"GC_SCORE">0.15,]
cat(unique(as.vector(genofile[,2])), file="GF_uniqueIDs.txt", sep='\n')
D_G.txt是一个巨大的文件,大约5 GB。
现在,计算是在Microsoft HPC群集上执行的,因此,正如您所知,当我提交作业时,它会在不同的物理节点上“分裂”;在我的情况下,每个人都有4 GB的RAM内存。
好吧,经过一段时间后,我收到臭名昭着的错误cannot allocate vector of size xxx Mb
消息。我试过使用限制可用内存的开关:
--max-memory=1GB
但没有任何改变。
我已经尝试过32位和64位的Rscript 2.15.0而没有运气。
答案 0 :(得分:2)
您的数据集本身应该适合一个节点的内存并不意味着在对它进行分析时也意味着它适合内存。通常,分析会导致数据复制。此外,您身边的一些低效编程也可能会增加内存使用量。设置开关和限制R的内存使用只会让事情变得更糟。它不限制实际内存使用量,它限制了最大内存使用量。使用32位操作系统总是有点想法内存,因为使用32位操作系统的单个进程可以寻址的最大内存小于4 GB。
如果没有更多细节,很难再帮助您解决这个问题。一般情况下,我建议将数据集剪切成越来越小的部分,直到成功为止。我认为你的问题是令人尴尬的并行,并且进一步削减你的数据集不会改变任何输出。