Dask.distributed 每个节点只使用一个核心
Dask.distributed only uses one core per node
我有一个程序,其中每个任务都是通过 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
每个节点只使用一个核心(每个节点二十个核心)。
我确实怀疑 GIL 存在一些问题,但脚本与 dask.threaded
一起工作得很好,所以我不太确定发生了什么,希望能提供一些帮助。
我建议查看仪表板以了解 Dask 在每个工作人员上一次 运行 有多少任务:
此处的文档:http://dask.pydata.org/en/latest/diagnostics-distributed.html
如果您发现 Dask 每个工人只有 运行 一项任务,那么您设置工人的方式可能存在问题(您可能需要查看工人页面以了解Dask 认为你要求的是什么)
如果您发现 Dask 每个工作人员并发 运行 多个任务,那么这可能是您的功能有问题。
我有一个程序,其中每个任务都是通过 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
每个节点只使用一个核心(每个节点二十个核心)。
我确实怀疑 GIL 存在一些问题,但脚本与 dask.threaded
一起工作得很好,所以我不太确定发生了什么,希望能提供一些帮助。
我建议查看仪表板以了解 Dask 在每个工作人员上一次 运行 有多少任务:
此处的文档:http://dask.pydata.org/en/latest/diagnostics-distributed.html
如果您发现 Dask 每个工人只有 运行 一项任务,那么您设置工人的方式可能存在问题(您可能需要查看工人页面以了解Dask 认为你要求的是什么)
如果您发现 Dask 每个工作人员并发 运行 多个任务,那么这可能是您的功能有问题。