求解大型 COMSOL 模型需要多少内存?

作者 Walter Frei

2022年 5月 6日

我们常常收到这样一个问题:在 COMSOL Multiphysics® 软件中能求解多大的模型?虽然在某种程度上这是一个非常容易回答的问题,但不可避免的,需要大篇幅的讨论才能讲清楚关于数值方法、建模策略与求解算法,计算机硬件性能,以及如何最好的处理计算要求高的问题。这篇文章,让我们来深入探讨这个话题。

编者注:这篇文章最初于 2014 年 10 月 24 日发布。现在已经更新以反映新版本软件的特点和功能。

先来看一些数据

我们将建立一个温度在域内稳态分布的三维模型,并研究随着自由度数增加的内存需求和求解时间。该模型是在一台典型的 Intel® Xeon® W-2145 CPU,32GB 内存,固态硬盘(SSD)台式电脑上,使用默认的求解器在连续的越来越细的网格上求解。

首先,我们将从两个报告量:虚拟内存和物理内存,来查看当模型大小增加时的内存需求。虚拟内存是软件向操作系统请求的内存量。(这些数据来自 Windows® 系统,所有支持的操作系统的内存管理都非常相似)。物理内存是指被占用的 RAM 内存的数量。物理内存总是小于虚拟内存和安装的 RAM 数量,因为操作系统以及在计算机上运行的其他程序也需要占用一些 RAM 内存。在占用内存的某个最高点,物理 RAM 的可用空间已经用完,相当一部分数据会驻留在固态硬盘上。还有另一个点,当超过这个点时,软件将报告没有足够的内存,所以模型根本无法求解。显然,为计算机增加更多的内存能求解更大的模型,我们可以通过线性外推来预测内存需求。

一个图表,描述了传热模型所需的虚拟内存(蓝色方块)和物理内存(橙色圆圈)与问题大小的关系,以自由度表示。
图1. 使用一台 32 GB 内存的计算机模拟的涉及固体传热的模型。所需的虚拟内存(蓝色)和物理内存(橙色)与问题大小的对比,以百万个自由度表示。

接下来,让我们来看看这个问题的求解时间与自由度的关系。求解时间显示两个不同的区域。一个二阶多项式曲线适用于所需的虚拟内存量小于安装的 RAM 区域,这个曲线几乎是线性的。另一个二阶多项式适合剩余的数据,其中虚拟内存高于安装的 RAM。这条曲线的斜率更加陡,因为在这个系统中,访问存储在虚拟内存中的模型数据需要更长的时间。

描述热传递模型的求解时间与自由度的关系图,当问题大小大于可用 RAM 时,该模型的斜率增大。
图2.当问题大小大于可用的 RAM 时,求解时间与自由度呈递增关系。

内存需求总是相同吗?

我们可能会问,上面这些关于内存需求的数据是不是总是正确的呢?当然不是,除了非常相似的问题之外,这些数据几乎没有预测价值。

对模型的 6 种典型修改

对当前的模型做出哪些常见的修改,能使这些曲线向上或向下移动?下面,我们来介绍几个不同的例子。

1.在时域中求解

与求解稳态问题相比,使用时域求解器求解时域问题需要在内存中存储更多的数据。关于算法的概述,请阅读博客:瞬态问题中的自动时步和阶数选择

2.切换线性求解器类型

上述问题可以用迭代或直接求解器来求解。迭代求解器比直接求解器使用的内存要少得多,特别是随着问题大小的增长。直接求解器仅适用于某些问题类型,例如当系统矩阵由于材料特性的高对比度而几乎是病态时,但该矩阵仍然能够超线性扩展。

3.引入非线性

即使在单一的物理场中,引入任何种类的非线性,例如使材料特性成为温度的函数,都会导致系统矩阵的非对称性。这将增加内存需求。可以通过使用 nojac() 算子来避免符号微分,但并不是在所有情况下都可以这样做,因为这可能会对非线性收敛率产生负面影响。

4.改变单元类型

三维问题的默认单元类型是四面体单元,但也可以使用另一种单元类型,如三角棱柱或六面体。这些单元的单个单元的连续性更好,也会增加内存的使用。但另一方面,对于特定的几何结构和问题来说,可以通过手动改变单元类型,使相同几何结构的网格更粗,特别是与几何分割和扫掠网格结合使用时,往往占用更少的内存。

5.改变单元阶次

