ส่วนต่อประสานไลบรารีและบรรทัดคำสั่งเพื่อรองรับการโต้ตอบกับกลุ่ม HPC หลายตัว
ให้ความสามารถในการโต้ตอบกับระบบจัดตารางงาน HPC ที่ได้รับความนิยมมากที่สุดโดยใช้อินเทอร์เฟซเดียวและเปิดใช้งานการสร้างสคริปต์การส่งงาน
ทดสอบด้วย SGE, LSF และ Slurm (การสนับสนุน PBS/แรงบิดภายใต้การพัฒนา)
MyCluster สามารถติดตั้งได้จาก PYPI
pip install mycluster
MyCluster จะเขียนที่อยู่อีเมลของคุณลงในไฟล์การส่งใด ๆ เพื่อให้คุณสามารถรับการอัปเดตจากตารางเวลา คุณสามารถจัดหาสิ่งนี้บนบรรทัดคำสั่งหรือจัดเก็บไว้ในไฟล์กำหนดค่า ในการจัดเก็บอีเมลของคุณในการเรียกใช้ไฟล์กำหนดค่า:
mycluster configure
โดยค่าเริ่มต้น MyCluster จะพยายามตรวจจับตัวกำหนดตารางเวลาพื้นฐาน แต่สิ่งนี้สามารถแทนที่ได้โดยการตั้งค่าตัวแปรสภาพแวดล้อม mycluster_sched สิ่งนี้ควรตั้งค่าเป็นชื่อสตริงของคลาส Python ที่ใช้ mycluster.schedulers.base.Scheduler คลาส
ในบางกรณีคุณอาจต้องการแทนที่เทมเพลตการส่งเช่นหากคุณต้องการรวมพารามิเตอร์เพิ่มเติมหรือคำสั่ง scheduler ในการทำสิ่งนี้ตั้งค่าตัวแปรสภาพแวดล้อม mycluster_template เป็นเทมเพลต Jinja ที่คุณต้องการใช้ ดู mycluster/schedulers/templates สำหรับเทมเพลตพื้นฐาน
MyClusyter ติดตั้งคำสั่ง "mycluster" CLI เพื่อโต้ตอบกับตัวกำหนดตารางเวลาภายในผ่านบรรทัดคำสั่ง
ความช่วยเหลือคำสั่งพิมพ์
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 )