ページの先頭です。
ここから本文です。

よくあるご質問(サポートFAQ)

【SX-Aurora TSUBASA】SX-Aurora TSUBASA用NEC MPI FAQ

質問内容

NEC MPI の使用方法関連

  1. 物理的なVE番号を取得する方法はありますでしょうか。

  2. NQSV qsubでNEC MPIを利用する際のリダイレクト方法を教えてください。

  3. 高速I/Oを使用するとVHメモリの確保に以下のようなエラーが出ます。
    # mpid(7): Allocate_system_v_shared_memory: key = 0xxxxxxxxxx, len = xxxxxxxxxx
    # shmget allocation: Cannot allocate memory

  4. バッチ実行時に以下のエラーがでます。
    host1: mpid(0): bind or listen failed in listen_port_range: Address already in use
    mpirun: cannot find fifo file: /tmp/mpi2mpid_fifo.xx_xxxxxxx; jid xxxxxxx
    mpirun: fatal error : cannot find fifo file (not created by mpid)

  5. 二つのscript のnecmpivars.csh necmpivars.shで"set echo"コマンドで go.cshではWarningが表示されないですががgo.shでは表示され以下のエラーが出ます。
    necmpivars.sh: Warning: invalid argument. LD_LIBRARY_PATH is not updated.
    Note: "necmpivars.sh [gnu|intel] [version]" format should only be used
    at runtime in order to use VH MPI shared libraries other than those specified
    by RUNPATH embedded in a MPI program executable by the MPI compile command.
    In other cases, "source /opt/nec/ve/mpi/2.x.0/bin/necmpivars.sh"should be used without arguments.
    version is a directory name in the following directory:
    /opt/nec/ve/mpi/2.x.0/lib64/vh/gnu (if gnu is specified)
    /opt/nec/ve/mpi/2.x.0/lib64/vh/intel (if intel is specified)

  6. システム内に複数のNEC MPIがインストールされており、バージョンAの セットアップスクリプトをsourceし、MPIプログラムをコンパイル・リンクしました。
    この時、実行時にバージョンBのセットアップスクリプトをsourceすることで、NEC MPIをバージョンBに切り替えてMPIプログラムを実行できますか。


  7. 何故以下のような事象が起きるのでしょうか。
    「NEC MPI ユーザーズガイド」の「2.13 非ブロッキング MPI 手続利用時の注意事項」に記載されている注意事項において
    非ブロッキングMPI手続きの通信バッファ、入出力バッファの実引数に下記のいずれかを指定すると、 正しい結果が得られないことや、プログラムの実行に異常をきたすことがあると記載されています。
    ・部分配列
    ・配列式
    ・配列ポインタ
    ・形状引継ぎ配列

  8. VE数とプロセス数を指定しましたが、各VEあたりに割り当てられたプロセス数が等しくならなかったです。
    #PBS --venode=125
    #PBS --venum-lhost=8
    mpirun -np 1000 ./a.out
    上記の条件でリクエストを投入したところ、以下の動きのように見えています。
    ・各VEに8プロセスが割当たらない
    ・特にjob:0015のVE0~VE3では8プロセスを超えて割当たっている

  9. Intel XEON プロセッサの8VEモデル(A300-8, A311-8, B300-8, A500-64, A511-64など)上でMPI通信性能を改善したいです。

PROGINF/FTRACE 関連

  1. スレッド並列をおこなうとFTRACEの結果が演算量が少なくなったように表示されます。

  2. プログラムが異常終了した場合、標準エラー、PROGINF、FTRACEの結果は全rank最後まで出力されますか。

InfiniBand関連

  1. InfiniBandの異世代機種間でのMPI実行について何か注意するべき点はありますでしょうか

回答内容

回答

