Ich versuche Gnu parallel GNU parallel (Version 20160922) zu verwenden, um eine große Anzahl von Protein Docking-Jobs (mit UCSF Dock 6.7) zu starten. Ich laufe auf einem Hochleistungs-Cluster mit mehreren Dutzend Knoten mit jeweils 28-40 Kernen. Das System führt CentOS 7.1.1503 aus und verwendet das Drehmoment für die Auftragsverwaltung.gnu parallel einen Job pro Prozessor
Ich versuche, jede Konfigurationsdatei in dock.n.d an die ausführbare Dock-Datei zu senden, eine pro Kern im Cluster. Hier ist meine PBS-Datei:
#PBS -l walltime=01:00:00
#PBS -N pardock
#PBS -l nodes=1:ppn=28
#PBS -j oe
#PBS -o /home/path/to/pardock.log
cd $PBS_O_WORKDIR
cat $PBS_NODEFILE temp.txt
#f=$(pwd)
ls dock.in.d/*.in | parallel -j 300 --sshloginfile $PBS_NODEFILE "/path/to/local/bin/dock6 -i {} -o {}.out"
Dies funktioniert gut auf einem einzelnen Knoten wie oben beschrieben. Aber wenn ich Skalierung auf bis zu etwa 300 Prozessoren (mit -l procs=300
) accross mehrere Knoten beginne ich diese Fehler zu erhalten:
parallel: Warning: ssh to node026 only allows for 99 simultaneous logins.
parallel: Warning: You may raise this by changing /etc/ssh/sshd_config:MaxStartups and MaxSessions on node026.
Was ich nicht verstehe ist, warum gibt es so viele Anmeldungen. Jeder Knoten hat nur 28-40 Kerne, so würde ich, wie in $ PBS_NODEFILE angegeben, erwarten, dass es nur 28-40 SSH-Logins zu irgendeinem Zeitpunkt auf diesen Knoten gibt.
Verstehen oder missbrauche ich hier etwas? Bitte geben Sie an, welche anderen Informationen ich zur Verfügung stellen kann oder in welche Richtung ich gehen soll, damit dies funktioniert.
UPDATE
Also mein Problem, das oben war die Kombination von -j 300
und die Verwendung von $PBS_NODEFILE
, die für jeden Kern auf jedem Knoten einen separaten Eintrag hat. Also in diesem Fall scheint es, ich sollte -j 1
verwenden. Aber dann scheinen alle Jobs auf einem einzigen Knoten zu laufen.
Also meine Frage bleibt, wie man Gnu parallel zum Ausgleich der Jobs zwischen den Knoten, die Verwendung aller Kerne, aber nicht eine übermäßige Anzahl von SSH-Logins aufgrund mehrerer Aufträge pro Kern erstellen.
Vielen Dank!
Ich habe dies versucht, und parallel scheint nicht zwischen Kernen auf der Maschine und Kernen zu unterscheiden, die ME auf der Maschine zugeordnet sind. Wenn ich zum Beispiel 20 Kerne auf einem 28-Kern-Knoten anfordere, sehe ich weit über 20 dock6-Jobs. (nähert sich der Gesamtzahl der Kerne auf dem Knoten). Ist es eine Art zu sagen, dass man parallel zum Kernlimit bleiben soll (zum Beispiel, wie durch die Anzahl der Einträge dargestellt wird, die jeder Knoten in $ PBS_NODEFILE hat)? Oder ist das Undokumentiertes Verhalten (tm) oder Benutzerfehler (tm)? – Eric