如何使用 COMSOL Multiphysics® 中的集群扫描节点

Pär Persson Mattsson 2018年 6月 12日

在之前的一篇博客文章中,我们解释了如何在 COMSOL Multiphysics® 软件中直接从 COMSOL Desktop® 环境实现在集群上运行作业,而无需与 Linux® 操作系统终端进行任何交互。由于这种终端有时需要使用者具有足够的操作技能,因此能够直接从图形用户界面启动集群作业便是 COMSOL® 软件最有用的功能之一。欢迎了解更多强大功能……。我们首先来看看集群扫描 节点。

什么是集群扫描节点?

将参数集计算并行化的一种方法是将参数化扫描与集群计算 节点结合使用。在执行此操作时,你将创建一个跨越多个节点的大型集群作业。添加的节点越多,并行计算的参数值就越多(当然,前提是参数的数量多于节点数)。

显示典型集群中的四个节点的示意图。
集群示例。

不仅如此,你还可以使用集群扫描 节点将计算并行化,该节点设计用于将一个参数化扫描拆分成多个集群计算作业。在集群扫描 节点中定义一组参数,对于每个参数值,系统都会将单独的批处理作业发送到集群队列。计算完成后,COMSOL Multiphysics 会将结果整合回主进程。

你甚至还可以通过这种方式嵌套参数化扫描,将集群扫描与“标准”参数化扫描相结合。你可以决定为哪些参数启动单独的作业,以及想要将哪些参数保留在作业“内”。

总而言之,集群扫描 节点是 COMSOL Multiphysics 为你提供的强大工具,可以帮助你实现对建模过程的完全控制。

请注意,你需要拥有“网络浮动许可证”(FNL)才能使用集群扫描。此外,建议你熟练掌握博客文章 COMSOL Desktop® 环境如何实现在集群上运行中讨论的设置,如果你按照该篇文章中的步骤操作并保存设置,这些设置将自动应用于集群扫描 节点。

何时使用集群扫描节点

现在,你已经知道什么是集群扫描 节点,你可能还想要了解以下两点:

  1. 我应该在什么时候使用它?
  2. 此节点在什么情况下优于集群计算 节点?

对于上述问题,常见的第一种情况是,你有一个参数集但不知道模型是否收敛,或者是否对所有参数组合都有效。参数集可以控制几何结构,在采用某些值时,几何结构可能会导致求解或网格划分失败。如果用参数化扫描计算模型,COMSOL Multiphysics 将在第一个失败的几何结构上取消计算,即使后面的几何结构都能成功计算也将如此。将计算过程拆分为多个单独的作业后,你便可以开始针对每个参数值进行计算。

另一种情况是,涉及的参数值数量太大,单个集群作业无法完成计算。如果你有用于控制频率、几何、材料、边界条件等的参数,并希望得到所有可用组合的结果,则需要进行大量的 计算。如果你将所有计算都放入一个大型作业并将其发送到集群,那么几乎可以肯定会引起集群管理员和同事们的强烈不满(稍后会详细说明)。

好消息:通过使用集群扫描 节点,你可以将潜在的大型作业拆分成多个小作业。为此,除了集群扫描 节点外,还需将参数化扫描 节点添加到模型中。以这种方式设置模型会创建嵌套参数化扫描(类似于编程中的嵌套 for 循环)。请继续阅读本文,了解详细的操作步骤。我们在本篇博客文章中引入了一个简短的教程。

关于集群扫描 节点,还有一点需要注意:你可以使用它来潜在地增加集群上作业的吞吐量。

使用集群扫描优化调度

上文中我们提到了集群管理员的不满,想必你希望了解其中的原因吧。计算时间是高性能集群的宝贵资源,因此,大多数集群都实施了某种队列或调度系统。如何处理大型作业取决于集群管理员,根据经验,大型作业意味着需要长时间的等待。原因何在?大型作业会占用大量的计算资源,并且可能需要很长时间才能完成。因此,为了不影响其他用户作业的正常运行,为大型作业分配的优先级就会比较低。当然,这一切都取决于集群管理员如何配置调度程序;也就是说,这需要视实际的情况而定。

这与集群扫描 节点有什么关系呢?假设你可以访问一个集群,在这个集群中很难安排大型作业,但很容易安排小型作业,因为它们会填充调度程序中的空隙(未使用的集群节点是计算成本较高的集群节点)。你可以使用集群扫描将大型作业拆分成多个小型作业。

