R 编程:parpvclust 脚本被杀死

R programming: parpvclust script getting killed

我目前正在尝试 运行 通过 pvclust 库进行并行层次聚类,使用命令 parPvclust。我使用的数据集是 57 行乘以 30000 列。我运行这个程序。从我的 nohup.out 我得到以下内容:

`[1] "2015-09-23 11:31:31 EDT"
 [1] "Data transposed"
 [1] "2015-09-23 11:31:39 EDT"
 [1] "start clustering"
 Multiscale bootstrap...`

然后和我的nohup.out分开。命令行吐出 Killed,但如果我 运行 top,它们仍然是 R 进程 运行ning。这是一张照片:

这是我的脚本。

#parallel clustering via pvclust library
library(data.table)
library(reshape2)
library(parallel)
library(pvclust)

nabec <- fread("/labshare/Nick/projects/nabec/pilot/normalized.transcripts.usable.autosomal.1.txt")

#transpose file
nabecCohort.T <- dcast.data.table(melt(nabec, id.vars = "ID"), variable ~ ID)
testNabec <- nabecCohort.T[2:58, 2:dim(nabecCohort.T)[2], with = F]
testNabec <- sapply(testNabec, as.numeric)

Sys.time()
print("Data transposed")

cl <- makeCluster(23)

Sys.time()
print("start clustering")
nabec.pv <- parPvclust(cl,testNabec[1:57,],nboot=1000)

我找到了这个 post,但它并没有多大帮助。

我还能解决哪些其他问题?任何想法发生了什么?我没有收到 "Cannot allocate vector of size.." 之类的错误。

编辑:脚本 运行 也适用于数据集的较小子样本(57 行 * 1000 列)

您的系统可能 运行 内存不足。

请查看 dmesg 的输出。

当您的操作系统 运行 内存不足时,作为最后的措施,它会调用 OOM killer。它根据一些标准选择一个进程,然后终止该进程以释放一些系统内存。如果发生这种情况,它将在 dmesg 和您的系统日志中可见。

当您的系统 运行 内存严重不足时,您的主 R 进程似乎已被终止。如果您想早点失败,实际上 减少 交换大小可能会有所帮助。 Swap 只需要足够大以存储不需要的系统部分(例如未使用的服务)。

不幸的是,R 可能非常耗费内存。它可能有助于例如将 testNabec[1:57,] 写入文件,然后在 会话中再次加载它。尝试找出哪些行导致内存消耗最多。

哦,当然还有杀死僵尸进程。您似乎有多个 R 进程 运行ning,每个进程使用 10 GB RAM...