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

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在美国和其他国家/地区的注册商标。


评论 (0)

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