我有一个程序,其中每个任务都是通过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
的效果很好,所以我不太清楚会发生什么,并且会得到一些帮助。
答案 0 :(得分:1)
我建议查看仪表板,了解每个工作人员一次运行Dask的任务数量:
此处的文档:http://dask.pydata.org/en/latest/diagnostics-distributed.html
如果您发现Dask只为每个工作人员运行一个任务,那么您可能在设置工作人员时遇到问题(您可能需要查看工作页面以了解Dask认为您的工作情况要求)
如果您发现Dask正在同时为每个工作人员运行许多任务,那么这可能是您的功能问题。