Я использую sfApply в пакете R snowfall для параллельных вычислений. Нужно запустить 32000 тестов. Код работает нормально при запуске вычислений, он создает 46 процессов Rscript.exe, и каждый Rscript.exe использует 2% загрузки процессора. Общее использование процессора составляет около 100%, и результаты постоянно записываются на диск. Вычисления обычно занимают десятки часов. Странно то, что процесс Rscript.exe постепенно становится неактивным (использование процессора = 0) один за другим, и соответствующий процессор тоже неактивен. Через два дня остается только половина Rscript.exe, которые активны, если смотреть на использование ЦП, а общее использование ЦП снижается до 50%. Однако до завершения работы еще далеко. Со временем все больше и больше Rscript.exe переходят в неактивное состояние, из-за чего работа длится очень и очень долго. Мне интересно, что делает процесс и ядра процессора неактивными?
Мой компьютер имеет 46 логических ядер. Я использую R-3.4.0 от Rstudio в 64-битных окнах 7. Следующая «тестовая» переменная - это матрица 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()
parallel
илиforeach
? - person Roman Luštrik   schedule 16.06.2017