R에서 system.time을 사용하여 멀티 코어 기능의 총 CPU 시간을 얻고 싶습니다. 문제는 system.time이 병렬 패키지에 의해 생성 된 자식 프로세스가 소비하는 CPU 시간을 분명히 포착하지 않는다는 것입니다.R sys.child의 system.time 및 parallel 패키지는 0입니다.
library(doParallel) cl <- makeCluster(2) registerDoParalllel(2) timings <- system.time(foreach(i = 1:2) %do% rnorm(1e8))
타이밍은 타이밍가 추가이
> timings
user system elapsed
16.883 5.731 22.899
것 같습니다.
timings <- system.time(foreach(i = 1:2) %dopar% rnorm(1e8))
> timings
user system elapsed
2.445 3.410 20.347
사용자와 시스템 시간 만 마스터 프로세스 포착되어 지금은 병렬 처리를 사용하는 경우. 특히 타이밍 [4]와 [5]를 보면 user.child와 sys.child 시간이 0임을 알 수 있습니다.
R의 병렬 처리에서 총 CPU 시간을 측정하려면 어떻게해야합니까?
참고 : 클러스터 시작 코드를 system.time 호출로 이동해도 차이가 없습니다.
> sessionInfo()
R version 3.3.2 (2016-10-31)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Debian GNU/Linux 8 (jessie)
other attached packages:
[1] doParallel_1.0.10 iterators_1.0.8 foreach_1.4.3
'https : // www.r-bloggers.com/the-wonders-of-foreach /'를 확인하십시오. 'user.child' 컬럼은 당신이 찾고있는 것일 수도 있습니다 – chinsoon12
맞습니다, user.child 컬럼이 흥미 롭습니다. 하지만이 경우 0입니다. 공유 한 링크에서 배웠던 것은 (감사합니다!) 직접 테스트 한 결과 doMC를 사용할 때 user.child와 sys.child가 채워지지만 doParallel (PSOCK이나 FORK 모드에서는 사용되지 않음)을 사용할 때가 아닙니다. 병렬 패키지에서는 이것이 불가능합니까? – mlist