HGC super computer

2014 年 12 月 13日 改訂

ヒトゲノム解析センター (HGC) が提供している SuperComputer に関するメモです.HGC の SuperComputer は,使用料金を払えば誰でも使うことができます.月極で支払い可能です.個人で使う場合は,大学に所属している方は一ヶ月 5000 円程度です.詳細はこちらです.

Sun Grid Engine (SGE) というシステムを使って,大量の job を複数のノードを使って計算させます.このため,解析を行うには基本的にシェルスクリプトを書いて job を投入します.

ここで紹介する情報は主にこちらにあるスライドを参照しました.このスライドを見るには HGC であらかじめ作成してもらった ID とパスワードが必要です.


SGD を google 検索する

アレイジョブについて調べる場合,以下のように検索すると良いです.

sge task array "SGE_TASK_ID" "-t"

"SGE_TASK_ID" は SGD のシステムで使われているユニークなキーワードです.アンダーバーとハイフンは google 検索で無視されるので,クオーテーションマークで囲んでいます.


気付いた点

tar の解凍は遅い
tar で圧縮したファイルを解凍すると,とても時間がかかります.インターネット環境にもよりますが,4000 フォルダ (それぞれ 2 つのテキストファイルを含む) であれば scp でそのまま送った方が速いです.

 

ログイン

ログイン
ターミナルから

ssh ユーザ名@gw.hgc.jp

または、

ssh –l ユーザ名 gw.hgc.jp

としてログインします.その後パスワードを聞かれるので答えます.「logout」あるいは「exit」でログアウトします.

hostname

でログインしているノードを確認します.gw 系ノードは解析向きではないので,

qlogin

によって遊休しているログインに入って解析を行います.


通常の job

test.sh という名前のファイルを作成し,以下を保存します.「qsub test.sh」でジョブを投入します.job ファイルは名前の先頭が数字だと,qsub しても受け付けてもらえません.

#!/bin/sh

#$ -S /bin/sh # set shell in SGE

pwd
hostname
date
echo arg1=$1
sleep 20
date



有益なコマンド

job の投入

qsub test.sh

上記だと Home directory にアウトファイルができます.

qsub したディレクトリにアウトファイルを保存

qsub -cwd test.sh

投入した job の状況

qstat

job ID を指定して job を削除

qdel 1152367

UID を指定して job を削除

qdel -u USERID

ログインしているノードを確認

hostname

指定した [jobid] の詳細情報を確認

qstat -j [jobid]


ファイルの数をカウント

ls | wc -l

ディレクトリの数をカウント

ls -l | grep ^d | wc -l



qlogin

qlogin は解析を始める前に qlogin によって,解析用のノードに入るコマンドです.ただし,HGC に電話して聞いたところ,qlogin はどうもアレイジョブのときに行う操作のようです.qsub で解析を行う場合は,qlogin しないで gw ノードから直接 job を投げても良いみたいです (2010 年 10 月).

qlogin は一つの job として数えられます.通常の契約では,それ以上 qlogin することはできないので,qstat で qlogin しているかどうか確認する必要があります.qlogin したターミナルが分からない場合は,qdel XXXX で qlogin を解除できます.



SGE にバッチジョブを投入する前には,メモリ使用量の確認を行います.job を事前にテストする場合は,ログイン時に入った gw ノードから,

qlogin

と入力し,intr.q にログインします.これで遊休しているノードにログインできます.

hostname

でノードを確認します.このとき jobID

Your job 3919457 ("QLOGIN") has been submitted

を覚えておきます.バッチファイルで実行する job をコマンドラインに直接入力して走らせます.

blastall -d /usr/local/db/blast/genbank/vertebrate -i ~/query_for_blast -p blastn

10 秒ぐらいで解析が終わります.結果がスクリーンアウトされたら,exit でログアウトします.

qacct -j 3919457 | grep maxvmem

で利用した最大か総メモリサイズを確認します.20 秒ぐらい時間がかかります.881 M かかるという結果を得ました.



RAxML の解析

(最近 100 以上の RAxML 解析は,以下のコラムにあるアレイジョブで走らせています.大量のジョブを走らせる場合は,アレイジョブの方が楽ですし,クラスタにも問題が生じにくいです.OIST のテクニシャンの方に見ていただいたので,信頼性が高いはずです [2014 年 12 月])