在求解固体传热 时,默认的单元阶次是二次拉格朗日。如果网格相同,改变为线性将减少模型中的自由度,同时也将导致每个单元的连续性降低。也就是说,每个单元的各个节点都有较少相邻节点,对于相同的自由度,这将降低内存使用量。反之,增加单元阶次会产生更大的连通性,对于相同的自由度,则使内存使用量增加。此外,可以在拉格朗日和巧凑边点单元之间转换,后者每个单元的节点更少。然而,有必要了解的是,改变单元阶次和类型对精度和几何网格划分要求都有影响,这本身就是一个复杂的话题,所以改变默认的单元阶次应该谨慎对待。

6.引入非局部耦合或全局方程

非局部耦合涉及到任何在非相邻单元之间传递信息的额外耦合项,通常与全局方程一起使用。使用这些项会影响系统矩阵中的信息量,并经常使问题变为非线性。有一些边界条件,如 终端 边界条件,可用于涉及电流的问题,并会在底层方程中引入非局部耦合或全局方程。非局部耦合也可以手动实现,如博客:计算和控制空腔体积中所讨论的。

求解不同的物理场

那么,如果要求解不同的物理场问题呢?上述例子与传热仿真有关,其中使用了有限元法来求解(标量)温度场。如果通过有限元法取样解不同的物理问题,那么可能要求解的是一个矢量场。例如:

  • 固体力学
    • 固体力学 接口在三维空间中求解位移场,因此对于同样的网格,它的自由度是热学问题的3倍,并且网格之间的连接更多。对于一些涉及不可压缩固体的固体力学问题,额外求解压力将进一步增加内存需求。引入非线性材料模型会进一步增加内存需求,这取决于所使用的材料模型
  • 流体流动
    • 流体流动 接口求解三维的速度场和压力。当求解湍流时,至少有一个额外的湍流变量被求解。当求解多相流时,至少有一个额外的变量来追踪相位。
  • 电磁学
  • 化学物质传递
    • 在求解化学工程问题时,如反应流,自由度的数量与在模型中包括的化学物质的数量成正比。

对于上述每一个物理场,或任何其他通过有限元法求解的物理场,我们又必须考虑之前提到的所有要点的影响。那么,如果我们采用的是除有限元之外的其他方法呢?COMSOL® 内置了一些接口和方法,比如粒子追踪 接口,可用于求解粒子位置的一组常微分方程(ODE),与有限元相比,它的内存要求和自由度要低得多;射线光学 接口也求解一组常微分方程,并且内存要求与粒子追踪相似。间断伽辽金(dG)方法用于求解电磁波、声波弹性波模型,与有限元方法相比,它使用的内存非常少;最后是边界元法(BEM),这是一种离散化方法,但是是边界而不是体积。与有限元法相比,边界元法对每个自由度的内存要求要高得多,但同样的精度需要自由度更少。它在声学静电学电流分布磁静力学电磁波中都有应用。

最后,我们不仅可以在模型中包括这些不同的物理场,还可以将它们耦合起来,建立一个真正的多物理场模型。当建立多物理场模型,还必须考虑可能的求解方法,因为这样的模型可以用完全耦合或分离的方法,用直接或迭代的求解器来求解,所有这些都会影响内存需求。下表给出了这些领域中一些典型物理场的内存需求的大致情况。

物理场 每千兆字节的自由度
固体传热 800,000
固体力学 250,000
电磁波 180,000
层流 160,000

从这个角度来说,我们可能希望能够了解预测内存需求的复杂性。不过,从实用性的角度来看,这些信息有什么用呢?对于我们的日常仿真工作来说,只需要进行一个比例研究。也就是说从一个涉及所有物理场、边界条件和耦合的小模型开始,并使用所需的离散化。从求解这个问题开始,逐渐增加自由度的数量,同时监测内存需求。这个数据通常是线性的,但有时会与自由度的平方成正比增长,例如当使用直接求解器的边界元法时,或者如果有多种非局部耦合。有了这些信息,就可以继续改进模型的性能了。

不同的计算机硬件如何提高模型性能?

现在,让我们回到之前的求解时间与自由度的关系图,讨论可以改变求解时间的 10 种不同的计算机硬件。

用固态硬盘代替机械硬盘

当所使用的虚拟内存明显大于物理 RAM 的时候,用固态硬盘代替机械硬盘很重要。生成前文示例曲线的计算机包含一个固态硬盘,这在大多数较新的计算机中是很常见的。与固态存储器相比,具有旋转盘和移动读写头的机械硬盘(HDD)所需的求解时间较长。当求解那些内存需求比 RAM 少的模型时,这种选择的影响明显较小。除了固态硬盘之外,一个大容量的 HDD 也是合理的,HDD 主要用于保存模拟数据。

添加更多的内存

