CST开启游戏卡加速,EM全波时域仿真简直爽到飞起

 CST开启游戏卡加速,EM全波时域仿真简直爽到飞起

等等,在介绍如何「爽到飞起」之前,关于文章标题里的一些关键词语老wu觉得可能需要解释一下。

文章标题里的EM是什么?EM是英文Electromagnetic 的简写,所以这篇文章的主题是关于如何利用GPU来加速 CST Studio Suite 全波电磁时域求解器的仿真运算,而且是,采用售价相对于专业级显卡来说更便宜的游戏级别显卡(虽然价格依然很贵),最重要的是,终于可以为了工作而买游戏卡啦 ( ̄▽ ̄)”

但是,为什么要进行全波电磁仿真呢?它与Pspice这类的电路仿真有什么不同?进行全波电磁仿真我真的需要买一张显卡吗?

老wu想先在ChatGPT的加持下简单解释一下什么是电磁仿真 ( ̄▽ ̄)”

19世纪时出现了当时最伟大的物理方程,也即麦克斯韦场方程组(Maxwell’s equations),它描述了电磁场的基本规律。该方程组包括了四个方程:描述电荷如何产生电场的高斯定律、论述磁单极子不存在的高斯磁定律、描述电流和时变电场怎样产生磁场的麦克斯韦-安培定律、描述时变磁场如何产生电场的法拉第感应定律。麦克斯韦场方程组的推导和研究对现代电磁场和电磁波的理论和应用产生了重要影响,也成为电磁学的基础。

虽然麦克斯韦场方程组能解释从亚原子尺度到银河系维度范围内的所有电磁现象,但麦克斯韦方程组是一组非常复杂的偏微分方程,涉及电场、磁场、电荷密度、电流密度等量,具有非常复杂的数学形式和物理含义,直接对麦克斯韦场方程组进行解析求解是非常困难的。

求解麦克斯韦方程组为什么那么困难?

ChatGPT 的回答如下:

  1. 方程的数学形式复杂,需要高级数学和物理学知识才能解决。例如麦克斯韦方程组中包含的偏微分方程、矢量微积分和狄利克雷-诺依曼边界条件等概念都需要高深的数学基础支持。

  2. 方程对准确的物理模型要求很高。电磁场和电荷、电流之间的相互作用非常复杂,需要精确的物理模型才能得到准确的解析解。

  3. 方程中的场量与时间、空间的关系非常复杂,需要对多个场量在时间和空间上进行各种计算和推导,非常繁琐。

  4. 麦克斯韦方程组的解通常需要通过数值模拟和计算机仿真来实现,而通常情况下,问题规模非常大,需要庞大的计算资源和高效的计算算法。

麦克斯韦方程完整描述了电磁场问题,但麦克斯韦方程只在非常简单的情况下才能够解析求解。为了解决实际问题,需要借助数学方法并依托计算机实现来找到近似解。在处理及寻找麦克斯韦方程组的解时,区分静电场、静磁场、准静态场和快速变化场等特定问题的分类被证明是有益的。所以根据所处理信号波长的不同,就有了各种不同的电磁算法。

电路算法

传统的电子学是以电路理论为中心发展起来的,电路是由各种元件组成网络,包括各种类型的无源和有源元件,如:逻辑门、晶体管、集成电路、电感器、电容器和电阻器等等。电气元件和网络的行为是根据各个端口和网络节点的电流和电压关系来评估的。组件和网络的定义、设计、测量、分析和表征都是通过这种关系来满足最终使用要求,采用频域SPICE和纯瞬态电路方程方法进行仿真。这类仿真的特性是无需三维实体模型、仿真速度快。

电气元件和网络的行为是根据各个端口和网络节点的电流和电压关系来评估的,也就是说,当端口内的电磁场对网格外其它部分没有影响或者影响可以忽略时,则可以考虑采用电路仿真。

文章上边提到的Pspice就是电路算法的仿真器,当然,CST Studio Suite 中也包含了电路仿真功能。

准静(Quasi-static)电磁算法

当频率较低,即可以忽略电磁场的有限传播速度时,通常可以将麦克斯韦方程组进行有意义的简化,从而显著减少计算量。在麦克斯韦方程组中分别可以忽略磁通变化率项和位移电流项项, 对应的麦克斯韦方程分别被称之为准静电(Electro-quasi-static)和准静磁(Magneto-quasi-static)。由此推导出的算法就被称之为准静电算法和准静磁算法。

