1

PBS キューイング システムを使用する複数の計算クラスタにコードを正常にインストールできましたが、SLURM キューイング システムを使用するクラスタにコードをインストールする際に大きな障害にぶつかりました。コードの大部分は正常に実行されますが、コードにはファイル名 (計算ごとに変更されます) を指定する必要があり、標準入力として受け取ることを想定しています。

      character*8 name
      read (5,'(a8)') name

そして、この標準入力を次の方法でクラスターに提供します。

srun_ps $1/$2.exe << EOD
$2
EOD

ここで、$1 は実行可能ファイルのパス、$2 はファイル名、srun_ps はクラスターで構築された mpi-exec スクリプトのようです。このコードは、私が PBS キューイング システムで使用したクラスターで正常に動作することに注意してください。

ただし、ここで得られるのは、「読み取り中のファイルの終わり、ユニット 5、ファイル stdin」エラーです。

また、ログイン サーバー (ジョブが送信される場所) のコマンド ラインで同様のコマンドを実行すると、次のようになります。

#helloworld.for
     charachter*5 name
     read(5,A5) name
     write(6,A5) name

コマンドライン:

ifort -o helloworld.exe helloworld.for
./helloworld.exe << EOD
hello
EOD

「こんにちは」の正しい出力を提供します。同じジョブをクラスターに送信すると、再び「ファイルの終わり」エラーが発生します。

完全なジョブ送信スクリプトは次のとおりです。

#!/bin/bash
#SBATCH -o /home/Simulation/file.job.o
#SBATCH -D /home/Simulation/
#SBATCH -J file.job
#SBATCH --clusters=mpp1
#SBATCH --get-user-env
#SBATCH --ntasks=12
#SBATCH --time=1:00:00
source /etc/profile.d/modules.sh
/home/script/runjob /home/Simulation/ file

runjob スクリプトの関連部分は次のとおりです (スクリプトの残りの部分は、関連する入力ファイルをコピーし、計算が完了した後にファイルをクリーンアップします)。

#!/bin/sh
time srun_ps $1/$2.exe << EOD
$2
EOD

これはおそらく完全に具体的な問題だと思いますが、アドバイスをいただければ幸いです。

デビッド。

4

1 に答える 1

2

のような行を追加してみてください。

#SBATCH -i filename

ジョブ送信スクリプトに、スクリプトを送信するときに展開されるfilename暗号マクロ (またはその他のもの) に置き換えます。または、これを次のようにコマンドに$3入れることもできますsrun

srun_ps $1/$2.exe EOD

しかし、スクリプト内で何が呼び出されるかについて、多少の混乱があることは認めます。

于 2013-01-10T12:53:36.727 に答える