|
|
|
|
移动端

2.5.3 性能策略

《高性能并行珠玑:多核和众核编程方法》第2章从正确到正确&高效:Godunov格式的Hydro2D案例学习,本章将探讨一段科学模拟代码,这段代码是一个以气体动力学为基础的模拟程序。这份程序的输出结果正确,但(初始版本)性能欠佳。本节为大家介绍性能策略。

作者:张云泉 等译来源:机械工业出版社|2017-11-14 18:03

技术沙龙 | 6月30日与多位专家探讨技术高速发展下如何应对运维新挑战!


2.5.3 性能策略

科学家还有所有关注代码性能的编码者,都非常关注如何最小化优化程序所需要的改变和维护代价。在这个主题上,没有简单的答案——没有“银弹”。

当本章深入分析的时候,并不是旨在声称每个程序员是微体系结构的专家,或者他们熟悉目标处理器的微小结构。相反,我们希望通过有意识地忽略和简化硬件,显著改善效率,这样减少了有些处理器独有硬件特征对优化代码所带来的影响。

按照我们所描述算术优化,考虑如何在给定架构上执行等价的不同数学变换。这些变换经常有小范围的代码影响。

估计为了充分利用向量硬件,我们如何将“热”循环的数据访问结构化,就像我们对vstrip_stable和hstrip_stabl所做的那样。这些修饰经常可以把修改限制到很小的范围内。

考虑工作可以在核(明确地说是线程)间传递的可能方式;这关系到如何在代码中分化任务和分配它们的粒度。这可能在数据访问和存储上产生不同的方式,比如我们是如何使用“块”和“排序”的。

最终,考虑内存和内存架构的使用和布局。这将会引发一系列代码修改,也会带来与之相称的收获。我们考虑到旋转更新和块方法。

我们提供的最好的通用建议是恰当地应用一个模型,以查看代码对硬件上的运行情况和对其资源的利用情况,恰当应用的编译工具可以大大简化它的实现。写一份最简单的、无法识别硬件的代码,并使用事后自动优化并不会实现高效率。

我们希望我们能够向读者展示这些粗糙的原则如何应用到流行数值计算技术上,尽管当它们应用到其他代码时将会和我们在此展示的有极大不同,但我们相信,在代码编写的过程中考虑它们将会对极大地使得计算受益,同时有望减轻科学家-程序员的负担。


喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:365934973

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

用户体验要素

本书是AJAX之父的经典之作。本书用简洁的语言系统化地诠释了设计、技术和商业融合是最重要的发展趋势。全书共8章,包括关于用户体验以及为...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