理研の玉田さんのSiGN-BNによるベイジアンネットワーク解析を利用させてもらっている。
データサンプルとしてRNA-seqデータを投入しているのだが、久々にやり直してみようと思ったらうまく動かない。
実行履歴をもとに同じコマンドを投げても動かないのだ。
どうやらこの間にスパコンのCPUがIntel XeonからAMD EPYCに置き換わり、AVX等の環境が変わったために以前のバイナリsignbnnnsr.0.16.7がエラーを吐いて止まってしまうのだ。
以下はとりあえずの覚書
qsub -o so -e se -pe mpi-fillup 2 ~tamada/sign/signmpi.sh ~tamada/sign/signbnnnsr.0.16.7 -o result all.edf.txt
qstatでモニターしているとすぐにランが終わってしまい、
$ cat result.log ! ABSOLUTELY NO WARRANTY. ALL RIGHTS RESERVED. ! THIS BINARY IS PERMITTED FOR HGC Supercomputer System Shirokane5 ONLY. SiGN-BN NNSR Rel. 0.16.7 rank=0, processes=2, threads=1 THIS IS THE ROOT PROCESS. Initialization finished at Tue Jul 7 17:59:06 2023 HOSTNAME: gc275i Random Seed: 1689065946 Random Walk Interval: 1280 Exchange Interval: 1280 1-to-1 Interval: -- Reading the input data matrix. file: all.edf.txt 84526 nodes x 36 samples read. Requires 24,343,488 [bytes] (23 [MiB]) nodes = 84526, samples = 36 Broadcasting the input data matrix at Tue Jul 7 17:59:26 2023 Sent the input matrix size. at Tue Jul 11 17:59:27 2023 Broadcasting input values. Done at Tue Jul 11 17:59:27 2023
というところでとまってしまっている。
そして
$ cat so -catch_rsh /var/spool/ge/gc275i/active_jobs/78340293.1/pe_hostfile gc275i gc335i ------------------------------------------------------- Primary job terminated normally, but 1 process returned a non-zero exit code. Per user-direction, the job has been aborted. -------------------------------------------------------
となる。
なにも言わずに終わることもあれば、
- pe mpi-fillup 8
とかにすると更にcoreを吐き始める。
あれ?
THIS BINARY IS PERMITTED FOR HGC Supercomputer System Shirokane5 ONLY.
ってもしかして今のシステムはShirokane6になってEPYCにCPUも替わっているよね。それで?
ということで玉田さんのディレクトリを見るとingor.1.0.0-MPIというバイナリがおいてある。これか?
ってことで
qsub -e se2 -o so2 -pe mpi-fillup 4 ~tamada/sign/ingor_mpi.sh ~tamada/sign/ingor.1.0.0-MPI -a nnsr all0.edf.txt
としてみるも
$ cat result.log INGOR release 1.0.0 (hash: f5e3722) (Thu Nov 17 20:10:45 2022) Copyright (C) 2018-2022 Yoshinori Tamada MPI enabled: size=4, rank=0 Random seed: 1689069008 input file: nbn_all0.edf.txt Max memory: 1,048,576,000 [Byte] (1,000 [MiB]) candidates: 10 maxParents: 10 Reading input data file: all0.edf.txt Done. # of missing values=0. [MPI] Broadcasting the read data... [MPI] Finished. WARNING: zero minimum value detected for ID=159 (s00160g00730) ID=159; s00160g00730 (real); min=0.000, max=1153.841, mean=438.254, var=74813.518, sd=273.521, mv=0 ・・・・ WARNING: zero minimum value detected for ID=52739 (s00060g00410) ID=52739; s00060g00410 (real); min=0.000, max=0.001, mean=0.000, var=0.000, sd=0.000, mv=0 variables = 52740, samples = 36 varialbe types: real: 52740 Variable attributes: (Nothing) Continuous variables: 52740 Discrete variables: 0 candidates: 10 candidatesCont: 0 candidatesDisc: 0 maxParents: 10 maxParentsCont: -1 maxParentsDisc: 2 Output file type: nodelist Algorithm: nnsr NNSR{0}: subNodes=13185, mrows=52737, subNodesMax=13185 NNSR{0}: sub graph 1: 2,781,349,380 [bytes] FATAL ERROR (999999): NNSRWork_alloc: Memory allocation failed. algo/NNSR.c:558; 2,781,349,380 [bytes]
一筋縄でいかないな。
zero minimum value detectedてことは数値が0はだめなんだったっけ。
てことですべての項目に1を足すというこの手の処理でよくやる前処理をしてみる。
$ qsub -pe mpi-fillup 4 -e se3 -o so3 ~tamada/sign/ingor_mpi.sh ~tamada/sign/ingor.1.0.0-MPI -a nnsr -o result all1.edf
だめっぽい
$ cat result.log INGOR release 1.0.0 (hash: f5e3722) (Thu Nov 17 20:10:45 2022) Copyright (C) 2018-2022 Yoshinori Tamada MPI enabled: size=4, rank=0 Random seed: 1689069627 input file: nbn_all1.edf Max memory: 1,048,576,000 [Byte] (1,000 [MiB]) candidates: 10 maxParents: 10 Reading input data file: nbn_all1.edf Done. # of missing values=0. [MPI] Broadcasting the read data... [MPI] Finished. variables = 52740, samples = 36 varialbe types: real: 52740 Variable attributes: (Nothing) Continuous variables: 52740 Discrete variables: 0 candidates: 10 candidatesCont: 0 candidatesDisc: 0 maxParents: 10 maxParentsCont: -1 maxParentsDisc: 2 Output file type: nodelist Algorithm: nnsr NNSR{0}: subNodes=13185, mrows=52737, subNodesMax=13185 NNSR{0}: sub graph 1: 2,781,349,380 [bytes] FATAL ERROR (999999): NNSRWork_alloc: Memory allocation failed. algo/NNSR.c:558; 2,781,349,380 [bytes] $ cat se3 -------------------------------------------------------------------------- Primary job terminated normally, but 1 process returned a non-zero exit code. Per user-direction, the job has been aborted. -------------------------------------------------------------------------- -------------------------------------------------------------------------- mpirun detected that one or more processes exited with non-zero status, thus causing the job to be terminated. The first process to do so was: Process name: [[64572,1],0] Exit code: 63 --------------------------------------------------------------------------
あかんね。
この件、結局未解決で、かわりといっちゃーなんだが、signbnnnsr.0.16.8のLinuxバイナリをオンプレミスにダウンロードしてやると見事MPI環境で3ノード72スロットで動作させることができたため、一旦は良しとすることにした。