准静电适用于低频(如工频)高低压电流的情形,如高压绝缘,而准静磁适用于低频大电流的情况,如电机、变压器等的仿真

全波电磁算法

全波电磁算法是一种求解麦克斯韦方程完整形式的数值方法,可以用于模拟电磁波在复杂介质中的传播。所有的全波电磁算法均需要对仿真区域进行体网格或面网格分割,将连续的物理问题离散化为有限个单元,这些单元之间通过公共边界联通。这些单元的数学描述方程组可以通过离散方式与边界条件相结合来求解,从而得到电磁波的场分布、传播方向和传播速度等物理量信息。

当电磁波传播区域的几何复杂度越高,求解麦克斯韦方程组的难度就会越大。此时,全波电磁算法通过对传输线、平面波、有限差分和有限元方法等数值方法的融合和拓展,大大提高了电磁波场分布、传输速度和传输方向等模拟结果的精度和准确度,这又划分为有限差分法 (FD) 、有限积分法 (FI)、传输线矩阵法 (TLM) 、有限元法 (FEM) 、边界元法 (BEM) 、 矩量法 (MoM) 和多层快速多极子法 (MLFMM) 等多种电磁全波算法。

有限差分法 (FD) 、有限积分法 (FI)、传输线矩阵法 (TLM) 是时域算法,有限元法 (FEM) 、边界元法 (BEM) 、 矩量法 (MoM) 和多层快速多极子法 (MLFMM) 属于频域算法。

工程上,通常认为在10M Hz以下可以使用准静理论,达到100M Hz时应使用全波算法,否则误差将逐渐增大。

如上图所示,CST 从静场到高频,从电小尺寸到电大尺寸,提供了各种各样的求解器,可根据仿真结构尺寸、频率特性,选择最佳的求解器。这些求解器可分为时域求解器和频域求解器两种。

CST中电磁全波仿真的时域求解器与频域求解器

时域求解器

CST中的时域求解器能够求解任何类型的 S 参数、天线和散射问题。求解器在预先定义好的端口用宽带信号对结构进行激厉。宽带激励使得您只需一次计算, 即可观察整个所需频段内的 S参数和不同频点的电磁场图。

时域求解器可以求解的领域比较广, 几乎涉及到天线、微波元件、信号完整性、电磁兼容、RCS (雷达反射截 面)等。

时域求解器适合于尺寸大、结构复制的模型,而且求解宽带问题时非常好用。

频域求解器

与时域求解器类似, 频域求解器的主要任务也是计算 S参数。由于每一个不同的频点需要一次新的仿真计算, 仿真时间就与频率点的个数成线性关系,除非使用特殊的方法来加快相应的频域求解器的仿真速度。

因此,当只需要计算少数频率采样点的参数时, 频域求解器是很快的。通过宽带扫频自适应地选择频率采样点来完成宽带 S参数的仿真, 可以最小化求解器的运行次数(例如:您想计算 20 个频率点的S参数参数, 由于自适应地选择频率点, 求解器可能只运行了 7 次, 其它频率点的S参数参量由插值或者其他算法得到)。

对于低频、网格数较少(例如: 50000 个 网格)的问题, 频域求解器比时域求解器更具有优越性。对于特定的问题, 如果能够使用直接求解器, 则仿真时间不会随着端口和模式数的增加而显著增加(当然, 这也依赖于机器的可用内存数)。

另外, 频域求解器对于强谐振结构也是很有用处的; 强谐振结构的标志是时域信号有很长的稳定时间(即时域信号要经过很长的时间才能衰减到稳定值)。电磁场监视器中, 一个给定频点的电磁场值可以在一次后处理中很快计算出来。

频域求解器适合较强谐振特性的结构和电小尺寸、低频段(数十 KHz)的仿真。

好了,开始进入EM全波时域仿真如何「爽到飞起」环节

也即,加快仿真的求解速度,( ̄▽ ̄)”

由于求解麦克斯韦方程组的复杂性,电磁仿真是一项非常耗费计算资源和时间的事情,因此,CST 也支持高性能计算HPC技术来加速仿真求解的计算,CST 支持的HPC模式有以下六种:

多CPU和多线程技术

