使用 mclapply() 計算人口成長率
身為統計程式設計師,你經常在 R 中執行自助法(bootstrapping)。你的一項例行分析是:在指定期間內,對不同國家的「平均人口成長率」建立其抽樣分布。
目前正式環境的程式碼使用 PSOCK 叢集與 parLapply() 來平行化處理以提升執行效率。不過,對正式環境的需求來說仍偏慢。你的主管要你比較 PSOCK 與 FORK 叢集的效能。
gr_list 已載入到你的工作區。gr_list 的每個元素都包含某一國家在 2001–2021 年的人口成長率。自助法函式 boot_dist() 也已可用。parallel 與 microbenchmark 套件已載入。
本練習屬於課程
R 平行程式設計
練習說明
- 使用
parLapply()的 FORK 版本。 - 提供輸入的清單。
- 提供要套用到每個輸入元素的函式。
- 為 FORK 叢集指定 4 個核心。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
microbenchmark(
"PSOCK" = {
cl <- makeCluster(4)
parLapply(cl, gr_list, boot_dist)
stopCluster(cl)
},
# Use the FORK version of parLapply()
"FORK" = ___(
# Supply input
___,
# Supply function to apply
___,
# Specify number of cores
___ = ___),
times = 1)