2010-06-22 10 views
22

W końcu doszedłem do wniosku, że moje skrypty R działają na chmurze Amazon EC2. Używam AMI z 26 ECU, 8 rdzeniami i 69 gigabajtami pamięci RAM.Jak mogę sprawić, by R korzystał z serwera wysokiej pamięci i wysokiego cpu?

Następnie dzielę mój kod na wiele skryptów i uruchamiam każdy w instancji R. Dzięki serwerowi tej wielkości mogę bez problemu uruchomić jednocześnie 20-40 skryptów, z których każdy ma kilka 1000 symulacji.

Chciałbym wiedzieć, czy R w pełni wykorzystuje tę moc obliczeniową. Czy powinienem instalować pakiety, które konkretnie mówią R, aby używał całej tej dodatkowej pamięci/wielu procesorów? Widziałem ten page i niektóre packages (przynajmniej z opisu) wydają się obiecujące. Ale nie jestem w stanie wymyślić, jak włączyć to do mojego kodu. Czy ktoś może rzucić więcej światła na ten temat?

Odpowiedz

18

Można by spojrzeć na przykłady w moim w Intro do High-Performance Computing R tutoriale, z których kilku wersjach na this page.

Najszybszym sposobem na użycie wielu rdzeni jest (doskonały) pakiet multicore, nie powinieneś mieć nic specjalnego do zrobienia, aby skorzystać z pudli barana, które tam masz. multicore wiąże się z foreach przez doMC, ale można oczywiście po prostu użyć funkcji mclapply() bezpośrednio.

+1

Dzięki Dirk do tego doskonałą zasobu. Będę spędzać moje popołudnie na czytaniu twoich prezentacji. Twoje zdrowie! – Maiasaura

16

Komentarze Dirka są na miejscu w.r.t multicore/foreach/doMC.

Jeśli wykonujesz tysiące symulacji, możesz rozważyć skorzystanie z usługi Elastic Map Reduce (EMR). Kiedy chciałem skalować moje symulacje w R, zacząłem od ogromnych instancji EC2 i pakietu wielordzeniowego (tak jak ty!). Wszystko poszło dobrze, ale spieprzyłem rachunek EC2. Tak naprawdę nie potrzebowałem całej tej pamięci RAM, ale za to płaciłem. Moje prace zakończyłyby się o 3 nad ranem, a potem nie dostałbym się do biura przed 8 rano, więc zapłaciłem za 5 godzin, których nie potrzebowałem.

Potem odkryłem, że mogę użyć usługi EMR do wystrzelenia 50 tanich małych instancji Hadoop, uruchomienia moich symulacji, a następnie automatycznego ich wyłączenia! Całkowicie porzuciłem moje simy na EC2 i teraz używam EMR prawie wyłącznie. To zadziałało tak dobrze, że moja firma zaczyna testować sposoby na przeniesienie większej części naszej okresowej aktywności symulacyjnej na EMR.

Oto blog post Napisałem, kiedy po raz pierwszy zacząłem używać procesora wielordzeniowego na EC2. Kiedy odkryłem, że mogę to zrobić z Amazon EMR, napisałem: follow up post.

EDYCJA: od tego postu pracowałem nad pakietem, aby ułatwić korzystanie z EMR z R dla równoległych funkcji zastosowania. Wymieniłem projekt Segue and it's on Google Code.

Dalsze Aktualizacja: mam od przestarzałej Segue bo tam są znacznie lepsze i bardziej dojrzałe oferty dostępu do usługi Amazon z R.

+0

Dzięki JD. Moja zakładka EC2 również jest dość wysoka, więc na pewno zajrzę do EMR. – Maiasaura

+0

jeśli trafisz na jakiekolwiek przeszkody z EMR upewnij się i zadaj kolejne pytania w StackOverflow. Powodzenia! –