R Programmierung - Senden von Jobs auf einem Linux-Cluster mit mehreren Knoten mit PBS

8

Ich führe R auf einem Linux-Cluster mit mehreren Knoten aus. Ich möchte meine Analyse auf R mit Skripten oder Batch-Modus ausführen, ohne parallele Software wie MPI oder Schnee zu verwenden.

Ich weiß, dass dies getan werden kann, indem die Eingabedaten so geteilt werden, dass jeder Knoten verschiedene Teile der Daten ausführt.

Meine Frage ist, wie gehe ich genau hin? Ich bin mir nicht sicher, wie ich meine Skripte schreiben soll. Ein Beispiel wäre sehr hilfreich!

Ich habe meine Scripts bisher mit PBS ausgeführt, aber es scheint nur auf einem Knoten zu laufen, da R ein Single-Thread-Programm ist. Daher muss ich herausfinden, wie ich meinen Code anpassen kann, um die Arbeit auf alle Knoten zu verteilen.

Folgendes habe ich bisher gemacht:

1) Befehlszeile:

%Vor%

2) myjobs.pbs:

%Vor%

3) myscript.sh:

%Vor%

4) my_script.R:

%Vor%

Irgendwelche Vorschläge werden geschätzt! Danke!

-CC

    
CCA 29.06.2010, 21:15
quelle

3 Antworten

2

Dies ist eher eine PBS-Frage; Ich mache normalerweise ein R-Skript (mit Rscript-Pfad nach #!) Und machen es einen Parameter sammeln (mit commandArgs -Funktion), die steuert, welche "Teil des Jobs" diese aktuelle Instanz machen soll. Weil ich multicore viel verwende, muss ich normalerweise nur 3-4 Knoten verwenden, also gebe ich nur wenige Jobs ein, die dieses R-Skript mit jedem der möglichen Kontrollargumentwerte aufrufen.
Auf der anderen Seite sollte Ihre Verwendung von pbsdsh ihre Aufgabe erfüllen ... Dann kann der Wert von PBS_TASKNUM als Kontrollparameter verwendet werden.

    
mbq 29.06.2010 21:48
quelle
1

Dies war eine Antwort auf eine verwandte Frage - aber es ist eine Antwort auf den obigen Kommentar (auch).

Für die meisten unserer Arbeiten führen wir mehrere R-Sitzungen parallel mit qsub (statt) durch.

Wenn es für mehrere Dateien ist, mache ich normalerweise:

%Vor%

call_r.pbs:

%Vor%

analyse_file.R:

%Vor%

Dann kombiniere ich alle Ausgaben danach ...

    
pallevillesen 11.04.2013 11:20
quelle
1

Dieses Problem scheint sehr gut für die Verwendung von GNU parallel zu sein. GNU parallel hat ein exzellentes Tutorial hier . Ich bin nicht vertraut mit pbsdsh , und ich bin neu bei HPC, aber für mich sieht es so aus, dass pbsdsh einen ähnlichen Zweck erfüllt wie GNU parallel . Ich bin auch nicht vertraut mit dem Starten von R von der Kommandozeile mit Argumenten, aber hier ist meine Vermutung, wie Ihre PBS-Datei aussehen würde:

%Vor%

Dabei gibt infilelist.txt die Datendateien an, die Sie verarbeiten möchten, z. B .:

%Vor%

Ihr myscript.R würde auf das Befehlszeilenargument zugreifen, um die angegebene Eingabedatei zu laden und zu verarbeiten.

Mein Hauptzweck mit dieser Antwort besteht darin, auf die Verfügbarkeit von GNU parallel hinzuweisen, die nach der Veröffentlichung der ursprünglichen Frage entstanden ist. Hoffentlich kann jemand anderes ein konkreteres Beispiel geben. Außerdem bin ich immer noch wackelig mit meiner Verwendung von parallel , zum Beispiel bin ich mir unsicher über die Option -j2 . (Siehe meine verwandte Frage .)

    
Steve Koch 06.03.2014 21:49
quelle

Tags und Links