0
私は非常に大きなデータセットを持っており、いくつかの統計分析を行いたいと考えています。計算に必要な回線コードは1つだけですが、数日かかることがあります。プロセスを加速する方法はありますか?Rの1行コードの計算速度を上げる方法は?
最初は並列化が良い解決策かもしれないと思っていますが、1回の呼び出しで並列化ができないと言われました。ここに例があります。
set.seed(1234)
mydata=rnorm(5000*150)
mydata=matrix(mydata,ncol=150)
library(parallel)
cl.cores <- detectCores()
cl <- makeCluster(cl.cores)
clusterSetRNGStream(cl,iseed=1234)
clusterExport(cl,"mydata")
clusterEvalQ(cl,library(NbClust))
nc = clusterApply(cl,2,function(min.nc) fun=NbClust(mydata,min.nc=min.nc,max.nc = 8,method = "kmeans"))
stopCluster(cl)
この例では、デスクトップのCPU占有率が通常の値の約30%のままであるため、速度は増加しません。
ありがとうございました。 –
はい、より適しています。 – wrtsvkrfm
並列化を最適化することができます。おそらく、ロードバランシングが少し助けになるかもしれません。おそらく、行列の塊を一度にノードに送るべきです。それ以外の場合は、コンパイル済みコードの使用を検討することができます(例:Rcppで実装)。しかし、まず、あなたがしていることが分かりやすいかどうかを検討するべきです。計算に何らかの時間がかかる場合は、アルゴリズムの再考に時間がかかるはずです。 – Roland