Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Current »

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 ขึ้นไป

/bin/bash
#SBATCH -p memory
#SBATCH -N 2 -n 10 -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 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)

 ข้อมูลเพิ่มเติมเชิงเทคนิค

หากไม่ระบุ --thread ค่าตั้งต้นของ RAxML จะตรวจสอบคุณสมบัติเครื่องที่ software ทำงานอยู่ และเรียกใช้ทรัพยากรทั้งหมดที่มี เช่น compute node จะใช้งาน 40 cores หรือ memory node จะใช้งาน 192 cores โดยอัตโนมัติ ซึ่งหากการใช้งานนี้มากกว่าจำนวนทรัพยากรที่ระบุไว้ใน slrum option จะทำให้เกิด core oversubscription และ software ทำงานช้าลงอย่างมาก

การระบุ worker

การระบุจำนวน worker (--worker) จะต้องสัมพันธ์กับจำนวน MPI ranks และจำนวน OMP threads ที่ใช้ หากกำหนดไม่เหมาะสม software จะไม่สามารถทำงานได้ หรือทำงานได้ช้า ทั้งนี้หากไม่มั่นใจสามารถให้ software กำหนดให้แบบอัตโนมัติได้


Related articles

  • No labels