我在 R 降雪包中使用 sfApply 进行并行计算。有 32000 个测试要运行。该代码在开始计算时工作正常,它将创建 46 个 Rscript.exe 进程,每个 Rscript.exe 有 2% 的 cpu 使用率。整体 cpu 使用率约为 100%,结果不断写入磁盘。计算通常需要数十个小时。奇怪的是,Rscript.exe进程一个接一个地变得不活跃(cpu使用率=0),对应的cpu也是不活跃的。两天后,通过查看 cpu 使用率,只有一半的 Rscript.exe 处于活动状态,整体 cpu 使用率降低到 50%。然而,这项工作距离完成还很遥远。随着时间的推移,越来越多的 Rscript.exe 处于非活动状态,这使得工作持续时间非常非常长。我想知道是什么让进程和 cpu 核心变得不活跃?
我的电脑有 46 个逻辑核心。我在 64 位 Windows 7 中使用来自 Rstudio 的 R-3.4.0。以下“测试”变量是 32000*2 矩阵。myfunction 正在求解几个微分方程。
谢谢。
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()