只要在所有的内存通道上均衡地添加内存,就能提高使用虚拟内存明显多于物理内存的模型的求解速度。例如,用于这些测试的 CPU 有四个内存通道和 32 GB 内存,每个通道有一个 8 GB DIMM。可以通过添加四个额外的 8 GB DIMMs 来进行升级,每个通道一个(因为这台电脑每个内存通道有一个空的第二插槽),或者将所有四个 8 GB DIMMs 换成 16 GB DIMMs。无论哪种方式,重要的是每个通道都要被填满。例如,如果四个通道中只使用了一个,那求解速度就会减慢。

升级到速度更快的双列直插内存模块(DIMMs)

根据 CPU 的情况,有可能升级到支持更高的数据传输速率的 DIMM。重要的是,所有的 DIMM 都有相同的速度,因为如果 DIMM 的内存速度不均衡,通常会支持最低速度。

升级到时钟速度更快的 CPU

时钟速度影响到软件的各个方面,速度当然是越快越好。从实用的角度来看,通常不可能简单地只升级时钟速度而保持其他东西不变,所以不可能隔离改进,在大多数情况下,我们必须购买一台新的计算机。然而,随着模型使用更大的内存,以及更多的数据需要在 RAM 中来回传输,模型的性能瓶颈往往是数据在 RAM 内存中的传输速度,而不是 CPU 速度。

升级到有更多内核的 CPU

在保持所有其他因素不变的情况下,升级到更多的内核是很困难的。因此,确定更多内核并不容易做到。在大多数情况下,当求解一个单一的模型时,每一个工作都使用超过 8 个内核并没有什么优势。如果求解时间是由直接线性求解器主导的,那么内核更多则获益更多。另一方面,非常小的模型可能在单核上求解得更快,即使有更多的核心可用。也就是说,对于较小的模型来说,并行化有一个重要的计算成本

另外,在并行运行多个工作时,如使用 COMSOL Multiphysics 中的批处理 功能时,多核也是有优势的。现在有些 CPU 同时提供 P 核和 E 核,这就需要额外进行性能权衡。

升级到有更大缓存的 CPU

缓存内存越大总是越好,但是缓存的大小与核的数量成正比,所以有最高缓存的 CPU 会有很多的核,价格也相对昂贵。

升级到带有更多内存通道 CPU 的计算机

我们有可能买到有两个、四个、六个甚至八个内存通道的单 CPU 电脑。不同通道之间的切换也代表了不同级别的处理器之间的切换,而且仅凭硬件规格很难比较它们之间的性能。如果你经常求解非常大的模型或多个模型的并行问题,那么超过四个通道是有必要的。

升级到双 CPU 计算机

支持双插槽操作的 CPU,每个 CPU 有 6 个或 8 个内存通道,总共有 12 个或 16 个通道,因此这类系统至少有 96 GB 内存,所以这些系统主要用于求解非常大的模型或许多模型的并行操作。

升级到 4 个以上 CPU 的计算机

这种情况非常少,仅考虑需要非常多的 RAM 内存(至少 768 GB)的模型。在考虑这样的系统之前,请联系我们的技术支持团队获取个性化的指导。

升级到集群计算机

目前集群计算机的数量已达成千上万台,其中相当多一部分已经被用来运行 COMSOL®。可用的集群硬件系统是如此之大,而且变化如此之快,以至于不可能对相对性能做出说明。也有一些云计算服务提供商可以迅速让我们在所选择的硬件上启动一个临时的计算资源,这样就可以在各种硬件上比较相对性能。在求解极其庞大的模型方面,集群的优势在于能够使用域分解求解器。当然,集群对于在一个集群扫描节点内并行解决数百个甚至数千个案例也很有用。

注意:除了所有这些因素外,还要考虑处理器的更新换代和架构。处理器几乎每年都有重大更新,而且每年都有几个小的更新。比较上述不同代处理器的指标是相当困难的,但一般来说,较新一代处理器的性能优于较旧的处理器。

我应该如何决定购买什么计算机?

在决定购买什么样的计算机方面,首先是选择一个或一组模型,来描述你要做的各种分析。然后,进行扩展研究,确定内存需求,因为仿真求需会增长。当然,我们需要做一点猜测和推断,所以最好高估内存需求。

一旦对所需要的内存量有了一个很好的概念,就可以在最新一代处理器之间决定内存通道的数量。这是我们拥有最大灵活性的地方,所以在这里真正要考虑的是内存的可升级性。如果碰巧低估了内存要求,我们又希望能够轻松地安装更多的内存。例如,用于生成上文数据的计算机有 32GB 内存,安装在有一个有 4 个内存通道的系统上,每个通道有一个 8GB 的 DIMM,每个通道有一个插槽开放,因此,再买 4 个 8GB 的 DIMM 就可以很容易地升级到 64GB 内存。

