fluent并行.docx
《fluent并行.docx》由会员分享,可在线阅读,更多相关《fluent并行.docx(24页珍藏版)》请在冰豆网上搜索。
![fluent并行.docx](https://file1.bdocx.com/fileroot1/2022-11/22/4f5e1b57-f072-42d1-a6d6-595f82d0f147/4f5e1b57-f072-42d1-a6d6-595f82d0f1471.gif)
fluent并行
-
28.并行处理
Fluent支持并行计算,且提供检查和修改并行配置工具。
你可用一个专用并行机(如多处理器工作站)或通过工作平台的网络运行Fluent。
下面介绍Fluent并行计算的特点。
28.1并行计算简介
Fluent并行计算就是利用多个计算节点(处理器)同时进行计算。
并行计算可将网格分割成多个子域,子域的数量是计算节点的整数倍(如8个子域可对应于1、2、4、8个计算节点)。
每个子域(或子域的集合)就会“居住”在不同的计算节点上。
它有可能是并行机的计算节点,或是运行在多个CPU工作平台上的程序,或是运行在用网络连接的不同工作平台(UNIX平台或是Windows平台)上的程序。
计算信息传输率的增加将导致并行计算效率的降低,因此在作并行计算时选择求解问题很重要。
推荐运行并行Fluent的操作步骤如下:
1. 开启平行求解器,选择计算节点数,详见28.2和28.3节。
2. 读入case文件,让Fluent自动将网格分割为几个子域。
最好是在建立问题之后分割,因为这种分割和计算的模型有关(象非等形接触面、滑移网格、shell-conductionencapsulation的自适应)。
如果你的case文件中包含滑移网格,或是在计算过程中要对非等形接触面进行修改,那就得用串行求解器进行分割。
还有其他的方法进行分割,如在串行或并行求解器上进行手工分割。
3. 仔细检查分割区域,如必要再重新分割,详见28.4.5节如何检查分割区域。
4. 进行计算,详见28.5节如何检查和提高并行计算。
28.2开启并行求解器
开启Fluent并行求解器的方法依赖于操作平台是专用并行机还是工作站。
28.2.1在UNIX系统下开启并行求解器
可以在装有UNIX系统的专用并行机或工作平台网络上运行Fluent,如何运行如下:
在多处理器UNIX机上运行
Figure28.2.1:
SelectSolver控制面板
在专用并行机(多处理器工作平台或大型并行机)运行Fluent,键入运行命令,点击Fluent中File
Run...,用SelectSolver(图28.2.1)控制面板设定并行架构和求解器信息。
1. 在Version框里,点击3D和DoublePrecision来选择所求解问题是3D还是2D问题,所采用精度是单精度还是双精度,然后点击Parallel选项。
2. 在Options框里,在Communicator下拉菜单中选择所要用的信息传输库。
推荐选用Default库,因为它可以为并行机提供最全面的并行操作。
这里还包含VendorMPI和SharedMemoryMPI(MPICH)。
VendorMPI选用被机器硬件优化的信息传输库。
如果机器上的硬件支持并行工具包,当选用Default时,Fluent会自动检测它。
SharedMemoryMPI(MPICH)选用MPICH信息传输库(MPI公共域)。
3. 在Processes上选择并行计算的CPU数。
4. 点击Run按钮就可以进行并行计算了,一旦求解器开始运行,就不需要任何其他的设备了。
如果你想利用命令开始并行计算,可键入如下命令:
fluentversion-tn[-pcomm][-loadhost][-pathpath]
其中version可选择2d、3d、2ddp和3ddp,n指的是CPU数。
其他的根据需要使用,使用时根据方括号提示的信息写(写时不包括方括号)。
comm指的是并行传输库的名称,host指的是连接计算节点的主机(默认的是你使用的主机)名,path指的是Fluent.Inc安装的路径。
!
!
一般,只有你想不用默认的传输库时才需要设置-pcomm。
专用并行机上的传输装置和与它相关的传输库列表如下:
vmpi
vendorMPI
smpi
sharedmemoryMPI(MPICH)
net
socket
在UNIX工作平台上运行
在UNIX工作平台网络上运行Fluent,键入运行命令,点击Fluent中File
Run...,用SelectSolver(图28.2.1)控制面板设定并行架构和求解器信息。
1. 在Version框里,点击3D和DoublePrecision来选择所求解问题是3D还是2D问题,所采用精度是单精度还是双精度,然后点击Parallel选项。
2. 在Options框里,在Communicator下拉菜单中选择Socket信息传输库。
!
!
当起用并行网络版是,必须选择Communicator下拉菜单的Socket,除非VendorMPI支持集成。
如果选用Default时,就会起用一个MPI并行版本,那就不能生成附加计算节点。
3. 在Processes上设置初始并行计算节点数。
可先从1或0个节点开始,后面再生成其他节点,详见28.3.1节。
4. (可选择)在HostsFile键入包含机器列表的文件的名字。
如果Processes被设为0,Fluent会为文件中列出的每一台机器产生一个节点。
5. 点击Run按钮就可以进行并行计算了。
如果你想利用命令开始网络并行计算,可键入如下命令:
fluentversion–t1–pnet(用socket传输装置)
fluentversion–t1–pnmpi(用网络MPI传输装置)
这样就可以在工作平台上的某个计算节点上开启求解器了,然后用NetworkConfiguration控制面板添加远程工作平台上的计算节点,详见28.3.1节。
如果键入如下命令:
fluentversion–t0–pnet[-cnf=hostsfile](用socket传输装置)
fluentversion–t1–pnmpi[-cnf=hostsfile](用网络MPI传输装置)
这样就可以开启远程机器上的计算节点的控制程序。
如果设置了-cnf=hostsfile,则在hostsfile文件中列出的每个机器都被设为一个计算节点,详见28.3.1节。
28.2.2在Windows系统下开启并行求解器
可以在装有Windows系统的专用并行机或网络Windows平台上运行Fluent。
在多处理器Windows机上运行
在Windows系统下,可通过MS-DOS窗口开启Fluent专用并行版本。
如在x处理器上开启并行版本,可键入
fluentversion–tx
在提示命令下,将version替换为求解器版本(2d、3d、2dpp、3ddp),将x替换为处理器的数量(如fluent3d–t3是在3台处理器上运行3D版本)。
如果Fluent命令不被识别,1.5.3节介绍了如何修改用户的环境变量。
在Windows工作平台上运行
有两种方法在Windows工作平台网络上运行Fluent:
一种是用RSHD传输装置软件,另外一种是采用硬件支持的信息传输接口(VMPI)。
参考Windows并行安装说明书来安装。
启动说明书是在假定机器已经装了必要的软件(遵照安装说明书安装)前提下的。
启动基于RSHD的Fluent并行版本
如果你的机器是采用RSHD软件进行网络传输的,在命令提示符中键入:
fluentversion-pnet[-pathsharename][-cnf=hostfile]-tnprocs
● version必须用你所运行的Fluent版本(2d、3d、2ddp、3ddp)代替。
● -pathsharename是用通用命名标准设定Fluent.Inc路径的网络共享名。
只有你不是在安装Fluent的那台机器上计算才进行这项操作,如果是在同一台机器上进行计算就不必键入这项信息。
例如,Fluent是安装在computer1上,就将sharename用共享路径\\computer1\Fluent.Inc代替。
● -cnf=hostfile指定所有你要运行并行工作的计算机列表的文件。
如果这个文件不在系统默认的路径下,就要给出它的全路径。
用Notepad类文本编辑器生成hostfile,仅有的要求就是文件名中不能含有空格,如hosts.txt是对的,而myhosts.txt不行。
这个hostfile要包含如下内容:
computer1如(node01)
computer2
!
!
列表中的第一个计算机必须是你所使用的计算机。
如果网络上的计算机是多处理器,可将它在列表中多写几次。
例如,computer1有两个CPU,在hosts.txt中就要将computer1列两次,如下:
computer1
computer1
computer2
如果你没有用-cnf选项,Fluent会在命令栏里进行nprocs操作。
然后就可以用Fluent里NetworkConfiguration控制面板在工作站上引入交互式计算节点。
● -tnprocs设置所用节点数。
如果-cnf被选用,hostfile就会自行选择那几台计算机用于并行工作。
例如,hostfile里列有10台计算机,而你只想用其中的5个节点进行计算,就可以将nprocs设为5(即-t5),Fluent就会用hostfile中列出的前5台计算机工作。
可用NetworkConfiguration控制面板杀掉进程或是引入其他节点,详见28.3节。
例子:
对一个基于RSHD的3D问题,启用名字为hosts.txt的hostfile中前3台计算机进行并行计算的完整命令是:
fluent3d-pnet-cnf=hosts.txt-path\\computer1\fluent.inc-t3
启动基于Vendor-MPI的Fluent并行版本
如果你的机器是采用硬件支持的MPI软件进行网络传输的,在命令提示符中键入:
fluentversion–pvmpi[-pathsharename][-cnf=hostfile]-tnprocs
各选项的含义与上节中相同,但要注意以下两点:
● hostfile是必须的。
当使用MPI软件时不能用NetworkConfiguration控制面板为工作站引入计算节点(注意:
列表中的第一个计算机必须是你所使用的计算机)。
● 当使用MPI软件时不能用NetworkConfiguration控制面板杀掉进程或是引入新的计算节点。
例子:
对一个基于Vendor-MPI的3D问题,启用名字为hosts.txt的hostfile中前3台计算机进行并行计算的完整命令是:
fluent3d–pvmpi-cnf=hosts.txt-path\\computer1\fluent.inc-t3
28.3使用并行网络工作平台
可利用在网络上连接的工作平台引入(杀掉)计算节点来形成一个虚拟并行机。
即使一个工作平台仅有一个CPU,也允许有多个计算节点共同存在。
28.3.1配置网络
若想将计算节点引入到几台机器上,或是对当前网络配置进行一些修改(如当启动求解器时发现主机上引入了太多的计算节点),可通过点击Parallel
Network
Configure...打开NetworkConfiguration控制面板(见图28.3.1)来设置。
Figure28.3.1:
NetworkConfiguration控制面板
网络结构
计算节点的标签从0开始顺序增加。
除计算节点外,还有一个主机节点。
Fluent启动时主机节点也自动启动,而退出Fluent时它也随之被关闭,在Fluent运行时它不能被关掉。
而计算节点随时都可以关闭,节点0除外,因为它是最后一个计算节点,主机总是引入节点0,而节点0引入所有其他节点。
引入计算节点的步骤
引入计算节点的基本步骤如下:
1. 在AvailableHosts列表中选取要引入节点的主机。
如果所需要的机器未被列出,可在HostEntry里手工增加一个主机,或是从hostdatabase中复制所需要的主机(见28.3.2节)。
2. 在SpawnCount里为每个被选主机设置计算节点数。
3. 点击Spawn按钮,新的节点就会被引入,并被添加到SpawnedComputeNodes列表中。
其他的和网络配置有关的用途在下面介绍:
手动增加主机
在NetworkConfiguration控制面板上的AvailableHosts列表里手动增加一个主机,可在HostEntry下的Hostname里键入远端机器的网络名,在username里键入机器的注册名(除非所有的帐户都是相同的注册名,这种情况不需要指定username),然后点击Add按钮,这个被指定的主机就被加到了AvailableHosts列表里。
删除主机
在NetworkConfiguration控制面板上的AvailableHosts列表里删除一个主机,选择这个主机,点击Delete按钮,这个主机名就被从AvailableHosts列表里删除了(但主机数据库不受影响,见28.3.2节)。
杀掉计算节点
如果引入了一个不需要的计算节点,要杀掉它,可在SpawnedComputeNodes列表中选中它,然后点击Kill按钮即可。
!
!
注意:
计算节点0只有当它是最后一个计算节点时才能被杀掉。
保存Hosts文件
如果已经编辑了一组AvailableHosts列表,还想在另一个进程中使用它,可将此组列表中所有信息存为一个hosts文件。
点击Save...按钮,会弹出SelectFile对话框,键入文件名,执行保存。
当你想用时,可将此文件载入主机数据库(见28.3.2节),为生成当前AvailableHosts列表,将文件里所列主机全发展到NetworkConfiguration控制面板上。
节点引入时通常出现的问题
引入进程时系统会尝试和新节点建立连接,但50秒后系统未从新节点获取回应,它就会认为这次引入是不成功的。
如果远程计算机不能找到可识别的Fluent,就会出现这种情况。
若想测试在引入新机器时是否生成新节点,可在所引入机器上的DOS窗口运行如下命令
rsh[-lusername]hostnamefluent-t0-v
hostnam是想引入新节点的机器的网络名,username是被hostnam指定的远程机器的注册名。
!
!
如果所有帐户都是相同的注册名,这种情况不需指定username(方括号内的-lusername不总需要被设置,而键入注册名时不含有方括号)。
另外注意,在某些系统下,DOS命令rsh要用remsh代替。
引入节点失败的几点原因:
注册不正确。
机器引入新节点必须能rsh到新进程执行的机器上,不然引入就失败。
要成功rsh有好几种方法,可求助于系统管理员。
Fluent不被识别。
成功rsh到远程机器,但在远程机器上却无法找到Fluent的路径,这时可用csh命令,将Fluent的路径加到.cshrc文件的路径变量里。
如果这样还是失败,那就在引入新节点之前用parallel/network/path命令直接设置Fluent.Inc安装的路径。
28.3.2主机数据库
建立工作平台的并行网络时,很容易生成局域网机器列表(“hostsfile”),将包含这些机器名的文件加载到主机数据库,然后点击Parallel
Network
Database...(或点击NetworkConfiguration控制面板上的Database...按钮),利用28.3.2图示的HostsDatabase控制面板,在工作平台上选择那些组成并行配置(或网络)的主机。
Figure28.3.2:
HostsDatabase控制面板
如果主机文件fluent.hosts或.fluent.hosts在根目录里,它里面的内容将在程序启动时自动加载到主机数据库里,否则主机数据库为空,直到读入一个主机文件。
读主机文件
如已有包含局域网内机器列表的主机文件,可点击Load...按钮,在弹出SelectFile对话框里选中此文件,将其加载到HostsDatabase控制面板里。
当文件被读入之后,主机名字就会被显式在Hosts列表中(Fluent自动添加每台可识别机器的IP地址,如果某台机器不在当前局域网内,它将被标以unknown)。
将主机复制到NetworkConfiguration控制面板
若想将HostsDatabase控制面板内的Hosts复制到NetworkConfiguration控制面板中AvailableHosts列表里,选择列表中所需复制的名字,点击按钮,被选中的主机就会被添加到你想引入节点机器的AvailableHosts列表中。
28.3.3检测网络连通性
对任何计算节点,都可以查看如下网络连通性信息:
主机名、体系结构、操作ID、被选节点ID以及所有被连接的计算机。
被选节点的ID用星号标识。
Fluent主进程的ID总是主机,计算节点则从node-0开始按顺序排列,所有计算节点都被连接在一起,计算节点0被连接到主进程。
为了获得某计算节点的连通性信息,可点击Parallel
ShowConnectivity...,打开ParallelConnectivity控制面板(图28.3.3)
Figure28.3.3:
ParallelConnectivity控制面板
在ComputeNode区域选择想要了解连通性信息的计算节点数,然后点Print按钮,例如,节点0的输出信息如下所示:
--------------------------------------------------------------
ID Hostname O.S. PID MachID HWID Name
--------------------------------------------------------------
node-2 fili irix 16729 2 11 FluentNode
node-1 bofur irix 16182 1 10 FluentNode
host balin sunos 5845 0 7 FluentHost
node-0* balin sunos 5864 0 -1 FluentNode
O.S.指体系结构,PID是进程ID数,MachID是计算节点ID,HWID是交换机的标识符。
也可以在NetworkConfiguration控制面板里查看某个计算节点的连通性,方法是在SpawnedComputeNodes列表中选择此节点,然后点Connectivity按钮。
如果没有选中SpawnedComputeNodes里的任何节点而点了Connectivity按钮,NetworkConfiguration控制面板将重新被打开,再按照上述方法作就行了。
如果选中SpawnedComputeNodes里的两个以上节点,点Connectivity按钮,可显式每个节点的连通性信息。
28.4分割网格
28.4.1网格分割的一般方法
在用Fluent的并行求解器时,需要将网格细分割为几组单元,以便在分离处理器上求解(见图28.4.1)。
将未分割的网格读入并行求解器里,可用系统默认的分割原则(推荐使用,详见28.4.2节),还可以在连续求解器里或将mesh文件读入并行求解器后自己分割(详见28.4.3节)。
上述任一情况可用的分割方法在28.4.4节介绍。
在建立问题(定义模型、边界条件等)之前或之后分割网格都可以,不过,由于某些模型的特点(象非等形接触面、滑移网格、shell-conductionencapsulation的自适应),最好是在建立问题后。
!
!
如果case文件含有滑移网格或非等形接触面,要在计算过程中进行自适应,因此要用连续求解器分割,详见28.4.2和28.4.3节。
值得注意的是计算节点间的相关单元的分布在网格自适应时要保持不变,除非是非等形接触面,这样在自适应后就不必重新分割了,详见28.4.6节。
若在网格分割前用连续求解器建立问题,用于此项工作的计算机必须有足够大的内存来读入网格。
如果网格太大,不能读进连续求解器,可将未分割的网格直接读入并行求解器里(使用所有被定义主机的内存),然后让并行机自动分割。
在这种情况下,你将在做一个初步网格分割后建立问题。
如果必要可以手工再重新分割一次。
在28.4.2节和28.4.3节介绍了详细情况和限制条件,28.4.5节将介绍如何检测网格分割。
Figure28.4.1:
网格分割
28.4.2自动分割网格
在将case文件读入并行求解器之前选用两分法或是其他网格分割方法来自动分割网格。
对一些方法,可预览来确定是否为最佳的网格分割,28.4.4节介绍Fluent里可用的网格分割方法。
注意case文件中含有滑移网格或非等形接触面,在计算过程中要自适应,则需要在连续求解器中分割此文件,然后再把它读入并行求解器,在AutoPartitionGrid控制面板上选择CaseFile选项。
并行求解器上自动网格分割的步骤如下:
1. (任选)在菜单栏上点Parallel
AutoPartition...,弹出AutoPartitionGrid控制面板(图28.4.2),设置分割参数。
Figure28.4.2:
AutoPartitionGrid控制面板
读入mesh文件或case文件时如果没有获取分割信息,那就保持CaseFile选项开启,Fluent会用Method下拉菜单里的方法分割网格。
设置分割方法和相关选项的步骤如下:
a) 关闭CaseFile选项,就可选择控制面板上的其他选项。
b) 在Method下拉菜单里选取两分方法,此方法在28.4.4节详细介绍。
c) 可为每个单元分别选取不同的网格分割方法,也可以利用AcrossZones让网格分割穿过区域边界。
推荐不采用对单元进行单独分割(关闭AcrossZones按钮),除非是溶解过程需要不同区域上的单元输出不同的计算信息(主区域包括固体和流体区域)。
d) 若选取PrincipalAxes或CartesianAxes方法,可在实际分割之前对不同两分方向进行预测试以提高分割性能。
用预检则开启Pre-Test选项,见28.4.4节。
e) 点击OK。
如果case文件已经网格分割,且网格分割的数量和计算节点数一样,那就可以在AutoPartitionGrid控制面板上默认选择CaseFile选项,这会让Fluent在case文件中应用分割。
2.