Dask.distributed仅为每个节点使用一个核心

时间:2018-05-18 14:17:24

标签: python dask slurm dask-distributed

我有一个程序,其中每个任务都是通过subprocess.Popen调用C ++外部程序。任务以图形形式排列,所有内容都通过dask get命令执行。

我有一个这个程序的单节点版本,可以与dask.threaded一起使用,我正在尝试将此版本扩展到分布式设置。我的目标是在Slurm集群上运行它,但是我在部署工作程序时遇到了麻烦。当我运行以下内容时:

screen -d -m dask-scheduler --scheduler-file scheduler.json
screen -d -m srun dask-worker --scheduler-file scheduler.json
python3 myscript.py

每个节点只使用一个核心(每个节点20个核心)。

我确实怀疑GIL存在一些问题,但脚本与dask.threaded的效果很好,所以我不太清楚会发生什么,并且会得到一些帮助。

1 个答案:

答案 0 :(得分:1)

我建议查看仪表板,了解每个工作人员一次运行Dask的任务数量:

此处的文档:http://dask.pydata.org/en/latest/diagnostics-distributed.html

如果您发现Dask只为每个工作人员运行一个任务,那么您可能在设置工作人员时遇到问题(您可能需要查看工作页面以了解Dask认为您的工作情况要求)

如果您发现Dask正在同时为每个工作人员运行许多任务,那么这可能是您的功能问题。