我在R降雪包中使用sfApply進行並行計算。有32000個測試運行。代碼在啓動計算時工作正常,它會創建46個Rscript.exe進程,每個Rscript.exe的CPU使用率爲2%。整體CPU使用率約爲100%,並且結果不斷寫入磁盤。計算通常需要幾十個小時。奇怪的是,Rscript.exe進程逐漸變爲非活動狀態(cpu usage = 0),並且相應的cpu也處於非活動狀態。兩天後,通過查看CPU使用情況,只有一半Rscript.exe處於活動狀態,整體CPU使用率降至50%。但是,這項工作還很遙遠。隨着時間的推移,越來越多的Rscript.exe變得無效,這使得工作持續很長時間。我想知道是什麼讓進程和cpu核心處於不活動狀態?R降雪並行,Rscript.exe隨着時間的推移逐漸失效
我的電腦有46個邏輯核心。我在64位Windows 7中使用了Rstudio的R-3.4.0。以下「測試」變量是32000 * 2矩陣。我的功能是解決一些微分方程。
謝謝。
library(snowfall)
sfInit(parallel=TRUE, cpus=46)
Sys.time()
sfLibrary(deSolve)
sfExport("myfunction","test")
res<-sfApply(test,1,function(x){myfunction(x[1],x[2])})
sfStop()
Sys.time()
內存使用情況如何?有足夠的RAM可用嗎?這裏沒有太多要走,但你可以嘗試一次只運行幾項任務,看看它們是否通過。開始增加任務的數量,直到遇到瓶頸。 –
謝謝。 RAM可用,僅使用10G(總共64G)。我可以嘗試,但問題是過程正在逐漸失去活性。任務正在繼續,只是越來越少cpus。這就像在計算過程中讓核心一個接一個睡着。 – yan
對不起,我沒有想法。也許你可以使用其他並行工具,比如'parallel'或'foreach'? –