CN110377878B - 一种电大目标散射快速扫角方法 - Google Patents
一种电大目标散射快速扫角方法 Download PDFInfo
- Publication number
- CN110377878B CN110377878B CN201910868284.9A CN201910868284A CN110377878B CN 110377878 B CN110377878 B CN 110377878B CN 201910868284 A CN201910868284 A CN 201910868284A CN 110377878 B CN110377878 B CN 110377878B
- Authority
- CN
- China
- Prior art keywords
- matrix
- sub
- bone
- right end
- bone element
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Prostheses (AREA)
Abstract
本发明公开了一种电大目标散射快速扫角方法,通过将右端项矩阵拆分成若干个子矩阵,针对每个子矩阵采用MPI并行的插值分解计算每个子矩阵的解矩阵,再按照预设的组合规则将前一层次计算得到的子矩阵组合成若干个新的子矩阵,针对组合成的新的子矩阵采用MPI并行的方式计算新的子矩阵的解矩阵,重复前述组合‑计算过程,直至组合后的子矩阵数量为1,结合最终得到的子矩阵的解矩阵计算右端项矩阵的解矩阵,有效加快了计算速度;另外,通过采用多层multi‑interval方法计算解矩阵,有效降低每次计算过程中的峰值内存,提升运算能力。
Description
技术领域
本发明涉及骨元化技术领域,具体而言涉及一种电大目标散射快速扫角方法。
背景技术
在多右端项问题的研究中,常常利用基于随机性的低秩分解方法来加速该类问题的求解。利用低秩分解加速多右端项问题的过程如下:首先,多右端项问题的矩阵形式可以表示为:
Z·I=V
其中,矩阵Z为m×m的阻抗矩阵,矩阵V为m×n的右端项矩阵,矩阵I为m×n的解矩阵;m为未知数的个数,n为右端项的个数。对右端项矩阵V进行低秩分解V=VS·P,则右端项问题的解为:
I=IS·P and Z·IS=VS
其中,矩阵P为Nskel×n的投影矩阵,矩阵VS为m×Nskel的骨元右端项矩阵,其中每一个列向量都是一个骨元右端项,矩阵I为m×Nskel的骨元解矩阵,其中每一个列向量都是一个骨元右端项向量的解;Nskel是骨元右端项的数目;在这里,Nskel<n。采用低秩分解技术之后,待求解的右端项数量由n降为Nskel,大大提高了右端项问题的求解速度。
然而,当目标的规模增加,低秩分解部分的峰值内存也随之增长,成为了该问题的一个瓶颈。目前针对这一问题的解决方案包括多段(multi-interval)方案,使用骨元 Rao-Wilton-Glisson(RWG)方案以及并行低秩分解方案。其中,采用并行低秩分解与并行快速多极子算法(Parallel multilevel fast multipole algorithm,PMLFMA)相结合,能够有效解决大规模问题。因为这一方案可以通过增加计算节点从而增加可以使用的总内存。然而,并行低秩分解方案中单个进程的峰值内存大约(32×m×n)/np bytes(使用了复数双精度数据类型,np为进程数),该峰值内存要远大于PMLFMA部分的峰值内存。
针对这一问题提出了一种解决方案,详述如下。首先采用并行低秩分解方案的流程图如图1所示。这一方案的峰值内存出现在重新分配部分,原因在于右端项矩阵 V在PMLFMA中是按行保存到每个进程中,而并行低秩分解算法要求右端项矩阵V按列分配到各个进程中,因此右端项矩阵V需要进行重新分配,要保存两次。为了降低重新分配部分的峰值内存,可以将右端项矩阵V按列分为nb块,每次只对一块进行重新分配操作。这样一来,重新分配部分的峰值内存大约降低为(32×m×n/np)/nb bytes(nb为块数,实际使用的内存要略大,还有一部分临时内存)。这一方案可以大大降低重新分配部分的峰值内存,但是仍然存在缺陷。如图 1 所示,随着重新分配部分峰值内存的降低(增加块数nb,可以降低峰值内存),低秩分解部分的峰值内存32×m2×n/np(m2是小于m的最大的2的幂次)没有变化。因此,当重新分配部分的峰值内存降低至小于低秩分解部分的峰值内存时,即(32×m×n/np)/nb<32×m2×n/np时,总算法的峰值内存变为出现在ID分解部分,大约为32×m2×n/np bytes。
采用multi-interval技术可以有效减少低秩分解的峰值内存,并且可以根据现有的内存空间来灵活选择子矩阵的个数Nintv。Multi-interval技术的缺点在于低秩分解作用在一个子矩阵上,每一次的分解不能获取右端项矩阵的完整信息,所以最终得到的骨元个数要大于直接对右端项矩阵做分解得到的骨元个数。
发明内容
本发明目的在于提供一种电大目标散射快速扫角方法,通过将右端项矩阵拆分成若干个子矩阵,针对每个子矩阵采用MPI并行的插值分解计算每个子矩阵的解矩阵,再按照预设的组合规则将前一层次计算得到的子矩阵组合成若干个新的子矩阵,针对组合成的新的子矩阵采用MPI并行的方式计算新的子矩阵的解矩阵,重复前述组合-计算过程,直至组合后的子矩阵数量为1,结合最终得到的子矩阵的解矩阵计算右端项矩阵的解矩阵,有效加快了计算速度;另外,通过采用多层multi-interval方法计算解矩阵,有效降低每次计算过程中的峰值内存,提升运算能力,同时,使得最终得到的骨元个数与直接对右端项矩阵做分解得到的骨元个数相同;只对各个层次的骨元右端项矩阵在矩阵V中的序号进行存储,在骨元化过程中,实时获取下一时刻计算所需骨元右端项矩阵序号,生成对应的骨元右端项矩阵,有序安排计算过程,减少单位时间运算量和计算过程中的峰值内存。
为达成上述目的,结合图2,本发明提出一种电大目标散射快速扫角方法,所述方法包括:
S1:建立多右端项矩阵Z·I=V,其中矩阵Z为m×m的阻抗矩阵,矩阵V为m×n的右端项矩阵,矩阵I为m×n的解矩阵,m为未知数的个数,n为激励个数,即右端项矩阵的列数;
S2:根据内存约束而确定的规则以获取最底层间隔数Nintv,0,将右端项矩阵V拆分成 Nintv,0个子矩阵每个子矩阵的维度为
采用np个MPI进程并行低秩分解计算每个子矩阵的骨元右端项矩阵和投影矩阵,每个骨元右端项矩阵的骨元右端项的个数为Nskel,i(0),前述过程被定义成最底层次的骨元化过程;
S3:定义j,j=1;
S4:收集前一层次所有子矩阵的骨元右端项,按照预设的组合规则将收集的前一层次所有子矩阵的骨元右端项组合成Nintv,j个新的矩阵,按内存约束,将其分为Nintv,j个骨元右端项矩阵,采用np个进程MPI并行低秩分解,得到对应的投影矩阵,每个骨元右端项矩阵的骨元右端项的个数为Nskel,i(j),前述过程被定义成中间层次的骨元化过程, i(j)=1,2,…,Nintv,j;
S5:j加1,重复步骤S4,直至Nintv,j=1,将各个进程的骨元收集生成右端项矩阵,采用MPI并行的低秩分解执行最高层次的骨元化过程,获取骨元右端项矩阵HS和投影矩阵P。
进一步的实施例中,步骤S2~S5中,对各个层次的每个子矩阵Vi,j均采用MPI并行的低秩分解完成骨元化过程。
进一步的实施例中,所述方法还包括:
对各个层次的骨元右端项矩阵,不保存完整的子矩阵,只保存每个子矩阵对应列的序号。
进一步的实施例中,所述方法还包括:
在骨元化过程中,根据计算中产生的右端项矩阵所对应的列的序号,实时生成对应的骨元右端项矩阵。
进一步的实施例中,所述预设的组合规则包括:
将前一层次所有子矩阵的骨元右端项,以b个一组为原则,分成若干组,其中,至多只有一个组中的子矩阵的骨元右端项数量少于b,所述b为大于1的正整数。
进一步的实施例中,所述最高层次的骨元化过程包括如下步骤:
S51:构建一个新的右端项矩阵H,维度为m×p,所述矩阵H按行保存在每个进程中,p为总的骨元数,p=Nskel,i(j),其中,p<n,Nintv,j=1;
S52:将矩阵H重新分配成按列存放在每个进程中,每个进程保存矩阵H的p/np列;
S53:各个进程同时对矩阵H执行并行低秩分解,得到维度为m×Nskel,i(j)的骨元右端项矩阵HS、以及维度为Nskel,i(j)×p的投影矩阵P,骨元右端项的个数为Nskel,i(j)。
进一步的实施例中,所述方法还包括:
S6:根据得到的骨元右端项矩阵HS和投影矩阵P,恢复出解矩阵IH,前述过程被定义成恢复过程。
进一步的实施例中,所述恢复过程包括以下步骤:
根据得到的骨元右端项矩阵HS,根据下述公式求解出对应的骨元解矩阵IS:
HS=Z·IS
所述骨元解矩阵IS的维度为m×Nskel,i(j);
将骨元解矩阵IS与投影矩阵P相乘,以恢复出解矩阵IH。
进一步的实施例中,所述恢复过程还包括以下步骤:
S61:设层次总数为L,定义r,r=L;
S62:恢复第r层中所有的骨元子矩阵
S63:按照预设的组合规则将第r层中的所有骨元子矩阵组合成若干个完整的矩阵其中,q为第(r-1)层中其中一个子矩阵的序号,依次恢复出第(r-1)层所有的解矩阵
S64:r减1,重复步骤S62-步骤S63,直至r=0。
以上本发明的技术方案,与现有相比,其显著的有益效果在于:
(1)通过将右端项矩阵拆分成若干个子矩阵,针对每个子矩阵采用MPI并行的插值分解计算每个子矩阵的解矩阵,再按照预设的组合规则将前一层次计算得到的子矩阵组合成若干个新的子矩阵,针对组合成的新的子矩阵采用MPI并行的方式计算新的子矩阵的解矩阵,重复前述组合-计算过程,直至组合后的子矩阵数量为1,结合最终得到的子矩阵的解矩阵计算右端项矩阵的解矩阵,有效加快了计算速度。
(2)另外,通过采用多层multi-interval方法计算解矩阵,有效降低每次计算过程中的峰值内存,提升运算能力,同时,使得最终得到的骨元个数与直接对右端项矩阵做分解得到的骨元个数相同。
(3)对各个层次的骨元右端项矩阵,不保存完整的子矩阵Vi,j,只保存每个子矩阵Vi,j对应列的序号,在骨元化过程中,根据计算中产生的右端项矩阵所对应的列的序号,实时生成对应的骨元右端项矩阵,有序安排计算过程,减少单位时间运算量和计算过程中的峰值内存。
(4)结合自身需求,通过合理设置组合规则,以平衡运算能力和运算时间。
应当理解,前述构思以及在下面更加详细地描述的额外构思的所有组合只要在这样的构思不相互矛盾的情况下都可以被视为本公开的发明主题的一部分。另外,所要求保护的主题的所有组合都被视为本公开的发明主题的一部分。
结合附图从下面的描述中可以更加全面地理解本发明教导的前述和其他方面、实施例和特征。本发明的其他附加方面例如示例性实施方式的特征和/或有益效果将在下面的描述中显见,或通过根据本发明教导的具体实施方式的实践中得知。
附图说明
附图不意在按比例绘制。在附图中,在各个图中示出的每个相同或近似相同的组成部分可以用相同的标号表示。为了清晰起见,在每个图中,并非每个组成部分均被标记。现在,将通过例子并参考附图来描述本发明的各个方面的实施例,其中:
图1是本发明的并行低秩分解方法的流程图。
图2是本发明的电大目标散射快速扫角方法的流程图。
图3是本发明的多层multi-interval方案恢复部分的方法流程图。
具体实施方式
为了更了解本发明的技术内容,特举具体实施例并配合所附图式说明如下。
结合图2,本发明提出一种电大目标散射快速扫角方法,所述方法包括:
S1:建立多右端项矩阵Z·I=V,其中矩阵Z为m×m的阻抗矩阵,矩阵V为m×n的右端项矩阵,矩阵I为m×n的解矩阵,m为未知数的个数,n为激励个数右端项矩阵的列数,根据入射波采样规则选定,例如将入射方向设定成沿同一个方向变化,入射方向范围为0-180度。
S2:根据内存约束而确定的规则以获取最底层间隔数Nintv,0,将右端项矩阵V拆分成 Nintv,0个子矩阵每个子矩阵的维度为
采用np个MPI进程并行低秩分解计算每个子矩阵的骨元右端项矩阵和投影矩阵,每个骨元右端项矩阵的骨元右端项的个数为Nskel,i(0),前述过程被定义成最底层次的骨元化过程。
S3:定义j,j=1。
S4:收集前一层次所有子矩阵的骨元右端项,按照预设的组合规则将收集的前一层次所有子矩阵的骨元右端项组合成Nintv,j个新的矩阵,按内存约束,将其分为Nintv,j个骨元右端项矩阵,采用np个进程MPI并行低秩分解,得到对应的投影矩阵,每个骨元右端项矩阵的骨元右端项的个数为Nskel,i(j),前述过程被定义成中间层次的骨元化过程, i(j)=1,2,…,Nintv,j。
S5:j加1,重复步骤S4,直至Nintv,j=1,将各个进程的骨元收集生成右端项矩阵,采用MPI并行的低秩分解执行最高层次的骨元化过程,获取骨元右端项矩阵HS和投影矩阵P。
进一步的,所述方法还包括以下步骤:
S6:根据得到的骨元右端项矩阵HS和投影矩阵P,恢复出解矩阵IH,前述过程被定义成恢复过程。
将multi-interval技术应用到并行低秩分解算法中,有两种方案。方案1是各个进程同时对一个子矩阵并行计算低秩分解;方案2是每个进程都分配到一个子矩阵,各个进程同时进行计算,每个进程都对自己的子矩阵进行串行低秩分解。方案2的峰值内存要大于方案1,因此在这里详细讨论方案1。
本发明所提及的电大目标散射快速扫角方法包括以下几个步骤:
第一步,针对右端项矩阵V执行最低层次的骨元化过程
结合图3,步骤S2中,所述最底层次的骨元化过程包括如下步骤:
S201:创建np个计算进程。
S202:根据获取的间隔数Nintv将右端项矩阵V按列分为Nintv,0个子矩阵每个子矩阵的维度为所述子矩阵按行存放在各个进程中,其中,Nintv,0=Nintv, i(0)=1,2,…,Nintv,0。
S203:将任意一个子矩阵Vi,0重新分配成按列存放在每个进程中,每个进程保存子矩阵的n/(Nintv,0×np)列。
S204:各个进程同时对步骤S203中的子矩阵执行并行低秩分解,得到维度为m×Nskel,i(0)的骨元右端项矩阵以及维度为Nskel,i(0)×(n/Nintv,0)的投影矩阵Pi(0),每个子矩阵的骨元右端项的个数为Nskel,i(0)。
S205:重复步骤S203至S204,直至计算完成所有子矩阵的骨元右端项矩阵和投影矩阵Pi(0)。
第二步,针对所有子矩阵的骨元右端项矩阵和投影矩阵执行若干个中间层次的骨元化过程
在第二步中,通过执行至少1个中间层次的骨元化过程,将原本计算量非常大的计算过程分解成若干次计算量较低的中间层次的骨元化计算,以降低计算过程中的峰值内存,变相提高能够计算的最大处理能力。
具体的,定义j,j=1;收集前一层次所有子矩阵的骨元右端项,按照预设的组合规则将收集的前一层次所有子矩阵的骨元右端项组合成Nintv,j个新的矩阵,按内存约束,将其分为Nintv,j个骨元右端项矩阵,采用np个进程MPI并行低秩分解,得到对应的投影矩阵,骨元右端项的个数为Nskel,i(j),前述过程被定义成中间层次的骨元化过程;j加1,重复前述组合-计算步骤,直至Nintv,j=1,将各个进程的骨元收集生成右端项矩阵,采用MPI并行的低秩分解执行最高层次的骨元化过程,获取骨元右端项矩阵HS和投影矩阵P。
在一些例子中,所述预设的组合规则包括:
将前一层次所有子矩阵的骨元右端项,以b个一组为原则,分成若干组,其中,至多只有一个组中的子矩阵的骨元右端项数量少于b,所述b为大于1的正整数。
例如,当Nintv=Nintv,0=20,b=2时,最底层次的骨元化过程会生成20个子矩阵 i(0)=1,2,…,20。如果同时对这20个子矩阵执行下一阶段的骨元化计算,计算量非常大,占用的峰值内存高。针对该问题,本发明采用以下方法对这20个子矩阵进行,为便于描述,将子矩阵的解矩阵命名成
(1)将20个子矩阵两两分作一组,生成10个子矩阵Nintv,1=10, i(1)=1,2,…,10。针对10个子矩阵采用MPI并行的插值分解计算每个子矩阵的解矩阵计算出的解矩阵数量同样为10个。
(2)将10个子矩阵的解矩阵两两分作一组,生成5个子矩阵针对5个子矩阵采用MPI并行的插值分解计算每个子矩阵的解矩阵计算出的解矩阵数量为5个。
(3)将5个子矩阵的解矩阵两两分作一组,生成3个子矩阵其中有一个子矩阵只包含1个子矩阵的解矩阵。针对3个子矩阵采用MPI并行的插值分解计算每个子矩阵的解矩阵,计算出的解矩阵数量为3个。
(4)将3个子矩阵的解矩阵两两分作一组,生成2个子矩阵其中有一个子矩阵只包含1个子矩阵的解矩阵。针对2个子矩阵采用MPI并行的插值分解计算每个子矩阵的解矩阵,计算出的解矩阵数量为2个。
(5)将2个子矩阵的解矩阵分作一组,生成1个子矩阵
优选的,b的取值根据实际需求决定,b的取值越小,分解数越多,每次的计算量越小,峰值内存越低,但相对的,计算时长也越大,用户可以结合自身需求,通过合理设置组合规则,以平衡运算能力和运算时间。例如,当需要获取较小的峰值内存时,可以适当降低b的取值,当需要获取较快的计算时长时,可以适当增加b的取值。在实际应用中,还可以将b 的取值设置成动态可调的,以适应更多情形下的计算需求。
第三步,结合最终得到的子矩阵的解矩阵执行最高层次的骨元化过程
具体的,所述最高层次的骨元化过程包括如下步骤:
S51:构建一个新的右端项矩阵H,维度为m×p,所述矩阵H按行保存在每个进程中,p为总的骨元数,由于此时Nintv,j=1,因此,可以得出p远小于 n。
S52:将矩阵H重新分配成按列存放在每个进程中,每个进程保存矩阵H的p/np列。
S53:各个进程同时对矩阵H执行并行低秩分解,得到维度为m×Nskel,i(j)的骨元右端项矩阵HS、以及维度为Nskel,i(j)×p的投影矩阵P,骨元右端项的个数为Nskel,i(j)。
在另一些例子中,为了进一步减少内存占用,本发明还提出以下计算方法:
对各个层次的骨元右端项矩阵,不保存完整的子矩阵Vi,j,只保存每个子矩阵Vi,j对应列的序号。在骨元化过程中,根据计算中产生的右端项矩阵所对应的列的序号,实时生成对应的骨元右端项矩阵。即骨元右端项矩阵并没有显式地存储,减少存储负担,只有当计算过程中需要用到某一骨元右端项矩阵时,系统才会自动生成对应的骨元右端项矩阵,使之应用于下一阶段的计算过程中。
以前述例子为例,当最低层次的骨元化过程结束后,生成了20个子矩阵系统只保存这20个子矩阵所对应的列的序号,不保存子矩阵本身数值,例如序号分别为A1-A20,假设组合规则为按序号排序两两组合,在进入下一阶段的骨元化过程时,系统首先生成A1-A2 的组合矩阵,再针对A1-A2的组合矩阵进行骨元化计算,当处理完A1-A2的组合矩阵后,再生成A3-A4的组合矩阵,依次类推,直至完成当前层次的骨元化过程。通过有序安排计算过程,减少单位时间运算量和计算过程中的峰值内存。
关于峰值内存的取值,以两次计算骨元过程为例。
在PMLFMA中,每个进程各自计算,生成右端项矩阵V的列,组成一个维度为 m×(n/Nintv)的子矩阵Vi,该子矩阵是按行存放在各个进程中的。
将子矩阵Vi重新分配为按列存放在每个进程中,每个进程保存子矩阵Vi的n/(Nintv×np) 列,此时峰值内存为(32×m×(n/Nintv))/np bytes。
将子矩阵Vi重新分配好之后,各个进程同时并行低秩分解,得到维度为m×Ni,skel的骨元右端项矩阵以及维度为Nskel×(n/Nintv)的投影矩阵Pi,骨元右端项的个数为Ni,skel。其中骨元右端项矩阵并没有显式地存储,只保存了其在矩阵V中的对应的序号,矩阵Pi是按列分别保存在各个进程中的。
上述过程完成之后,每个进程中只保存了矩阵Pi的一部分子矩阵(某些列),总的骨元数为p,在某些例子中,p远小于n。
至此,完成第一次计算骨元过程。
根据选取出的p个骨元右端项的序号,构建一个新的右端项矩阵H,维度为m×p;此时矩阵H仍然是按行保存在每个进程中,因此仍然需要对矩阵H重新分配。
将矩阵H重新分配为按列存放在每个进程中,每个进程保存矩阵H的p/np列,此时峰值内存为(32×m×p)/np bytes。
将矩阵H重新分配好之后,各个进程同时并行低秩分解,得到维度为m×Nskel的骨元右端项矩阵HS、以及维度为Nskel×p的投影矩阵P,骨元右端项的个数为Nskel。
至此,完成第二次计算骨元过程。
上述两次骨元化过程完成之后,每个进程中保存了矩阵Pi的某些列和矩阵P的某些列,此时的内存大约为((16×p×(n/Nintv))+(16×Nskel×p))/np bytes,没有超过重新分配部分的峰值内存。
上述过程中两次重新分配过程的内存分别为重新分配矩阵Vi(维度为m×(n/Nintv))和重新分配矩阵H(维度为m×p),因此两次的峰值内存大约为(32×m×(n/Nintv))/npbytes 和(32×m×p)/np bytes。因此这一方案的峰值内存为:(32×m×r)/np,
由前述可知,峰值内存和间隔数Nintv相关,通过合理选择间隔数Nintv,可以使得每一层次计算骨元过程中的峰值内存尽可能地相同或相似,以获取最低的峰值内存。
采用两层multi-interval方案后,峰值内存可以降低为(32×m×r)/np bytes,其中,可以看出,该方案的峰值内存取决于第一次骨元化过程中每个子矩阵的列数n/Nintv和第一次骨元化后得到的骨元右端项的个数p。
下面以一个例子对峰值内存的计算方法进行详细说明。
假设入射方向仅沿θ方向变化,范围为[0°,180°]。根据入射波采样的规则,选定激励个数,即右端项矩阵的列数n,为10L,其中L为加法定理中的截断系数。
对于第一次骨元化后的骨元右端项的个数p,由于第一次骨元化是对子矩阵进行低秩分解从而得到骨元右端项的,所以p要大于实际的骨元右端项的个数。实际的骨元右端项的个数不超过L,因此设定p=2L。
数值实验表明,第一次骨元化后的骨元数p是与间隔数Nintv呈现正相关关系的,即p随着Nintv的增加而增加。但是随着Nintv增加,p增加得很缓慢。因此不考虑与Nintv的关系,仍然设定p=2L。此时峰值内存为(32×m×r)/np bytes,
若Nintv<5,则峰值内存为出现在第一次骨元化过程中;若 Nintv>5,则峰值内存为(32×m×2L)/np bytes,出现在第二次骨元化过程中。总结上述情况,若Nintv<Nmax(Nmax是正整数),峰值内存出现在第一次骨元化过程中,为 若Nintv>Nmax,峰值内存出现在第二次骨元化过程中,为(32×m×p)/npbytes。二维情况的分析相似。
从上述分析得知,增加间隔数Nintv能够有效降低峰值内存。但是当Nintv增加到一定值之后,峰值内存转移到了第二次骨元化过程中,不再随着间隔数的增加而降低。反而因为随着间隔数Nintv的增加,导致第一次骨元化得到的骨元右端项数量p的增加,使得峰值内存有小幅度的上升。因此在这个过程中最优化的情况是两种情况的峰值内存相同的情况。此时,通过改变Nintv无法再降低峰值内存,只能通过增加进程数np降低内存。
在另一些例子中,如果在上述方案中加入骨元RWG技术,那么直接将未知数个数由m减少到m′即可,其他分析不变,对分析结果没有影响。
同样的,当计算骨元的层数变多,峰值内存会随着层数的增加而减少,但计算原理类似。
采用多层次multi-interval方案可以有效降低算法的峰值内存。峰值内存下降的主要原因是由于低秩分解中的目标矩阵维度的减小,这种做法带来的后果是通信次数增加。在方案1 中,通信次数的增加包括两方面,其中一方面是重新分配部分的通信增加;另一方面是低秩分解部分的通信增加。对于第一方面,因为重新分配的次数增加,所以这一部分的通信次数增加为(Nintv+1)。由于这一部分的运行时间与总时间比较很小,并且可以调节Nintv来控制通信次数,因此我们认为这一部分的通信次数不是一个重要的因素;对于第二方面,因为进行低秩分解的次数增加,所以相应的总的通信次数会增加。由于低秩分解本身的运行时间很短,并且低秩分解的次数同样为(Nintv+1),因此这一部分增加的通信消耗可以不考虑。
结合图3,进一步的实施例中,所述恢复过程包括以下步骤:
根据得到的骨元右端项矩阵HS,根据下述公式求解出对应的骨元解矩阵IS:
HS=Z·IS
所述骨元解矩阵IS的维度为m×Nskel,i(j)。
将骨元解矩阵IS与投影矩阵P相乘,以恢复出解矩阵IH,解矩阵IH对应于右端项矩阵H, H=Z·IH。
具体的,所述恢复过程还包括以下步骤:
S61:设层次总数为L,定义r,r=L。
S62:恢复第r层中所有的骨元子矩阵
S63:按照预设的组合规则将第r层中的所有骨元子矩阵组合成若干个完整的矩阵其中,q为第(r-1)层中其中一个子矩阵的序号,依次恢复出第(r-1)层所有的解矩阵
S64:r减1,重复步骤S62-步骤S63,直至r=0。
由前述可知,恢复过程为骨元化过程的逆过程,在恢复过程中采用的组合规则和骨元化过程中的组合规则相对应。
在本公开中参照附图来描述本发明的各方面,附图中示出了许多说明的实施例。本公开的实施例不必定义在包括本发明的所有方面。应当理解,上面介绍的多种构思和实施例,以及下面更加详细地描述的那些构思和实施方式可以以很多方式中任意一种来实施,这是因为本发明所公开的构思和实施例并不限于任何实施方式。另外,本发明公开的一些方面可以单独使用,或者与本发明公开的其他方面的任何适当组合来使用。
虽然本发明已以较佳实施例揭露如上,然其并非用以限定本发明。本发明所属技术领域中具有通常知识者,在不脱离本发明的精神和范围内,当可作各种的更动与润饰。因此,本发明的保护范围当视权利要求书所界定者为准。
Claims (6)
1.一种电大目标散射快速扫角方法,其特征在于,所述方法包括:
S1:建立多右端项矩阵Z·I=V,其中矩阵Z为m×m的阻抗矩阵,矩阵V为m×n的右端项矩阵,矩阵I为m×n的解矩阵,m为未知数的个数,n为激励个数,即右端项矩阵的列数;
S2:根据内存约束而确定的规则以获取最底层间隔数Nintv,0,将右端项矩阵V拆分成Nintv,0个子矩阵每个子矩阵的维度为
采用np个MPI进程并行低秩分解计算每个子矩阵的骨元右端项矩阵和投影矩阵,每个骨元右端项矩阵的骨元右端项的个数为Nskel,i(0),前述过程被定义成最底层次的骨元化过程,np≥1;
S3:定义j,j=1;
S4:收集前一层次所有子矩阵的骨元右端项,按照预设的组合规则将收集的前一层次所有子矩阵的骨元右端项组合成Nintv,j个新的矩阵,按内存约束,将其分为Nintv,j个骨元右端项矩阵,采用np个进程MPI并行低秩分解,得到对应的投影矩阵,每个骨元右端项矩阵的骨元右端项的个数为Nskel,i(j),前述过程被定义成中间层次的骨元化过程,i(j)=1,2,…,Nintv,j;
S5:j加1,重复步骤S4,直至Nintv,j=1,将各个进程的骨元收集生成右端项矩阵,采用MPI并行的低秩分解执行最高层次的骨元化过程,获取骨元右端项矩阵HS和投影矩阵P;
所述最高层次的骨元化过程包括如下步骤:
S51:构建一个新的右端项矩阵H,维度为m×p,所述矩阵H按行保存在每个进程中,p为总的骨元数,p=Nskel,i(j),其中,p<n,Nintv,j=1;
S52:将矩阵H重新分配成按列存放在每个进程中,每个进程保存矩阵H的p/np列;
S53:各个进程同时对矩阵H执行并行低秩分解,得到维度为m×Nskel,i(j)的骨元右端项矩阵HS、以及维度为Nskel,i(j)×p的投影矩阵P,骨元右端项的个数为Nskel,i(j);
所述方法还包括:
对各个层次的骨元右端项矩阵,不保存完整的子矩阵,只保存每个子矩阵对应列的序号;
所述方法还包括:
在骨元化过程中,根据计算中产生的右端项矩阵所对应的列的序号,实时生成对应的骨元右端项矩阵。
2.根据权利要求1所述的电大目标散射快速扫角方法,其特征在于,步骤S2~S5中,对各个层次的每个子矩阵均采用MPI并行的低秩分解完成骨元化过程。
3.根据权利要求1所述的电大目标散射快速扫角方法,其特征在于,所述预设的组合规则包括:
将前一层次所有子矩阵的骨元右端项,以b个一组为原则,分成若干组,其中,至多只有一个组中的子矩阵的骨元右端项数量少于b,所述b为大于1的正整数。
4.根据权利要求1所述的电大目标散射快速扫角方法,其特征在于,所述方法还包括:
S6:根据得到的骨元右端项矩阵HS和投影矩阵P,恢复出解矩阵IH,前述过程被定义成恢复过程。
5.根据权利要求4所述的电大目标散射快速扫角方法,其特征在于,所述恢复过程包括以下步骤:
根据得到的骨元右端项矩阵HS,根据下述公式求解出对应的骨元解矩阵IS:
HS=Z·IS
所述骨元解矩阵IS的维度为m×Nskel,i(j);
将骨元解矩阵IS与投影矩阵P相乘,以恢复出解矩阵IH。
6.根据权利要求5所述的电大目标散射快速扫角方法,其特征在于,所述恢复过程还包括以下步骤:
S61:设层次总数为L,定义r,r=L;
S62:恢复第r层中所有的骨元子矩阵
S63:按照预设的组合规则将第r层中的所有骨元子矩阵组合成若干个完整的矩阵其中,q为第(r-1)层中其中一个子矩阵的序号,依次恢复出第(r-1)层所有的解矩阵
S64:r减1,重复步骤S62-步骤S63,直至r=0。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910868284.9A CN110377878B (zh) | 2019-09-16 | 2019-09-16 | 一种电大目标散射快速扫角方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910868284.9A CN110377878B (zh) | 2019-09-16 | 2019-09-16 | 一种电大目标散射快速扫角方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110377878A CN110377878A (zh) | 2019-10-25 |
CN110377878B true CN110377878B (zh) | 2019-12-31 |
Family
ID=68261537
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910868284.9A Active CN110377878B (zh) | 2019-09-16 | 2019-09-16 | 一种电大目标散射快速扫角方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110377878B (zh) |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080052337A1 (en) * | 2006-05-02 | 2008-02-28 | University Of Kentucky Research Foundation | Technique and program code constituting use of local-global solution (LOGOS) modes for sparse direct representations of wave-like phenomena |
CN103995935B (zh) * | 2014-05-26 | 2017-01-25 | 南京航空航天大学 | 一种分析导体电磁散射的稀疏化多层自适应交叉近似方法 |
-
2019
- 2019-09-16 CN CN201910868284.9A patent/CN110377878B/zh active Active
Non-Patent Citations (3)
Title |
---|
Fast Solution of Linear Systems With Many Right-Hand Sides Based on Skeletonization;Xiao-Min Pan等;《IEEE ANTENNAS AND WIRELESS PROPAGATION LETTERS》;20150608;第15卷;第301-304页 * |
Prediction of radiation pressure force exerted on moving particles by the two-level skeletonization;Xiao-Min Pan等;《Optics Express》;20141231;第22卷(第8期);第1-14页 * |
Wide Angular Sweeping of Dynamic Electromagnetic Responses From Large Targets by MPI Parallel Skeletonization;Xiao-Min Pan等;《IEEE TRANSACTIONS ON ANTENNAS AND PROPAGATION》;20180331;第66卷(第3期);第1619-1623页 * |
Also Published As
Publication number | Publication date |
---|---|
CN110377878A (zh) | 2019-10-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3373210B1 (en) | Transposing neural network matrices in hardware | |
CN107145939B (zh) | 一种低计算能力处理设备的计算机视觉处理方法及装置 | |
US6938061B1 (en) | Parallel counter and a multiplication logic circuit | |
CN101097511B (zh) | 使用折叠的模归约 | |
Bisseling et al. | Communication balancing in parallel sparse matrix-vector multiplication | |
WO2016181980A1 (ja) | 秘密分散方法、秘密分散システム、分散装置、およびプログラム | |
CN107704916A (zh) | 一种基于fpga实现rnn神经网络的硬件加速器及方法 | |
CN101479698A (zh) | 将两数相乘 | |
CN103236850A (zh) | 基于循环左移的深空通信中准循环矩阵串行乘法器 | |
US7912891B2 (en) | High speed low power fixed-point multiplier and method thereof | |
US10635397B2 (en) | System and method for long addition and long multiplication in associative memory | |
CN112395092A (zh) | 数据处理方法及人工智能处理器 | |
CN110377878B (zh) | 一种电大目标散射快速扫角方法 | |
CN117035106B (zh) | 量子潮流计算修正方程的分阶计算方法、系统和存储介质 | |
CN110688094B (zh) | 一种基于并行循环压缩的余数运算电路及方法 | |
Amestoy et al. | A parallel matrix scaling algorithm | |
CN109379191B (zh) | 一种基于椭圆曲线基点的点乘运算电路和方法 | |
Smits et al. | Scalable symbolic regression by continuous evolution with very small populations | |
CN112712173B (zh) | 基于mac乘加阵列的稀疏化运算数据的获取方法及系统 | |
CN114021070A (zh) | 一种基于微架构处理器的深度卷积计算方法及系统 | |
Singh et al. | XCRYPT: Accelerating Lattice-Based Cryptography With Memristor Crossbar Arrays | |
Elsawah et al. | A novel technique for constructing nonregular nine-level designs: Adjusted multiple tripling technique | |
CN112612447B (zh) | 一种矩阵计算器及基于该矩阵计算器的全连接层计算方法 | |
US11157594B2 (en) | Matrix multiplication in hardware using modular math | |
Bello et al. | A MRC based RNS to binary converter using the moduli set {22n+ 1-1, 2n-1, 22n-1} |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |