Optymalizacja R dlaczego warto przesi¡±¢ si¦ na Linuxa?

Transkrypt

Optymalizacja R dlaczego warto przesi¡±¢ si¦ na Linuxa?
Optymalizacja R dlaczego warto przesi¡±¢ si¦ na
Linuxa?
Zygmunt Zawadzki
19 listopada 2014
Zygmunt Zawadzki
Optymalizacja R dlaczego warto przesi¡±¢ si¦ na Linuxa?
Wi¦cej informacji, wraz z dodatkowymi materiaªami
mo»na znale¹¢ w repozytorium na GitHubie pod
adresem https://github.com/zzawadz/
Prezentacja_ERKA_2014. Ewentualne uwagi i
pytania mo»na kierowa¢ na adres
[email protected].
Zygmunt Zawadzki
Optymalizacja R dlaczego warto przesi¡±¢ si¦ na Linuxa?
Rzecz o szybko±ci R
R taki wolny...
Rysunek : ™ródªo: http://julialang.org/
... inne j¦zyki takie szybkie (oprócz Matlaba).
rly?
Zygmunt Zawadzki
Optymalizacja R dlaczego warto przesi¡±¢ si¦ na Linuxa?
Rzecz o szybko±ci R - cd.
Rzeczywi±cie R nie jest demonem szybko±ci i mo»na pisa¢ w nim
BARDZO nieefektywny kod:
library(microbenchmark)
x = 1:10000
slow_sum = function(x)
{
sum = 0
for(i in 1:length(x)) sum = sum + x[i]
sum
}
microbenchmark(sum(x), slow_sum(x))
## Unit: microseconds
##
expr
min
lq
mean median
uq
ma
##
sum(x)
12.320
12.5055 15.49794
16.530 18.1945
22.45
## slow_sum(x) 4159.101 4271.8230 4642.03785 4395.957 5066.3590 6043.62
## neval
##
100
##
100
Zygmunt Zawadzki
Optymalizacja R dlaczego warto przesi¡±¢ si¦ na Linuxa?
Dobrym pytaniem byªoby - "ale dlaczego R jest taki wolny?"
R w zamierzeniach nie musiaª by¢ demonem szybko±ci. R, a w
zasadzie jego poprzednik S, miaª by¢ gªównie interfacem do kodu
fortranowego (ewentualnie innego j¦zyka). A sam interface nie musi
by¢ bardzo szybki, bylby tylko byª wygodny.
Wi¦cej - https://www.youtube.com/watch?v=_hcpuRB5nGs prezentacja twórcy j¦zyka S - Johna Chambersa (równie» czªonka R
Core Team), na tamat przeszªo±ci i przyszªo±ci R.
Zygmunt Zawadzki
Optymalizacja R dlaczego warto przesi¡±¢ si¦ na Linuxa?
Zagadka!
W R wyst¦puj¡ trzy gªówne operatory wyªuskania warto±ci:
x[1]
x[[1]]
x$a
Sam R zostaª napisany w C. Pytanie brzmi: ile linijek kodu ma plik
w którym te operatory s¡ zdeniowane?
Zygmunt Zawadzki
Optymalizacja R dlaczego warto przesi¡±¢ si¦ na Linuxa?
Zagadka! Rozwi¡zanie.
Plik ten mo»na znale¹¢ w ¹ródªach R w /src/main/subset.c.
Posiada on 1288 linijek...
Tyle kodu ma jednak sens - w nim zawarte jest mi¦dzy innymi
obsªugiwanie cz¦±ciwego dopasowywania nazw w li±cie:
x = list(dluga_nazwa = 1:5, inna_nazwa = 1:5)
x$dlu # dziala!
## [1] 1 2 3 4 5
Ma to jednak oczywiste konsekwencje wydajno±ciowe.
Zygmunt Zawadzki
Optymalizacja R dlaczego warto przesi¡±¢ si¦ na Linuxa?
Realizacja idei interface w praktyce - obliczenia macierzowe
W praktyce jednak wydajno±¢ R nie jest znacz¡cym problemem - w ko«cu
miaª by¢ gªównie interfacem dla innych j¦zyków i bardzo du»o kodu w R
sªu»y jedynie wywoªaniu okre±lonej biblioteki, która wykonuje najci¦»sze
obliczenia.
Np. funckja eigen - sªu»¡ca obliczaniu warto±ci wªasnych i wektorów
wªasnych korzysta z biblioteki do oblicze« macierzowych LAPACK (Linear
Algebra PACKage), która zostaªa napisana w Fortranie. Mo»na to pozna¢
po tym, »e wewn¡trz funkcji znajduje si¦ linijka wywoªuj¡ca kod
zewn¦trzny:
.Internal(La_rs(x, only.values)) # z eigen
.Call(...) # inny interface - do C i C++
.External(...)
.C(...) # stary interface do C
Denicj¦ La_rs mo»na znale¹¢ w /src/modules/lapack/Lapack.c, a
szukaj¡c dalej w tym folderze mo»na równie» znale¹¢ kod fortranowy
Lapack'a (ok 200k linii kodu - du»a rzecz...).
Zygmunt Zawadzki
Optymalizacja R dlaczego warto przesi¡±¢ si¦ na Linuxa?
Lapack i BLAS
Gdyby wej±¢ gª¦biej, oka»e si¦, »e LAPACK (kod fortranowy),
korzysta z implementacji BLASu zawieraj¡cej zbiór podstawowych
operacji na macierzach takich jak np. mno»enie macierzowe.
Sam BLAS to API (Application Programming Interface), opisuj¡ce
jak powinna wygl¡da¢ biblioteka do oblicze« macierzowych. Na
podstawie tego opisu tworzy si¦ implementacje które realizuj¡ce te
obliczenia.
Istnieje kilka implementacji BLASu - np. ATLAS, MKL i
OpenBLAS. R równie» posiada swoj¡ implementacj¦, jednak nie jest
ona najszybsza...
Zygmunt Zawadzki
Optymalizacja R dlaczego warto przesi¡±¢ si¦ na Linuxa?
... skoro ten standardowy R-owy BLAS nie jest najszybszy, to mo»e
go podmieni¢ na wydajniejszy?
Zygmunt Zawadzki
Optymalizacja R dlaczego warto przesi¡±¢ si¦ na Linuxa?
... skoro ten standardowy R-owy BLAS nie jest najszybszy, to mo»e
go podmieni¢ na wydajniejszy?
Zaraz b¦dzie opis jak to prosto zrobi¢ na Linuxie...
Zygmunt Zawadzki
Optymalizacja R dlaczego warto przesi¡±¢ si¦ na Linuxa?
... skoro ten standardowy R-owy BLAS nie jest najszybszy, to mo»e
go podmieni¢ na wydajniejszy?
Zaraz b¦dzie opis jak to prosto zrobi¢ na Linuxie...
... ale co± za du»o tekstu w tej prezentacji. Dalszy tekst b¦dzie
nudny...
Zygmunt Zawadzki
Optymalizacja R dlaczego warto przesi¡±¢ si¦ na Linuxa?
... skoro ten standardowy R-owy BLAS nie jest najszybszy, to mo»e
go podmieni¢ na wydajniejszy?
Zaraz b¦dzie opis jak to prosto zrobi¢ na Linuxie...
... ale co± za du»o tekstu w tej prezentacji. Dalszy tekst b¦dzie
nudny...
... mo»e by tak pokaza¢ na »ywo, jak to si¦ robi?
Caªe dziaªanie wzorowane jest na wpisie z
http://www.stat.cmu.edu/~nmv/2013/07/09/
for-faster-r-use-openblas-instead-better-than-atlas-trivial
Zygmunt Zawadzki
Optymalizacja R dlaczego warto przesi¡±¢ si¦ na Linuxa?
... skoro ten standardowy R-owy BLAS nie jest najszybszy, to mo»e
go podmieni¢ na wydajniejszy?
Zaraz b¦dzie opis jak to prosto zrobi¢ na Linuxie...
... ale co± za du»o tekstu w tej prezentacji. Dalszy tekst b¦dzie
nudny...
... mo»e by tak pokaza¢ na »ywo, jak to si¦ robi?
Caªe dziaªanie wzorowane jest na wpisie z
http://www.stat.cmu.edu/~nmv/2013/07/09/
for-faster-r-use-openblas-instead-better-than-atlas-trivial
Czas na konsol¦!
Zygmunt Zawadzki
Optymalizacja R dlaczego warto przesi¡±¢ si¦ na Linuxa?
... mam nadziej¦, »e prezentacja optymalizacji BLAS na »ywo si¦
udaªa.
Zygmunt Zawadzki
Optymalizacja R dlaczego warto przesi¡±¢ si¦ na Linuxa?
... mam nadziej¦, »e prezentacja optymalizacji BLAS na »ywo si¦
udaªa.
Je»eli tak, to znaczy, »e konsola nie jest taka straszna i mo»na w
niej troszk¦ poczarowa¢:)
Zygmunt Zawadzki
Optymalizacja R dlaczego warto przesi¡±¢ si¦ na Linuxa?
Co dalej?
Nie dawno Revolution Analytics wprowadziªo swoj¡ wersj¦ R
(http://mran.revolutionanalytics.com/download/), która
wykorzystuje MKL - czyli BLAS stworzony przez Intela - jest on
naprawd¦ szybki i by¢ mo»e sztuczka z podmian¡ R-owego BLAS-a
przestaje mie¢ jakiekolwiek znaczenie w przypadku u»ywania wersji
od Revolution.
Trzeba to sprawdzi¢!
Zygmunt Zawadzki
Optymalizacja R dlaczego warto przesi¡±¢ si¦ na Linuxa?
Dlaczego warto przej±¢ na Linuxa?
System bardzo konsolowy - a co za tym idzie - bli»szy R.
Nie ma Oce:)
Czasem dosy¢ problematyczny, a co za tym idzie frustruj¡cy (a
to dobrze! http://youtu.be/JxwxefRAu70?t=30m - wywiad
z jednym z mistrzów R, nt. warto±ci frustracji).
Zygmunt Zawadzki
Optymalizacja R dlaczego warto przesi¡±¢ si¦ na Linuxa?
Dzi¦kuj¦ za uwag¦!
Zygmunt Zawadzki
Optymalizacja R dlaczego warto przesi¡±¢ si¦ na Linuxa?

Podobne dokumenty