SLURM job. NameError: name 'python3' is not defined

SLURM job. NameError: name 'python3' is not defined

一段时间以来,我一直在想办法 运行 在 slurm 上找到一份工作。

Python 用户目录中的版本:

$ python -V
Python 2.7.5
$ python3 -V
Python 3.6.8

test.py 包括:

import pandas as pd
import numpy as np
true = pd.read_csv("testfile.csv")
print('Just Testing. End for now.')

gpu.job 传递给 SLURM:

#!/usr/bin/python3

#SBATCH --job-name=testjob       # Job name
#SBATCH --output=job.%j.out      # Name of output file (%j expands to jobId)
#SBATCH --cpus-per-task=4        # Schedule one core
#SBATCH --gres=gpu               # Schedule a GPU
#SBATCH --time=71:59:59          # Run time (hh:mm:ss) - run for one hour max
#SBATCH --partition=red          # Run on either the Red or Brown queue
#SBATCH --mail-type=END          # Send an email when the job finishes
#SBATCH --export=ALL             # All of the users environment will be loaded from callers environment


python3 /home/username/test/test.py

在 运行ning sbatch gpu.job 之后,我得到:

Traceback (most recent call last):

File "/var/spool/slurm/d/job402350/slurm_script", line 13, in

python3 /home/username/test/test.py

NameError: name 'python3' is not defined ~

这些变体也没有帮助并给出相同的错误:

python3 test.py
/usr/bin/python3 test.py
/usr/bin/python3 /home/username/test/test.py

如有建议,将不胜感激。

您的提交脚本是 shell 脚本,而不是 Python 脚本。所以你的提交脚本的第一行应该是

#!/usr/bin/env bash

而不是

#!/usr/bin/python3

从技术上讲,您可以提交一个 Python 脚本的作业脚本,但是 #SBATCH 指令直接进入 Python 脚本,这就是您提交的脚本:

#!/usr/bin/python3

#SBATCH --job-name=testjob       # Job name
#SBATCH --output=job.%j.out      # Name of output file (%j expands to jobId)
#SBATCH --cpus-per-task=4        # Schedule one core
#SBATCH --gres=gpu               # Schedule a GPU
#SBATCH --time=71:59:59          # Run time (hh:mm:ss) - run for one hour max
#SBATCH --partition=red          # Run on either the Red or Brown queue
#SBATCH --mail-type=END          # Send an email when the job finishes
#SBATCH --export=ALL             # All of the users environment will be loaded from callers environment


import pandas as pd
import numpy as np
true = pd.read_csv("testfile.csv")
print('Just Testing. End for now.')

那么您可以直接sbatch这个Python脚本。但大多数情况下,首选使用 Bash 脚本来设置环境、更改目录、来回复制文件等,这在 Bash 中比在 Python 中更容易。