在ComsolMultiphysics®中并行运行网格脉吗?

2019年5月3日

您是否曾经想过模型几何形状的拓扑(换句话说,将几何形状分解为域,边界,边界,边缘和顶点等几何实体)某种程度上会影响comsolMultiphysics®软件中网格的生成如何使您的使用如何使用您的使用。计算资源?如果是这样,那么这篇博客文章将对您感兴趣……

comsolMultiphysics®中的并行网格划分

以下操作利用共享内存并行性:

  • 自由四面体
  • 游离三角形
  • 免费的四边形
  • 映射
  • 边界层
  • 扫过

自由四面体操作跨域和面并行。这意味着,当操作在具有四个域的几何形状上生成四面体时,它最多可以使用四个内核,而如果几何形状中有一个域,则相同的操作只能使用一个核心(无论可​​用的核心数量如何)。同样,游离三角形,,,,免费的四边形, 和映射操作是在2D中的范围内平行的,而面孔则是3D的。

边界层操作部分平行。与其他操作不同,此网格操作在每个域中并行。

最后,链接面的网格(用映射操作)是扫过操作,这是并行的。

请注意,网格是从顶部的网格操作序列中构建的,一次是一个操作。因此,平行化是每次操作一次,一次进行。

基准性能测试

在实际的建模方案中,平行的网格序列加快了群序时间?让我们拿一个6×1×1-m的块,然后在带有6个内核的常规台式计算机上将其隔离。一自由四面体在下方添加操作。在整个测试过程中使用以下网格元素大小参数:

  • 最大元素大小:0.02 m
  • 最小元素大小:0.01 m

comsolMultiphysics®中网格大小的设置窗口的屏幕截图。
尺寸基准测试中使用的设置。

这些设置提供了非常精细的网格,从而导致大约1300万个四面体元素。

我们设置了三个模型的测试用例:

  1. 一个域
  2. 六个域,将块划分为六个同等大小的域
  3. 六个域,限制软件仅在一个核心上运行
基准测试的几何形状图像,以平行评估网格划分。
块几何形状的示意图分为六个相等的域。

左:具有1个域的6×1×1-m块(情况1)。右:与情况1具有相同外部大小的几何形状,但分为6个大小为1×1×1 m的域(情况2和3)。

要限制软件仅在一个核心上运行,您可以添加该选项-np 1到开始命令。也可以在多核和集群计算页面中的页面优先对话框。

基准结果和讨论

三个测试的结果收集在下表中。情况1和3中的网格划分仅在1个核心上运行,并花费大约同一时间到网格。具有6个域(案例2和3)的几何形状具有更多的边界,因此产生了更多的三角元素,这也意味着该几何形状需要更多的网格工作。在案例2中,如果网格算法使用所有6个核,则在仅使用一个核心时,网格划分减少到不到25%的时间。

案件 时间 三角元素 四面体元素
1 1 136 s 1.51E3 13.0E6
2 6 31 s 1.81e3 13.0E6
3(1核) 6 147 s 1.81e3 13.0E6

基准测试在六核台式计算机上运行的结果。该测试显示了从一个核心(表中的第一行和第三行)到所有六个内核(表中的第二行)的显着加速。

您可能想知道是否应该将几何形状分配到拥有核心的许多域中,假设您一开始就有较少的域。答案?不必要…

划分域会导致更多的界限。这设定了对网格的更多约束,反过来可能会给网格带来更复杂的情况。边界的增加将需要更长的时间到网格,这是通过比较情况1和3中的三角元素的时间和数量来清楚地看到的。尺寸。请注意,此基准中的情况是理想化的;六个核心有六个相等的域。在实际情况下,某些域更有可能更复杂,并且占主导地位的时间,从而减少了加速。

用边界层分配域

边界层操作在插入边界层元素时并行移动点,即使在单个域上操作时也可以这样做。因此,分区域不会提高性能,而是相反,因为额外的分配面需要更多的处理。

我可以在不丢失性能的情况下使用多少网格操作?

让我们在上面的基准示例中使用用例2(六个域在最多六个内核上啮合)。平行化是每个网格操作完成的,因此,如果我们现在添加另一个自由四面体操作和网格每个操作中的三个域,最多可以使用三个核心。通常,建议使用尽可能少的网格操作(相同类型)。这不仅可以使尽可能多地并行化,而且还可以很好地优化网格质量。要在不同的域/边界上设置不同的大小设置,请使用多个全局或本地大小属性,只有一个自由四面体手术。这使用网格序序列教程讨论有关设置全球和本地大小属性的详细信息。

对网格融合的结论结论

在这篇博客文章中,我们讨论了comsol多物理学中的网格划分算法的方式。简单的基准测试的结果表明,通过在更多核心上分发域的网格界,平行运行的网格划分可以显着加速算法。

建议阅读

