Bibliotheks- und Befehlszeilenschnittstelle zur Unterstützung der Interaktion mit mehreren HPC -Clustern
Bietet die Möglichkeit, mit den beliebtesten HPC -Jobplanungssystemen mithilfe einer einzelnen Schnittstelle zu interagieren, und ermöglicht die Erstellung von Skripten zur Einreichung von Arbeitsplätzen.
Getestet mit SGE, LSF und Slurm (PBS/Drehmomentunterstützung in der Entwicklung)
MyCluster kann von PYPI installiert werden.
pip install mycluster
MyCluster schreibt Ihre E -Mail -Adresse in alle Einreichungsdateien, damit Sie Aktualisierungen der Planer erhalten können. Sie können dies in der Befehlszeile angeben oder in einer Konfigurationsdatei speichern. So speichern Sie Ihre E -Mail in der Konfigurationsdatei:
mycluster configure
Standardmäßig wird MyCluster versuchen, den zugrunde liegenden Scheduler zu erkennen, dies kann jedoch überschrieben werden, indem die Umgebungsvariable von MyCluster_Sching eingestellt wird. Dies sollte auf einen Stringnamen einer Python -Klasse eingestellt werden, die die Klasse mycluster.schedulers.base.Scheduler -Klasse implementiert.
In einigen Fällen möchten Sie möglicherweise die Einreichungsvorlagen überschreiben. Wenn Sie beispielsweise zusätzliche Parameter oder Scheduler -Befehle einfügen möchten. Setzen Sie dazu die Umgebungsvariable mycluster_template in der Jinja -Vorlage, die Sie verwenden möchten. Siehe Mycluster/Scheduler/Vorlagen für die Basisvorlagen.
MyClusyter installiert den CLI -Befehl "mycluster", um über die Befehlszeile mit dem lokalen Scheduler zu interagieren.
Druckenbefehlshilfe
mycluster <command> --help
Listen Sie alle Warteschlangen auf
mycluster queues
Listen Sie Jobs auf
mycluster list
Erstellen Sie eine neue Einreichungsdatei, siehe -HELP für weitere Einreichungsoptionen.
mycluster create JOBFILE QUEUE RUNSCRIPT
Senden Sie eine Jobdatei
mycluster submit JOBFILE
Einen Job stornieren
mycluster cancel JOBID
Das Runscript, das vom Job_Script ausgeführt wird, kann die folgenden vordefinierten Umgebungsvariablen verwenden
export NUM_TASKS=
export TASKS_PER_NODE=
export THREADS_PER_TASK=
export NUM_NODES=
# OpenMP configuration
export OMP_NUM_THREADS= $THREADS_PER_TASK
# Default mpiexec commnads for each flavour of mpi
export OMPI_CMD= " mpiexec -n $NUM_TASKS -npernode $TASKS_PER_NODE -bysocket -bind-to-socket "
export MVAPICH_CMD= " mpiexec -n $NUM_TASKS -ppn $TASKS_PER_NODE -bind-to-socket "
export IMPI_CMD= " mpiexec -n $NUM_TASKS -ppn $TASKS_PER_NODE " MyCluster kann mit dem MyCluster -Modul programmatisch verwendet werden. Alle Scheduler implementieren die Basis mycluster.schedulers.base.Scheduler -Klasse.
import mycluster
# Detect the local scheduler
scheduler = mycluster . detect_scheduling_sys ()
print ( f"Scheduler loaded: { scheduler . scheduler_type () } " )
# Create a batch script to submit a 48 task run of script.sh to the skylake queue
script = scheduler . create ( "skylake" , 48 , "my_job" , "script.sh" , "01:00:00" , tasks_per_node = 24 )
# Write to a file
with open ( "mysub.job" , "w" ) as f :
f . write ( script )
# Submit the batch script
job_id = scheduler . submit ( "mysub.job" )
# Check the status of the job
print ( scheduler . get_job_details ( job_id ))
# Cancel the job
scheduler . delete ( job_id )