MyCluster
V2.0.6
库和命令行接口,以支持与多个HPC群集交互
提供了使用单个接口与最流行的HPC作业计划系统进行交互的能力,并启用了作业提交脚本的创建。
用SGE,LSF和Slurm测试(正在开发的PBS/扭矩支持)
可以从PYPI安装mycluster。
pip install mycluster
MyCluster将将您的电子邮件地址写入任何提交文件中,因此您可以从调度程序中收到更新。您可以在命令行中提供此信息,也可以将其存储在配置文件中。将您的电子邮件存储在“配置文件”运行中:
mycluster configure
默认情况下,mycluster将尝试检测基础调度程序,但可以通过设置myCluster_sched环境变量来覆盖这。应该将其设置为实现mycluster.schedulers.base.Scheduler类的Python类的字符串名称。
在某些情况下,您可能需要覆盖提交模板,例如,如果要包含其他参数或调度程序命令。为此,将MyCluster_Template环境变量设置为您希望使用的Jinja模板。有关基本模板,请参见MyCluster/调度程序/模板。
MyClusyter安装“ mycluster” CLI命令,通过命令行与本地调度程序进行交互。
打印命令帮助
mycluster <command> --help
列出所有队列
mycluster queues
列出工作
mycluster list
创建一个新的提交文件,请参阅-help,以获取更多提交选项。
mycluster create JOBFILE QUEUE RUNSCRIPT
提交工作文件
mycluster submit JOBFILE
取消工作
mycluster cancel JOBID
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 )