【问题标题】:What is the right way to translate the computation time on one device to another?将一台设备上的计算时间转换为另一台设备的正确方法是什么?
【发布时间】:2020-02-15 03:50:10
【问题描述】:

我正在为我的硕士论文研究一个用 python 编写的遗传算法。相关公司希望计算时间不超过 1 分钟。 GA 将在 Windows 平板电脑上实施。 GA 的开发是在 2013 款 MacBook Air 上完成的。为了评估,我想在 AWS/AZURE/.. 上针对不同的参数设置和各种情况运行 GA 100 次。是否有像 CPU 速度/teraflops/...这样的度量来将我的 Macbook 或云服务的计算时间转换为 Windows 平板电脑上计算时间的近似值。当然,其他方法也值得赞赏。

我知道计算机很复杂,很多方面都会影响计算时间。我认为最简化的解决方案可能是这样的:

COMPUTATION_TIME_ON_MACBOOK = 50. #In seconds
SOME_SPEED_MEASURE_OF_MACBOOK = 600
SOME_SPEED_MEASURE_OF_WINDOWS_TABLET = 400

COMPUATION_TIME_ON_WINDOWS_TABLET = COMPUTATION_TIME_ON_MACBOOK * SOME_SPEED_MEASURE_OF_MACBOOK / SOME_SPEED_MEASURE_OF_WINDOWS_TABLET

print(COMPUATION_TIME_ON_WINDOWS_TABLET)
75 #An approximation of the computation time on the windows tablet in seconds

【问题讨论】:

  • 不可能有一个简单的计算可​​以保证有效。即使在同一台计算机上,处理速度也会根据各种其他因素而改变。我觉得这个限制的重点是你把精力放在优化上,在合适的时机把脚本剪掉,看看能和别人比的结果
  • @OferSadan 特别是因为 GA 几乎可以永远运行,并且基本上在任何时间点都会被切断。这个问题仍然有些有价值,因为 OP 可能想要估计如果运行 X 时间 GA 的结果会有多好。

标签: python computer-science computation-theory


【解决方案1】:

您应该做的是使用您假设的参数创建一个性能模型 - 处理器频率、DRAM 频率、SDD/HDD 读写速率、网络上/下带宽和延迟等 - 然后运行几种硬件配置。获得数据后,您可以通过将模型拟合到结果来找到系数。如果您找到合适的参数,那么您可以使用它。否则,您可能需要调整模型。

例如,如果 CPU 频率为 X,DRAM 频率为 Y,SDD 读/写为 Z,没有网络或其他任何牵连,您的模型可能如下:

T(n) = (A/X +B/Y + CZ)n

我建议您在每次迭代中选择一个具有代表性的问题实例,固定 n,然后查看参数是否以及如何随 n 变化。祝你好运!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-31
    • 2020-12-05
    • 1970-01-01
    • 2021-11-03
    • 2020-09-06
    • 1970-01-01
    相关资源
    最近更新 更多