NEC MPI の使用方法関連

  1. mpirun に -v オプションを指定するとプロセス生成情報が出力されます。
    本情報から物理VE番号を確認できます。

    % mpirun -v -np 8 a.out
    mpid: Creating 8 process of './a.out' on VE 0 of local host
     ↑ 物理VE番号0上にプロセスを8個生成したことを示しています。 

    またプログラム内から取得する場合には、環境変数 VE_NODE_NUMBERを参照することで物理VE番号を確認できます(getenv("VE_NODE_NUMBER"))。

  2. mpisep.shを利用すれば、各ランクの出力をファイルにそれぞれリダイレクトできます。
    export NMPI_SEPSELECT=4 
    mpirun -np 4 /opt/nec/ve/bin/mpisep.sh ./a.out 
    上記実行により、各プロセスの標準出力・エラー出力がファイル"std.ユニバース番号:ランク番号" にリダイレクトされます。
    (ユニバース番号は通常0。MPI_Comm_spawn等で生成したプロセスは1以上)
    NEC MPIユーザズガイド」の3.3 MPI プロセスの標準出力 および 標準エラー出力 に詳しくは記載されています。
    ご利用中のNQSVのキューの設定においてNEC MPI プロセスマネージャーが hydra の場合、MPIプログラム実行時に環境変数NMPI_OUTPUT_COLLECTを設定することで出力先を以下の通り制御できます。

    ・NMPI_OUTPUT_COLLECT=ON
    MPIプログラムの出力をMPI実行コマンドの標準出力・標準エラー出力へ出力します。
    ・NMPI_OUTPUT_COLLECT=OFF(既定値)
    mpdと同様のMPIプログラムの出力を論理ノードごとに出力します。

  3. HugePage が不足していると考えられます。MPI分に加えて、高速I/O分のHugePageも設定してください
    HugePageの設定は「SX-Aurora TSUBASA インストレーションガイド 」の以下の章で説明しています。
    4.11 HugePagesの設定

  4. SX-Aurora TSUBASA インストレーションガイド 」の4.7.2 ファイアウォールの設定章で記載されているNEC MPIの既定の外部からの接続を待ち受けポートは 25257-25266の10ポートです(10VEモデルを想定)。
    11個以上のMPIデーモンを同時に起動し、11番目以降に起動したMPIデーモンでポートの確保に失敗している可能性があります。
    11個以上のMPIデーモンを1ノード上で同時に起動する場合は、 環境変数NMPI_PORT_RANGEを使用して利用ポート数を拡大する必要が有ります。
    例えば、20個のMPIデーモンを1ノード上で同時に起動する場合は、 NMPI_PORT_RANGE=25257:25276を指定してください。
    システム設定するか、ジョブ中で #PBS -v で指定することもできます。
    MPIデーモンは#PBS -b 又は qsub -bで設定されるリクエストにおいて実行するジョブ数によって決まります。

  5. 警告は無視しても問題ありません、 「 NEC MPIユーザズガイド」の3.11 その他の注意事項(19)を参照してください。

  6. NEC MPIのライブラリは、既定値では主要機能を含め大部分が静的リンクされます。
    このため、MPIプログラムの実行時にsourceするNEC MPIのセットアップスクリプトのバージョンに依らず、バージョンAのライブラリが使用されます。
    MPIプログラムの実行時にNEC MPIのバージョンを変更したい場合、 コンパイル・リンク時に-shared-mpiオプションを指定してNEC MPIの 全ライブラリを動的リンクしてください。
    これにより、実行時にバージョンBのセットアップスクリプトをsourceした場合 NEC MPIをバージョンBに切り替えてMPIプログラムを実行できます。
    なお、NEC MPIの全ライブラリを動的リンクした場合、 静的リンクの場合と比較してMPI通信性能が低下する可能性がある点にご注意ください。

  7. NEC MPIユーザズガイド」の「2.13 非ブロッキング MPI 手続利用時の注意事項」に記載の内容については、 MPI仕様(MPI手続きの引数仕様)とコンパイラの最適化処理に起因するものです。
    なお、ここでのコンパイラの最適化処理とは、NECコンパイラに特有なものではなく、 命令順序の入れ替えやメモリアクセス削減(レジスタ最適化)等、 広く一般的に行われている最適化処理を指しており、 MPI仕様 (MPI: A Message-Passing Interface Standard, Version 3.1, June 4, 2015)、 17.1.17 Problems with Code Movement and Register Optimization において説明されている内容となります。

  8. 各VEに均等にプロセスを割り当てるためには、-venode オプションを使ってVEホストとして明示的に指定する必要があります。
    明示的に指定していない場合、VHがホストとみなされ、各VHに均等にプロセスが割り当てられます。
    その結果VHあたりのVE数が異なる場合には、VEあたりに割り当てられるプロセス数は異なることになります。
    -venodeを含めmpirunのオプションは「 NEC MPIユーザズガイド」の以下の章で説明しています。
    3.2.2 実行時オプション
    この例ではVEがホストして明示的に指定されてていませんので、VHがホストとみなされます。
    一方NQSVの条件により
     ・8VE利用可能なVHが15台
     ・5VE利用可能なVHが1台
    がリソースとして割り当てられます。
    その結果MPIは16VHに対して均等に1000プロセスを割り当てます。
    1000÷16=62.5のため、端数を切り上げて1VHあたり63プロセスを基準に割り当てます。また最後のVH(job:0015)に55プロセスが割り当てられ、その結果VEあたり8プロセス以上が起動します。
    本ケースのようにVHのVE数やVHあたりのプロセスうが不均等な場合
     mpirun -venode -np 1000 ./a.out
    としてVEをホストして指定することによりMPIは125VEノードに対して1000プロセスを1000÷125=8のため割り均等に当てられます。

  9. 4VE/論理ノードでの実行に変更することで通信性能が改善する場合があります。
    ・インタラクティブ実行での実行例
    mpirun -ve 0-7 -np 64 ve.out

    NMPI_EXEC_LNODE=ON mpirun -host host_0 -ve 0-3 -np 32 -host host_0/A -ve 4-7 -np 32 ve.out
    ・NQSVバッチリクエスト実行での実行例
    #PBS -b 2
    #PBS --venum-lhost=8
    mpirun -np 128 ve.out

    #PBS -b 4
    #PBS --venum-lhost=4
    #PBS --use-hca=2
    mpirun -np 128 ve.out

