关键词:PyroSim中文网、烟气流动模拟分析软件(CFD)、PyroSim烟气流动模拟分析软件 、消防安全评估软件
FDS的MPI并行版本可与多个网格一起使用,以大大减少PyroSim / FDS解决方案的时间。从PyroSim 2019.1开始,MPI多进程执行行为的变化要求用户在网格数量超过逻辑处理器数量时手动将网格分配处理器。这篇文章将提供一些背景以及如何有效使用MPI加快解决方案的示例。
在PyroSim 2019.1之前,用户只需单击“并运行FDS”,PyroSim就会为每个网格启动一个过程。如果网格(进程)的数量超过逻辑处理器数量,则FDS MPI实现将“循环”遍历全数进程,从而自动平衡处理器负载。PyroSim 2019.1中包含的FDS 6.7.1更改为新的FDS MPI实施。现在,如果启动的进程数现在被限制为逻辑处理器的数量。如果用户单击“并运行FDS”,这可能导致较长的运行时间由于其他网格都全数分配给了结尾的处理器,因此网格数量超过了处理器数量。
在本文中,我们将重点介绍在具有多核处理器的单台Windows计算机上运行MPI。我们将专注于一种简单的方法,但是用户应该认识到,可能会有其他选择可以进一步提高您的解决方案的速度。
《FDS用户指南》在第3张“运行FDS”中对使用多个处理器有很好的的背景介绍。在下面的描述中,引号中的句子取自(PDF用户指南)。
核心与逻辑处理器
您将需要知道计算机的核心和逻辑处理器的数量。对于典型的Windows计算机,每个插槽有一个CPU。每个CPU通常具有多个核心,每个核心实质上是一个独立的处理单元,共享对点源和内存的访问。英特尔制造的处理器支持一种名为“超线程”的技术,该技术可使视在处理器的数量增加一倍。这些处理器成为逻辑处理器,以区别于物理核心。为了有效地运行FDS,启动的进程不得超过罗杰处理器的数量。
请注意,取决于处理器的配置,即时处理器具有超线程功能,逻辑核心的数量也可能不是物理核心数量的两倍。
要遭Windows中查找套接字、核心和逻辑处理器的数量,请启动任务管理器,然后单击“性能”选项卡。计算机的值将显示在CPU部分中,如图1所示。(顺便说一句,要更改“任务管理器”图,从显示单个处理器的总体CPU使用率,请邮件单击该图,然后选择“将图更改为”,然后点击逻辑处理器。)
请注意,处理器的数量取决于您的计算机,而进程的数量是在运行时定义的,表示在解决方案中使用多个可用处理器。
使用MPI的策略
要将MPI用于并行解决方案,您必须具有多个网格。可能有许多约束条件决定了网格的排列方式。如果对或进行建模,通常使用具有较小单元机的网格进行火灾,并使用原理原理火的具有较大单元的网格。如此长的打通大厅或新房的几何形状可能会拖加其他约束。风扇和HVAC流量的有效建模可能需要良好的网格分辨率。
在这些约束条件下,我们将描述两种基本方法,他们将导致接近有效的求解时间。然后,我们将提供每个示例。
简单的方法:网格数小于或等于逻辑处理器数
对于较简单的方法,请使用以下准则:
如果可能,请对问题进行网格划分,以使网格数等于计算机上的核心数。如果不可能,则必须使网格数小于或等于逻辑处理器数。
全数网格都应具有大约相同数量的像元
第二种方法:网格数超过逻辑处理器数
如果网格数量超过可用逻辑处理器的数量,则用户必须将每个网格手动分配给一个进程。然后将“运行FDS群集”选项用于解决方案。
目前,将网格分配给流程手动操作,在将FDS网格分配给特定的MPI 流程中进行了描述。使用以下准则:
根据解决方案的要求对问题进行网格划分。
确定您将使用多少进程。一个不错的起点是使用计算机上的内核数量。
将网格分配给每个过程。
分配网格,以使分配给每个过程的像元总数大致相同。请注意,进程的编号从零开始,因此八个进程将从0到7编号。
使用“运行FDS群集”选项运行模式,这将打开“群集FDS参数”对话框。指定进程数。如果在步骤3中分配网格是使用了八个过程,请在此对话框中指定8.
要运行模拟,亲自啊“群集FDS参数”对话框中单击“确定”。您可能需要输入计算机密码。另外,您可以按照以下说明设置密码以备将来使用。请参阅下面有关长时间运行问题的提示。
步骤2在图2和图3中说明,它们显示了使用8个过程对32个网格进行的模拟。在这种情况下,将网格1到4分配给MPI_PROCESS 0(图2 ),将网格5到8分配给MPI_PROCESS 1,直到网格32分配给MPI_PROCESS 7 (图3)。全数网格的线程数均指定为一(N_THPEADS 1)。
图4 中显示了步骤4,该图显示了“运行FDS群集”对话框以及如何分配8个进程。
如何验证处理器负载平衡
“在计算结束时,FDS将打印出一个名为CHID_cpu.csv的文件,该文件记录每个MPI进程主要例程中花费的CPU时间。例如,列标题VELO代表与计算流速有关的全数子例程。MASS代表与计算物种质量分数和密度有关的全数子例程。”
图5显示了一些网格未分配给过程的情况。结果,结尾的过程分配了全数剩余的网格。这是的总运行时间更长,因为随着时间的推移,大多数流程必须等待过载的流程。
图6显示了网格数和处理数相同,负载均衡的情况。
例子
使用MPI的解决方案速度
图7中全数的模型用于测试使用不同数量的网格和MPI过程的效果。几何形状保持不变,但案例使用1到32个网格。在模型中,案例的总数为0.8M,1.6M和6.4M。模型中没有指定的流量或火灾。顶部边界是OPEN 曲面。
使用更多的单元格可以迅速增加求解时间。例如,如果您的模型具有1M个像元,则在X,Y和Z方向上将像元的大小减小1/2即可得到8个像元。此外,时间步长将减少两倍。因此,简单地将网格细化两倍,将导致运行时间增加大约16倍。这就是为什么您指向在必要时优化网格的原因。
解决方案时间如图8所示。如上所述,计算机具有8个内核和16个逻辑处理器。对于1至16的网格,处理器的数量与网格的数量相同,只需单击Run FDS Parallel即可运行解决方案。对于32网格情况,为16个过程中的每个过程分配了2个网格,解决方案使用Run FDS Cluster。
测试计算机具有8个核心。对于测试问题,较短的解决时间是在MPI进程数量与核心数量(8个网格和8个核心)匹配的情况下。不能保证匹配MPI进程和核的数量总是会在很短的时间内完成,但这提供了应该给出的合理结果的指导。
您还可以从结果中看到,随着添加其他网格和关联的过程,收益递减。如果有一台服务器计算机可能具有多大32个或更多的物理核心,则可以通过同事运行多个模型或案例来使用计算资源。由于从4到8网格移动所获得的速度可能并不重要,因此您可以通过使用相同的16个内核同事运行4个4网格同时发生的问题,而不是每种情况都使用16网格来更快完成更多的总工作按顺序。
几种变化
我们将简要讨论此测试问题的三种变体。
第一种情况是80万像元,16个网格和8个进程,每个进程有2个线程。运行时间为66.12秒,比理想时间58.37秒稍慢
第二种情况是0.8M单元,32个网格和8个过程,其中4各网格以线性模式分配给每个过程(图10)。这给出了78.05秒的运行时间,在此慢于理想时间58.37秒。
第三种情况是80万个像元,32个网格和8个过程,并以界面模式将4个网格分配给每个过程(图10)。运行时间为80.04秒,比理想时间58.37秒要慢。
至少对于该测试问题,显而易见的结论是,匹配的岩心和网格可以使时间更短。
火灾模拟
一个简单的火灾模拟说明了子啊火灾附近使用精致的单元格并在远离火灾的位置使用较大的单元格。该模型使用了8个网格。火的放热率为2MW。对于2兆瓦的火,D*/10=0.126536m,因此火周围网格的单元大小为12.5厘米。远离火源,使用25.0厘米的像元大小。使用1.5M个像元,全数具有200000个像元的网格均被使用,Mesh01的100000个像元除外。
该溶液运行100秒。目视检查结果显示,跨小网格和大王歌的网络边界平滑过渡。
PyroSim中文网了解更多软件详情:https://www.pyrosimchina.com/
请关注人员疏散能力模拟分析软件、烟气流动模拟分析软件更多的信息!