【问题标题】:Dask.distributed only uses one core per nodeDask.distributed 每个节点只使用一个核心
【发布时间】:2018-10-29 00:20:21
【问题描述】:

我有一个程序,其中每个任务都是通过 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 上运行得很好,所以我不太确定发生了什么,希望能提供一些帮助。

【问题讨论】:

  • 您找到解决方案了吗?我正在尝试使用 PBS 集群进行分发,但只能启动一项作业(具有多个节点)。 Dask 仅在一个节点上使用核心。我发布了here

标签: python dask slurm dask-distributed


【解决方案1】:

我建议查看仪表板以了解 Dask 一次在每个工作人员身上运行了多少任务:

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

如果您看到 Dask 只为每个工作人员运行一个任务,那么这可能是您设置工作人员的方式存在问题(您可能需要查看工作人员页面以了解 Dask 认为您已经要求)

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

【讨论】:

  • 并没有真正解决问题,但至少我对正在发生的事情有了更多的了解,我将打开一个新问题,提供更多细节,谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-08
  • 1970-01-01
相关资源
最近更新 更多