私はいくつかの既存のプロセスを現在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