干货有限元 干货详情

ANSYS Fluent并行效率低的原因及解决方案

喜剧收场30
计算流体力学数值模拟有限体积法ANSYS Fluent并行计算高性能计算MPI通信区域分解网格分割NUMA架构硬件拓扑CPU核心分配并行效率优化

Fluent 并行计算就是利用多个计算节点(处理器)同时进行计算。并行计算可将网格分割成多个子域, 子域的数量是计算节点的整数倍(如16个子域可以对应1、4、8个计算节点)。每个子域(或子域的集合)就会“居住”在不同的计算节点上。

Fluent在并行求解过程中,实际启动了多个相互通信的进程:Cortex(人机交互进程),Host进程(主节点进程)和若干计算节点进程(Compute node进程)。其中,Host进程并不存储任何网格和物理场数据,多数情况下,它只是将Fluent人机交互进程Cortex的指令进行解释并分发给各个计算节点进程;而计算节点存储网格和物理场数据,在接到Host进程分发的指令后,进行矩阵计算,他们之间存在一种虚拟的数据链接,是通过MPI来相互传递数据的。


注意,这里的计算节点并不是硬件物理意义上的计算节点,而是Fluent为了区分Host进程,而定义的一种与其功能有所区别的进程(专门用来计算)。


由于流体计算量通常都很大,所以我们可以想象得到Fluent计算节点进程的计算量非常繁重(每个进程要负责相当庞大数量网格的计算),因此最为理想的模式是:为每一个计算节点进程分配一个专享的CPU物理核心(Core)。


2. Hwloc的概念

便携式硬件位置hwloc(Portable Hardware Locality)软件包提供了便携式抽象(跨操作系统,版本,体系结构等)现代体系结构的分层拓扑结构,包括NUMA内存节点,共享缓存,处理器插槽,处理器内核和处理单元(逻辑处理器或“线程”)。它也聚集各种系统属性,例如缓存和内存信息。


Hwloc主要是旨在帮助应用程序收集有关现代的信息计算硬件,以便相应有效地利用它。例如,两个紧密协作的任务最好是放在共享缓存的内核上以便提升速度。


3. 并行效率低的原因及解决方案

3.1.  问题1:有小伙伴在Fluent启动界面设置的并行计算节点进程数大于他所实际拥有的物理核数,计算时发现并行效率很慢。


原因:并行节点数大于实际物理核心数,会使得每个计算进程就像馋嘴的娃娃,都想独享某个CPU物理核这块蛋糕,结果最后谁也不能完全占有,所以每个计算进程都变得非常缓慢。


解决方案:将并行节点数设成稍低于实际物理核心数。



评论

0/1000发布评论
全部评论

喜剧收场

关注
TA的主页

干货推荐