PROGINF/FTRACE 関連

  1. 自動並列化・OpenMP並列化された関数を-ftraceオプションを指定せずに コンパイルした場合は、マスタースレッド以外の性能情報が解析結果に含まれません。
    また、NLC (NEC Numeric Library Collection) の並列化関数を使用した場合、 当該関数により生成されるマスタスレッド以外のスレッドの性能情報も解析結果に含まれません。
    本注意事項については、「PROGINF/FTRACE ユーザーズガイド」の2.4 注意事項をご参照ください。

  2. プログラムが異常終了した場合、標準エラー、PROGINF、FTRACEの結果の出力は保証されません。
    このため、これらの一部または全部が出力されない場合があります。

InfiniBand関連

  1. InfiniBandの異世代機種間でのMPI実行はできません。
    第1世代はEDR HCA、第2世代はHDR(HDR100) HCAを搭載していますが、 EDR/HDR間で一部のInfiniBand通信に互換性が無いためです。
    EDR、HDRを搭載しているモデルは以下表参照ください。

    EDR、HDR搭載モデル表
    モデル EDR HDR
    オンサイト用 A300-2,
    A300-4,
    A300-8
    A311-4,
    A311-8,
    B300-8,
    A412-8,
    B401-8,
    B302-8
    データセンタ用 A500-64,
    A511-64

製品名カテゴリ

SX-Aurora TSUBASA Software

補足/関連情報

改版履歴

2021/09/30 新規公開
2021/12/24 NEC MPI の使用方法関連の質問・回答内容の情報を更新

  • コンテンツID: 3150115800
  • 公開日: 2021年09月30日
  • 最終更新日:2021年12月24日

アンケート

サポート情報充実のためアンケートにご協力をお願いいたします。



コメント欄:
ここからページ共通メニューです。 ページ共通メニューを読み飛ばす。