kuroの覚え書き

96の個人的覚え書き

INGOR.1.0.0

理研の玉田さんの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スロットで動作させることができたため、一旦は良しとすることにした。