1

我是具有 22 个节点的 Rocks 4.3 集群的用户。我正在使用它在 200 万行和 100 列的数据集上运行聚类函数 - parPvclust(它将列中的样本名称聚类)。为了运行 parPvclust,我使用了一个嵌入了一些 R 代码的 C-shell 脚本。使用下面的 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) 

关于为什么我总是用较大的数据集而不是较小的数据集使节点崩溃,有什么想法吗?

4

0 回答 0