開始使用免費開始

使用 mclapply() 計算人口成長率

身為統計程式設計師,你經常在 R 中執行自助法(bootstrapping)。你的一項例行分析是:在指定期間內,對不同國家的「平均人口成長率」建立其抽樣分布。

目前正式環境的程式碼使用 PSOCK 叢集與 parLapply() 來平行化處理以提升執行效率。不過,對正式環境的需求來說仍偏慢。你的主管要你比較 PSOCK 與 FORK 叢集的效能。

gr_list 已載入到你的工作區。gr_list 的每個元素都包含某一國家在 2001–2021 年的人口成長率。自助法函式 boot_dist() 也已可用。parallelmicrobenchmark 套件已載入。

本練習屬於課程

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)
編輯並執行程式碼