我是拥有22个节点的Rocks 4.3群集的用户。我正在使用它来运行聚类函数 - parPvclust - 在200万行和100列的数据集上(它聚集列中的样本名称)。要运行parPvclust,我使用的是一个C-shell脚本,我在其中嵌入了一些R代码。使用下面的R代码,数据集为200万行和100列,我总是崩溃其中一个节点。
library("Rmpi")
library("pvclust")
library("snow")
cl <- makeCluster()
load("dataset.RData") # dataset.m: 2 million rows x 100 columns
# subset.m <- dataset.m[1:200000,] # 200 000 rows x 100 columns
output <- parPvclust(cl, dataset.m, method.dist="correlation", method.hclust="ward",nboot=500)
save(output,"clust.RData")
我知道C-shell脚本代码有效,我知道R代码实际上适用于较小的数据集,因为如果我使用数据集的一个子集(上面已注释掉),代码运行正常,我得到一个输出。同样,如果我使用非并行化版本(即只是pvclust),那也可以正常工作,尽管运行非并行化版本会失去并行运行速度的增益。
parPvclust函数需要Rmpi和snow R软件包(用于并行化)和pvclust软件包。
以下内容可以生成我正在使用的数据集的合理近似值:
dataset <- matrix(unlist(lapply(rnorm(n=2000,0,1),rep,sample.int(1000,1))),ncol=100,nrow=2000000)
对于为什么我总是使用较大的数据集而不是较小的数据集崩溃节点,是否有任何想法?