【问题标题】:Scaling CPU hours based on cores根据内核扩展 CPU 小时数
【发布时间】:2021-10-29 15:58:03
【问题描述】:
如果运行 48 个内核的作业需要 500 个 CPU 小时,那么在 20 个内核中运行它需要多少时间?
如果我使用逆规则,那么我会根据以下情况找到 1200 小时:
500 hours * (48/20) cores = 1200 hours
假设线性缩放是否正确(这可能不是真的)?
【问题讨论】:
标签:
algorithm
time-complexity
runtime
cpu
【解决方案1】:
这仅适用于完全并行的作业,但是大多数算法也具有不可并行化的部分和仅可并行化到某些有限线程数的部分。对于那些你的计算将是遥遥无期...
当您减少内核数量时,错误将导致比实际需要的时间更大。
如果您增加内核数量,结果时间将小于实际时间。
除此之外,还有同步时间。通常,您拥有的内核越少,您的线程需要同步的频率就越高,这意味着更多的同步时间被添加到最终作业时间中。然而,这通常会被忽略,除非您的部分作业与内核数量相比太多或操作系统调度粒度太粗。
还有记忆方面。在同一台机器上,您拥有相同数量的内存。一旦减少使用的核心数量,他们就可以为部分作业使用更多内存,这可能会大大加快某些算法的速度。
如您所见,为了更准确地估计,您需要更多地了解工作本身。