gpt4 book ai didi

algorithm - 线程间负载均衡的启发式算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:31:53 25 4
gpt4 key购买 nike

我正在开发一个多线程程序,其中有许多工作线程执行长度不等的任务。我想对任务进行负载平衡,以确保它们完成大致相同的工作量。对于每个任务 Ti,我都有一个数字 ci,它提供了该任务所需工作量的一个很好的近似值。

我正在寻找一种高效的(O(N) N = 任务数或更好)的算法,在给定 ci 的值的情况下,该算法将“大致”提供良好的负载平衡。它不一定是最佳的,但我希望能够对结果分配的糟糕程度有一些理论上的限制。

有什么想法吗?

最佳答案

您想实现一个 work stealing algorithm .每个工作线程都有一个双端队列,新任务被添加到最小队列的底部。工作人员从自己队列的顶部移除任务(顶部/底部分离减少了争用),当工作人员没有更多工作要做时,它会从最大队列的底部窃取工作。它很简单,而且效果很好,我相信这就是微软.net4.0 附带的并行系统所基于的算法。

结果分配非常好,只有在整个系统中没有更多工作可用时,工作线程才会无事可做。

铌。如果你想拆开一些示例代码,我的 friend 为 C# 编写了一个工作窃取系统,你可以找到它 here

关于algorithm - 线程间负载均衡的启发式算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2447089/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com