如何编写一个 shell 脚本来排队并提交给定的计算(在 fortran 中)指向节点?

问题描述 投票:0回答:1

我有一个 Fortran 代码(运行良好),我需要提交队列并将其定向到节点。

我手动编译了 Fortran 代码。 .bash 代码给出以下错误:

n19
1
           2
        2022

Program received signal SIGSEGV: Segmentation fault - invalid memory reference.

Backtrace for this error:
#0  0x2b22acff33ff in ???
#1  0x403fec in ???
#2  0x4051cb in ???
#3  0x2b22acfdf554 in ???
#4  0x400c78 in ???
#5  0xffffffffffffffff in ???
srun: error: n19: task 0: Segmentation fault
Job end at Sat Mar  4 02:55:14 -03 2023

这是我的 .bash 代码:

#!/bin/bash
#SBATCH --job-name=calculos
#SBATCH --partition=cempa
#SBATCH --nodes=1
#SBATCH --tasks-per-node=48
#SBATCH --ntasks=1
#SBATCH --time=10:00:00
#SBATCH --error=error_output_sbatch_%j.txt
#SBATCH --output=error_output_sbatch_%j.txt
#SBATCH --exclusive

echo "Job start at $(date)"

module unload openmpi3
module load gnu8


ulimit -l unlimited

#Exibe os nós alocados para o Job
echo $SLURM_JOB_NODELIST
echo $SLURM_JOB_NUM_NODES

# Operations
#export OMP_NUM_THREADS=1
#EXEC=./calculos_jan.x
#mpirun -np 1 $EXEC -f teste &> output
srun ./calculos_jan.x
echo "Job end at $(date)"
exit

    

bash shell slurm hpc
1个回答
2
投票

我没有看到任何实际使用可执行文件的命令。你正在用可执行文件的路径定义一个变量

EXEC
,但你不会在任何地方执行它。

要么执行它而不是定义变量,要么在定义它之后执行

$EXEC

© www.soinside.com 2019 - 2024. All rights reserved.