始める無料で始める

mclapply() で人口成長率を推定

統計プログラマとして、R でブートストラップをよく行います。日常的な解析のひとつとして、ある期間にわたる各国の平均人口成長率の分布をブートストラップで推定します。

現在の本番コードでは、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)
コードを編集して実行