我正在配置dask以在HPC集群上运行。我设置了一个客户机,如下所示:
首先修改~/.config/dask/*.yaml,然后运行如下代码:
from dask_jobqueue import SLURMCluster
cluster = SLURMCluster()
cluster.scale(100) # Start 100 workers in 100 jobs
from distributed import Client
client = Client(cluster)
print(cluster.job_script())结果的job_script如下所示:
#!/bin/bash
#!/usr/bin/env bash
#SBATCH -J dask-worker
#SBATCH -n 1
#SBATCH --cpus-per-task=1
#SBATCH --mem=1GB
#SBATCH -t 00:30:00
JOB_ID=${SLURM_JOB_ID%;*}
/path/to/python3 -m distributed.cli.dask_worker tcp://192.168.*.*:* --nthreads 1 --memory-limit 1000.00MB --name dask-worker--${JOB_ID}-- --death-timeout 60 --local-directory /scratch因此,脚本会立即启动python3,但是在启动python之前,我需要让它做一些事情,比如激活conda环境或python3。如何向job_script中添加一些预命令?
发布于 2019-05-15 11:56:42
我通过阅读dask_jobqueue/core.py的源代码获得了它,这是非常容易的。
在~/.config/dask/jobqueue.yaml中,编辑env-extra。列表中的每个字符串都作为命令添加到脚本中。例如,当使用
env-extra: ['cd foo', 'mkdir bar', 'cd bar', 'conda foo']job_script的出现是这样的:
#!/bin/bash
#!/usr/bin/env bash
#SBATCH -J dask-worker
#SBATCH -n 1
#SBATCH --cpus-per-task=1
#SBATCH --mem=1GB
#SBATCH -t 00:30:00
JOB_ID=${SLURM_JOB_ID%;*}
cd foo
mkdir bar
cd bar
conda foo
/path/to/python3 -m distributed.cli.dask_worker tcp://192.168.*.*:* --nthreads 1 --memory-limit 1000.00MB --name dask-worker--${JOB_ID}-- --death-timeout 60 --local-directory /scratchhttps://stackoverflow.com/questions/56148498
复制相似问题