我编写了一个需要两个参数的 python 脚本,当我在命令行上运行它时,它运行得很好:
pythonscript.py arg1 arg2
我需要在 SLURM 批处理脚本中运行它,但每当我这样做时,我都会收到“非法指令”错误和核心转储。这是我正在使用的脚本的示例:
#!/bin/bash
# Set your minimum acceptable walltime, format: day-hours:minutes:seconds
#SBATCH --time=0-00:30:00
# Set name of job shown in squeue
#SBATCH --job-name pythonscript
# Request CPU resources
#SBATCH --ntasks=1
#SBATCH --ntasks-per-node=1
#SBATCH --cpus-per-task=1
# Memory usage (MB)
#SBATCH --mem-per-cpu=3000
# Use modules to set the software environment
module purge
module load python/2.7.8-gcc
pythonscript.py arg1 arg2
Run Code Online (Sandbox Code Playgroud)
我花了很多时间试图找出导致核心转储的确切原因,这就是我缩小范围的原因。仅当从批处理脚本运行时并且仅当我尝试使用参数运行脚本时,它才会崩溃。当我将其修改为不带参数运行时,它运行正常。谁能告诉我如何在 SLURM 脚本中将这些参数传递给我的 python 脚本?
这似乎是一个愚蠢的问题,但是 pythonscript.py 可执行吗?
你也尝试过
python pythonscript.py arg1 arg2
Run Code Online (Sandbox Code Playgroud)
或者,您也许可以更改
#!/bin/bash
Run Code Online (Sandbox Code Playgroud)
到
#!/bin/python
Run Code Online (Sandbox Code Playgroud)
或您要使用的 python 版本的适当路径。