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...
我目前正在尝试 运行 通过 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...