每个节点或每个工作线程是否存在广播变量?



>上下文:

  • 我们有大量的计算,它们都需要相同的大型不可变数据结构(矩阵(作为输入。
  • 为了使此数据结构跨节点可用,我使用以下方法广播矩阵:matrix_future = client.scatter(matrix, broadcast=True)并将matrix_future传递给计算图中需要它的延迟函数。这些功能在不同的节点上独立执行。
  • (为了这个问题(假设我们有 3 个计算节点:节点 1 运行调度程序,节点 2 和节点 3 各运行 10 个工作线程。

问题:

  • 在运行工作线程的计算节点(节点 2 和节点 3(上:广播数据结构是否在每个节点的内存中仅存在一次,或者每个工作线程中是否存在副本,因此节点内存中相同数据的 10 倍(每个工作线程 1 个(?
  • 如果它是共享的,它驻留在节点上的什么位置?是否有一些对象存储可以从工作线程访问?

提前谢谢。

数据将存在于每个 dask 工作进程中。 每个节点上将有十个副本。

Dask 工人完全独立运作。 他们不知道可能在同一节点上的其他工作线程。

相反,您可以考虑在具有十个线程的每个节点上创建一个 dask 工作线程。 这通常是正确的选择,尤其是在处理大型数值数据时。

相关内容

最新更新