首页/文章/ 详情

一篇文章入门HPC(高性能计算)

2年前浏览2419

“如果你的仿真还没有受到硬件限制,说明你的仿真还没有入门”

               

对于仿真工程师来讲,最痛苦事情莫过于等待求解器计算。实际工程中稍微上规模的案例计算时间短则几小时,长则几天甚至更长。在这个过程中如果出现问题,还要找到原因排除问题重新计算(比如内存不够,可能造成程序退出,也可能和硬盘交换内存性能下降,再比如常见的网格质量差计算不收敛)。工程师都希望用最快的机器进行计算。


这也从某种程度上说明了为什么主流的仿真工具就那么几个:仿真的首要问题是稳定和精度,而这种稳定性和高精度只能通过长期的用户迭代和技术积累实现。


本文从硬件,软件以及开发三个方面来介绍仿真HPC

(High Performance Compuing)


硬件

2020年一开始,COVID-19新冠状病毒肆虐全球,夺走无数人的生命。加速药物和疫苗研发成为全球研究人员当务之急。而开发新药物和疫苗,依赖于海量数据的筛选计算,涉及到分子动力学的大规模计算和评估,这些计算无法短时间内在PC机上完成,只能依赖高并发,高共享的集群式HPC硬件。包括阿里云,腾讯云在内的国内厂商提供了开放式的云端硬件计算平台。


区别于一般的PC机器,仿真用HPC硬件重点在于处理计算海量数据,因此并不单单追求单核计算性能,而是包括共享内存,CPU调度,资源分配,网络吞吐,硬盘读写性能,数据存储等综合考量。


以我国神威·太湖之光为例,该超级计算机由40个运算机柜和8个网络机柜组成。每个运算机柜比家用的双门冰箱略大,4块由32块运算插件组成的超节点分布其中。每个插件由4个运算节点板组成,一个运算节点板又含2块“申威26010”高性能处理器。一台机柜就有1024块处理器,整台“神威·太湖之光”共有40960块处理器。每个单个处理器有260个核心,主板为双节点设计,每个CPU固化的板载内存为32GBDDR3-2133。


HPC硬件并不是简单的数字加法,对于用户而言,需要综合考虑各个因素,在评估经济性的前提下做出最佳选择。


软件

目前的HPC软件,主要是用来协调计算机硬件资源,包括CPU,内存,IO,集群等。以CPU为例,普通PC好的CPU只在几十核,资源调度以多进程,线程为主。服务器,集群则涉及到多台计算之间资源调度。而对于类似超算机器,核心可能有几百万,几千万,普通的资源调度算法本身可能也需要资源调度。


当一个有海量数据的任务交给HPC处理时,会遇到如下问题:该任务有多少比例可以分解单独分别执行,可单独执行的任务时间是否均匀,单个任务放在单独机器上内存是否足够,磁盘读写性能是否能同步,网络带宽是否会成为瓶颈等等,当所有问题放在一起考虑的时候,HPC就不可避免的成为一个系统工程。数据计算量越大,硬件越多,系统就越复杂。找到一个合适业务的HPC模式并不是容易的事,尤其是受限于硬件资源,很多HPC更多的依赖经验或者少考虑效率。所有这些操作需要好的软件来控制。


MPI (Message passing interface),MPI是一个标准,用来定义数据交换标准,目前常用实现有两个:

OpenMPI 

MPICH---全球十台超级计算机中有9台使用MPICH


针对HPC的软件研发

有限元计算中,稍大的模型自由度通常可以达到十万/百万。2004年,ANSYS求解出了自由度1亿的模型,2008年ANSYS 求解出了自由度为10亿的模型。千万单元自由度问题,任何一本有限元书籍上的实例代码,在普通PC机上都算不出来。针对大模型,传统的计算方法不再适用。


HPC可以加速计算,但不能解决所有算法带来的性能问题。以有限元方法为例,对于1亿自由度的问题,如果不使用稀疏矩阵而按照满秩矩阵传统方法求解,其算法复杂度和时间复杂度都是一亿的三次方,即使用”太湖之光”也要按小时来算,而且还没有考虑内存是否能装下所有数据。


HPC并不把单一的硬件性能作为评价指标,因此HPC的最大特点在于通过合理增加硬件数量,提升并行性。所以软件开发的目标就是:1.对于算法本身降低计算资源;2.尽可能将计算分解成独立的任务。


1.GPU开发

GPU 说简单就是利用显卡以加速计算,GPU是发展较快的一个方向。目前很多商业求解器都支持GPU加速,目前的做法是把逻辑性较强的业务放在CPU,而把纯运算部分放在GPU上,Navida公司提供了专门的GPU计算语言CUDA。主流的仿真软件诸如Marc,Nastran,Abaqus,ANSYS,LSDYNA,Fluent,StarCD,FEKO,Moldflow等等都支持GPU计算。


2. OpenMP

OpenMP是一个编译器指令和库函数的集 合,主要是为共享式存储计算机上的并行程序设计使用。简单实用,可以快速上手。


3. OpenACC

OpenACC是一个可利用CPU/GPU 加速器编程标准 。OpenACC 类似于 OpenMP,通过简单的编译指令即可实现,但需要安装支持的编译器,目前貌似没有可用于商业开发的免费版本。


4. OpenCL

OpenCL是一种标准化,跨平台,基于C语言的并行计算API,简单讲OpenCL是一种可以实现跨平台,利用CPU/GPU的程序接口


随着硬件成本的不断下降以及云技术的不断成熟,许多云厂商将商业仿真软件安装在云端HPC服务器上,按照资源使用时间收费;有些提供专业软件,可以在本地进行建模,提交任务到远程HPC机器;还有些直接提供web端工具,将建模,仿真,计算数据等所有资源云端化。所有这些可以帮助用户避免购买昂贵的硬件,大幅降低仿真成本。


图片


理论科普
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2022-01-26
最近编辑:2年前
多物理场仿真技术
www.cae-sim.com
获赞 126粉丝 316文章 220课程 0
点赞
收藏
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