Balíček parallel - parApply

Efektivní kód v R

Colin Gillespie

Jumping Rivers & Newcastle University

Balíček parallel

  • Součást R od roku 2011
    library("parallel")
    
    • Multiplatformní: funguje na Windows, Linux i Mac
    • Obsahuje paralelní verze standardních funkcí
Efektivní kód v R

Funkce apply()

  • apply() je podobná cyklu for

    • Funkci aplikujeme na každý řádek/sloupec matice
  • Matice s 10 sloupci a 10 000 řádky:

m <- matrix(rnorm(100000), ncol = 10)
  • apply je přehlednější než cyklus for
res <- apply(m, 1, median)
Efektivní kód v R

Převod na paralelní zpracování

  • Načtěte balíček
    • Zadejte počet jader
    • Vytvořte objekt clusteru
    • Přejděte na parApply()
    • Zastavte!
library("parallel")
copies_of_r <- 7
cl <- makeCluster(copies_of_r)
parApply(cl, m, 1, median)
stopCluster(cl)
Efektivní kód v R

Špatná zpráva

Jak řekl Lewis Carroll:

Čím víc pospíchám, tím víc zaostávám.

  • Paralelní spuštění může být někdy pomalejší kvůli komunikaci vláken
# Sériová verze
apply(m, 1, median)
# Paralelní verze
parApply(cl, m, 1, median)
  • Porovnejte obě řešení pomocí benchmarku
Efektivní kód v R

Pojďme si procvičit!

Efektivní kód v R

Preparing Video For Download...