2011-01-23 19 views
56

Zauważyłem, że R używa tylko jednego rdzenia podczas wykonywania jednego z moich programów, który wymaga wielu obliczeń. Chciałbym skorzystać z mojego procesora wielordzeniowego, aby mój program działał szybciej. Właściwie to jeszcze nie zbadałem tego pytania do końca, ale byłbym wdzięczny za skorzystanie z waszych komentarzy, ponieważ nie mam dobrej wiedzy z zakresu informatyki i trudno mi jest uzyskać łatwo zrozumiałe informacje na ten temat.Pakiet R, który automatycznie używa kilku rdzeni?

Czy istnieje pakiet, który pozwala R automatycznie używać kilku rdzeni w razie potrzeby?

Sądzę, że to nie jest takie proste.

+2

Rewolucje (http://www.revolutionanalytics.com/) oferują wielowątkowych wersji R. oczywiście swoją reklamę status wydaje się mieć polaryzujący efekt w społeczności R. –

+7

Chciałbym również dodać, że wiele typowych zastosowań R nie będzie podatnych na automatyczną równoległość. Jeśli powiesz nam, co robisz, możesz uzyskać lepsze odpowiedzi. –

+0

możliwy duplikat [Korzystanie z Multicore w R dla maszyny Pentium 4 HT] (http://stackoverflow.com/questions/3545559/using-multicore-in-r-for-a-pentium-4-ht-machine) –

Odpowiedz

45

R może wykorzystywać wiele rdzeni tylko przy pomocy pakietów dodatkowych i tylko dla niektórych typów operacji. Opcje są szczegółowo omawiane na High Performance Computing Task View na CRAN

Aktualizacja: Od R Wersja 2.14.0 dodatek na opakowaniach niekoniecznie są wymagane ze względu na włączenie równoległego pakietu jako zalecanego pakiecie dostarczonym z R równolegle zawiera funkcjonalność z wielordzeniowych i pakietów śniegowych, w dużej mierze niezmienionych.

+3

Zobacz także: artykuł porównujący różne metody obliczeń równoległych w R od 2009 r. Http://www.jstatsoft.org/v31/i01/ –

30

Najprostszym sposobem na skorzystanie z wieloprocesorów jest pakiet multicore, który zawiera funkcję mclapply(). mclapply() to wielordzeniowa wersja lapply(). Zatem każdy proces, który może używać lapply(), może być łatwo przekonwertowany do procesu mclapply(). Jednak multicore nie działa w systemie Windows. Napisałem post na blogu o tym last year, który może być pomocny. Pakiet stworzony przez Revolution Analytics, doSMP, NIE jest wielowątkową wersją R. Jest to efektywnie wersja wielordzeniowa systemu Windows.

Jeśli twoja praca to embarrassingly parallel, dobrze jest wygodnie opanować strukturę typu lapply(). Da ci to łatwą zmianę w mclapply(), a nawet rozproszone przetwarzanie przy użyciu tej samej abstrakcji.

Rzeczy stają się znacznie trudniejsze dla operacji, które nie są "żenująco równoległe".

[EDIT]

Na marginesie, Rstudio jest coraz bardziej popularny jako front-end dla R. Kocham Rstudio i używać go codziennie. Jednak należy zauważyć, że Rstudio nie gra fajnie z Multicore (przynajmniej od października 2011 r. ... Rozumiem, że zespół RStudio to naprawi). Dzieje się tak dlatego, że Rstudio wykonuje kilka rozwidleń za kulisami, a te widły są sprzeczne z próbami rozwidlenia Multicore. Więc jeśli potrzebujesz Multicore, możesz napisać swój kod w Rstuido, ale uruchomić go w zwykłej sesji Jane R.

+0

Co z Mac OS X? Wiem, że to nie jest Linux, ale przynajmniej trochę bliski. Po prostu ciekawy jaki jest status ... –

+4

@ ran2, wielordzeniowy pakiet działa świetnie na Macu. –

+0

Zdecydowałem się na showfall, ponieważ mogę go używać na wszystkich moich komputerach, które działają bez systemu Windows w systemie Ubuntu. –

2

Jak powiedział David Heffernan, zapoznaj się z blogiem rewolucji Analytics. Ale powinieneś wiedzieć, że większość pakietów jest dla Linuksa. Tak więc, jeśli używasz okien, będzie to znacznie trudniejsze. W każdym razie, spójrz na te strony:

Revolution. Tutaj znajdziesz wykład o paraleryzacji w R. Wykład jest w rzeczywistości bardzo dobry, ale, jak powiedziałem, większość porad dotyczy Linuksa.

Ten wątek pod adresem Stackoverflow omawia implementację w systemie Windows.

+0

Myślałem, że produkty Revolutions były stronnicze wobec Windows. –

+0

@David - Oferują również wersję Red Hat Enterprise Linux. Studenci/nauczyciele mogą uzyskać bezpłatną licencję dla jednego użytkownika. –

+0

@richardh Moim celem jest to, że ich rzeczy nie są wyłącznie dla Linuksa, ponieważ Manoel zdawał się sugerować –

14

Na to pytanie zawsze otrzymujesz bardzo krótkie odpowiedzi.Najprostszym rozwiązaniem według mnie jest pakiet snowfall, oparty na śniegu. Oznacza to, że na jednym komputerze z systemem Windows z wieloma rdzeniami. Zobacz także tutaj: article of Knaus et al dla prostego przykładu. Opad śniegu jest opakowaniem wokół pakietu śniegu i umożliwia skonfigurowanie wielordzeniowego za pomocą kilku poleceń. To zdecydowanie mniej kłopotów niż większość innych pakietów (nie wypróbowałem ich wszystkich).

Z jednej strony istnieje tylko kilka zadań, które można zrównoleglić, z bardzo prostego powodu, że trzeba rozdzielić zadania, zanim kalkulacja wielordzeniowa ma sens. rodzina apply jest oczywiście logicznym wyborem: wielokrotnych obliczeń i niezależnych obliczeń, co ma kluczowe znaczenie dla zastosowań wielordzeniowych. Coś jeszcze nie zawsze jest tak łatwe do współistnienia.

Przeczytaj również tę dyskusję na temat sfApply and custom functions.

7

Microsoft R Open zawiera wielowątkowe biblioteki matematyczne poprawiające wydajność R. Działa w Windows/Unix/Mac, wszystkie typy OS. Jest open source i może być zainstalowany w oddzielnym katalogu, jeśli masz jakąkolwiek instalację R (z CRAN). Możesz używać popularnego IDE Rstudio również z tym. Od samego początku R był zaprojektowany do używania tylko jednego wątku (procesora) na raz. Nawet dziś R działa w ten sposób, chyba że jest połączony z wielowątkowymi bibliotekami BLAS/LAPACK.

Dzisiejsze wielordzeniowe maszyny oferują moc przetwarzania równoległego. Aby to wykorzystać, Microsoft R Open zawiera wielowątkowe biblioteki matematyczne. Te biblioteki umożliwiają tak wiele typowych operacji R, jak macierz wielokrotności/odwrotności, dekompozycja macierzy i niektóre operacje macierzy wyższego poziomu, aby obliczać równolegle i wykorzystywać całą dostępną moc obliczeniową, aby zredukować czasy obliczeń.

Proszę sprawdzić poniższy link:

https://mran.revolutionanalytics.com/rro/#about-rro

http://www.r-bloggers.com/using-microsoft-r-open-with-rstudio/

Powiązane problemy