
我们经常被问到的一个问题是:在 COMSOL Multiphysics® 软件中能求解多大的模型?这个问题看似简单,但要给出全面且准确的回答,却需要深入探讨多个关键因素,包括数值方法、建模策略与求解算法、计算机硬件性能,以及如何最好的处理计算要求高的问题。这篇文章,让我们更深入地探讨这个话题。
编者注:这篇文章最初于发布 2014 年 10 月 24 日。现在已经更新以反映新版本软件的特点和功能。
先来看一些数据
我们先建立一个温度在域内稳态分布的三维模型,然后研究随自由度数增加的内存需求和求解时间。该模型是在一台典型的台式电脑(Intel® Xeon® W-2145 CPU,32GB 内存,固态硬盘)上,使用默认的求解器在逐渐细化的网格上求解。
首先,我们将从两个报告量来查看当模型大小增加时的内存需求:虚拟内存和物理内存。虚拟内存是软件向操作系统请求的内存量。(这些数据来自 Windows® 系统,所有支持的操作系统的内存管理都非常相似)。物理内存是指被占用的 RAM 内存的数量。物理内存总是小于虚拟内存和安装的 RAM 数量,因为操作系统以及在计算机上运行的其他程序也需要占用一些 RAM 内存。在占用内存的某个最高点,物理 RAM 的可用空间已经用完,相当一部分数据会驻留在固态硬盘上。还有另一个点,当超过这个点时,软件将报告没有足够的内存,所以模型根本无法求解。显然,为计算机增加更多的内存能求解更大的模型,我们可以通过线性外推来预测内存需求。
图1. 使用一台 32 GB 内存的计算机模拟的包含固体传热的模型。所需的虚拟内存(蓝色)和物理内存(橙色)与问题大小的对比,以百万个自由度表示。
接下来,让我们来看看这个问题的求解时间与自由度的关系。求解时间显示两个不同的区域。一个二阶多项式适合所需虚拟内存量小于安装的 RAM 区域,这个曲线几乎是线性的。另一个二阶多项式适合剩余的数据,即虚拟内存高于安装的 RAM。这条曲线的斜率更加陡,因为在这个系统中,访问存储在虚拟内存中的模型数据需要更长的时间。
图2.当问题大小大于可用的 RAM 时,求解时间与自由度呈递增关系。
内存需求总是相同吗?
你可能会问,上面这些关于内存需求的数据是否始终正确的呢?当然不是,除了非常相似的问题之外,这些数据几乎没有预测价值。
对模型的 6 种典型修改
对当前的模型做出哪些常见的修改会导致这些曲线向上或向下移动?接下来,我们将介绍几个不同的例子。
1.在时域中求解
相较于求解稳态问题,使用时域求解器求解时域问题需要在内存中存储更多的数据。有关此算法的介绍,请阅读博客:瞬态问题中的自动时步和阶数选择。
2.切换线性求解器类型
上述问题还可以用迭代或直接求解器求解。迭代求解器较直接求解器使用的内存要少得多,尤其是在问题规模增大时。相比之下,直接求解器仅适用于某些问题类型,例如由于材料特性的高对比度导致系统矩阵几乎是病态时,但该矩阵仍能超线性扩展。
3.引入非线性
即使是在单一的物理场中,引入例如使材料特性成为温度的函数等任何种类的非线性,都会导致系统矩阵的非对称性。从而导致内存需求增加。通过 nojac()
算子来避免符号微分,但并不是在所有情况下都可以这样做,因为这可能会对非线性收敛率产生负面影响。
4.改变单元类型
求解三维问题的默认单元类型是四面体单元,但也可以使用其他单元类型,如三角棱柱或六面体。这些单元的单个单元的连续性更好,但会增加内存的使用。另一方面,对于特定的几何结构和问题来说,可以通过手动改变单元类型,因为对于同样的几何结构,这些单元的网格更粗,特别是与几何分割和扫掠网格结合使用时,往往占用的内存更少。
5.改变单元阶次
求解固体传热 时默认的单元阶次是二次拉格朗日。如果网格相同,改变为线性将减少模型中的自由度,同时也将导致每个单元的连续性降低。也就是说,每个单元的各个节点都有较少的相邻节点。对于相同的自由度,这将降低内存使用量。反之,增加单元阶次会产生更大的连通性。对于相同的自由度,这将增加内存的使用量。此外,可以在拉格朗日和巧凑边点单元之间转换,后者每个单元的节点更少。然而,有必要了解的是,改变单元阶次和类型对精度和几何网格划分要求都有影响,这本身就是一个复杂的话题,所以改变默认的单元阶次应该谨慎对待。
6.引入非局部耦合或全局方程
非局部耦合涉及在非相邻单元之间传递信息的任意类型的额外耦合项,通常与全局方程一起使用。使用这些项会影响系统矩阵中的信息量,并经常使问题变为非线性。例如 终端 等某些边界条件可用于涉及电流的问题,并会在底层方程中引入非局部耦合或全局方程。非局部耦合也可以手动实现,博客:计算和控制空腔体积对此进行了讨论。
求解不同的物理场
那么,如果要求解不同的物理场问题呢?上述使用有限元法求解(标量)温度场的示例与传热仿真有关。如果通过有限元法求解不同的物理场,那么可能要求解的是一个矢量场。例如:
- 固体力学
- 流体流动
- 电磁学
- 化学物质传递
- 在求解化学工程问题时,如反应流,自由度的数量与在模型中包括的化学物质的数量成正比。
对于上述每一个物理场,或任何其他通过有限元法求解的物理场,我们不得不再次考虑之前提到的所有要点的影响。那么,如果我们采用的是除有限元之外的其他方法呢?我们可以使用 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 是微软公司在美国和/ 或其他国家的注册商标。
评论 (5)
Bert chu
2019-06-01在装配的过程中,能否实现分布内存并行?
can assembly get benefit from Distributed—Memory Parallel?
xinyi wen
2022-09-19comsol支持12代cpu的大小核机制么? ansys需要将小核禁用才能正常使用
Qihang Lin
2022-10-10 COMSOL 员工支持并且软件会自动识别 ,并使用性能核进行运算
Gentle Lee
2024-04-08Please tell me that when I used a hexahedral mesh to simulate microwave heating, the number of meshes became smaller, but the degree of freedom and solution time were greatly increased. 120,000 grids, as many as 4 million degrees of freedom, is there any problem in my operation process? thanks!!!
Min Yuan
2024-04-17 COMSOL 员工The number of degrees of freedom is related to the number of mesh nodes, and a hexahedral (block) mesh has about 6 times as many nodes as a tetrahedral mesh, so a smaller number of meshes may result in a larger number of nodes, resulting in a greater amount of computation. Information about the degree of freedom can refer to: https://cn.comsol.com/support/knowledgebase/875