Интерфейс библиотеки и командной строки для поддержки взаимодействия с несколькими кластерами HPC
Предоставляет возможность взаимодействовать с самыми популярными системами планирования заданий HPC, используя один интерфейс и позволяет создавать сценарии подачи заданий.
Протестировано с помощью SGE, LSF и SLURM (PBS/DOUBT
MyCluster может быть установлен из PYPI.
pip install mycluster
MyCluster напишет ваш адрес электронной почты в любые файлы отправки, чтобы вы могли получить обновления от планировщиков. Вы можете предоставить это в командной строке или сохранить в файле конфигурации. Для хранения электронной почты в файле конфигурации.
mycluster configure
По умолчанию MyCluster попытается обнаружить базового планировщика, но это можно переоценить, установив переменную среды MyCluster_sched. Это должно быть установлено на название строки класса Python, который реализует класс mycluster.schedulers.base.Scheduler .
В некоторых случаях вы можете переопределить шаблоны отправки, например, если вы хотите включить дополнительные параметры или команды планировщика. Чтобы сделать это, установите переменную среды mycluster_template для шаблона Jinja, который вы хотите использовать. Смотрите MyCluster/Schedulers/Шаблоны для базовых шаблонов.
MyClusyter устанавливает команду CLI MyCluster для взаимодействия с локальным планировщиком через командную строку.
Печать команды справка
mycluster <command> --help
Перечислите все очереди
mycluster queues
Список рабочих мест
mycluster list
Создайте новый файл отправки, см. -HELP для получения дополнительной информации.
mycluster create JOBFILE QUEUE RUNSCRIPT
Отправить файл работы
mycluster submit JOBFILE
Отменить работу
mycluster cancel JOBID
RunScript, который будет выполнен job_script, может использовать следующие предварительно определенные переменные среды
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 может использоваться программатически с помощью модуля MyCluster. Все планировщики реализуют базовый класс mycluster.schedulers.base.Scheduler .
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 )