|
|
51CTO旗下网站
|
|
移动端

2.2.3 哪里需要优化

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

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

【51CTO技术沙龙】10月27日,让我们共同探索AI场景化应用实现之道

2.2.3 哪里需要优化

PDE有很多种类并且离散化,积分的数值方法各种各样。对于一个给定的问题,有许多方式可得到这个问题的解。在不同情况下有些方法在特定问题上或者在架构上优于其他方法。

Godunov方法既不是stencil方法(尽管很类似于此),也不能通过对偶线性系统表征,对偶线性系统可借助Krylov子空间方法得以求解特征。这意味着关于其他技术的先入为主观念不太可能。

显式stencil代码的算术强度通常是非常低的——本质上,它是对每8字节(双精度)的数据读后的乘加操作。这使得它们对于快速内存带宽具有要求,除非使用了blocking/warefront方法。就像我们将要看到的,这段代码需要计算流量并且对一个Hydro2D的单元积分,它对于每个未知项维度有大量的积分操作,需要注意,每个操作都可能成为操作瓶颈。

隐式积分问题通常会导致大规模稀疏矩阵的出现,而且这些大规模稀疏矩阵一定要用迭代方式求解。很自然,这些方法需要很大的工作集;从直觉上,数学操作符的底层“支持”是全局性的。每个未知项都和所有的其他的未知项相耦合,这转化为计算至少需要在每次迭代中使用整个系统矩阵、右边项和未知项。作为一个双曲系统,Hydro2D中的基础操作几乎都是内在局部的,这对于减少工作集的规模有着巨大的意义。


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

51CTO读书频道二维码


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

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

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

读 书 +更多

Cisco CCNA 640-802题库

Cisco 640-802 Cisco Certified Network Associate (CCNA) Testinside CCNA 640-802 V14 最新题库与Testinside CCNA 640-802 Q&A 192 ...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