多CPU包括了单个CPU内的多个物理核心Core以及同一块主板上多个CPU插座中的多块CPU,然后CST利用多线程技术,将求解计算分割成相应的多个部分,在多个CPU的多个物理核心Core上并行运行,以节省仿真时间。

注意,这里的多线程技术并不是英特尔所声称的 “超线程”,比如Intel的CPU,8核16线程,如果在 CST 求解器中使用这些虚拟内核会降低性能。因此,CST求解器将只使用物理处理器内核,而不使用虚拟内核,也即买CPU不要买超线程的CPU,或者超线程的CPU要在BIOS里把超线程功能禁用,否者会降低CST求解器的性能。

GPU加速

也即勾选「Hardware acceleration」GPU计算将被激活,GPU 卡主要是解决计算速度问题, 而不是内存不足问题;

Distributed Computing(DC) 是分布式计算方式。 将 N个独立的仿真任务分配到N台计算机上同时进行仿真。CST 支持以下三种 DC 模式: DCE:时域多端口分布并行 DCF:频域多频点分布并行 DCP:多参数扫描分布并行

MPI Computing 是并行计算方式, 可协同多个处理器执行同一仿真任务的计算。当一个仿真模型网格数量十分巨大(比如数十亿个Mesh ), MPI可以将网格分配给多个计算节点。该方式要求较高的Throughput和较低的Latency以及较高的稳定性和扩容性, 所以要连接Infiniband级别的网络装备。MPI与DC的不同之处在于, 它可以将相互不独立的计算任务分配给各个计算资源, 达到并行处理这些任务的目的。

MPI解决的核心问题是单台计算机内存不足问题, 尽管它也有提速功能;

GPU+MPI 这是当前最高效的并行模式, 可以同时解决计算速度和内存不足的问题

GPU+CPU 此时 CPU 与 GPU 同时参与计算, 这叫 “GPU+CPU in tandem” 模式。

注意,并不是所有的 CST 求解算法都支持GPU加速以及MPI并行计算,GPU属于单机加速的层面,而DC分布式计算方式和MPI并行计算需要多台计算机组成,其中MPI需要连接Infiniband级别的网络装备,而DC分布式计算对网络带宽的要求相对较低,千兆甚至百兆联网带宽即可满足要求。

通过上边的图示,我们会发现,高频时域算法更适合于采用GPU加速,而高频频域算法更适合于堆CPU和线程数。

CST 支持哪些GPU显卡加速

https://updates.cst.com/downloads/GPU_Computing_Guide_2023.pdf

老wu这里给出的链接是CST官方认证支持的显卡型号,支持NVIDIA 的GPU ,然后从 CST Studio Suite 2021版本也开始支持 AMD的GPU,不过支持AMD的求解器类型非常少,只有Transient HEX Solver (T-HEX-solver)这个可用。

而支持 NVIDIA GPU 的求解器就很多了,包括:

• Time Domain Solver (T-HEX-solver and TLM-solver)

• Integral Equation Solver (direct solver and MLFMM only)

      – GPUs with good double precision performance required

• Multilayer solver (M-solver)

     – GPUs with good double precision performance required

• Particle-In-Cell (PIC-solver)

     – Modulation of External Fields not supported – Open Boundaries not supported

• Electrostatic Particle-In-Cell (Es-PIC-solver)

     – Multi-GPU not supported

     – Field-dependent Particle Sources and Particle Interfaces not supported

     – Secondary Emission from Solids not supported

     – Monte-Carlo Collision Models: Excitation and Scattering not supported

     – Particle 2D and Current Density Monitors not supported

     – Sheet Transparency for Particles not supportedT

     – Particle Losses on Solids not supported

     – Periodic Boundary Conditions not supported

• Conjugate Heat Transfer Solver (CHT-solver)

• Asymptotic Solver (A-solver)

     – GPUs with good double precision performance required – On Windows TCC mode is required

所以,目前来说,首选的还得是NVIDIA家的GPU,( ̄▽ ̄)”

为什么 GPU 能够极大地提高仿真速度

这里的提速主要是针对时域电磁算法的。因为时域算法的蛙跳推进模式仅对大量存放在固定位置的数据进行完全相同的且是简单操作 (移位相加), 这正是 GPU 这类众核 SIMD 架构所进行的运算, 即 ALU 与内存的存取速度 (又称带宽) 直接决定了整个运算速度,显然 GPU 的内存带宽远比 CPU 要高。这是 GPU 在时域仿真中能够极大地提速的根源。

