誹謗することはとても新しいことです。 Linuxクラスタで複数のコアタスクを実行するためにslurmを取得するにはどうすればよいですか?

誹謗することはとても新しいことです。 Linuxクラスタで複数のコアタスクを実行するためにslurmを取得するにはどうすればよいですか?

私はいくつかの既存のプロセスを現在slurmで実行されている改善されたLinuxクラスターに移動しようとしました。私は終わったと思いましたが、今私の問題は複数のコアを実行しようとしていることです。

これは私の送信スクリプトです。

   #!/bin/bash
   #
   #SBATCH --job-name=test_mpi
   #SBATCH --output=res_mpi.txt
   #
   #SBATCH -n 4
   #SBATCH --time=10:00
   srun mkdir -p /tmp/tedhyu/new
  srun cp Ru13.in /tmp/tedhyu/new/lcao.in
  srun cp ~tedhyu/atom_pbe/* /tmp/tedhyu/new
  srun cd /tmp/tedhyu/new
  srun -N 1  -n 4 --chdir=/tmp/tedhyu/new  mpiexec ~tedhyu/bin/origin1_centos6.4_mpich2_quest_265c.x

「qstat -n」を実行すると、コアは1つだけ表示されます。

ジョブIDユーザー名キュー名SessID NDS TSKメモリー時間使用量S時間


11778 tedhyu atom test_mpi - 1 4 - 00:10 C 00:00
node3-5/4

以下は、1つのコアのみが実行されていることを示す出力の最初の数行です。

    srun: error: node3-5: tasks 0-3: Exited with exit code 1
     MPINFO::: Global Communicator        :::
     MPINFO::: Global Context = ****      :::
     MPINFO::: Global Size =       1      :::
     MPINFO::: Global Root =       0      :::
     MPINFO::: Global Rank =       0      :::
     DEV: VDW development version

グローバルサイズは4に等しくなければなりません。

誰もが正しい方向に私を指すことができれば...ありがとう!

答え1

スクリプトの最後の行にsrunを使用しないでください。実行可能ファイルを起動するには、mpirunまたはmpiexecを使用してください。

srunの機能:次のコマンドの$ SLURM_NTASKSインスタンス(各予約済みCPUコアに対して1つ)を起動します。これはしたくないので、mpiexecがタスクをCPUにフォークしたいと思います。たとえば、最後の行は次のようになります。

mpirun -np $SLURM_NTASKS ./myexecutable.exe

関連情報