mclapply() で人口成長率を推定
統計プログラマとして、R でブートストラップをよく行います。日常的な解析のひとつとして、ある期間にわたる各国の平均人口成長率の分布をブートストラップで推定します。
現在の本番コードでは、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)