algorithm - 根据内核扩展 CPU 小时数
问题描述
如果运行 48 核的作业需要 500 个 CPU 小时,那么在 20 核中运行它需要多少时间?如果我使用逆规则,那么我会根据以下内容找到 1200 小时:
500 hours * (48/20) cores = 1200 hours
假设线性缩放(这可能不是真的),对吗?
解决方案
这仅适用于完全并行的作业,但是大多数算法也具有不可并行化的部分和仅可并行化到某些有限线程数的部分。对于那些你的计算将是遥遥无期...
当您减少核心数量时,错误将导致比实际需要的时间更长。
如果您增加核心数量,则结果时间将小于真实时间。
除此之外,还有同步时间。通常,您拥有的内核越少,您的线程需要同步的频率就越高,这意味着更多的同步时间被添加到最终的作业时间中。然而,这通常被忽略,除非您的部分作业与内核数量相比太多或操作系统调度粒度太粗。
还有记忆方面。在同一台机器上,您拥有相同数量的内存。一旦减少使用的内核数量,他们就可以为部分工作使用更多内存,这可能会大大加快某些算法的速度。
因此,如您所见,为了更正确地估计,您需要更多地了解工作本身。
推荐阅读
- bootstrap-4 - 为什么安装轮播后 Bootstrap 4 Navbar 崩溃不起作用?
- python - 在Windows中使用python根据时间戳将多个日志文件按排序顺序合并到单个日志文件中?
- c# - 在 ASP.NET HTTP 响应中设置 CORS 标头
- java - 使用 ArrayUtils 将包装类数组转换为原始数组
- android - Gradle 任务 assembleDebug 失败,退出代码为 -1
- .net - 如何在网页中查找元素的 xpath?
- amazon-web-services - 对等 AWS VPC 私有到 NAT
- .net - 如何更正 Episerver 插件中的返回视图
- javascript - javascript不和谐不区分大小写错误
- javascript - 使用角度中的选择选项过滤表