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
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.
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 ...
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:
Dabei gibt infilelist.txt
die Datendateien an, die Sie verarbeiten möchten, z. B .:
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 .)
Tags und Links r linux parallel-processing pbs