このページではUGE(Univa Grid Engine)でjob管理されているPCクラスター(スパコン)にTrinityのjobを投げる方法を掲載しています。
requirements
job投入スクリプト
#!/bin/sh
#$ -S /bin/sh
#$ -cwd
#$ -V
#$ -N SRR504904_1M
#$ -j y
#$ -o ./20190121_01_SRR504904_1M.log
#$ -l s_vmem=12G,mem_req=12G
./20190121_01_SRR504904_1M.sh
このスクリプトは、./20190121_01_SRR504904_1M.shに記述されたjobを投げていることを意味します。ここでは特に注意すべき点を記述します。
#$ -l s_vmem=12G,mem_req=12G
この行ではこのjobが使用するメモリ利用量を宣言しています。宣言がない場合、Javaの部分で以下のようなエラーが出ることがあります。
Error occurred during initialization of VM
Could not allocate metaspace: 1073741824 bytes
投入したいTrinityの実行スクリプト
#!/bin/bash
Trinity --seqType fq \
--left $HOME/nakasho/data/SRR504904_1M/SRR504904_1M_1.fastq \
--right $HOME/nakasho/data/SRR504904_1M/SRR504904_1M_2.fastq \
--max_memory 128G \
--CPU 24 \
--output $HOME/nakasho/work/20190121/SRR504904_1M_trinity \
--grid_exec "$HOME/src/HpcGridRunner-1.0.2/hpc_cmds_GridRunner.pl --grid_conf $HOME/src/HpcGridRunner-1.0.2/hpc_conf/BroadInst_SGE.test.conf -c" \
--grid_node_CPU 8 \
--grid_node_max_memory 10G
このスクリプトが実際に投入され、実行されるTrinityのスクリプトになります。以下ではTrinityのページに記述されていない部分を紹介します。
--grid_exec "$HOME/src/HpcGridRunner-1.0.2/hpc_cmds_GridRunner.pl --grid_conf $HOME/src/HpcGridRunner-1.0.2/hpc_conf/BroadInst_SGE.test.conf -c" \
Hpc GridRunnerとそのconfigファイルの記述場所を設定します。現在、私が使用しているスパコンではjob管理システムにUGEが使用されていますが、これはSGEと同様のものです。他にもLSF, PBS, SLURMがサポートされています。
--grid_node_CPU 8 \
1つのノードあたりいくつのCPUを使用するかを指定します。Trinity Phase 2 (assembly of read clusters)においてCPU=grid_node_CPUになります。
--grid_node_max_memory 10G
1つのノードあたりいくらメモリを利用するかを指定します。Trinity Phase 2 (assembly of read clusters)においてmax_memory=grid_node_max_memoryになります。
HPC GridRunnerとそのコンフィグファイル
HPC GridRunnerを用いることで、Trinityの実行がノード間で通信を行いながらjobを高速で行われるgridが形成されます。ここではそのコンフィグ方法を掲載しています。
# grid type:
grid=SGE
# template for a grid submission
cmd=qsub -V -cwd
# note -e error.file -o out.file are set internally, so dont set them in the above cmd.
##########################################################################################
# settings below configure the Trinity job submission system, not tied to th e grid itself.
##########################################################################################
# number of grid submissions to be maintained at steady state by the Trinity submission system
max_nodes=4
# number of commands that are batched into a single grid submission job.
cmds_per_node=1
gridでそのスパコンが使用しているjob管理システムを指定します。Hpc GridRunnerではLSF, SGE, PBS, SLURMが対応しています。
cmdで新たに投げる子タスクを生成しています。
max_nodesはデフォルトでは500になっていますが、今回は4ノードを利用する想定から、4に変更しています。
cmds_per_nodeは単一のグリッド送信ジョブにまとめられたコマンド数を意味します。ここではデフォルトの1を指定しています。