Batch script for GPU

  • Author
    Posts
  • #4912

    y-komuro
    Participant

    開発者のみなさま

    spdynをGPUで計算する際のbatch scriptについてお伺いさせていただきます.
    Usageにあるbatch scriptを実行すると,nvidia-smiで表示されるGPU使用率が5%程度となり
    適切な計算が出来ておりません.

    そのため適切なbatch scriptの書き方をご教示いただきたいです.
    まず始めにこちらからどのような情報を提供すればよいか教えていただけますと幸いです.

    計算環境
    CPU: Intel(R) Xeon(R) CPU E5-2670v2 @ 2.50GHz (2 CPU x 10 cores/ node)
    GPU: NVIDIA Tesla K40 (8 GPU/ node)
    (GPU1枚につき,1つのプロセスのみ実行可能な設定)
    Compiler: openmpi 1.10.3 + intel composer xe 2013 sp1.4.211 + cuda6.5

    計算対象
    チュートリアルにあるAll-atom MD simulation of BPTI in NaCl solution

    よろしくお願いいたします.
    小室

  • #4920

    ckobayashi
    Moderator

    GENESIS開発チーム、小林です。

    まず、以下に上げる点をご確認いただきたく思います。

    1. MPIプロセス数とスレッド数
      GENESISのGPUコードの仕様として1つのMPIプロセスは1つのGPUカード(ID)しか使用することができません。(逆に複数のMPIプロセスが1つのGPUカード(ID)を共有することは可能)そのため、1ノードで8GPUカードを利用する際には、MPIプロセスは8の倍数となります。
    2. nvidia-smiのGPU使用率
      GPU使用率は計算の進行によって変化します。MD冒頭のセットアップ等のGPUを使用しない計算部分では使用率は低い状態です。時間経過による使用率の変更はいかがでしょうか?
      #unix系ではwatch等のコマンドを利用されると良いかと思います。
      また、複数のカードを利用している際には、想定する使用カードの全てで使用率が低い状態なのでしょうか?
    3. 適切な計算が出来ない件
      これは、エネルギー等の計算値が正しくないという事でしょうか?
    4. コンパイルオプションの確認
      GENESISのログファイルの冒頭に、
      [STEP0] Architecture and Compiler Information
      という項目があります。そのログから以下の項目をご確認ください

      1. “nonbonding=”の項目でGPUが選ばれていること
      2. “CUDA =”の項目で適切なcudaライブラリが選ばれていること

    ご確認頂いた後、問題がありました場合は、ご提示頂きたい情報は以下となります。

    1. [STEP0]の部分
    2. [STEP2]の”Setup_Mpi_Md> “に示されるプロセス、スレッドの情報
    3. 適切なエネルギー計算が出来ていない場合は、[STEP4] のエネルギー値

    また、GPUを利用するスクリプトのテストとして、1GPUカードを利用するのも良いのではとも思います。

    よろしくお願いいたします。

     

  • #4922

    y-komuro
    Participant

    小林様

    ご回答ありがとうございます.

    1. MPIプロセス数とスレッド数→ 現在,1MPI, 1GPUカードでテストしております.

    2. nvidia-smiのGPU使用率→ 1nsのMDを行いましたが,計算中はずっと5~10%程度です.2GPUカードでもテストしてみましたが,使用した全てのカードでずっと5~10%程度でした.

    3. 適切な計算が出来ない件→ 「適切」とはGPUの使用率が100%にならないという意味で用いました.エネルギー計算等は問題ありません(Regressionテストはすべてクリア).誤解させてすみません.

    4. コンパイルオプションの確認→ nonbonding = GPU, CUDA = Cuda compilation tools, release 6.5, V6.5.12 となっております.

    念のためログファイルをお送りいたします.

    1. [STEP0]
    [STEP0] Architecture and Compiler Information

    GENESIS_Information> GENESIS Information
    version = 1.1.0
    commit ID = $GENESIS_VERSION$ 1.1.0 [2016-07-28 19:32:38 +0900]
    precision = single
    nonbonding = GPU

    Build_Information> Compiler Information
    build host = komuro@ECLS0751
    fortran = ifort (IFORT) 14.0.4 20140805
    option = -xHost -O3 -ip -mkl=parallel -assume byterecl -openmp
    C = icc (ICC) 14.0.4 20140805
    option = -O3 -ip -axCORE-AVX2 -openmp
    defined var. =
    -D_SINGLE -DMPI -DOMP -DFFTE -DLAPACK -DUSE_GPU -DCUDAGPU -DDSFMT_MEXP=19937 –
    DINTEL
    link option =
    -assume byterecl -openmp -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lmkl_la
    pack95_lp64 -L/usr/local/cuda-6.5/lib64 -lcudart -lstdc++
    CUDA = Cuda compilation tools, release 6.5, V6.5.12

    Runtime_Information> Machine and Library Information
    date = 2016/09/13 19:26:10
    cpu model = Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
    exec. host = komuro@ECLS0751
    LD library =
    /usr/local/cuda-6.5/lib64:/home/komuro/caddsoft/openmpi/openmpi-1.10.3/lib:/opt
    /intel/composer_xe_2013_sp1.4.211/compiler/lib/intel64:/opt/intel/composer_xe_2
    013_sp1.4.211/mpirt/lib/intel64:/opt/intel/composer_xe_2013_sp1.4.211/ipp/../co
    mpiler/lib/intel64:/opt/intel/composer_xe_2013_sp1.4.211/ipp/lib/intel64:/opt/i
    ntel/composer_xe_2013_sp1.4.211/compiler/lib/intel64:/opt/intel/composer_xe_201
    3_sp1.4.211/mkl/lib/intel64:/opt/intel/composer_xe_2013_sp1.4.211/tbb/lib/intel
    64/gcc4.4

    2. [STEP2]
    Setup_Mpi_Md> Summary of Setup MPI
    number of MPI processes = 1
    number of OpenMP threads = 8
    total number of CPU cores = 8

    以上です.お手数お掛けしますが宜しくお願いいたします.

  • #4923

    ckobayashi
    Moderator

    小室様

    STEP0の内容をご連絡いただき、ありがとうございました。

    こちらの環境でテストした所、x,y,z方向のドメイン数がそれぞれ2以下([BOUNDARY]セクションのdomain_[x,y,z]に対応する部分)では同様の問題が起きることが分かりました。
    今回の案件ではプロセス数が1ですのでdomain_[x,y,z]はすべて1となってしまうのが原因かと思います。
    この件に関しては現在対応中です。ご連絡いただいたことを感謝いたします。

    ただし、一般的にはGENESISでは1プロセス8スレッドより、8プロセス1スレッドの方が効率が良いと思います。テストとしては、8プロセス2スレッドで試していただけないでしょうか?

    よろしくお願いいたします。

You must be logged in to reply to this topic.