Dask jobqueue 作业因许可而被杀死

Dask jobqueue job killed due to permission

我正在尝试在我们的 HPC 系统上使用 Dask 作业队列。这是我使用的代码:

from dask_jobqueue import SLURMCluster
cluster = SLURMCluster(cores=2, memory='20GB', processes=1,
                       log_directory='logs',
                       death_timeout=6000, walltime='8:00:00',
                       shebang='#!/usr/bin/ bash')

cluster.scale(5)

from dask.distributed import Client
client = Client(cluster)

执行代码后,我可以使用squeue检查提交的作业,我可以看到其中5个处于运行 R状态。但工作在几秒钟后被杀死。在 .err 文件中,我发现了这条消息:

slurmstepd-midway2-0354: error: execve(): /tmp/slurmd/job10469239/slurm_script: Permission denied

我是 Dask 的新手,不确定哪里出了问题。任何想法将不胜感激!谢谢!

主要问题是 shebang 的规格不正确:

# ...
                       shebang='#!/usr/bin/env bash')
# ...

根据您的 SLURM 设置,您可能还需要指定 queue(适当的 SLURM 集群分区)。

以防日后出现问题,您可以检查dask_jobqueue提交的脚本使用:

print(cluster.job_script())