有关有关的更多信息自由四面体操作以及修改几何形状的可能方法,查看以下资源:

类别


评论(11)

发表评论
乐动体育app
加载...
布塔说
布塔说
2019年5月3日

你好
在哪个基础上,尺寸为min和最大的值,例如,如果我有一个尺寸L = 200mm的立方体,并且在该立方体内,我的范围为R = 10mm
此外,如何选择狭窄区域的增长率,曲率因素和分辨率

哈立德·侯赛因
哈立德·侯赛因
2019年5月3日

任何身体都可以帮助我解决这个问题吗
在comsol中准备模型后,我们应用了特定电压,然后我们如何知道发生了电击穿或放电或电动故障……
以及我们如何知道在哪个水平的电压电故障发生

HannaGothäll
HannaGothäll
2019年5月6日

嗨,说,
通常,通常可以使用可用的预定义网状尺寸。要了解有关如何使用手动指定网格大小参数设置手动网格序列的更多信息,请参阅以下教程:

//www.dvdachetez.com/model/using-meshing-sequences-13869
//www.dvdachetez.com/model/free-tetrahedral-meshing-of-a-piston-deometry-14439

有关您的特定应用程序的更具体问题,请将您的模型MPH文件发送到support@comsol.com

HannaGothäll
HannaGothäll
2019年5月6日

亲爱的哈立德,
这听起来像是Comsol的支持团队最好解决的一种问题。请将您的模型MPH文件发送到support@comsol.com或使用以下联系表:

//www.dvdachetez.com/support/case/

奥斯卡·迪亚兹(Oscar Diaz)
奥斯卡·迪亚兹(Oscar Diaz)
2019年5月6日

hej hanna,

非常有趣的测试,我的日常问题是网络。几个问题:
1.在多核心测试中,您是否对每个域使用其他网格节点 /自由TET节点?
2.通常,您包含的网格/TET节点的量是否有任何差异?
3.网格划分任务是否遵循模型构建器树中的任何特定顺序/层次结构(例如第一行,然后是第二行)?

钉!

HannaGothäll
HannaGothäll
2019年5月7日

HEJ Oscar,
我很高兴您发现博客文章很有趣。这是我对您问题的回答:
1.在所有三种情况下,我仅使用一个免费的四面体操作,只是案例之间发生了变化的域数。文本将进行更新以反映这一点。
2.是的,情况会根据您添加到网格序列中的数量节点而发生变化。仅每个网格操作才能进行并行化,因此,如果我在两个不同的四面体特征节点中添加了三个域,则只能使用三个核心。通常,建议使用尽可能少的网格操作。要在不同域上设置不同的大小设置,请使用多个全局或局部大小属性,只有一个免费的四面体节点。有关更多详细信息,请参阅上面评论中链接的第一个网格划分教程(使用网格划分序列)。上面的文本将更新以包含此信息。
3.通常从顶部开始,直到下一个操作。第一个网格划分操作不知道任何随后的网格操作或全局尺寸属性,它只知道前面的属性和局部尺寸属性。

Yannick Dufil
Yannick Dufil
2020年7月22日

你好,

COMSOL如何通过包含多个CPU的机器(尤其是针对网格划分)来管理计算的并行化?将我的完全对称设备分为与我的杯子中的核心之和一样多的域或更复杂的计算是有用的吗?

HannaGothäll
HannaGothäll
2020年8月10日 Comsol员工

你好yannick,

博客文章中解释的并行化包括包含多个CPU的计算机的情况。将域分为几个较小的域是否会更有效,这是您需要尝试的特定几何和网格序列。有关更多具体建议,请将MPH文件发送到support@comsol.com从我们的支持团队那里获得帮助。

山姆·帕勒(Sam Parler)
山姆·帕勒(Sam Parler)
2020年12月15日

我的8岁,2-CPU(Xeon E5-2687W),总共32核,3.10 GHz,16个线程,8个ECC RAM插槽,每个插槽中有等于16 GB的杆,该插槽中的1x1x6域,具有0.011m自由四面体网格中的0.02m最大元素大小在接下来的时间内构建:
单个域:200秒
4个域:65 s。
8个域:41 s。
16个域:32 s。
32个域:32 s。

HannaGothäll
HannaGothäll
2020年12月17日 Comsol员工

你好山姆,

很高兴您发现博客文章的主题很有趣。您确定核心数量吗?这种类型的机器通常具有16个内核,而不是32个,使表中列出的时间正确。

山姆·帕勒(Sam Parler)
山姆·帕勒(Sam Parler)
2020年12月17日

我相信您对此是正确的。我有一台2-CPU机器,英特尔将每个CPU列为具有8个内核和16个线程。

令我感到困惑的是,处理器下的Windows的“计算机管理”应用显示了32个处理器的列表。我想知道那是来自线程还是什么。

探索comsol乐动体育赛事播报博客