0

我有一个带有以下源代码的 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,但没有成功。

4

1 回答 1

2

您的数据集应该适合一个节点的内存这一事实并不意味着在对其执行分析时也意味着它适合内存。经常分析导致数据复制。此外,您身边的一些低效编程也可能会增加内存使用量。设置开关和限制 R 的内存使用只会让事情变得更糟。它不限制实际内存使用量,它限制最大内存使用量。并且使用 32 位操作系统在内存方面总是有点想法,因为使用 32 位操作系统的单个进程可以寻址的最大内存小于 4 GB。

如果没有更多详细信息,很难进一步帮助您解决此问题。一般来说,我建议将数据集切割成越来越小的部分,直到你成功为止。我假设您的问题是令人尴尬的并行,并且进一步切割您的数据集不会改变任何输出。

于 2012-04-17T08:50:43.463 回答