RAxML によって大量の遺伝子配列を解析するスクリプト集です.
NonArrayEx_dir.tar.gz
(このコラムの内容は,かなり個人的な解析に特化したものです.)

概要
010_RMins_dir に入っているディレクトリ (RAxML のインファイルとなる sequence ファイルと partition ファイルがそれぞれ入っています) を読み取り,ディレクトリごとに job file を作成して qsub するスクリプトです.010_RMins_dir は 010_filePickerForHGC.pl をもちいて,あらかじめ自分の PC などで作成しておきます.

supercomputer で RAxML を走らせるコマンド
実際には,以下のコマンドで RAxML の解析をスタートさせます.

perl 020_commandNAqsub.pl

job は 5000 までしか受け付けてくれません.それ以上になると,以下のようなメッセージが出ます.

5102.ENSORLP00000003742_fol Unable to run job: job rejected: Only 5000 jobs are allowed per user (current job count: 5000).

アウトファイルの処理
RAxML は解析が終了した時点で,BS 付き ML tree が保存される RAxML_bipartitions.* を作成します.これがあったら解析が終了したことになるので,このファイルだけを以下のコマンドによってフォルダに移動します..sh や RAxML_bestTree. などといった付属のファイルは削除されます.ディレクトリは自動的に作成されます.

perl 030_cleanResult.pl

ユーザーごとに使用できるディスク容量は限られているので,解析が終わったファイルは削除した方が解析がスムーズに進むような気がします.

##############################
## スクリプト
010_filePickerForHGC.pl
000_OutAll_fol にある フォルダから,RAxML 解析に必要なファイルだけを集めてきます.

020_commandNAqsub.pl
010_RMins_dir にあるフォルダ名に従って 020_sh_dir フォルダにジョブファイルを作成し, job を投げます.

030_cleanResult.pl
RAxML_bipartitions.* ファイルがあったら解析が終了したと判断し,このファイルをアウトファイルに移動するとともに関連したファイルを削除します.

040_fileDistributer.pl
RAxML の解析結果である RAxML_bipartitions.* ファイルが入っています.

## ディレクトリ
010_RMins_dir

解析の前にあらかじめ用意しておくディレクトリとファイルです.ACLY_H_fol, BRAF_H_fol というフォルダが入っています.それぞれ,180_cDNASelEx3rd.phy (sequence file), 190_part.txt (partition file) が入っています.添付の 010_filePickerForHGC.pl というスクリプトを使うと,このディレクトリを自動的に作成することができます (例題 000_OutAll_fol 付き).

020_sh_dir
上のコマンドによって作成されます.job file (ACLY_H.sh と BRAF_H.sh) です.

030_outDir

RAxML の解析結果である RAxML_bipartitions.* ファイルが入っています.

[2012 年 10 月]


RAxML のコンパイル
RAxML のコンパイルは,以下でないとうまく行きませんでした.

make -f Makefile.SSE3.PTHREADS.gcc

raxmlHPC を得ようとすると,以下のエラーメッセージが出ました.

[jinoue11:RAxML-7.2.8-ALPHA]$ make -f Makefile.gcc
gcc -o raxmlHPC axml.o raxmlParsimony.o optimizeModel.o multiple.o searchAlgo.o topologies.o parsePartitions.o treeIO.o models.o bipartitionList.o rapidBootstrap.o evaluatePartialGenericSpecial.o evaluateGenericSpecial.o newviewGenericSpecial.o makenewzGenericSpecial.o classify.o mesh.o fastDNAparsimony.o fastSearch.o leaveDropping.o rogueEPA.o -lm
axml.o: In function `startPthreads':
axml.c:(.text+0xc3fd): undefined reference to `pthread_create'
collect2: ld はステータス 1 で終了しました
make: *** [raxmlHPC] エラー 1

ちなみに,Pthread version (raxmlHPC-PTHREADS-SSE3) では -T2 が最も速かったです.-T 6 はなかなか解析が終わらないので途中で辞めました.

ACLY -T2
Overall execution time for full ML analysis: 45.932260 secs or 0.012759 hours or 0.000532 days
ACLY -T4
Overall execution time for full ML analysis: 66.424312 secs or 0.018451 hours or 0.000769 days



