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

2.1 现代计算机上的科学计算

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

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

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

第2章 从正确到正确&高效:Godunov格式的Hydro2D案例学习

Jason D. Sewall*, Guillaume Colin de Verdière?

*美国,Intel公司;?法国,CEA

在计算机上高效模拟物理过程是个相当复杂的过程。一方面现实的物理现象非常微妙且复杂,另一方面现代计算机系统又非常繁杂。同时,即使是高效模拟非常相似的物理现象,随着细节的增加和计算环境的变化,模拟问题的复杂程度也会随着增大,如模拟海洋中的波浪运动和摩托艇产生的波浪。

性能是现在计算所关注的焦点,而并行性是这些焦点中的特性之一。因此在这些现代系统上实现物理过程的高效模拟必须考虑这些性能特点。

本章将探讨一段科学模拟代码,这段代码是一个以气体动力学为基础的模拟程序。这份程序的输出结果正确,但(初始版本)性能欠佳。通过分析代码的实现并介绍代码映射到现代架构的方式,我们将看到它的性能将如何显著提升。

2.1 现代计算机上的科学计算

在电子计算机出现前,数值分析与求知欲一直是计算机发展的动力。从古代的算盘到纳皮尔筹,再到差分机和分析机,人们逐渐认识到使用大量的运算几乎可以描述我们周围的一切事物,这种思想推动了进行快速、可靠、精确计算的技术与设备的发展。

现代世界的科学计算在大型计算机领域的发展中发挥着巨大作用。超级计算机就是为模拟天气、材料试验、探索宇宙而建造的。用于构建超级计算机、笔记本电脑甚至手机的芯片都是通过“处理数据”(该术语源自科学计算领域)的能力来评估自身。

科学计算能够持续地得以进化和发展,其部分原因是由于人们对规模更大、描述更详细的问题的求知欲。只要有足够的资源,化学家将非常乐意增加分子动力学模拟中原子的数量,海洋学家将使用更多的网格单元模拟海洋,天体物理学家肯定也在设想着使用更多星体的模型。宇宙可能是有限的,但科学计算量可能是无限大的。

正确性挑战。除计算工作需要大量的计算资源之外,保证数值计算工作的正确执行是所有数值计算研究人员的另一项挑战。由于数字运算是近似的,因此在将许多优美的抽象数学结构应用到离散环境时要格外谨慎,甚至在有些情况下,离散化应用某些公式是完全不适合的。

在进行科学计算的代码开发中需要足够的耐心并遵循大量规则以保证程序的正确性:这个数学模型是否能够合理地表述现象?数值是否稳定?是否能够正确地选择参数?代码实现是否正确?硬件是否可靠?

在某些情况中,质量较差的代码依然可能得出正确的结果,但是会出现比较好的代码执行慢、优化器难处理等情况。

定制的工具。软件开发者深知标准化工具(比如软件库)带来的好处,这些标准化的工具可以正确传递开发者的意图。然而,这些软件库必须定制。虽然LAPACK/BLAS是一个非常有用的工具,但是并非所有的代码(比如本章所用的代码)都适合调用这些软件库中的函数。

幸运的是,编译器(可能是最普遍使用的软件工具)技术一直随着硬件技术的发展而不断优化。因此这些优化后的编译器能够帮助程序员在不同架构特征的平台上正确执行某一部分代码,同时也能自动处理许多低层次细节,如应用向量指令以及对线程进行自动整理。


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

51CTO读书频道二维码


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

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

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

读 书 +更多

3D游戏开发大全(高级篇)

在我的第一本书——《3D游戏开发大全》中,我们曾经对3D游戏开发完成了一次犹如探索原始丛林般的旅程:首先,我们对3D游戏产业进行了初步了...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