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

« Previous Version 7 Current »

versions 7.463 – 7.486 มีข้อผิดพลาดในการการทำงานของ FFT-NS-i (รายละเอียดเพิ่มเติมที่นี่)

Software website : MAFFT - a multiple sequence alignment program

ตัวอย่าง script ในการ submit job

การใช้งาน 1 node (OpenMP)

#!/bin/bash
#SBATCH -p devel                        #specific partition
#SBATCH -N 1
#SBATCH -c 40 --ntasks-per-node=1       #specific number of nodes and task per node
#SBATCH -t 2:00:00                      #job time limit <hr:min:sec>
#SBATCH -A train001                     #project name
#SBATCH -J mafft                        #job name

## module load
module purge
module load MAFFT/7.487-gompi-2021a-with-extensions

## run the command
mafft --thread 40 input.fa > output.fa

โดยจำนวน thread ที่ใช้ (--thread) จะเท่ากับจำนวน cpus ที่ทำการจอง (-c หรือ --cpus-per-task) ซึ่งในที่นี้คือ 40 cores

การใช้งานมากกว่า 1 node (ใช้งาน MPI)

การใช้งาน MPI ในกรณที่ใช้ทรัพยากรเท่ากันจะทำงานช้ากว่ารูปแบบ OpenMP

ไม่แนะนำให้ใช้งาน MAFFT/7.481-gompi-2020b-with-extensions ในรูปแบบนี้ เนื่องจากมีรายงานข้อผิดของการทำงานร่วมกันระหว่าง UCX และ OpenMPI ใน gompi-2020b ทำให้ผลที่ได้จากใช้งาน software ผิดพลาดได้

#!/bin/bash
#SBATCH -p devel                        #specific partition
#SBATCH -N 2
#SBATCH -c 40 --ntasks-per-node=1       #specific number of nodes and task per node
#SBATCH -t 2:00:00                      #job time limit <hr:min:sec>
#SBATCH -A train001                     #project name
#SBATCH -J mafft-mpi                    #job name

## module Load
module purge
module load MAFFT/7.487-gompi-2021a-with-extensions

## set enviroment variable according to https://mafft.cbrc.jp/alignment/software/mpi.html
export MAFFT_MPIRUN="srun"
export MAFFT_N_THREADS_PER_PROCESS="40"

## run the command
mafft --mpi --thread 40 input.fa > output-mpi.fa

script ด้านบนจะเรียกใช้งานทรัพยากรจำนวน 2 nodes (-N 2) node ละ 40 cores (-c 40 --ntasks-per-node=1) รวม 80 cores ในส่วนของคำสั่งของ MAFFT จะตั้งค่าจำนวน threads (--thread) เท่ากับจำนวน cores ที่ใช้ในแต่ละ node

 คำอธิบายเพิ่มเติมเชิงเทคนิค

การใช้งาน 2 nodes ขึ้นไป MAFFT จะทำงานในรูปแบบผสมผสานระหว่าง OMP (shared memory) และ MPI (distributed memory) โดยตัว software จะเปิดใช้จะนวน OMP thread ตามที่ระบุไว้ใน --thread และใช้งาน MPI task (or rank) จะที่กำหนดไว้ใน slurm option ไม่ว่าจำเป็นการกำหนด -n เพื่อระบุจำนวน tasks ทั้งหมด หรือการกำหนด --ntasks-per-node เพื่อระบุจำนวน task ในแต่ node (option นี้จำนวน MPI tasks รวมจะคูณด้วยจำนวน node(s) ที่เรียกใช้) จำนวนทรัพยากรที่ software ใช้งานจะเท่ากับ (จำนวน OMP threads) x (จำนวน MPI task)

การใช้งานตัวเลือก --large

การเรียกใช้ --large จะลดการใช้งาน RAM โดยโปรแกรมจะจัดเก็บข้อมูลไว้ใน temporary files แทน การใช้งานฟังก์ชันนี้จะลดปัญหาหน่วยความจำไม่เพียงพอ (out of memory) แต่ส่งผลให้การคำนวณช้าลง

