I have a code that I have successfully installed on several calculating clusters that use a PBS queuing system, however I have hit a substantial stumbling block in installing it onto a cluster using the SLURM queuing system. The bulk of the code runs fine, however the code needs to be provided with its filename (which changes with each calculation), and it expects to receive it as a standard input:
character*8 name
read (5,'(a8)') name
and I provide this standard input to the cluster by:
srun_ps $1/$2.exe << EOD
$2
EOD
where $1 is the path of the executable, and $2 is the filename and srun_ps seems to be the cluster built mpi-exec script. For note this bit of code works fine on the clusters I have used with a PBS queuing system.
However what I get out here is an “end-of-file during read, unit 5, file stdin” error.
Also if I run a similar command on the command line of the login server (where the jobs are submitted through):
#helloworld.for
charachter*5 name
read(5,A5) name
write(6,A5) name
command line:
ifort -o helloworld.exe helloworld.for
./helloworld.exe << EOD
hello
EOD
provides the correct output of “hello”. If I submit the same job to the cluster I again get an “end-of-file” error.
The full job submission script is:
#!/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
and relevant part of the runjob script is (the rest of the script is copying relevant input files, and file clean up after the calculation has completed):
#!/bin/sh
time srun_ps $1/$2.exe << EOD
$2
EOD
I realise this is probably an entirely too specific problem, but any advice would be appreciated.
David.
Try adding a line such as
to your job submission script, replacing
filenameby whatever cryptic macro ($3or whatever) will be expanded when you submit the script. Or, you might put this in yoursruncommand, something likebut I admit to some confusion about what gets called when in your scripts.