【问题标题】:Cilk work stealing performanceCilk工作窃取性能
【发布时间】:2016-12-29 02:52:36
【问题描述】:

我正在阅读描述 Cilk 窃取调度性能的工作的论文。

1) 我的理解是调度程序不知道关键路径的任务,而只是试图在任何情况下通过窃取任务图中不“深”的任务来维持其执行。对吗?

2) 另外,Cilk 窃取调度程序的工作是否假设所有任务都具有相似的复杂性?如果任务在复杂性上不统一,是不是调度器在实现最佳性能即最佳负载平衡方面的灵活性会降低?

【问题讨论】:

    标签: scheduling multicore cilk work-stealing


    【解决方案1】:

    也许回答 (1) 的最佳方式是 Cilk 调度在窃取任务时是广度优先的,否则是深度优先的。

    (2) 的答案是 Cilk 任务调度程序忽略了任务的复杂性。

    要理解的一个关键原则是“布伦特引理”(格雷厄姆早先发现的)。引理表明(在 PRAM 假设下)给定一个贪婪的调度程序(如果有工作要做,绝不让工作人员空闲),那么绝对最佳可能的调度不超过最差可能的调度的 2 倍,不管怎样任务的复杂性是什么。

    2x 背后的直觉是,在执行期间,如果没有工作人员在关键路径上处理任务(咀嚼关键路径),那么每个工作人员都很忙(咀嚼总工作)。关键路径加上总工作量不能超过算法总工作量的两倍。

    PRAM 假设可能是与真实机器的最薄弱环节,其中缓存未命中的时间可能比缓存命中多 100 倍。因此,担心任务的复杂性不如考虑缓存重要。根据 Cilk 的使用方式,它在缓存(递归程序)或不好(背靠背的 cilk_for 循环)方面表现良好。

    【讨论】:

    • 感谢您的回答!我检查了 Brent 的引理,但是我不明白 2x 是如何提取的……我知道数据局部性对性能的影响更大,但是如果处理器不统一怎么办?那么在哪里执行某项任务并不重要吗?
    • 我在答案中添加了一段来解释 2x slimit。 courses.cs.vt.edu/cs5114/spring2010/notes0422.pdf 的幻灯片 16 和 17 更正式地推导出了 2x 限制。
    • 感谢它是有道理的。我想知道当我们对异构内核使用工作窃取时是否可以有相同的假设......
    • 对异构案例有何看法?
    • 2x 限制不适用于异构内核。例如,如果您有 1 KHz 内核和 1 GHz 内核,则第一个内核的窃取可能会损害性能。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-07
    • 1970-01-01
    • 1970-01-01
    • 2015-04-23
    • 1970-01-01
    相关资源
    最近更新 更多