第 5 章家庭作业:5.18~5.19

第 5 章家庭作业:5.18~5.19

家庭作业 5.18(★★)在练习题 5.5 和 5.6 中我们考虑了多项式求值的任务,既有直接求值,也有用 Horner 方法求值。试着用我们讲过的优化技术写出这个函数更快的版本,这些技术包括循环展开、并行累积和重新结合。你会发现有很多不同的方法可以将 Horner 方法和直接求值与这些优化技术混合起来。

理想状况下,你能达到的 CPE 应该接近于你的机器的吞吐量界限。我们的最佳版本在参考机上能使 CPE 达到 1.07。

家庭作业 5.19(★★)在练习题 5.12 中,我们能够把前置和计算的 CPE 减少到 3.00,这是由该机器上浮点加法的延迟决定的。简单的循环展开没有改进什么。

使用循环展开和重新结合的组合,写出求前置和的代码,能够得到一个小于你机器上浮点加法延迟的 CPE。要达到这个目标,实际上需要增加执行的加法次数。例如,我们使用 2 次循环展开的版本每次迭代需要 3 个加法,而使用 4 次循环展开的版本需要 5 个。在参考机上,我们的最佳实现能达到 CPE 为 1.67。

确定你的机器的吞吐量和延迟界限是如何限制前置和操作所能达到的最小 CPE 的。