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