Moldex3D高效能运算之平行处理 (Parallel Applications)
平行处理 (Parallel Applications)
工业上的CAE使用者最关心的三大重点为准确性,计算效率,以及接口方便使用的程度。在现今的模拟问题中,几何上的设计越趋复杂,因此对于真实三维模型仿真计算的需求也日益强烈。无可避免的真实三维问题的模拟会延长计算时间以及增加对于内存的需求。对于高精确度和高效能计算的需求是无止尽的。一般来说新一代的处理器可以减少计算的时间,但是目前处理器在频率上的提高已经无法满足工业用户对于准确度和效率的要求。因此使用数个多核心处理器做为计算资源可说是最有效率的方式。并行计算顺理成章成为一个能够解决大型科学或工业问题但却很经济的方法。
1. 平行应用程序 (Parallel Applications)
传统的循序程序仅使用一个处理器,而此处理器同一时间仅执行一个指令。计算的效率取决于数据在硬件之间移动的速度。这样的架构称为单一计算单元。它接收一个指令流并对一个数据流执行操作。
平行程序则是不同的做法。平行程序主要的架构可分为MPMD 多个不同程序处理多份数据)和SPMD (单一程序处理多份数据)。
MPMD – 多个不同程序处理多份数据
在MPMD架构中,每个处理器执行不同的程序,每个程序都会产生让对应的处理器工作的指令流。每个处理器会执行它负责的指令,并对它负责的数据流做处理。下图即为MPMD的架构。
MPMD 并行计算
SPMD – 单一程序处理多份数据
在SPMD架构中,每个处理器都执行相同的程序,但处理不同的数据。Moldex3D便是使用SPMD架构进行并行计算。
SPMD 并行计算
2. 并行计算机的分类 (Modern Parallel Computers)
单节点计算 (Single Node Computing)
个人计算机需配备多核心处理器。每个核心都执行SPMD架构进行数据计算。在此种平行运算模式下,并不需要网络架构进行数据交换,因所有动作都在单一节点计算机内完成。
丛集计算 (Cluster Computing)
丛集是将一群计算机透过gigabit以太网络或Infiniband连接,若透过后者,计算机传送数据时的带宽可以达每秒40GB并且有着极低的延迟。
计算机丛集提供了最佳的性价比,如果运行的操作系统是Linux而不是Windows的话,费用可以更加经济。因为价格上的优势,计算机丛集比起其他选择更有吸引力。
3. 讯息传递接口(MPI) (Message Passing Interface (MPI))
讯息传递接口(MPI)在平行应用程序中被大量使用。它定义了许多程序之间数据交换的接口。MPI有非常多实作的版本,有些是开放原始码,有些则是产业应用版本。
MPICH
MPICH 是有完整MPI规范的开放原始码,并且适用于各种平行与分布式计算。更多的信息请参考 http://www.mpich.org/ 。
Intel MPI
Intel MPI 是以MPICH和MVAPICH2为基础,由Intel开发的商业用版本。它支持目前主流的网络技术如gigabit以太网络以及Infiniband。在Moldex3D的并行计算中便是采用Intel MPI作为预设。
Microsoft MPI
MS MPI是以MPICH和MVAPICH为基础,由Microsoft 开发的商业用版本。它支持目前主流的网络技术如 gigabit 以太网络以及 Infiniband。使用MS MPI 并行计算的计算节点必须安装 Windows Server 操作系统。Moldex3D从 2020 开始支持Microsoft MPI,建议使用者采用Windows Server 2019 (或更新版本) 作为丛集节点。
4. 区域分割 (Domain Decomposition)
在并行计算中,可以藉由区域分割法或功能分割法来利用计算机的计算资源。区域分割法将模型的计算区域分配给每个核心的计算节点,每个核心仅会分配到一个子区域来计算。区域分割法的重点在于如何分配计算区域以达成负载平衡。一个好的负载均衡算法会让不同处理器核心的负载差异达到最小。当负载不平衡时,会发生有的处理器核心满载,而其他处理器却闲置的状况。在并行计算中,数据会在子区域之间频繁的交换。这样的数据交换会影响整理计算的速度,因此计算效率和数据交换的速度以及交换的数据量有直接关连。
METIS
METIS 是由明尼苏达大学的Karypis实验室所开发。Moldex3D采用METIS做为区域分割算法的核心,下图显示经过分割后的计算区域。
当处理器的计算完成时就会产生子区域的结果,Moldex3D的求解器会搜集所有的解进而组成完整的结果。有关更详细的METIS信息,请参阅https://github.com/KarypisLab/METIS
5. Moldex3D并行计算流程图 (Workflow of Moldex3D Parallel Computing)
流程如下图所示。
6. 非Windows 服务器版本的连入联机限制 (Inbound Connections Limit of Non-Server Windows Editions)
在丛集计算中,为了让计算节点读取主节点中需要的数据与写入最终结果,会在主节点上建立连入联机。如果主节点使用Windows工作站版本 (例如Windows10) 则连入联机的数量是有限的;若使用 Windows 服务器版本 (如Windows Server 2019) 数量没有限制。
在Windows 10的限制次数是20,若超过限制,则Moldex3D进行并行计算时有可能会发生错误,因此强烈建议使用者在主节点安装Windows服务器版本。