我在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'? –