利用 COMSOL® 批处理扫描的硬件并行性研究

作者 Walter Frei

2020年 6月 2日

COMSOL Multiphysics® 软件的核心功能之一是运行批处理扫描的能力,即在同一台计算机上对同一模型的多个变化进行并行求解,而且这个过程完全是独立工作的。随着更高核数的 CPU 和支持多个 CPU 的计算机的普遍应用,可以使用 批处理扫描 功能显著提升速度。让我们来看看如何操作吧!

批处理扫描简介

任何关注计算机硬件的人都知道,每一代处理器技术都会带来重大改进。在很长一段时间里,计算速度逐年提高,但这种趋势已经停滞不前。现在,计算机制造商倾向于在每个 CPU 中投入越来越多的内核。

默认情况下,COMSOL® 软件会使用所有可用的内核求解每个模型,但这并不总是有益的。许多 COMSOL Multiphysics 模型只能部分并行化,甚至是完全串行的,因此为单个模型配备更多的节点本身可能不会带来速度的提高,特别是在模型对内存的要求相对较小的情况下。

实际上,这意味着新一代多核 CPU 运行单个相对较小的 COMSOL Multiphysics 作业的速度并不一定比老式 CPU 快很多,但它们能够同时运行更多的作业。这使我们在求解同一模型的多种变化的情况下有了明显的净改进,比如扫描几何尺寸、运行不同的工作条件或工作频率。批处理扫描 功能就是为这种情况准备的。

在开始使用批处理扫描 接口之前,关于它的操作有一些重要的事情需要了解。首先,批处理扫描 可以启动多个完全独立的 COMSOL Multiphysics 流程或作业。这些作业不知道其他作业在做什么。如果一个案例失败了,它不会影响其他任何案例,但是也无法在案例之间传递结果。

其次,每个作业都会将包含该作业结果的文件写入磁盘,并且可以选择将所有这些结果组合回原始文件中。

第三,在运行这些作业时,软件会自动在可用的计算内核之间分配并行作业。

最后,批处理扫描 是 COMSOL Multiphysics 的核心功能之一。它适用于在一台计算机上运行(尽管很可能是一台具有多个 CPU 的计算机),并且适用于任何许可证类型。它是集群扫描 功能的补充(仅适用于浮动网络许可证),但提供了类似的功能,还可以在集群的不同计算节点之间额外地分配作业。

批处理扫描的设置

为了使用批处理扫描 功能,我们必须首先在模型开发器的显示更多选项 对话框中启用批处理集群 选项。该对话框如下面的屏幕截图所示。

打开了显示更多选项对话框的COMSOL Multiphysics模型开发器。
模型开发器中的 显示更多选项对话框。

启用这项功能后,就能够将批处理扫描 功能添加到研究 分支。这项功能将始终存在于研究 的最顶部,并且可以被认为是一个 for 循环,控制着该 研究 分支中存在于其下的所有其他研究步骤。

批处理扫描特征的设置窗口,高亮显示了相关设置。
相关的 批处理扫描功能设置。

批处理扫描 的用户界面如上图所示,相关功能被突出显示。首先,在最顶部,我们指定要扫描参数的名称以及要研究该参数的数值。接下来,启用同步解 选项会将所有结果组合回一个文件中。如果不启用这个选项,那么批处理扫描将只写入一组不同的文件;扫描中的每个参数都有一个。(这实际上可能是一个有吸引力的选择,因为可以快速获得非常大的文件,因此如果想在每个文件中保存更少的数据,可能值得考虑。)最后一个关键设置位于窗口底部:并发作业数,它决定了并行运行的作业数量。

此外,请记住,批处理扫描 可以包含任何其他类型的扫描:参数函数材料辅助频率 扫描,因此我们可以使用单个批处理扫描 作业解决任意组合的情况。

那么,我们实际上应该并行运行多少个作业?这是我们要研究的下一个问题。

COMSOL Multiphysics® 可以利用多少个核芯并行的批处理?

正如你可能已经猜到的那样,这个问题的答案取决于硬件和型号。

就模型类型而言,批处理扫描 的理想情况是内存需求较小但求解时间相对较长的模型。这种模型的一个很好的例子是硅晶片激光加热。该模型解决了激光热源在旋转硅晶片上移动时温度变化。它只有大约 2000 个自由度,但在经典的台式计算机上求解大约需要一分钟的时间。我们可以在这个模型中扫描许多不同的参数,所以让我们看看这个模型的性能如何与典型现代台式计算机上的作业并行性相匹配。

我们将展示的结果是在带有 32 GB RAM 的 Intel® Xeon® W-2145 8 核处理器上生成的,这是 COMSOL 硬件建议中建议的典型中端计算机。在这个硬件上,求解测试案例模型大约需要一分钟。如果我们对模型的 16 种变化进行参数化扫描,求解时间会随着求解的不同案例的数量呈线性增长。如果我们还使用批处理扫描 ,可以研究在此硬件上并行运行 2、4、8 甚至 16 个作业,每个批处理作业都包含一个顺序参数扫描,如下面的屏幕截图所示。

屏幕截图显示了在COMSOL Multiphysics执行一个嵌套批处理扫描的设置。
显示嵌套扫描的屏幕截图。在这个示例中,外部 批处理扫描扫描了 N = 0、4、8、12,而内部扫描总共求解了 16 种情形。

下面的结果是求解 16 种情形所需的时间和相对加速。

参数化扫描 批处理扫描 + 参数扫描
16 种情形 2 个并行作业
(每个作业 8 种情形)
4 个作业
(4 种情形/作业)
8 个作业
(2 种情形/作业)
16 个作业
(1 种情形/作业)
时间(秒) 1010 620 416 305 267
加速 1 1.6 倍 2.4 倍 3.3 倍 3.8 倍

从这些数据中可以看出,当我们同时运行更多作业时,会获得更多的加速。最有趣的是,我们可以在 8 核机器上并行求解 16 个作业,并且仍然可以观察到加速。换句话说,这个 CPU 的每个内核实际上可以同时处理两个 COMSOL® 作业,至少在求解这个特定模型时是这样。在这台机器上启用了超线程,虽然这不会加快求解本身的速度,但文件打开和关闭以及其他操作系统进程都受益于启用超线程。并行运行这么多案例确实会减慢求解每个案例所需的时间,但所有 16 个案例所花费的总时间会更少。

如果我们尝试并行运行更多作业,讨论在内存上会发生什么也很有趣。这个模型每个批处理作业需要大约 1 GB 的内存,而文中使用的测试计算机有 32 GB 的内存,所以 16 种并行情形是没有问题的。但是,如果我们上升到 32 种并行情形,可能会超过可用的内存,这将导致速度变慢,不管有多少个内核。当然,在具有更多内存、更多内核和多个 CPU 的计算机上,可以获得更多的相对加速。此外,COMSOL Multiphysics 不限制可以在一台计算机上处理的内核或 CPU 的数量。

这些数据看起来相当不错,这时你几乎肯定会问自己是否总是能得到这么好的结果。不幸的是,答案是:不一定。求解的模型越大,我们看到的加速就越少。对于非常大的模型,如果并行运行作业,整体速度会变慢。但是,对于很多模型,尤其是大多数二维模型和较小的三维模型,在多核、多 CPU 计算机上使用批处理扫描 时,您可以合理地期待类似的改进。因此,批处理扫描 功能可以有力的推动对这类硬件的投资。另外,我们之前的博文中讨论的批处理扫描 功能还有很多其他功能。请记住,这是 COMSOL Multiphysics 的核心功能,适用于所有许可证类型!

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


评论 (0)

正在加载...
浏览 COMSOL 博客