接下来,在选择处理器方面,要确保处理器架构支持最快的可用内存速度,并在该架构中选择最快的时钟速度。通常在时钟速度和内核数量之间有一个权衡。缓存的大小往往随着内核数量的增加而增加,但是每个内存通道存在两个以上的内核,通常会导致性能与硬件成本之间的受益递减。

还要记住其他一些因素,例如,如果预计虚拟内存使用量较大,就需要有一个 SSD 驱动器。至于显卡,这里列出了支持的硬件列表,内存越大速度越快,显卡的显示性能就越好。另外,计算机通常是为某些市场和不同的价格点而制造的,例如,更昂贵的工作站或更经济的消费者级别。后者有时会有更好的峰值性能,但在连续多小时或多天运行非常大的模型时,工作站级别的系统可能更可靠。

还有什么可以提高性能?

你可能想去购买新的硬件来运行你的模型。不过,这样做之前,请考虑一下你所建立的模型的价值。一个有价值的数值模型是你在职业生涯中要运行成千上万种(或更多!)变化的模型。尽可能地提高这些模型的性能将为你节省数周或数月的时间,无论你使用什么硬件都是如此。

将模型分类

为了学习如何让模型运行的更快,无论使用的是什么硬件,我们可以从概念上将模型分为三类。

1.线性稳态

这类模型包括材料属性、载荷和边界条件与解无关的情况。频域和特征值或特征频率模型也可以归入这一类别。对于这些模型,计算时间完全与自由度的数量有关,所以目标应该是在达到预期精度的同时尽可能地减少自由度。

2.非线性稳态

这类模型包括在控制方程中出现非线性项的任何情况,例如在纳维-斯托克斯方程中,或者当材料属性、载荷或边界条件是解的函数时。这类情况的求解是通过重复求解线性问题而找到的。这里,所需的计算时间是线性迭代的成本和非线性问题的收敛率的组合。降低计算成本不仅涉及在达到预期精度的同时保持尽可能低的自由度,而且还涉及提高非线性收敛率。也就是说,减少得到解所需的步骤。而减少自由度既影响求解时间又影响内存,收敛率几乎只影响求解时间。

3. 瞬态

这类模型通过在离散的时步数上求解一串静止的近似值来计算随时间变化的解,可能包括也可能不包括非线性项。这里需要关注的是减少离散时步数,以及每个时步数所需的线性化步数,同时有足够精细的网格来求解随时间变化的场。

有用的仿真技术

虽然每个问题都是独特的,但有一些非常通用的仿真技术,所有的仿真分析人员都应该掌握,包括:

  • 在处理导入的 CAD 文件时,使用特征去除虚拟操作 功能来近似 CAD 数据,用于创建一个更简单的几何体,或使用对称性来减少 CAD 模型的大小。
  • 当处理相对较薄或较小的几何结构时,使用简化的几何结构以及可能不同的物理场接口,就像结构仿真中壳和梁的例子。或者,使用指定的边界条件,而不是明确地对薄域的几何形状进行仿真。
  • 在合理的情况下,使用扫掠网格装配式网格,并充分熟悉手动构建网格的方法
  • 对于非线性稳态问题,理解实现和加速收敛的各种方法
  • 对于瞬态问题,了解提高收敛性的各种方法。

当然,这些只是大体上的描述。有无数特定的仿真技术,可能只在非常窄的范围内适用,但可以让模型运行更高效。学习这些技术,何时以及如何应用它们,是有经验的数值仿真人员的艺术和技术。

结语

本文,我们提出了一个看似简单的问题,但其实在回答问题的过程中,触及了比较广泛的话题。最后,我提出一个有点争议性的个人观点。在我看来,试图在更快的计算机上求解更大的模型是一种不得已而为之的计算方法。把你的时间花在研究如何让你的模型变得更小、更快,比研究用什么硬件要好得多。最终,确实会有那么一天,你需要投资一些专业的硬件,当到了那个时候,你会想知道你到底为什么需要升级。希望您在阅读了本文后,对如何处理这个过程有一个大体上的认知。

Intel 和 Xeon 是 Intel 公司或其子公司的商标。

Microsoft 和 Windows 是微软公司在美国和/ 或其他国家的注册商标。


评论 (3)

正在加载...
Bert chu
Bert chu
2019-06-01

在装配的过程中,能否实现分布内存并行?
can assembly get benefit from Distributed—Memory Parallel?

xinyi wen
xinyi wen
2022-09-19

comsol支持12代cpu的大小核机制么? ansys需要将小核禁用才能正常使用

Qihang Lin
Qihang Lin
2022-10-10 COMSOL 员工

支持并且软件会自动识别 ,并使用性能核进行运算

浏览 COMSOL 博客