Pakiet parallel - parApply

Wydajny kod w R

Colin Gillespie

Jumping Rivers & Newcastle University

Pakiet parallel

  • Część R od 2011 roku
    library("parallel")
    
    • Wieloplatformowy: działa na Windows, Linux, Mac
    • Posiada równoległe wersje standardowych funkcji
Wydajny kod w R

Funkcja apply()

  • apply() działa podobnie do pętli for

    • Stosujemy funkcję do każdego wiersza/kolumny macierzy
  • Macierz 10 kolumn, 10 000 wierszy:

m <- matrix(rnorm(100000), ncol = 10)
  • apply jest bardziej elegancki niż pętla for
res <- apply(m, 1, median)
Wydajny kod w R

Konwersja na przetwarzanie równoległe

  • Wczytaj pakiet
    • Określ liczbę rdzeni
    • Utwórz obiekt klastra
    • Użyj parApply()
    • Zatrzymaj!
library("parallel")
copies_of_r <- 7
cl <- makeCluster(copies_of_r)
parApply(cl, m, 1, median)
stopCluster(cl)
Wydajny kod w R

Zła wiadomość

Jak powiedział Lewis Carroll:

Im szybciej idę, tym bardziej się spóźniam.

  • Przetwarzanie równoległe bywa wolniejsze przez narzut komunikacji wątków
# Wersja szeregowa
apply(m, 1, median)
# Wersja równoległa
parApply(cl, m, 1, median)
  • Porównaj wydajność obu rozwiązań
Wydajny kod w R

Ćwiczenia!

Wydajny kod w R

Preparing Video For Download...