新技术讲座课程大作业报告并行核外矩量法学院:电子工程学院专业:电磁场与无线技术班级:1302061学号:姓名:电子邮件:日期: 2016 年 06 月21日成绩:指导教师:张玉摘要本文先简要介绍并行核外计算的发展现状与并行计算的核心思想及其评估方法中加速比的概念,再详写核内LU分解的推导过程并由此推广到并行核内LU分解,最后引出并行核外LU分解算法。
并行核内矩量法与并行核外矩量法比较是本文核心,以求导体球的散射模型为例,比较并行核内矩量法与并行核外矩量法,发现并行核外矩量法比并行核内矩量法填充阶段时间消耗多2-3倍,并且二者的加速比均不理想。
同时也发现并行核外矩量法在填充阶段所消耗的时间比并行核内矩量法多了不到一倍,结合在大规模电磁计算中计算机内存的重要性,得出并行核外矩量法在大规模计算中以少量的的额外时间消耗换来计算机内存的合理利用的结论。
总而言之,为了突破计算机内存大小的限制,并行核外矩量法为实际的工程电磁计算提供了一种综合效率较高的选择方案。
关键词:并行核外矩量法加速比计算机内存工程电磁计算一、 并行核外计算发展现状计电磁学发展至今,应用范围越来越广,近些年来更是在电大尺寸平台中得到了快速发展。
由于电大尺寸平台下所解决的问题复杂,研究目标不论是形状还是环境都很繁杂。
在采用矩量法分析后,虽然可以得到很高的精度,但却面临着庞大的矩阵规模。
引入机群处理后,设计并行计算来处理需要很大的内存,种种原因的折衷结果就是引入核外空间存储该矩阵,然后分块读取和处理,最后计算出所需的各类参数,引出目标体相应的特性。
二、并行计算2.1并行计算简介并行计算(parallel computing )是将某一个运算任务进行分解,,然后将分解后所得的子任务交给各个很多处理器进行运算处理。
在运算过程中,每个处理器之间实时进行数据通信和协同运算,并完成了子任务。
在这一基础上,整个运算的速度大大提高,求解计算速度效率显著增强,计算的规模可以成倍增加。
通过并行计算的定义可以看出,并行计算至少需要两台以上的计算机同时运行,且每台计算机之间可以实时进行数据交换;待处理的运算任务可以被划分成多个子任务,并且,每个子运算任务可以并行在各个计算机处理器上同时计算,还要有固定的程序对各个处理器上的数据编程处理,汇总运算结果,最终达到并行计算的目的。
2.2并行算法评估评估手段有很多,这里重点介绍加速比的概念:在处理器资源独享的情况下,单个处理器进行计算所需的时间比多个处理器在相同环境下处理同一个任务时所需时间的比值,称为加速比公式定义为加速比(P 个处理器):1p 2t S t (2-1) 其中1t 是指单个处理器完成真个运算任务所需的时间,2t 是指P 个处理器在并行算法下运算同一个任务所需要的时间。
三、并行核内与核外LU分解3.1矩阵方程我们首先关注小型运算问题。
并行计算的数值分析,包括设计矩量法(MOM)时需要进行的矩阵填充和其后的矩阵分解,也涉及核内或者核外的问题。
在使用并行路两发程序进行电磁场积分方程的运算时,执行过程中会产生如下的矩阵方程:(3-1)AX B其中,A为M*M的矩阵,且M和未知量相关,当索要计算的目标模型和跑分的尺寸确定后,未知数是能够计算出来的,A表示阻抗矩阵;X为M*1的向量,时所需要求解的电流矩阵(向量);B也是M*1的向量,表示在激励电磁波或者所加载激励源作用下模型表面产生的电压矩阵。
求解过程中如果A矩阵的规模太大,计算机内存RAM存储不下,也就处理不了,所以需要将硬盘的空间开辟出来用以存储这个巨大规模的矩阵,也就是之前提及的核外技术。
这种和外处理方式放在并行环境下结合矩量法处理电磁场计算问题,就是本论文所需要讨论的采用并行核外MOM方法求解电磁场积分方程的问题。
存储问题依靠核外技术加以解决,求解矩阵方程的问题,由于所产生的矩阵是稠密矩阵,所以在这里选用直接求解的LU分解技术。
因为LU方法起源于核内算法,所以下面将逐步介绍LU分解过程中矩阵的填充分布和求解方法。
3.2核内LU分解求解式(3-1)的方程,需要先将A矩阵进行LU分解。
这是非常重要的矩阵求解方法之一,LU分解是将A矩阵分解为两个三角矩阵的乘积,这两个矩阵分别为上三角矩阵和下三角矩阵,如图所示。
分解方法很多,最知己的方法是每次将下三角矩阵的某一行和上三角矩阵的某一列填充到内存中:图3.1 核内LU分解步骤式3-1可以表示为(3-2)第一次填充时(3-3)(3-4)进行到第r次时因为 (3-5)所以可以得出(3-6)可以总结出:U矩阵的计算中,进行到第r行时,其第j个元素需要用该元素本值减去两个向量的乘积。
它们的一个向量为U矩阵中第1行到第r行的第j 列元素,另一个向量是L矩阵中第一列到第r列的第r行元素。
同样地,可以得出(3-7)式(3-7)表示:L矩阵的第i行计算中,其第r个元素也需要用该元素本值减U。
其中的一个向量是L矩阵中第一行到第i行的去两个向量的乘积,然后除以rr第i列元素,另一个向量是U矩阵中第1列到第r列的第r列元素。
上述的LU分解完成后,式(3-1)表示的矩阵方程变为:(3-8)其中: (3-9)(3-10)上面两个矩阵方程(3-9)和(3-10)的求解过程比较简单,计算速度也很快。
如果计算(3-1)所示的矩阵方程时,A 矩阵过于巨大,可以讲A 矩阵分块,然后对分块后的A 矩阵进行块LU 分解。
所以式(3-1)可以表示成(3-11)其中,11A ,11L ,11U 都是K*K 矩阵;[0]是空矩阵。
于是可以得到下面的矩阵方程:(3-12)(3-13)(3-14)其中,每一个分块矩阵的计算可以根据前面(3-3)到(3-10)所述的方法进行LU 分解。
当然A 矩阵也可以分成很多块,而不止上面所讨论的4块,原理是相同的。
LAPACK 提供了求解式(3-1)矩阵方程的连续算法,在对上面所讨论的核内LU 算法进行并行扩展或,可以在并行计算机群众获得高性能,即为并行核内LU 分解。
如果对CPU 之外的硬盘区加以利用,即可成为并行核外LU 分解,下面将以并行核内LU 分解为基础,简要介绍并行核外LU 分解。
3.3并行核外LU 分解3.3.1核外算法所谓核外技指的是将数据先放在硬盘上,等用的时候再读取出来,每次一点,分批进行,处理完后再写入硬盘,等用的时候重复前面的步骤。
而核外算法就是基于核外技术设计的算法结构,其主要目的是处理一些超大规模矩阵方程,不论是直接求解(例如LU分解),或是间接求解(例如迭代解)都需要超大内存,甚至达到TB级别,给算法的设计和程序的编写调试带来诸多不便。
又由于硬盘相对比较廉价,因此使用硬盘代替内存来存储计算过程中所产生的超大规模矩阵显得十分必要,将开发成本降到可以接受的范围。
核外技术由于纯运算速度快,所以大部分时间都浪费在了数据存储和交换上。
希望随着算法的不断优化,存储交换技术的不断进步,将来内存和硬盘之间数据的交换变的越来越快,促使看、核外算法进一步完善。
3.3.2 核外存储核外存储是按照数据所占空间大小对矩阵分块完成的,如图3.2所示图3.2核外存储矩阵划分单核运行时,核外矩阵填充可以轻松地完成。
然而,当多个核进行运算时,核外的填充是一块一块地进行分布式填充,这样矩阵的填充就被设计成上面的模式,以便避免多余的运算而得到更好的并行效率。
3.3.3核外LU分解假设核外矩阵的填充完成后,进而需要进行的操作及时和外LU分解,当前的理论普遍认为,矩阵相乘运算最有计算方法是通过矩阵分块形式来完成的。
参照式(3-1),通过LU所分解矩阵元素的分布形成和其相应的乘法法则将核外LU分解为两种形式,left-looking和right-looking。
如图所示:图3.3left-looking LU分解图3.4right-looking LU分解图3.3和图3.4分别描绘两个3*3矩阵块运用LU算法是其数据是如何入到内存进行处理的,其中阴影部分代表将要读入内存进行计算的行或者列。
图中列的计算需要用不到之前的LU分解得到的列:图中行和列的计算后需要更新右下角A.33如此进行,使用两个LU分解形式,最终都将得到整个矩阵的分解结果,从而实现核外算法。
left-looking和right-looking两种形式得核外LU分解方法相比,从运算时读取和写入的数据来看,left-looking的相对较少。
因此大多数情况下用left-looking形式的LU分解方法,而且在矩阵写入硬盘之前阻抗矩阵是经过主元确定处理的。
left-looking核外LU分解用到的有BLAS库中的GEMM函数和LAPACK库中的GETRF 函数。
如果要进行并行核外的LU 分解,其函数得到ScaLAPACK 库中的PxGETRF 等,同时得调用LAREAD 函数和LAWRITE 函数进行读写。
四、并行核外矩量法相比于并行核内矩量法的优越性我们所研究的并行核外矩量法,顾名思义,包含并行与核外两个关键点,并行计算的速度要大于单核计算的速度,但是核外矩量法真的要优于核内矩量法吗?或者说它有多大的优越性,下面我们将用一个例子进行比较4.1 导体球体的散射自由空间中有如图所示的半径1m 的导体球,在600MHz 的平面波激励下,计算其双站RCS 。
入社电磁平面波为jkz =xe E ,且该球面破分为9.812个三角形,未知数有14.718个。
并行核外矩量法(OC )和并行核内矩量法(IC )的RCS结果与Mie 级数的解析结果对比如图和图所示,可见三个结果几乎完全吻合,验证了两种并行算法的正确性。
图4.1 导体球模型及电磁平面波图4.2半径1m导体球核内外算法XOZ面散射场对比4.2不同块大小的测试在并行LU分解算法中,为了实现负载均衡,需要将矩阵采用快循环方式存储。
块的大小(BlockSize)将影响矩阵读写速度,从而影响算法的计算速度。
在核内算法中,块大小影响内存读写矩阵的速度;而在核外算法中,块大小影响文件读写矩阵的速度。
对于导体球模型,在4*6=24核内进程网格情况下,测试不同块大小时的计算时间。
根据图4.3和4.4所示,课件不论是核内的计算时间还是核外的计算时间都在块大小取128时达到最小值,因此本例后续计算中均将块大小设置为128进行测试图4.3 并行核内块大小测试结果图4.4并行核外块大小测试结果4.3进程网格的测试在并行LU分解算法中,将所有进程排列成二维的锦城网格(Process Grid)。
不同的进程网格计算效率可能有很大差别。
同样以导体球为例,将块大小设置为128,取总核数为24。
将24个核分成不同的进程网格进行测试,如图4.5和4.6所示。
可见当锦城网格接近正方形时,核内程序和核外程序的计算时间都是最少的。