jke*_*eys 7 optimization performance gpu cpu-speed moores-law
如果摩尔定律成立,并且CPU/GPU变得越来越快,那么软件(以及协会,您的软件开发人员)是否仍然会在您仍然需要优化代码的范围内突破界限?或者一个天真的因子解决方案是否足以满足您的代码(等)?
lav*_*nio 18
糟糕的代码总能克服CPU速度.
有一个很好的例子,请转到这个Coding Horror专栏,然后向下滚动到描述Programming Pearls一书的部分.转载的图表显示,对于某种算法,具有4.77MHz 8位处理器的TRS-80如何能够击败32位Alpha芯片.
加速的当前趋势是增加更多核心,因为使个别核心变得更快是困难的.因此总体速度上升,但线性任务并不总是有益.
"没有蛮力和无知无法克服的问题"并非总是如此.
Sho*_*og9 12
在所有程序员第一次编写最佳代码之前,总会有优化的地方.同时,真正的问题是:我们应该首先优化什么?
Ale*_*lli 10
摩尔定律谈到我们可以在芯片上装多少个晶体管 - 对于能够以越来越快的速度切换的晶体管,没有什么可说的.实际上,在过去的几年中,时钟速度或多或少停滞不前 - 我们只是不断变得越来越多"核心"(基本上是完整的CPU)每个芯片.要利用这一点需要并行化代码,所以如果你正在"天真地"编写,那么未来的神奇优化器将忙于在你的代码中发现隐藏的并行性,这样它就可以将它转移到多个核心(更现实地,对于在可预见的未来,你将不得不帮助你的编译器;-).
计算任务似乎分为大致两大类.
大多数问题都适合第一类.例如,实时3D光栅化.很长一段时间,这个问题是典型的消费电子产品所无法企及的.没有令人信服的3D游戏或其他程序可以在Apple上产生实时世界[].最终,技术赶上了,现在这个问题是可以实现的.类似的问题是蛋白质折叠的模拟.直到最近,才有可能将已知的肽序列转化为所得的蛋白质分子,但是现代硬件可以在几小时或几分钟的处理过程中实现.
但是有一些问题,它们本质上可以吸收所有可用的计算资源.其中大多数是动态物理模拟.显然它可以执行比如天气的计算模型.只要我们有电脑,我们就一直这样做.然而,这种复杂的系统受益于提高的准确性.在更精细的空间和时间分辨率下进行仿真可以逐位改进预测.但无论任何给定的模拟具有多大的准确性,都可以获得更高的准确性,并获得以下好处.
两种类型的问题都具有用于优化所有种类的非常重要的用途.第二种类型是相当明显的.如果进行模拟的程序稍微改进一点,那么它运行得更快一点,结果会更快或更准确.
不过,第一个是更微妙的.在一段时间内,没有任何优化是值得的,因为没有足够快的计算机存在.经过一段时间,优化有点毫无意义,因为运行它的硬件比所需的快很多倍.但是有一个狭窄的窗口,在这个窗口期间,最佳解决方案将在当前硬件上可接受地运行,但是不是最佳解决方案.在此期间,仔细考虑优化可能是首次上市的产品与之间的差异.
| 归档时间: |
|
| 查看次数: |
922 次 |
| 最近记录: |