Bevölkerungswachstumsraten mit mclapply()
Als Statistical Programmer betreibst du viel Bootstrapping in R. Eine deiner Routineanalysen ist es, eine Verteilung für die mittlere Bevölkerungswachstumsrate für verschiedene Länder über einen bestimmten Zeitraum zu bootstrappen.
Der aktuelle Code in der Produktion nutzt einen PSOCK-Cluster und parLapply(), um diesen Prozess effizient zu parallelisieren. Das ist jedoch für die Produktionsanforderungen noch zu langsam. Deine Chefin bzw. dein Chef hat dich gebeten, die Performance von PSOCK- vs. FORK-Clustern zu vergleichen.
gr_list wurde in deinen Workspace geladen. Jedes Element von gr_list enthält die Bevölkerungswachstumsraten für ein bestimmtes Land von 2001 bis 2021. Die Bootstrap-Funktion boot_dist() ist ebenfalls verfügbar. Die Pakete parallel und microbenchmark wurden geladen.
Diese Übung ist Teil des Kurses
Paralleles Programmieren in R
Anleitung zur Übung
- Verwende die FORK-Variante von
parLapply(). - Übergib die Liste der Eingaben.
- Übergib die Funktion, die auf jedes Element der Eingabe angewendet werden soll.
- Gib vier Kerne für den FORK-Cluster an.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
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)