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?