コードの合計CPU時間を(foreach
、パッケージdoParallel
から)実行しようとしていますが、これを行う方法についてはわかりません。私はproc.time()
を使用しましたが、実際の時間の差を返します。私がsystem.time()
を読んだところから、それはちょうどproc.time()
と同じことをするべきです。並行して実行されるRコードの合計CPU時間を取得するにはどうすればよいですか?R foreachで合計CPU時間を取得する方法は?
1
A
答えて
1
少しのトリックは、計算結果を一緒に測定したランタイムをlist
で返すことです。以下の例では、system.time()
を使用してランタイムをproc.time()
と同じにしています。
注:これは私のブログ記事R with Parallel Computing from User Perspectivesの変更例です。
# fake code to show how to get runtime of each process in foreach
library(foreach)
library(doParallel)
# Real physical cores in my computer
cores <- detectCores(logical = FALSE)
cl <- makeCluster(cores)
registerDoParallel(cl, cores=cores)
system.time(
res.gather <- foreach(i=1:cores, .combine='list') %dopar%
{
s.time <- system.time({
set.seed(i)
res <- matrix(runif(10^6), nrow=1000, ncol=1000)
res <- exp(sqrt(res)*sqrt(res^3))
})
list(result=res, runtime=s.time)
}
)
stopImplicitCluster()
stopCluster(cl)
したがって、ランタイムはres.gather
に保存され、あなたは簡単にそれを得ることができます。したがって、それらを追加すると、並列プログラムの合計時間の数がわかります。
> res.gather[[1]]$runtime
user system elapsed
0.42 0.04 0.48
> res.gather[[2]]$runtime
user system elapsed
0.42 0.03 0.47
> res.gather[[2]]$runtime[3] + res.gather[[2]]$runtime[3]
elapsed
0.94
最後に、2つのRセッションの実行時間は、Rマスタのアカウンティング待ち時間なしで0.94秒です。
関連する問題
- 1. CPU + GPUの合計時間を計算する方法
- 2. SQLで時間と分の合計を取得する方法
- 3. Rubyベンチマークがスレッド内のCPU時間の合計を計算する方法
- 4. pythonでtimedeltaの合計時間と分を取得する方法
- 5. Rは時刻を合計時間に変換する関数
- 6. 2つのdatetimeフィールドの合計時間を取得する方法
- 7. Androidでの合計通話時間を取得する
- 8. wpfコントロールの合計レンダリング時間を計算する方法は?
- 9. 計算された列の時間を取得する方法
- 10. InsightsClientを使用してazure WebアプリケーションのCPU時間を取得する方法
- 11. ASP - 時間範囲内の合計時間と分を計算する方法
- 12. Incl CPU時間、Excl CPU時間、Incl実CPU時間、Excl実CPU時間の意味は何ですか?
- 13. Visual C++:CPU時間を取得するには?
- 14. 合計行時間と分を取得する
- 15. 合計ページ読み込み時間を取得する
- 16. SQLサーバー:売り上げ合計時間を取得するProductID
- 17. STM32で時間間隔を取得する方法は?
- 18. stackBar ChartJsの合計値の合計を取得する方法
- 19. Rの - 時間 'bin'による累積合計の方法 - ggplotを使って
- 20. 時間を取得する方法
- 21. .NETで現在の合計CPU負荷を取得する最も簡単な方法は何ですか?
- 22. 合計時間を条件付きで分割する方法
- 23. Rの時間差の計算方法は?
- 24. Rの時間差を計算する
- 25. Rの時間差を計算する
- 26. CSVファイルで合計を取得する方法
- 27. 時間間隔でメトリックのデルタを取得する方法
- 28. 時間枠間でレコードを取得する方法
- 29. 時間を加算して合計時間を計算する
- 30. 残り時間の取得方法は?
ありがとうございました! – Plinth