1999年底,上市不久的英伟达推出了一款开天辟地的新产品——GeForce 256,被称为世界上第一个GPU。
GPU的全称是Graphic Processing Unit,图形处理单元。在发明之初是为了承担计算机在进行图形渲染时的运算任务。
彼时的英伟达或许没有想到,25年后,自己能够登上全球市值第一的宝座,更不一定能想到,GPU给这个世界带来了翻天覆地的变化。
1999年英伟达发布GeForce(图片来源:NVIDIA)
时间倒退回1962年,MIT的校园内,博士生伊万·萨瑟兰带着SketchPad系统和自己的博士论文宣告了计算机图形学的横空出世。
伊万·萨瑟兰和SketchPad
随后的20年间,计算机图形学不断发展,在科研、工程、影视、游戏等行业结下累累硕果,但是随着要渲染的图形日趋复杂,其计算量越来越大,人们逐渐意识到仅靠CPU的计算能力已经难以支撑庞大的运算量。
最初计算机中的一切任务都是由CPU来进行运算的,CPU是一个十项全能选手,但是架不住活太多太杂,于是开始有人专门开发设备来为CPU“减负”,起初并没有GPU的概念,而是以面向专业领域的图形工作站和图形加速卡为主,但是这些产品与GPU相比都有各自的局限性。
真正让GeForce 256与众不同的是他支持硬件T&L引擎,T&L引擎实现了坐标转换和光源处理功能,这两部分以前是由CPU来负责计算的,工作量较大。当T&L引擎加入GPU后,极大地释放了CPU的运算压力,这一优势使得英伟达在当时已是一片红海的显卡市场中脱颖而出。
在后续的产品迭代中,各个显卡厂家在竞争中不断改良,不仅提升了产品性能,还降低了售价,使得昂贵的显卡逐渐走入寻常百姓家。
起初,GPU仅用于图形渲染,此功能是GPU的初衷,这一点从它的名字就可以看出。
作为计算机图形学的衍生品,工业软件厂商们很快嗅到了新技术的芬芳,如AutoCAD、SolidWorks等软件最早开始利用GPU进行图形渲染,提高三维模型的实时可视化效果和渲染速度。
SolidWorks图形渲染(图片来源:SolidWorks官网)
后来,人们发现GPU这么一个强大的器件只用于图形处理太浪费了,它应该用来做更多的工作,例如浮点运算。浮点运算是现代计算技术的一个重要支柱,它在科学计算、工程设计、人工智能等多个领域发挥着关键作用。但是由于GPU的API都是为图形处理设计的,无法用于通用的计算,所以研究者们就把计算任务做一些处理,包装成图形渲染任务交给GPU计算。
这就诞生了通用计算GPGPU(General Purpose GPU)的概念。
不过这样做有一个缺点,就是你必须有一定的图形学知识,否则你不知道如何包装。于是,为了让不懂图形学知识的人也能体验到GPU运算的强大,英伟达公司又提出了CUDA的概念。
CUDA,通用并行计算架构
CUDA(Compute Unified Device Architecture),通用并行计算架构,是一种运算平台。CUDA使开发者可以使用C语言扩展编写并行计算程序,极大地简化了GPU编程。
随着CUDA和OpenCL等通用计算架构的发展,开发者开始利用GPU的并行计算能力来加速数值求解和复杂计算任务,尤其对于CAE软件来说,GPU强大的计算能力就像一块诱人的蛋糕。不过大多数主流CAE软件的年纪都比GPU大,很多经典的CFD、FEA等算法都是基于CPU串行计算而设计的,当GPU的时代到来时,不同的CAE软件厂商采取了不同的应对策略。
很多老牌仿真软件进行技术改造,以适配GPU的并行架构。
如西门子的STAR-CCM+,在2022年初发布了首个支持GPU的版本,专注于车辆外部空气动力学应用。达索的非线性有限元分析软件Abaqus、电磁仿真软件 CST Studio Suite 、Altair的前处理软件Hypermesh、离散元软件EDEM等也都相继面向GPU进行了优化,计算性能均有几十倍的提升。
除了对已有产品进行改造外,还有的厂商直接针对GPU从头设计开发软件。
例如Ansys 面向GPU从头开始设计了其仿真驱动型设计工具Discovery,Discovery基于GPU计算实现了实时仿真,使得设计师可以在早期评估设计概念,并进行设计迭代和分析,让仿真前置成为了可能。
Ansys Discovery(图片来源:Ansys)
Hexagon的生成式设计软件 MSC Apex Generative Design 也在一开始就借助NVIDIA CUDA框架开发,原生支持GPU,启用GPU加速拓扑结构生成。
Hexagon 使用 GPU 从头开始构建其产品MSC Apex Generative Design (图片来源:Hexagon)
除国外商软外,国内的工业软件团队也有人选择了从头设计这条路,比如云境智仿的云端CAE产品Simversus,在软件架构初期时就考虑到对于GPU的适配性,在仿真流程的每个环节都支持GPU计算。
Simversus支持选择GPU或CPU进行计算
除了这些案例外,还已经有国内外上百个CAE软件厂商的CAE应用通过GPU进行加速,根据应用和工作负载不同,结果的交付速度最高可提升100倍。
攻下图形渲染和求解计算两块山头,GPU对于仿真软件的帮助似乎已经功德圆满,但是还有一个重要的阶段不应被遗忘:前处理
前处理包括几何修复、网格剖分、材料属性定义和设置边界条件等环节,其中网格剖分占到仿真前处理时间的30%到70%。对于特别复杂或大规模的模型,甚至达到整个仿真流程时间的一半以上。
在实际工作中,仿真工程师通常先使用CAE软件的自动网格划分功能生成初步网格,同时,使用网格质量检查工具,检查生成的网格是否符合仿真精度和稳定性的要求,然后对关键区域进行手动或半自动的细化和调整,以确保网格质量满足仿真要求。
网格质量检测
随着科技水平的提高,仿真任务日趋复杂,工程人员对于仿真精度和可靠性的要求也越来越高。用一个简单但未必严谨的逻辑来讲,模型的网格密度越高,计算结果越趋近于真实状态。
为了在有限的算力下保障计算精度,仿真工程师们发挥聪明才智,研究出模型简化、分区划分、局部细化等诸多技巧,但是在日趋复杂的模型面前这只是权宜之计。
增加计算能力才是从根本上解决问题的途径,应用GPU便是从算力侧来解决这一问题,和传统求解算法一样,经典的网格剖分算法也是针对CPU的串行计算而设计的,因此要使用GPU,必须对传统网格剖分算法进行适配改造。
如下图,经测试,当使用相同成本的CPU和GPU进行同一模型的网格剖分时,GPU的耗时明显低于CPU,且模型越复杂、网格单元数量越大,这一差距越明显。
CPU和GPU网格剖分对比1
CPU和GPU网格剖分对比2
如下图,3000万级网格模型通过GPU并行剖分只需要几分钟即可完成,而使用同样成本的CPU计算需要1小时左右。
3000万级网格分钟级剖分
智能求解器计算案例对比
从CPU到GPU的转型不仅是技术的演进,更是工业软件行业思维模式的重大变革。如何在新的技术环境下,重新审视我们的产品,利用新的技术解决用户面临的诸多挑战,为用户创造更多价值,是每一位工业软件从业者应该思考的问题。
你对于新技术在工业软件中的应用有什么疑问或者独特的见解吗?欢迎评论区留言,让我们一起探讨!