共享内存系统中高效并行FDTD计算方案
- 格式:pdf
- 大小:309.56 KB
- 文档页数:4
第39卷第5期2010钲9H电子科技大学学报JournalofUniversityofElectronicScienceandTechnologyofChinaV01.39No.5Sep.2010
共享内存系统中高效并行FDTD计算方案
赖生建1,王秉中1,黄廷祝2
(1.电子科技大学物理电子学院成都610054;2.电子科技大学应用数学学院成都610054)
【摘要】针对电大问题的FDTD仿真,在共享内存系统中提出一种不交换数据的并行FDTD计算方案。该方案利用共享内存系统的通用多核处理器架构,直接读取并行场域边界面的数据实现并行计算,采用自主开发的多线程技术实现FDTD的并行计算。通过数值仿真测试,提出了最大并行计算效率的区域划分方式,并验证了所提出的方案是一种理想的基于共享内存系统的并行FDTD计算方案.关键词计算效率:时域有限差分法;通用多核处理器:并行算法;共享内存中图分类号TN014文献标识码Adoi:10.3969巧.issn.1001-0548.2010.05.007
HighEfficientParallelFDTDAlgorithmScheme
inSharedMemorySystems
LAISheng-jianl,WANGBing.zhon91,andHUANGTing.zhu2(1.SchoolofPhysicalElectronics,UniversityofElectronicScienceandTechnologyofChinaChengdu610054;2.SchoolofAppliedMathematics,UniversityofElectronicScienceandTechnologyofChinaChengdu610054)
AbstractThispaperproposesahi曲efficientfinite-differencetime-domain(FDTD)parallelalgorithmschemewithnoexchangingdataprocessinsharedmemorysystemsfortheelectricallylargeelectromagneticproblems,whichtakestheadvantageofsharedmemoriesofthegeneral-purposemulticoreprocessorsarchitecture.FDTDparallelalgorithmiSrealizedbydirectlyreadingthefieldcomponentdataontheparallelboundaryandthemultithreadedprogrammingtechniqueisadaptedtodeveloptheparallelcomputationcodeofFDTD.Throughaseriesofthenumericaltests,awayofthesplittingregionisproposedtoimplementthemaximumparallelcomputationalefnciency.ItiSverifiedthattheproposedschemeiSallideaparallelFDTDschemeinshared
memorysystems.KeyWOrdscomputationalemciency;finitedifferencetimedomainmethod;general—purposemulticore
processors;parallelalgorithms;sharedmemories
目前,基于多核多处理器(CPU)和大容量内存的计算机已成为进行工程计算仿真的主流配置,许多
商业电磁仿真软件都提供了支持在多核系统上的并
行计算功能。在计算电大的电磁问题时,计算效率比单处理器系统有显著的提高。
在电磁仿真的各种数值算法中,时域有限差分
(FDTD)'法ll】由于Yee元胞上的场只与相邻元胞上的场有关系,因此具有天然的并行性,FDTD是最具并
行计算效率的电磁场数值方法。传统的FDTD并行算
法首先对计算区域进行并行区域划分,然后在各区域上单独进行FDTD计算,通过同步并交换并行边界
面上的场量实现并行FDTD计算。并行边界数据交换
技术一般有3种[21:(1)各并行边界面上的场量只计算一次的方式,再交换相邻区域的切向电场和切向
磁场,但该方式要通过两次数据交换操作,并行效
率低。(2)采用只中断一次的方式,只交换一次相邻区域切向磁场数据,并行计算效率高,但交界面上
的场分量要计算两次。(3)各并行区域的交界面上重
叠一个网格的方式,虽多消耗了一层网格占用的资源,但便于处理交界面的材料、共性网格等信息,
该处理方式更具有通用性。
电磁场并行数值计算的编程实现通常采用消息
传递方式(MPI)库进行开发【¨】,也有基于共享内存方式的Oper山IP库开剔51。并行FDTD计算也采用这些开发技术,通过ⅧI创建的每个并行区域计算任
务(进程)p7|,在计算进程中分配各区域的FDTD计算
收稿日期:2008—11—24;修回日期:2009—04—18基金项目:教育部高等学校博士学科点专项科]i)f基金(20060614005):国家自然科学基金(10771030,10926190)
作者简介:赖生建(1976一),男,博士,主要从事计算电磁学和通用电磁仿真软件开发等方面的研究.
万方数据第5期赖生建等:共享内存系统中高效并行FDTD计算方案68l
资源,进行当前区域的FDTD步进计算。通过MPI
库的传送和接收函数实现并行边界上数据交换,再
调用MPI的等待函数同步所有并行区域的计算任
务,协调FDTD的并行计算。
传统并行FDTD计算通过并行边界上的数据交
换方式实现,如果取消数据交换的过程,节省该过
程的处理时间,可能会进一步提高并行FDTD的计算
效率。基于这种思想,本文提出一种在共享内存系
统中进行高效并行FDTD计算的方案,对方案所涉及
的算法思路、并行区域划分方式及编程实现技术进行分析和讨论,最后进行数值仿真测试。
1基于共享内存系统的并,行FDTD计
算方案
共享内存系统的应用程序开发有多进程和多线
程两种方式。多进程程序中的各进程管理各自的计
算资源,进程间的数据共享通过消息方式数据传递
实现【8l;而多线程程序中的各线程可以分享主进程
程序分配的所有计算资源,直接共享程序中的数据,
如图l所示。利用多线程程序开发的该特点,并行
FDTD计算可以选择直接读取内存数据的方式实现
并行计算。r…。……‘、{数据传递;i共享资源;
a-各进程间数据共享方式
b.进程中各线程同数据共享方式图1应用程序共享数据资源示意图
为实现共享内存系统下的并行FDTD计算,本文
提出多线程下的并行FDTD计算思路:首先根据仿真
实例统一分配和计算FDTD仿真所需的资源,即统一
剖分Yee元胞、激励源、材料、后处理和边界条件等
一系列FDTD仿真前处理所涉及的各物理量的分配
和计算,完成FDTD循环步进计算前的准备;然后根
据FDTD并行计算设置,对仿真区域进行区域划分;
再采用多线程技术分配和管理各区域的FDTD计算;
最后通过直接读取各区域间的并行边界上场量数据,实现整个仿真区域的FDTD并行计算。该实现思
路针对整个FDTD计算资源离散化,对各区域资源进
行并行计算控制。对任意复杂模型都可以采用相同
的处理过程,因此它具有很强的实践性和通用性。
图2基于共享内存系统的FDTD并行计算区域划分示意图
基于本文提出的并行FDTD计算思路,进行区域
划分,其划分方式与传统并行FDTD计算一样,并行区域边界面与Yee电场网格重合,如图2所示。为了
自然地共享并行边界上的场量,本文提出一种巧妙而又简洁的对并行边界上场量的分配策略:区域中
坐标轴正方向上的并行边界,包含在该区域进行
FDTD计算;坐标轴负方向上的并行边界,就排除该区域范围,并入紧邻区域进行FDTD计算。该种排列
方式可以避免在并行边界上计算两次场量的情况发
生,也不会有因两个区域共用并行边界造成的数据
交换操作。图2中,虚线包含的区域为并行区域的
FDTD计算范围,如图中所标识的(,,Z目并行区域,在砰由负方向上的并行边界(左边界)上,场量在该区
域不计算,而是I扫(I-1,Z/O区域的FDTD计算;右并行边界面上场量由本区域的FDTD计算,其他方向
类推。
并行计算的编程实现大都采用MPI库,该库是
一个功能齐全、可移植性强的并行计算控制库[91。然而所提出的并行FDTD计算策略,因其并行计算的
资源控制比较简洁,只需要同步计算控制等少数操
作,并不需要很复杂控制的庞大MPI函数库。另外,
采用MPI库编写的程序要受MPI程序控制,并行计算的开发和调试不方便。另一个广泛使用的并行控制
库OpenMP也有相似的特点。因此,利用多线程开发技术共享内存资源的特点,本文采用自主开发多线
程编程技术【10J实现并行FDTD计算,即各并行区域的FDTD计算由各计算线程控制并协调并行FDTD
计算。并行边界上的场量数据采用直接读取共享内
存中数据的方式,实现“数据交换”。
万方数据682电子科技大学学报第39卷
图3共享内存方式的并行FDTD计算流程图
基于共享内存方式并行FDTD计算的流程图如
图3所示。首先分配FDTD在整个仿真区域上的计算
资源,在内存中这些计算资源按整个仿真区域分配
FDTD仿真所需的三维数组变量。若采用并行计算,
在并行方向上以均衡方式自动划分各并行区域网格
数目和计算并行FDTD计算的全局参数。然后创建各
区域的FDTD计算线程;启动各计算线程进入各区域
的FDTD计算;各区域计算完磁场后,判断其他区域
是否完成磁场计算,若没有,则当前计算线程进入
判断全局并行标志的空循环中,等到为真时退出;
若其他线程都完成了磁场计算,则设置全局并行标
志为真,各计算线程退出循环,进入电场及边界计
算。各计算线程完成电场及边界计算后,各计算线
程等待一次,其处理方式与前面磁场计算相同。计
算完电场后,全域FDTD仿真中的场源激励计算和
观测数据保存等处理部分单独计算,由最后计算完
电场的计算线程来完成,然后判断FDTD仿真是否
完成,若没有完成,所有计算线程进入下一步进的
计算。
因采用并行边界上只计算一次场量的区域划分策略,并行边界相邻一个网格上场量的计算都需要
相邻区域的场量,各并行区域FDTD的电场和磁场单
独计算后,要求等待其他并行区域的FDTD计算完成
后,才能继续计算,即每次FDTD步进计算需等待两次。
与传统并行FDTD计算相比,本文提出基于共享
内存方式的并行FDTD计算方案没有数据交换过程,
采用没有计算线程的挂起和恢复等并行控制操作,
减少了影响并行计算的因素,提高了并行FDTD计算
效率。下面通过数值仿真实验,测试所提出的基于
共享内存系统并行FDTD计算方案的计算效率,并与
传统并行计算方式进行比较。
2并行FDTD计算方案测试
加速比是衡量并行系统计算性能的参数,定义
多核计算机系统中并行FDTD计算的加速比为:
口:生(1)tp式中‘。为用单线程计算全区域FDTD所需的时
间;t。为用P个线程控制P个并行区域的FDTD计
算相同问题所需的时间,P个并行区域构成整个FDTD仿真区域。