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