新闻动态

News Center

Lumerical案例 | 获得理想FDTD性能

发布日期:
2026-03-18

浏览次数:

引言

本文将介绍一些可用于提升仿真性能的简单策略。这些基本策略可能需要一些测试和预先思考,但它们简单易行,对于大规模任务、多参数扫描和各种优化方案都大有裨益。

注意本文内容仅适用于在CPU上运行的FDTD仿真。

Lumerical案例 | 获得理想FDTD性能

更高效的仿真

1.改进仿真设

这意味着通过调整网格大小(在确保得到合理结果的前提下尽可能增大Δx)、利用现有的对称性或减少监视器收集的数据量来降低仿真要求。这样做可以确保消除或至少大限度地减少不必要的操作。较为关键的考虑因素是能否降低仿真的空间和时间分辨率,因为算法的计算量如下:

Lumerical案例 | 获得理想FDTD性能

其中,D为维度,dx为网格尺寸,V为仿真体积。这些参数通常会根据最短波长和网格精度自动设置。降低最高频率、降低网格精度或缩小仿真体积都能提高性能,但必须权衡各种需求。进行收敛性测试,以找到合适的精度和性能平衡点。

如果能减少监视器收集的数据量(例如,移除一些监视器、缩小监视器尺寸或减少频点数量),这将有所帮助。高级设置允许您指定要收集哪些场数据,以及是否要降低空间分辨率。频域和时域监视器不会造成数据过载,但请仔细考虑哪些监视器是真正必要的。动态监视器对于建立直觉和调试非常有用,但会在每个时间步增加额外的复杂性;如果性能至关重要,则不应使用动态监视器。

2.有效利用CPU资源

分布式计算允许我们使用消息传递接口MPI将大型FDTD仿真作业拆分到不同的处理器或核心上。

Lumerical案例 | 获得理想FDTD性能

  • 将仿真分割成多个可以并行运行的空间单元,并在每个时间步传递场。

  • 支持两种不同的并发机制:

    - 启动多个可执行文件。

    - 可执行文件,生成多个线程。

如果您点击FDTD Solutions顶部菜单栏上的“资源”按钮,将会打开资源配置窗口,您可以在其中找到特定机器的并发设置。正如您在此处看到的,每个FDTD求解器都会将仿真分解为4个进程,每个进程包含4个线程。

Lumerical案例 | 获得理想FDTD性能

这将在一台16核的机器上运行一次模拟。需要注意的是,线程数乘以进程数必须等于给定机器上可用的CPU核心总数。这将确保所有CPU核心都被占用。

Lumerical案例 | 获得理想FDTD性能

3.并行运行独立仿真

并行化是指使用独立的处理器或封装在单个处理器内的独立CPU核心来同时运行多个模拟。这在运行扫描或使用Lumerical作业管理器对任务进行排队时非常有用。以下资源配置提供了一个很好的示例。

Lumerical案例 | 获得理想FDTD性能

这里我们有一台32核的本地机器,配置为使用4个进程和线程并行运行2个模拟。此外,本地网络上还有一个名为“compue_node”的远程资源,拥有64个核心。它配置为使用相同数量的进程和线程运行,并将启动4个模拟。由于采用了新的许可证共享功能,此配置将并行运行6个模拟,并消耗3个FDTD引擎许可证。

本文讨论仅限于Lumerical的作业管理器;不过,也可以使用作业调度程序。

4.优化资源配置和硬件

当仿真任务分布到更多核心上时,求解速度的提升将不再显著。通常会有一个瓶颈,具体瓶颈取决于您的仿真设置。一旦达到收益递减点,就可以安全地将多余的核心用于其他并行任务。通过配置多个处理器和处理器核心,操作系统可以在不同的核心上运行多个作业,而无需进行任务切换。

对于某些工作流程,您可能需要测试各种配置、MPI版本和机器,以极大限度地提高吞吐量。

基准测试

有效的资源配置取决于您的仿真设置、仿真规模以及运行仿真的硬件;因此,没有通用的规则可以最大化吞吐量。尽管如此,您仍然可以使用本文附带的脚本文件轻松执行自己的基准测试。对于需要大量仿真的工作流程,运行一些基准测试将有助于您决定如何分配工作流程,从而节省时间并有效利用许可证。

仿真日志文件提供了大量有用的信息。它会详细说明如何通过MPI对FDTD计算体进行分区,以及每秒的求解速率(以兆节点/秒为单位),即每秒执行多少百万次浮点运算。您还可以找到各个进程所花费时间的明细以及调试信息。