下图是使用 CST Studio Suite 2020 与 Intel Xeon E2676 相比的 GPU 加速性能:

可以看到,使用 CST Studio Suite 可以使用 GPU 显着加速电磁仿真,具体取决于所使用的模型和 GPU,有6-50倍的提升,收益还是很可观的,所以,如果使用全波时域求解器,GPU你值得拥有。

如何开启非专业显卡的支持?

CST 默认只支持 https://updates.cst.com/downloads/GPU_Computing_Guide_2023.pdf 这份文档内所罗列的GPU类型,都是专业级显卡,售价不菲。

但是,通过在Windows系统的环境变量里添加一条参数,也可以打开非专业显卡的支持,NVIDIA以及AMD的显卡都可以开启支持,只要可用显存大于4GB即可。

环境变量名为:CST_HWACC_ALLOW_UNVERIFIED_HARDWARE

值为:1

如图:

然后再在CST的求解器里勾选「Hardware acceleration」以启用GPU加速。

验证GPU加速是否开启成功

Windows的安装版本在CST的安装目录下有个名为「HWAccDiagnostics_AMD64.exe 」的应用程序可以检测是否安装有已受支持的GPU加速卡。

当然,如果你用的是游戏卡,即使已设置了环境变量CST_HWACC_ALLOW_UNVERIFIED_HARDWARE,这里是检测不到的。

可以通过Windows的「任务管理器」性能中的GPU选项查看CUDA的调用信息,以了解实时的GPU参与计算的情况。

仿真完成之后,也可以在CST 的message窗口里查看GPU参与仿真加速的报告信息。

CST中使用GPU加速的一些小建议

买专业级显卡or游戏级显卡?

下边是CST Studio Suite 2023 GPU Computing Guide 手册里给出的个专业级显卡的关键性能参数:

首先,专业级显卡的显存都很大,官方支持显卡中显存最小的是Quadro RTX 4000, 为8GB,显存最大的 Tesla H100 有 80GB,而当前的旗舰级游戏级显卡RTX 4090 的显存容量为24GB。

CST 时域求解器采用六面体网格,仿真所占用的内存与网格数目成线性关系,经验法则是 “可用内存容量除以100″,例如,一块拥有16GB显存的GPU将足以应付1.6亿个网格单元的仿真,网格数量超出显存容量后,将采用GPU与CPU协同仿真的模式,超出部分由CPU进行仿真运行,消耗主机的内存空间。

然后是显存带宽,老wu在文章上边为什么 GPU 能够极大地提高仿真速度小节已经提到,与单独的 CPU 计算相比,GPU 的高内存带宽和并行处理能力提供了显着的仿真加速。

专业级显卡的显存带宽都比较高,游戏级显卡砍显存带宽则是老黄的刀法精髓所在,RTX 4090 的显存带宽为1008 GB/s,而甜点级的RTX 4060 Ti的显存带宽直接砍到了288GB/s,而12GB版的RTX 3060的显存带宽则有360GB/s,RTX 3060 Ti 的显存带宽有448GB/s。

最重要的 单精度(FP32)和 双精度(FP64)性能方面,需要注意的是游戏卡的FP64算力砍得非常狠,最新Ada Lovelace 架构的游戏卡GPU的 FP64 性能是 FP32 性能的 1/64。

FP32 性能方面,RTX 40系列游戏卡的参数比较彪悍,RTX 4090 的 FP32 为 83 TFLOPs,RTX 4060 Ti 的 FP32 为 22 TFLOPS,12GB版的RTX 3060 的 FP32 为 12.74 TFLOPS。

RTX 4090 的 FP64 性能只有FP32性能的1/64,也就是1.29TFLOPS,而 CST 中的 Integral Equation Solver、Multilayer solver、Asymptotic Solver 这几类求解器都需要FP64的支持,对于求解器,游戏卡的加速性能将受到非常大的影响,而 CST 的高频时域求解器 Time Domain Solver (T-HEX-solver and TLM-solver) 才是拥有不错FP32性能的游戏显卡发挥战力的地方。

参考资料

  1.  CST Studio Suite R 2023 GPU Computing Guide
  2. https://www.inceptra.com/how-computer-hardware-impacts-cst-electromagnetic-simulation-speed/
  3.  ChatGPT
吴川斌

吴川斌

2 Comments

Leave a Reply