RAxML-NG [TH]
RAxML-NG เป็น software สำหรับการอนุมาน phylogenetic tree โดยใช้ maximum-likelihood (ML)
Software website : RAxML Next Generation: faster, easier-to-use and more flexible
สำหรับการใช้งาน RAxML-NG ในรูปแบบขนาน (parallelization) อย่างมีประสิทธิภาพ สามารถศึกษาข้อมูลเพิ่มเติมได้ที่ Parallelization · amkozlov/raxml-ng Wiki
ตัวอย่าง script ในการ submit job
1. การใช้งานบน compute node(s)
1.1 การใช้งาน 1 node
#!/bin/bash
#SBATCH -p compute
#SBATCH -N 1 -n 2 -c 20
#SBATCH -t 24:00:00
#SBATCH -J RAxML-NG
#SBATCH -A projxxxx
module purge
module load RAxML-NG/1.0.2-gompi-2019b
srun raxml-ng-mpi --msa input.fasta --model GTR+G --prefix output_prefix --thread 20
ตัวอย่างด้านบนจะเรียกใช้งานทรัพยากรจำนวน 1 node (-N 1
) 2 MPI tasks (-n 2
) แต่ละ task ใช้ 20 cores (-c 20
) รวมใช้ 40 cores
สำหรัย RAxML-NG จำนวน thread ที่ใช้ (--thread
) ควรจะเท่ากับจำนวน cpus ที่ทำการจอง (-c
หรือ --cpus-per-task
) ซึ่งในที่นี้คือ 20
ข้อสังเกตุ การระบุจำนวน CPUs ที่ใช้ในแต่ละtask --cpus-per-task
สำหรับ RAxML-NG จะระบุเท่ากับจำนวน cores ที่มีในแต่ละ socket ซึ่งคือ 20 cores สำหรับ compute node
1.2 การใช้งาน 2 nodes ขึ้นไป
#!/bin/bash
#SBATCH -p compute
#SBATCH -N 3 -n 5 -c 20
#SBATCH -t 24:00:00
#SBATCH -J RAxML-NG
#SBATCH -A projxxxx
module purge
module load RAxML-NG/1.0.2-gompi-2019b
srun raxml-ng-mpi --msa input.fasta --model GTR+G --prefix output_prefix --thread 20
ตัวอย่างด้านบนจะเรียกใช้งานทรัพยากรจำนวน 1 node (-N 3
) 5 MPI tasks (-n 5
) แต่ละ task ใช้ 20 cores (-c 20
) รวมใช้ 100 cores (2 nodes + 20 cores จึงต้องระบุ -N เท่ากับ 3)
2. การใช้งานบน memory node(s)
1.1 การใช้งาน 1 node
#!/bin/bash
#SBATCH -p memory
#SBATCH -N 1 -n 4 -c 24
#SBATCH -t 24:00:00
#SBATCH -J RAxML-NG
#SBATCH -A projxxxx
module purge
module load RAxML-NG/1.0.2-gompi-2019b
srun raxml-ng-mpi --msa input.fasta --model GTR+G --prefix output_prefix --thread 24
ตัวอย่างด้านบนจะเรียกใช้งานทรัพยากรจำนวน 1 node (-N 1
) 4 MPI tasks (-n 4
) แต่ละ task ใช้ 24 cores (-c 24
) รวมใช้ 96 cores
สำหรัย RAxML-NG จำนวน thread ที่ใช้ (--thread
) ควรจะเท่ากับจำนวน cpus ที่ทำการจอง (-c
หรือ --cpus-per-task
) ซึ่งในที่นี้คือ 24
ข้อสังเกตุ การระบุจำนวน CPUs ที่ใช้ในแต่ละtask --cpus-per-task
สำหรับ RAxML-NG จะระบุเท่ากับจำนวน cores ที่มีในแต่ละ socket ซึ่งคือ 24 cores สำหรับ memory node
1.2 การใช้งาน 2 nodes ขึ้นไป
ตัวอย่างด้านบนจะเรียกใช้งานทรัพยากรจำนวน 1 node (-N 2
) 10 MPI tasks (-n 10
) แต่ละ task ใช้ 24 cores (-c 24
) รวมใช้ 240 cores (1 node + 48 cores จึงกำหนด N เท่ากับ 2)
การใช้งาน checkpoint
RAxML-NG สามารถ run งานต่อจากที่ run ไว้ได้ โดยที่ software จะอ่าน checkpoint จาก [prefix].raxml.rba และทำงานต่อจากนั้น การ submit งานให้ run ต่อจาก checkpoint สามารถทำได้โดยการ สั่ง run ด้วยคำสั่งเดิม
ปัญหาที่อาจจะพบ
ERROR: CPU core oversubscription detected!
แก้ไขโดย : ปรับค่า slurm option (-N
, --ntasks-per-node
,--cpus-per-task
) ซึ่งระบุทรัพยากรที่ต้องการใช้และทรัพยากรที่ใช้จริงในการทำงานของ RAxML-NG ให้เหมาะสมกัน (--thread
)
การระบุ worker
การระบุจำนวน worker (--worker) จะต้องสัมพันธ์กับจำนวน MPI ranks และจำนวน OMP threads ที่ใช้ หากกำหนดไม่เหมาะสม software จะไม่สามารถทำงานได้ หรือทำงานได้ช้า ทั้งนี้หากไม่มั่นใจสามารถให้ software กำหนดให้แบบอัตโนมัติได้