首页 > 解决方案 > 根据内核扩展 CPU 小时数

问题描述

如果运行 48 核的作业需要 500 个 CPU 小时,那么在 20 核中运行它需要多少时间?如果我使用逆规则,那么我会根据以下内容找到 1200 小时:

500 hours * (48/20) cores = 1200 hours

假设线性缩放(这可能不是真的),对吗?

标签: algorithmtime-complexityruntimecpu

解决方案


这仅适用于完全并行的作业,但是大多数算法也具有不可并行化的部分和仅可并行化到某些有限线程数的部分。对于那些你的计算将是遥遥无期...

当您减少核心数量时,错误将导致比实际需要的时间更长。

如果您增加核心数量,则结果时间将小于真实时间。

除此之外,还有同步时间。通常,您拥有的内核越少,您的线程需要同步的频率就越高,这意味着更多的同步时间被添加到最终的作业时间中。然而,这通常被忽略,除非您的部分作业与内核数量相比太多或操作系统调度粒度太粗。

还有记忆方面。在同一台机器上,您拥有相同数量的内存。一旦减少使用的内核数量,他们就可以为部分工作使用更多内存,这可能会大大加快某些算法的速度。

因此,如您所见,为了更正确地估计,您需要更多地了解工作本身。


推荐阅读