3 Stimmen

Verteilen eines Auftrags auf verschiedene Knoten eines Clusters in der Sun Grid Engine (SGE)

Ich versuche, sun gridending (sge) dazu zu bringen, die einzelnen Prozesse eines MPI-Jobs über alle Knoten meines Clusters laufen zu lassen.

Da jeder Knoten über 12 Prozessoren verfügt, weist SGE 12 meiner 60 Prozesse 5 verschiedenen Knoten zu.

Ich möchte, dass jedem der 30 verfügbaren Knoten 2 Prozesse zugewiesen werden, denn bei 12 Prozessen (DNS-Sequenzausrichtungen), die auf jedem Knoten laufen, geht den Knoten der Speicher aus.

Ich frage mich also, ob es möglich ist, SGE explizit dazu zu bringen, die Prozesse einem bestimmten Knoten zuzuordnen?

Danke,

Paul.

1voto

janneb Punkte 33959

Überprüfen Sie "allocation_rule" in der Konfiguration für die parallele Umgebung; entweder damit oder indem Sie $pe_slots für allocation_rule angeben und dann die Option -pe für qsub verwenden, sollten Sie in der Lage sein, das zu tun, wonach Sie oben fragen.

1voto

World Punkte 1919

Sie können dies tun, indem Sie eine Warteschlange erstellen, in der Sie festlegen können, dass die Warteschlange nur 2 von 12 Prozessoren in jedem Knoten verwendet.

Sie können die Konfiguration der aktuellen Warteschlange mit dem Befehl

 qconf -sq queuename

sehen Sie folgendes in der Warteschlangenkonfiguration. Diese Warteschlange ist so benannt, dass sie nur 5 Ausführungsrechner und jeweils 4 Slots (Prozessoren) verwendet.

....
slots                 1,[master=4],[slave1=4],[slave2=4],[slave3=4],[slave4=4]
....

Verwenden Sie den folgenden Befehl, um die Konfiguration der Warteschlange zu ändern

qconf -mq queuename

dann ändern Sie diese 4 in 2.

0voto

jlp Punkte 819

Führen Sie von einem Admin-Host aus "qconf -msconf" aus, um die Konfiguration des Schedulers zu bearbeiten. Daraufhin wird eine Liste von Konfigurationsoptionen in einem Editor angezeigt. Suchen Sie nach einer Option namens "load_factor". Setzen Sie den Wert auf "-slots" (ohne die Anführungszeichen).

Dadurch wird dem Planer mitgeteilt, dass der Rechner am wenigsten belastet ist, wenn er die wenigsten Steckplätze belegt. Wenn Ihre Exec-Hosts eine ähnliche Anzahl von Slots haben, erhalten Sie eine gleichmäßige Verteilung. Wenn Sie einige Exec-Hosts haben, die mehr Slots haben als die anderen, werden diese bevorzugt, aber Ihre Verteilung wird immer noch gleichmäßiger sein als der Standardwert für load_factor (an den ich mich nicht erinnere, da ich ihn in meinem Cluster vor einiger Zeit geändert habe).

Möglicherweise müssen Sie die Slots auf jedem Host einstellen. Ich selbst habe dies getan, weil ich die Anzahl der Aufträge auf einer bestimmten Gruppe von Boxen auf weniger als das Maximum begrenzen muss, weil sie nicht so viel Speicher haben wie einige der anderen Boxen. Ich weiß nicht, ob dies für diese load_factor-Konfiguration erforderlich ist, aber wenn ja, können Sie jedem Host einen Slot-Verbraucher hinzufügen. Tun Sie dies mit "qconf -me hostname", fügen Sie einen Wert zu "complex_values" hinzu, der wie "slots=16" aussieht, wobei 16 die Anzahl der Slots ist, die der Host verwenden soll.

0voto

Laryx Decidua Punkte 7673

Das habe ich von unserem Systemadministrator erfahren. Fügen Sie diese SGE-Ressourcenanforderung in Ihr Jobskript ein:

#$ -l nodes=30,ppn=2

Anfragen 2 MPI p rozesse p er n ode (ppn) und 30 Knoten. Ich denke, es gibt keine Garantie dafür, dass dieses 30x2-Layout auf einem 30-Knoten-Cluster funktioniert, wenn andere Benutzer auch viele Aufträge ausführen, aber vielleicht können Sie es ja mal ausprobieren.

1 Stimmen

Das sieht nach einem PBS-Kompatibilitätsproblem aus. Es wird nicht mit einem Standard-SGE funktionieren.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X