この記事は何?
大学のスパコン(Sirokane) で初めてguppy をGPUモードで動かす際につまったので備忘録的なメモ
解決したコード
#!/bin/sh
#$ -S /bin/sh
#$ -cwd
#$ -l v100=1,s_vmem=1000G
## -l v100=1,s_vmem=1000G でGPU v100を何個確保するかとメモリを指定する
## FLO-MIN106とSQK-LSK109のセットで実行しているので"dna_r9.4.1_450bps_hac.cfg"でいい
## それ以外なら guppy_basecaller --print_workflowからconfig file確認
guppy_basecaller -i ./fast5/ -x "cuda:all:100%" -s ./guppy__3.4.5_basecalled/ -c dna_r9.4.1_450bps_hac.cfg -r --num_callers 8 --qscore_filtering
guppyとは
Nanoporeのシークエンスデータをbasecall する際に用いるsoftwareで開発元のONTが開発しており、basecallの際一般に用いられる
Nanoporeが読み取った電位変化の波形ファイル(fast5ファイル)を入力として塩基配列(fastqファイル)を出力する
つまっていた点
qsubで投げるとGPUは確保されているみたいだがoutputのファイルをみるとCPUmodeがONになっておりGPUが使われていない
qsub時の出力(CPUのslot(1)とともに、GPUが確保されている)
出力(log)ではCPUmodeがONになっておりGPUが使われていない
qsub -j "taskID" で調べると
-wild score 0.99 CPU usage 2335%
とCPU稼働率が24倍と負荷がかかってjob が止められていた(wild scoreというのはCPUに異常な負荷がかかっている確率みたいなもの)
CPU数(slot 数)を上げてもGPU用のoptionをつけていることでGPU用にリソースを確保しているのか毎回異常な負荷がかかっておちていた
GPUを直で指定しようと
--device auto -s ./guppy_basecalled_0_cpu/
などにしてログインしているGPUを指定してもだめだった。
原因と解決策
-x "cuda:all:100%"
のoption が必要だった
結局はoption をちゃんと理解することが必要。。
参考
https://supcom.hgc.jp/internl/mediawiki/v100 SirokaneにおけるGPU
(Tesla V4の使い方wikiなのでログイン要)