アレイジョブ

数千ぐらいのジョブは,アレイジョブとして投入します.アレイジョブは最大 75,000 タスクまでです.こちらをご覧下さい.アレイジョブを行う場合は,以下に説明のある qlogin によって計算用のノードに入って,一つのジョブに必要とされるメモリを確認する必要があります.

 アレイジョブがうまく走ると,「qstat」によって以下の待ち受け画面 (state: qw) と解析画面 (state: r) が得られます.state: qw では,一番右の「1-3:1」が 3 つの job をアレイジョブによって行うことを示します.state: r では 26 個の job が同時に解析されていて,その 6 番目までの状態を表示しています.


コマンドファイル

test.sh という名前のファイルを作成し,以下を保存すします.この例題を実行するには,query_for_blast という名前で DNA の fasta ファイルをホームディレクトリーに保存してください.SGE にバッチジョブを投入する前に,qlogin を使ってバッチなしの解析を行い,メモリ使用量の確認を行います.

#!/bin/sh
#$ -S /bin/sh

query="$HOME/query_for_blast"
blast_path="/usr/local/db/blast/genbank"
blast_db=([1]"viral" [2]="bacterial" [3]="vertebrate" [4]="invertebrate")

echo SGE_TASK_ID:$SGE_TASK_ID
echo SGE_TASK_FIRST:$SGE_TASK_FIRST
echo SGE_TASK_LAST:$SGE_TASK_LAST
echo SGE_TASK_STEPSIZE:$SGE_TASK_STEPSIZE

# do blast search
blastall -d ${blast_path}/${blast_db[$SGE_TASK_ID]} \
-i $query \
-p blastn


RAxML 解析
以下の job ファイルを perl で作成して qsubFile.sh などのような名前にして保存し,「qsub qsubFile.sh」として job を投入しています.
  "#$ -t 1-100" と "#$ -tc 10". をセットする点が,通常の job と異なります.数字は job 数で変化させてください.
raxmlArrayPerl.tar.gz は一連の操作を行う perl script 集です.

#$ -S /bin/bash
#$ -t 1-100
#$ -tc 10 # 10 解析ごと走ります.最大 50 ぐらいまでが良いみたいです.
#$ -N JOBID
#$ -q shortp # Use long if the seq file is large.
#$ -M xxxx@oist.jp
#$ -m abe
#$ -j yes
#$ -cwd
# #$ -o ./"outputFile directory name"
# #$ -e ./"errorFile directory name"
#$ -pe openmpi 4
#$ -l h_vmem=256m #$ -l virtual_free=256m #
#[add lines as below or write loop script]
./raxmlHPC-PTHREADS-SSE3 -f a -x 12345 -p 12345 -# 10 -m GTRGAMMA -s 010_sequenceFileDir/ENSP00000400626.txt -q 0 10_partitionFileDir/ENSP00000400626.txt -o Chicken_ENSGALP00000015683_NONE -n ENSP00000400626.txt -T 2
./raxmlHPC-PTHREADS-SSE3 -f a -x 12345 -p 12345 -# 10 -m GTRGAMMA -s 010_sequenceFileDir/ENSP00000231668.txt -q 0 10_partitionFileDir/ENSP00000231668.txt -o Drosophila_FBpp0078315_CG2023 -n ENSP00000231668.txt -T 2
./raxmlHPC-PTHREADS-SSE3 -f a -x 12345 -p 12345 -# 10 -m GTRGAMMA -s 010_sequenceFileDir/ENSP00000308315.txt -q 0 10_partitionFileDir/ENSP00000308315.txt -o SeaSquirt_ENSCINP00000030254_NONE -n ENSP00000308315.txt -T 2


その他
ファイル数を表示
ディレクトリ内部のファイル数を表示します.

ls -laR | grep -c '^-'



リンク

HGC の supercomputer 利用に関するリンクです.利用者 ID とパスワードがないと入れないページもあります.

講習会資料

HGC 内部向けのページなので,ID とパスワードが必要です.まずは「Sun Grid Engine 利用法」を読みます.

Webmail
HGC の登録時に与えられるウェブメイルです.

スパコン利用案内
一番下の利用方法にログインなどのやり方が書いてあります.

SGE マニュアル
日本語版もあります.私はちゃんと読んでいません.