私は 22 ノードの Rocks 4.3 クラスターのユーザーです。これを使用して、200 万行と 100 列のデータセットでクラスタリング関数 - parPvclust - を実行しています (列内のサンプル名をクラスター化します)。parPvclust を実行するために、R コードを埋め込んだ C シェル スクリプトを使用しています。以下の R コードを 200 万行 100 列のデータセットで使用すると、常にノードの 1 つがクラッシュします。
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 シェル スクリプト コードが機能することはわかっています。また、データセットのサブセット (上記でコメント アウトされています) を使用すると、コードが正常に実行され、出力が得られるため、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)
小さなデータセットではなく大きなデータセットでノードを常にクラッシュさせる理由について何か考えはありますか?