MPIParallelDebug - t-sakashita/rokko GitHub Wiki
MPI並列プログラムのデバッグ
sekirei@物性研でTotalViewを使用する。
ssh -Y sekirei
module load totalview
totalview
sekirei(物性研システムB)において、スレッド並列で実行されているかのテスト
コマンド末尾に&をつけて、バックグラウンドでプログラム実行
mpijob -np 4 scalapack_pdsyevd_fixed_block 30000 > a.log 2>&1 &
以下を実行する。
ps aux -Lm | grep scalapack
ps -eLfm | grep scalapack
NLWPのコラムにスレッド数が表示される。
ツール
- SPINDLE: scalable dynamic library loading
- ReMPI: MPI record and reply(そろそろ公開)
- clock delta compressionでMPI通信の順序・時刻を圧縮して管理
- STAT: stack trace analysis tool
- io-watchingdog hangを検出する。フリーズによる計算機資源の無駄を防止
TAUのインストール
準備:pdtのインストール
- pdtはオプション要らない(-prefixでインストールを指定するだけ)
- フロントエンドでGNUコンパイラを使うため
./configure -prefix=
TAU(paraprofを含む)のインストール makiでは、wgetが使えないので、PCでダウンロードして、makiに転送。
wget tau.uoregon.edu/ext.tgz
scp ext.tgz maki:
以下のように、TAUのソースディレクトリの中にext.tgzの解凍したものをおくと、ダウンロードしたのと同じ扱いができる。
ssh maki
cd tau-2.25
tar xvf ext.tgz
./configure -bfd=download -pdt=$HOME/pdt -pdt_c++=g++ -prefix=$HOME/tau -arch=sparc64fx -c++=mpiFCCpx -cc=mpifccpx -fortran=mpifrtpx -mpi
TAUのラッパーコンパイラで使用するMakefileを指定:
export TAU_MAKEFILE=$TAU/Makefile.tau-mpi-pdt-openmp-opari-fujitsu
TAUで最新版のC++パーサを使う。
以下のようにすれば、使用するパーサを最新版のcxxparse4101
とできる。
export TAU_OPTIONS='-optPdtCxxParser=cxxparse4101 -optVerbose'
しかし、今のところ、このパーサ(ROSE)は、Boostはインクルードするだけでもエラーとなりパースできない。 よって、Rokkoのコンパイルもできない。
TAUのC++コンパイララッパーを使用する事は諦める。 代わりに、以下のように対処する。
- コンパイラは通常の富士通コンパイラをデバッグモード(-gをつける)使用する。
- 実行時に
tau_exec -ebs
をつける:
mpiexec tau_exec -ebs ./foo
オプションの一覧は、tau_compiler.shで見れる。
vampirの起動
拡張子がotf2のファイルを指定
traces.otf2