私は管理者ではなく、ロックされた構成になっている古いクラスターで作業しているため、問題が発生しています。システムは元の mpich を使用し、クラスター スクリプトは実行用に parallel::mpi を使用して Perl で記述されています。このモンテカルロ スクリプトは、実行する 5000 個のテスト ケースを生成し、クラスターで起動します。元のコードを調べたところ、約 500 (5000 ではなく) のテストが行われ、それらが 3 つのファイルにまとめられていました。ファイルは、一度に最大約 260 のファイルをクラスターに渡しました。システム管理者になぜプログラマーがこれを行ったのかを尋ねたところ、mpich(1) では一度に 260 を超えるジョブを送信できないためだとのことでした。それが mpich1 のものか、parallel::mpi のものかはわかりません。
そこで、Perl プログラムを書き直して、各ファイルが約 250 ケースの 19 ファイルを生成し、5000 ケースすべてを実行できるようにしました。私の質問は、通常、pbs_mpirun コマンドで実行および起動するファイルが 1 つあるということです。元のプログラムには、3 つの個別の起動 pbs ファイルがありました。これで 19 個になりました。それらすべてを同じファイルから起動できますか? mpirun コマンドの間にある種のスリープを入れる必要がありますか? クラスター キューの設定方法では、一度に 1 人のユーザーのみが同じキューで 1 つのジョブを実行できます。したがって、n64 をキューに入れるために複数の実行を起動するために起動した場合、一度に実行されるのは 1 つだけです。これは問題ありませんが、19 の実行を送信し、qstat リストを埋めて 1 つのモンテカルロを完了する必要はありません。に。
これはよくあることかもしれませんが、私は対処したことがないので、アドバイスをいただければ幸いです。以下は、最初の Perl クラスター ファイルを起動する私の PBS ファイルです。Perl クラスター ファイルは mpi_wokernode_1.pl - mpi_workernode_19.pl です。
#!/bin/sh
###Lines starting with "# " are comments, batch system configuration
###commands starting with "#PBS"
#PBS -l walltime= 12:00:00
#PBS -N MONTE
### Declare job non-rerunable
#PBS -r n
### Output files (overwritten in successive jobs)
#PBS -e system1:/filearea
#PBS -o system1:/filearea
### Return error and output on output stream
#PBS -j oe
### Queue name (small, medium, long, verylong)
#PBS -q n64@old_cluster
#PBS -l select=64:ncpus=1
#PBS -l place=free
##PBS -m e
#PBS -W group_list=groupa
cd /filearea
# Count all available processors
NPROCS=`grep -v "\#" $PBS_NODEFILE | wc -l`
pbs_mpirun mpi_workernode_1.pl
pbs_mpirun mpi_workernode_2.pl