ระบบคิว

      การให้บริการ e-Science HPC Service สนับสนุนด้านการคำนวณในหลายกลุ่มวิจัย และมีผู้ใช้งานเป็นจำนวนมาก ทำให้ลักษณะของภาระงาน (โหลด) มีความหลากหลาย ประกอบกับความแตกต่างของ Spec ในแต่ละโหนดคำนวณ เพื่อให้เกิดประโยชน์สูงสุดต่อการให้งาน จึงได้มีการกำหนดระบบคิวแบบ FIFO + Backfill โดยแบ่งคิวออกเป็น 4 ประเภท ดังตารางต่อไปนี้


ข้อกำหนดการใช้งานคิวในแต่ละประเภท

Queue type

Time limit (Day)

Resources limit

Number of job limit

test 1

4 CPU cores

on 1 node

10
short  1

256 CPU cores

on 8 nodes

24

medium

3

128 CPU cores

on 4 nodes

12

long

14

128 CPU cores

on 4 nodes

6

คุณสมบัติของแต่ละชุดโหนดคำนวณ

Atom Computer Cluster (Hostname: hydrogen.lsr.nectec.or.th)

Name

Label #CPU Cores Memory (GB) #Nodes Note

sodium

old 12 40 10

Old

nodes

radium

himem 32 256 3

High

Memory

osmium

new 32 128 8

New

nodes

nobelium

jumbo 96 512 1

96 CPU Cores

on one node

gadolinium

cope 12 48 1

Co-processor

Xeon Phi


      PBS Script คือ Batch File สำหรับรันงานแบบหนึ่ง ซึ่งเป็นรูปแบบที่ PBS/Torque Scheduler เข้าใจ โดยข้อมูลใน PBS Script จะแบบเป็น 2 ส่วน คือ ส่วนแรกเป็นข้อมูล/Syntax ที่บอกกับ Scheduler เกี่ยวกับการร้องขอทรัพยากรคำนวณ (โหนดคำนวณ, CPU Cores, Memory) ที่ใช้สำหรับรันงาน และส่วนที่สองเป็นคำสั่ง/Syntax สำหรับรันงานผ่าน Linux Command


      พารามิเตอร์ที่สำคัญใน PBS Script ส่วนแรก 

            #PBS -N Job_Name (เป็นการระบุชื่อของงานที่ต้องการรัน)

            #PBS -S /bin/bash (เป็นการระบุ shell environment ตัวอย่างระบุเป็น bash shell)

            #PBS -q test (เป็นการระบุประเภทของคิว เลือกได้ 4 ประเภท ตามหัวข้อระบบคิว)

            #PBS -l nodes=2:ppn=2 (เป็นการระบุการร้องขอทรัพยากร 2 โหนดคำนวณ โดยใช้ 2 CPU Cores ในแต่ละโหนดคำนวณ)


ตัวอย่าง PBS Script

      ตัวอย่างการรันงานแบบอนุกรม  (Serial  Job)  โดยที่ต้องการรันในคิวทดสอบ ซึ่งใช้เวลาไม่เกิน 1 วัน

#### PBS Part ####
#PBS -N Serial_Job
#PBS -S /bin/bash 
#PBS -l nodes=1:ppn=1
#PBS -q test
#### End Part ####


cd ~/my_work_space
./program.exe > output.file 

      ตัวอย่างการรันงานแบบขนาน (Parallel Job) สำหรับการรันงานแบบขนานนั้นจะต้องใช้งานร่วมกับโปรแกรมประเภท MPI เช่น mpich mpich2 openmpi mvapich2 เป็นต้น โดยตัวอย่างเป็นการรันงานด้วยโปรแกรม abinit โดยกำหนดรันงานไม่เกิน 3 วัน ร้องขอทรัพยากรคำนวณในกลุ่ม new ทั้งหมด 32 CPU Cores จากโหนดคำนวณ 4 โหนด

#### PBS Part ####
#PBS -N Parallel_Job
#PBS -S /bin/bash 
#PBS -l nodes=4:ppn=8:new
#PBS -q medium
#### End Part ####


export MPI_EXE=/opt/openmpi-1.8.5/bin
export ABINIT_EXE=/opt/abinit-7.10.2/bin

cd ~/my_work_space
cat $PBS_NODEFILE > node_list.txt
$MPI_EXE/mpirun -np 32 -machinefile node_list.txt $ABINIT_EXE/abinit 
< input.file > output.file

*ศึกษารูปแบบการร้องขอทรัพยากร (#PBS -l) เพิ่มเติมได้  << ที่นี่ >>


การส่งงาน Apache Spark

     การรันงานแบบ Big Data Analytics โดยใช้ Apache Spark นั้น จำเป็นต้องรันภายใต้ PBS Queue เช่นเดียวกับงาน Batch Job ชนิดอื่นๆ แต่จะต้องมีการสร้างสภาพแวดล้อมของ Spark Job ให้ตรงกับทรัพยากรคำนวณที่ผู้ใช้ร้องขอจาก PBS Scheduler ซึ่งผู้ใช้สามารถรัน Spark Job ได้ทั้งแบบโหนดคำนวณเดียวหรือหลายโหนดคำนวณ รวมถึงกำหนดจำนวน CPU Cores และขนาดหน่วยความจำที่จะใช้ได้ โดยผู้ใช้สามารถศึกษาตัวอย่างวิธีการรันงานและ PBS script ได้ที่ Spark-on-HPC.

--------------------------------------------------------------------------------------------------------------------------------------------------------