การใช้งาน temporary files

โดยปกติแล้ว temporary files จะอยู่จัดเก็บใน $HOME/maffttmp/ ซึ่งผู้ใช้งานสามารถเปลี่ยนที่จำเก็บได้โดยการตั้งค่า MAFFT_TMPDIR ไปยัง path ของ location ที่ต้องการ

หาก temporary files มีขนาดใหญ่เอาจะทำให้เกิด error: disk quota exceed ได้ หากต้องการใช้งานฟังก์ชั้นนี้ทางทีมแนะนำให้ตั้งค่า MAFFT_TMPDIR ไปยัง location ที่มี disk quota มากพอเช่น project home หรือ scratch directory

การตั้งค่า MAFFT_TMPDIR ไปยัง local /tmp

สามารถทำได้ในกรณีใช้งาน 1 node เท่านั้น

การตั้งค่า MAFFT_TMPDIR ไปที่ local /tmp จะเป็นการใช้งานพื้นที่ที่อยู่บนเครื่องที่ใช้งานโดยตรงโดยไม่ผ่าน network จะให้ software สามารถทำงานได้รวดเร็วขึ้น

ผู้ใช้งานสามารถตั้งค่าโดยใช้คำสั่ง

export MAFFT_TMPDIR=$SLURM_TMPDIR

ซึ่งสามารถเพิ่มคำสั่งดังกล่าวเข้าไปใน script ที่ใช้สั่งงานตามตัวอย่างด้านล่าง

#!/bin/bash
#SBATCH -p devel                        #specific partition
#SBATCH -N 1
#SBATCH -c 40 --ntasks-per-node=1       #specific number of nodes and task per node
#SBATCH -t 2:00:00                      #job time limit <hr:min:sec>
#SBATCH -A train001                     #project name
#SBATCH -J mafft                        #job name

## module load
module purge
module load MAFFT/7.487-gompi-2021a-with-extensions

## set enviroment variable https://mafft.cbrc.jp/alignment/software/tips.html
export MAFFT_TMPDIR=$SLURM_TMPDIR

## run the command
mafft --globalpair --large --thread 40 --threadtb 20 --threadit 40 input.fa > output.fa

การตั้งค่า MAFFT_TMPDIR ไปยัง scratch directory

ผู้ใช้งานสามารถตั้งค่าโดยใช้คำสั่ง

export MAFFT_TMPDIR=/tarafs/scratch/projxxxx-abcd/

โดยที่ xxxx ใน projxxxx-abcd คือ project ID และ abcd คือชื่อย่อของ project

ซึ่งสามารถเพิ่มคำสั่งดังกล่าวเข้าไปใน script ที่ใช้สั่งงานตามตัวอย่างด้านล่าง

#!/bin/bash
#SBATCH -p devel                        #specific partition
#SBATCH -N 1
#SBATCH -c 40 --ntasks-per-node=1       #specific number of nodes and task per node
#SBATCH -t 2:00:00                      #job time limit <hr:min:sec>
#SBATCH -A train001                     #project name
#SBATCH -J mafft                        #job name

## module load
module purge
module load MAFFT/7.487-gompi-2021a-with-extensions

## set enviroment variable https://mafft.cbrc.jp/alignment/software/tips.html
export MAFFT_TMPDIR=/tarafs/scratch/projxxxx-abcd/

## run the command
mafft --globalpair --large --thread 40 --threadtb 20 --threadit 40 input.fa > output.fa

การตั้งค่า MAFFT_TMPDIR ไปยัง location อื่นๆ

ผู้ใช้งานสามารถตั้งค่าโดยใช้คำสั่ง

export MAFFT_TMPDIR=[path to location]

ตัวอย่างเช่น

export MAFFT_TMPDIR=/tarafs/data/project/train001-train/run_MAFFT/

Related articles

  • No labels