论文部分内容阅读
更高的准确度与计算效率一直是基于物理的仿真所追求的终极目标。近年来针对特定问题开发的高效算法和高速发展的计算能力共同推动了物理仿真的发展,然而实际应用中物理仿真所需求的计算资源和时间成本往往还是会超出预算。因而实践中不得不在速度和准确度之间做一定取舍,比如降低仿真规模、算法复杂程度等来换取更好的运行性能。与此同时,处理器速度与存储容量的增长推动着计算能力的爆炸式增长,而相比之下,时钟频率和存储访问的增速则远远落后。这种现状的形成原因包含了物理定律的制约、硬件成本等等,也催生出了用于特定类型计算任务的硬件。为了实现出适应不同硬件架构的高效率代码,往往要投入大量精力设计实现不同的算法和数据结构。
本文从优化思路、编程技术等角度总结了高效率代码设计实现的若干关键要素,并给出了一个高度可重用、可扩展的、适用于异构计算架构且支持数据结构和算法快速原型设计的代码框架,极大提升C++/CUDA环境下高性能物理仿真应用的研发效率。在此基础上,本文从计算机图形学领域内已广泛应用的基于伽辽金法的物理仿真所面临的若干实际问题出发,通过三个案例来阐释探索更优数值方法和优化代码实现的过程,包括了一套高效且鲁棒的物质点法隐式时间积分数值方法,相对原方法有显著的收敛性和速度提升。由于计算本质上高度数据并行化,物理仿真非常适合通过当下广泛应用的多核、众核架构进行计算。本文结合硬件的架构对CPU和GPU下的算法实现进行探讨,并以低延迟和高吞吐量为目标优化代码,给出高效率的实现。除了性能问题,物理仿真还面临存储容量的限制。为更加充分利用更多的计算资源,本文进一步将单GPU的算法扩展到适应多GPU,在4块GPU下达到近似线性的性能加速,且首次在8块GPU下运行突破亿级别规模的物质点法仿真。而且所采用的面向分布式存储系统的数据划分和通信的优化策略对于物质点法在高性能计算中的应用奠定了坚实基础。
本文从优化思路、编程技术等角度总结了高效率代码设计实现的若干关键要素,并给出了一个高度可重用、可扩展的、适用于异构计算架构且支持数据结构和算法快速原型设计的代码框架,极大提升C++/CUDA环境下高性能物理仿真应用的研发效率。在此基础上,本文从计算机图形学领域内已广泛应用的基于伽辽金法的物理仿真所面临的若干实际问题出发,通过三个案例来阐释探索更优数值方法和优化代码实现的过程,包括了一套高效且鲁棒的物质点法隐式时间积分数值方法,相对原方法有显著的收敛性和速度提升。由于计算本质上高度数据并行化,物理仿真非常适合通过当下广泛应用的多核、众核架构进行计算。本文结合硬件的架构对CPU和GPU下的算法实现进行探讨,并以低延迟和高吞吐量为目标优化代码,给出高效率的实现。除了性能问题,物理仿真还面临存储容量的限制。为更加充分利用更多的计算资源,本文进一步将单GPU的算法扩展到适应多GPU,在4块GPU下达到近似线性的性能加速,且首次在8块GPU下运行突破亿级别规模的物质点法仿真。而且所采用的面向分布式存储系统的数据划分和通信的优化策略对于物质点法在高性能计算中的应用奠定了坚实基础。