我们通过一个例子来看一下:你可以启动 8 个作业,让每个作业使用 1 个节点来计算它们自己的 100 个参数值的集合,而不是在 8 个节点上启动 1 个大型作业来并行计算 800 个参数值。随后这些作业将被单独调度,小型作业可能比大型作业完成得更快,具体取决于集群的设置。

设置集群扫描和嵌套参数化扫描

如果你有批处理扫描和集群计算 节点的使用经验,那么使用集群扫描 节点会很轻松。(请查看博客文章“ 强大的批处理扫描功能”和 “ 批处理扫描中任务并行的附加值”,找到有关如何设置批处理扫描的描述)。

为了演示如何设置纯集群扫描和嵌套参数化扫描,我们来看看我最喜欢的示例模型:参数化的热微执行器(这是我最喜欢的模型,原因是其中演示了 COMSOL® 软件的多物理场功能)。由于这是一个参数化模型,因此我们很容易向其中添加参数化扫描和集群扫描。

在 COMSOL Multiphysics® 中使用集群扫描功能建模的热微执行器。
微执行器的焦耳热建模。电流流过两臂,导致它们发热。随后,热膨胀使执行器发生弯曲。

添加集群扫描

我们首先添加一个基于执行器长度参数 L 的集群扫描。为此,首先右键单击研究1,然后单击集群扫描。此操作将添加一个节点,你可以在其中进行集群设置,具体操作请参见这篇关于从 COMSOL Desktop® 运行集群的博客文章中的说明。(如果你还没有看过这篇文章,现在不妨先读一读。)

接下来,你可以在研究设置 窗口中添加要扫描的参数。单击加号并在下拉列表中选择参数 L。然后在参数值列表 编辑框中输入(例如)“100 170 240 310”。在参数单位 编辑框中,输入“um”(微米)。

如果你要将结果引入主模型,请确保选中同步解 复选框。这样,你就可以得到所有结果,并将其用于进一步分析和后处理。

显示在模型中添加集群扫描结果相关设置的屏幕截图。
在模型中添加集群扫描。

现在我们已经创建了集群扫描,它基于微执行器的长度进行循环。假设集群设置正确无误,我们现在需要做的就是单击计算,然后将单独的作业发送到集群。

添加嵌套参数化扫描

现在,我们创建一个嵌套参数化扫描,这样我们的每个集群作业本身都包含一个参数化扫描。为此,我们添加一个基于电压参数 DV 的参数化扫描,具体步骤如下:

  1. 右键单击研究1,然后单击参数化扫描,此操作将添加一个节点,你可以在其中设置参数化扫描
  2. 研究设置 窗口中,单击加号,然后在下拉列表中选择参数 DV
  3. 参数值列表 编辑框中输入“1 2 3 4 5”
  4. 参数单位 编辑框中输入“V”
  5. 单击计算,COMSOL Multiphysics 将为你调度作业

COMSOL Multiphysics® 中嵌套参数化扫描设置的屏幕截图。
在模型中添加参数化扫描,从而创建嵌套参数化扫描。

你可以等待作业完成(其状态显示在外部进程 窗口中),也可以从进程中分离,然后保存模型,并关闭 COMSOL Multiphysics,让作业自行运行。当你返回工作站时,只需要打开保存的模型并重新连接,软件就会像使用常规集群计算 节点一样处理结果。这一工作流程对于通宵仿真来说堪称完美!

结语

在本篇博客文章中,你不仅学习了如何使用集群扫描 节点对集群上的并行参数计算进行优化,还学习了如何针对不同的情况选用最佳的方法,作为额外的收获,你还知道了如何避免引起系统管理员的不满。

与一般的集群计算一样,你必须根据要计算的模型来决定采用何种方法。为了明白何时使用集群扫描和分布式参数化扫描,你需要在模型和集群上尝试这两种方法。无论何时,要掌握一项技能,都必须进行测试!

如上所述,你需要 FNL 才能使用集群扫描,这是因为此功能是基于网络的技术。

后续操作

如果你想要了解更多关于集群扫描 节点的信息,可以单击下面的按钮联系我们。

Linux是Linus Torvalds在美国和其他国家/地区的注册商标。


博客标签

技术资料
正在加载评论...

博客分类


博客标签