0
我有一个非常大的数据集,并希望进行一些统计分析。计算只需要一行代码,但可能需要几天时间。有什么方法可以加速这个过程吗?如何加快R中单行代码的计算速度?
起初,我认为并行化可能是一个很好的解决方案,但后来有人告诉我,单个调用的并行化是不可能的。下面是一个例子,
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%左右,这是正常的值的速度没有增加。
谢谢您的建议。 –
是的,更适合SO。 – wrtsvkrfm
您可以尝试优化并行化。也许负载平衡可能会有所帮助,也许你应该立即将矩阵块发送到节点。否则,你可以考虑使用编译代码,例如,在Rcpp中实现。但首先你应该考虑你在那里做什么是明智的。如果某些事情需要数天计算,那么应该花一些时间重新考虑算法。 – Roland