python - 将一台设备上的计算时间转换为另一台设备的正确方法是什么?
问题描述
我正在为我的硕士论文研究用 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
解决方案
您应该做的是使用您假设的参数创建一个性能模型 - 处理器频率、DRAM 频率、SDD/HDD 读写速率、网络上/下带宽和延迟等 - 然后运行几种硬件配置. 获得数据后,您可以通过将模型拟合到结果来找到系数。如果您找到适合的参数,那么您可以使用它。否则,您可能需要调整模型。
例如,如果 CPU 频率为 X,DRAM 频率为 Y,SDD 读/写为 Z,没有网络或其他任何牵连,您的模型可能如下所示:
T(n) = (A/X +B/Y + CZ)n
我建议您每次迭代选择一个具有代表性的问题实例,固定 n,然后查看参数是否以及如何随 n 变化。祝你好运!
推荐阅读
- selenium - NUnit、Selenium、Selenium Grid 和 Specflow 之间的关系以及它们各自的作用/目的
- javascript - 我如何从 mongodb 数据库中获取所有文档?
- java - 如何从字符串中打印时间?
- http - 将字符串和 []byte 组合为有效负载
- django - [已解决]Nginx 不为 django App 提供静态文件
- c - 如何解释 (a==ca)++a;a+=(a)?3.55/2+'d'-'a':13.9; 在 C 中
- c# - 什么是 C# 中的属性访问器递归?
- c# - 如何使用字符串数组为datagridview中的每个页面获取数字流动的数字
- android - 使用按钮更改 SharedPreference 值
- ng2-smart-table - 对 ng2-smart-table 中数组对象的值进行排序