>上下文:
- 我们有大量的计算,它们都需要相同的大型不可变数据结构(矩阵(作为输入。
- 为了使此数据结构跨节点可用,我使用以下方法广播矩阵:
matrix_future = client.scatter(matrix, broadcast=True)
并将matrix_future
传递给计算图中需要它的延迟函数。这些功能在不同的节点上独立执行。 - (为了这个问题(假设我们有 3 个计算节点:节点 1 运行调度程序,节点 2 和节点 3 各运行 10 个工作线程。
问题:
- 在运行工作线程的计算节点(节点 2 和节点 3(上:广播数据结构是否在每个节点的内存中仅存在一次,或者每个工作线程中是否存在副本,因此节点内存中相同数据的 10 倍(每个工作线程 1 个(?
- 如果它是共享的,它驻留在节点上的什么位置?是否有一些对象存储可以从工作线程访问?
提前谢谢。
数据将存在于每个 dask 工作进程中。 每个节点上将有十个副本。
Dask 工人完全独立运作。 他们不知道可能在同一节点上的其他工作线程。
相反,您可以考虑在具有十个线程的每个节点上创建一个 dask 工作线程。 这通常是正确的选择,尤其是在处理大型数值数据时。