1.通过增加进程数来增加核心数

提升性能较简单直接的方法是增加进程数,同时保持线程数固定为1。默认情况下,FDTD会使用所有可用核心。如果我们使用示例文件运行lsf脚本FDTD_bench_core.lsf,则会得到以下结果。

Lumerical案例 | 获得理想FDTD性能

正如预期,随着核心数量的增加,仿真求解速度提高,仿真时间缩短。但需要注意的是,这种提升并非线性关系。实际上,核心数量增加4倍,从6个增加到24个,求解速度大约翻了一番,从120Mnodes/s提升到260Mnodes/s。无论如何,随着核心数量的增加,收益会逐渐递减,但拐点的位置取决于具体的仿真情况。由于用户通常受到许可证的限制,他们往往希望使用所有可用的核心,这通常也是推荐实践。

2.线程与核心

在给定核心数量的情况下,我们可以调整线程数和进程数,以查看是否能提升性能。本例中使用机器上的所有核心数(28),但您可以选择任意数量的核心数进行测试,只需确保线程数和进程数之和等于该固定值即可。使用附件中的基准测试文件,运行脚本FDTD_bench_thread.lsf,即可得到以下结果。

Lumerical案例 | 获得理想FDTD性能

在这种情况下,使用28个进程和1个线程可以达到极高的求解速度。使用7个进程和4个线程(每个进程4个线程)可以达到类似的结果,但略有下降;而使用14个进程和2个线程(每个进程2个线程)则性能更差。您可能会得到不同的结果,但这最终只是一些微调,通常无法像直接增加核心数那样获得相同的性能提升。

3.提高并发吞吐量

通过并行运行作业(即并发),我们可以在相同时间内完成更多作业。这对于大规模扫描或优化非常有用。正如我们在步骤1中看到的,核心数增加4倍并不会带来4倍的性能提升。如果使用四分之一的可用核心并行运行4个仿真,那么在很多情况下,其速度会比使用所有核心顺序运行4个仿真更快。

在下图中,我们使用了所有可用核心,但通过增加容量并相应减少每次模拟的核心数来实现性能提升。示例脚本FDTD_bench_capacity.lsf包含在内。

Lumerical案例 | 获得理想FDTD性能

我们看到,单个仿真的性能变差了,但并发效应更强,从而带来了更好的整体性能。

此外,您可能还想尝试不同的硬件配置或MPI类型。在云端,可能的组合非常丰富,使用Ansys Cloud可以轻松地尝试不同的实例。您还可以将结果与现有的FDTD性能基准测试进行比较。


推荐参阅

有关高性能计算、硬件如何影响仿真性能以及如何优化AWS实例的更多信息,请参阅这些帖子。

  • High Performance Computing

链接:https://support.lumerical.com/hc/en-us/sections/360004730713

  • FDTD Simulation Benchmark

链接:https://support.lumerical.com/hc/en-us/articles/4403780894355

  • Information on Hardware Specification

链接:https://support.lumerical.com/hc/en-us/articles/4403788732051

  • Resource configuration elements and controls

链接:https://optics.ansys.com/hc/en-us/articles/360058790674

相关阅读

Lumerical案例 | 使用Synopsys OptoCompiler和Lumerical工具进行光子器件版图绘制和紧凑模型仿真

Lumerical案例 | 基于热感知的WDM收发器光子电路仿真——Icepak集成

案例 | HFSS & Lumerical 联合仿真助力高速薄膜铌酸锂电光调制器设计

Ansys Lumerical | 光子 PDK 合作代工厂速览

Lumerical案例 | 内置直流偏置电极的薄膜铌酸锂行波调制器

Lumerical | 使用热感知光子电路仿真波分复用收发器

Lumerical | 高效慢光马赫-曾德尔调制器实现0.21V·cm效率且带宽超过110GHz


相关推荐

Lumerical案例 | 获得理想FDTD性能
引言本文将介绍一些可用于提升仿真性能的简单策略。这些基本策略可能需要一些...
Zemax案例 | 光束整形技术及其应用
引言在现代光学技术领域,激光器输出的高斯光束因强度分布不均导致能量利用率...
Lumerical案例 | 使用Synopsys OptoCompiler和Lumerical工具进行光子器件版图绘制和紧凑模型仿真
引言本文演示了一种将Synopsys OptoCompiler中开发的无...
【2025 R2】Ansys Fluent固体运动对传热影响的探究
01简要说明‐ Ansys Fluent可以针对刹车盘、涡轮叶片等运动固...