2010-06-22 7 views
22

SO habe ich endlich herausgefunden, wie ich meine R-Skripte in der Amazon EC2-Cloud laufen lassen kann. Ich habe einen AMI mit 26 ECUs, 8 Cores und 69 GB RAM verwendet.Wie kann ich sicherstellen, dass R einen Server mit hohem Speicher und hoher CPU nutzt?

Dann teile ich meinen Code in mehrere Skripte auf und führe jede in einer Instanz von R. Mit einem Server dieser Größe kann ich problemlos 20-40 Skripte simultan laufen lassen, die jeweils mehrere 1000 Simulationen ausführen.

Was ich gerne wissen würde, ist, wenn R die ganze Rechenleistung nativ ausnutzt. Sollte ich Pakete installieren, die R ausdrücklich mitteilen, alle zusätzlichen Speicher/mehrere CPUs zu verwenden? Ich habe diese page gesehen und einige packages (zumindest aus der Beschreibung) scheinen vielversprechend. Aber ich kann mir nicht vorstellen, wie ich das in meinen Code einbauen kann. Könnte jemand mehr Licht dazu bringen?

Antwort

18

Sie könnten die Beispiele in meinem die Einführung in High-Performance Computing mit R Tutorials, von denen ein paar Versionen sind auf this page.

Der schnellste Weg, um die mehreren Kerne zu verwenden, ist das (ausgezeichnete) multicore Paket, Sie sollten nichts besonderes zu tun haben, um die Unmengen von RAM zu nutzen, die Sie dort haben. multicore Bindungen in foreach über doMC, aber Sie können natürlich einfach die mclapply() Funktion direkt verwenden.

+1

Dank Dirk für die hervorragende Ressource zugreifen. Ich werde meinen Nachmittag damit verbringen, Ihre Präsentationen durchzulesen. Prost! – Maiasaura

16

Dirks Kommentare sind genau auf w.r. Multicore/Foreach/DoMC.

Wenn Sie Tausende von Simulationen durchführen, sollten Sie den Elastic Map Reduce (EMR) -Dienst von Amazon in Betracht ziehen. Als ich meine Simulationen in R skalieren wollte, begann ich mit riesigen EC2-Instanzen und dem Multicore-Paket (genau wie du!). Es ist gut gelaufen, aber ich habe einen höllischen EC2-Schein bekommen. Ich brauchte diesen ganzen RAM nicht wirklich, aber ich bezahlte dafür. Und meine Arbeit würde um 3 Uhr morgens fertig sein, dann würde ich erst um 8 Uhr ins Büro kommen, also bezahlte ich 5 Stunden, die ich nicht brauchte.

Dann entdeckte ich, dass ich den EMR-Dienst nutzen konnte, um 50 billige kleine Hadoop-Instanzen zu starten, meine Simulationen auszuführen und sie dann automatisch herunterzufahren! Ich habe es komplett aufgegeben, meine Sims auf EC2 laufen zu lassen und verwende jetzt fast ausschließlich EMR. Das hat so gut funktioniert, dass meine Firma beginnt, Wege zu testen, mehr unserer periodischen Simulationsaktivitäten auf EMR zu migrieren.

Hier ist ein blog post Ich schrieb, als ich anfing, Multicore auf EC2 zu verwenden. Dann, als ich entdeckte, dass ich das mit Amazon EMR machen konnte, schrieb ich eine follow up post.

EDIT: seit diesem Beitrag habe ich an einem Paket gearbeitet, um es einfacher zu machen, EMR mit R für parallele Anwendungsfunktionen zu verwenden. Ich habe das Projekt Segue and it's on Google Code genannt.

Weitere Update: Ich habe seit deprecated Segue, weil es viel besser und ausgereifter Angebote für Amazons Dienste von R.

+0

Danke JD. Meine EC2-Registerkarte läuft auch ziemlich hoch, also werde ich definitiv in EMR schauen. – Maiasaura

+0

Wenn Sie irgendwelche Haken mit EMR treffen, seien Sie sicher und stellen Sie Fragen in StackOverflow. Viel Glück! –