一种基于共享内存的电磁场模拟并行计算方法技术

技术编号:30963260 阅读:13 留言:0更新日期:2021-11-25 20:27
该发明专利技术公开了一种基于共享内存的电磁场模拟并行计算方法,属于电磁场模拟领域,特别是基于共享内存的电磁场模拟并行计算方法。本发明专利技术采用多进程方式同时模拟电磁场数据,设置共享内存,将模拟空间划分为多个分界面,再划分每个进程需要模拟的分界面,每个进程对同一个共享内存进行数据读写,每次模拟都单独进行电场或磁场模拟,这样减少进程间的数据交换,加上共享内存,这样能答复提高电磁场的模拟速度和效率。度和效率。度和效率。

【技术实现步骤摘要】
一种基于共享内存的电磁场模拟并行计算方法


[0001]本专利技术属于电磁场模拟领域,特别是基于共享内存的电磁场模拟并行计算方法。

技术介绍

[0002]在粒子模拟计算中,因为计算机需要求解巨量的麦克斯韦差分方程组、洛伦兹力方程、粒子运动方程以及电流密度和电荷密度等物理参量。并且在Courant稳定性条件的限制下,并行模拟计算过程中的单位时间长度必须小到一定程度,因此仿真模拟会耗费大量的机时
[0003]在粒子模拟软件中已有的并行计算技术也需要不断更新来提升并行效率。
[0004]并行计算的粗粒度并行是基于MPI的并行编程模型,此方法的移植性较好且较容易设计,但是由于在进程间消息传递过程中,进程间通信和同步耗费大量机时,其本身能达到的性能提升有限,主要原因有两方面,一方面来自于现有进程点对点通信中大量的发送与接收数据的操作,另一方面是进程负载不均导致进程同步等待浪费大量计算机算力。
[0005]Windows系统中,MPI的支撑软件主要包括了MPICH2和MSMPI。
[0006]原有粒子模拟方法使用的MPI依赖库是MPICH2。MPICH2仅支持MPI

2标准中的特性,不支持MPI

3标准的特性。MPI

2标准是通过消息发送的方式来完成,本质上各个进程的数据并不直接共享,进程不能通过简单的加载或者存储来完成对其他进程数据的访问。各个进程在消息传递或者进行远端内存访问时都会需要额外的内存复制,从而增加内存消耗并且降低并行计算性能

技术实现思路

[0007]本专利技术所要解决的技术问题是,设计一种三维电磁粒子模拟并行效率优化方案,解决三维粒子模拟软件中并行效率过低的问题。
[0008]本专利技术解决所述技术问题采用的技术方案是,一种基于共享内存的电磁场模拟并行计算方法,该方法包括:
[0009]步骤1:将物理模型按空间平均划分为多个子区域,每个子区域由一个进程模拟,下面从简单的两个进程来考虑;对空间进行网格化,设要计算一行网格面的电磁场;
[0010]步骤2:然后创建共享内存窗口,在该共享内存中存放一个共享数组,一个时间步内每一个网格上各个方向上的电磁场分量存入共享数组且仅与数组中的一个索引对应,所有进程都依次对该数组进行读或者写;
[0011]步骤3:确定分界面,该分界面将待计算的这一行网格面平均划分,并初始化共享内存;
[0012]第1时刻内:进程0计算分界面及分界面一边的所有网格面的电场,进程1计算分界面另一边所有网格面的电场;将各网格面的电场数据根据索引存入共享数组中的对应位置;
[0013]第1+1/2时刻内:进程0计算分界面及分界面一边的所有网格面的磁场,进程1计算
分界面另一边所有网格面的磁场;将各网格面的磁场数据根据索引存入共享数组中的对应位置;
[0014]在该完整时间步内,需要的电磁场数据在共享内存里可以被进程随时调用,完成电磁场的更新后,进程会进行一次同步;
[0015]第2时刻内:根据共享内存中各网格面的磁场数据,进程0计算分界面及分界面一边的所有网格面的电场,进程1计算分界面另一边所有网格面的电场;将各网格面的电场数据根据索引存入共享数组中的对应位置;
[0016]第2+1/2时刻内:根据共享内存中各网格面的电场数据,进程0计算分界面及分界面一边的所有网格面的磁场,进程1计算分界面另一边所有网格面的磁场;将各网格面的磁场数据根据索引存入共享数组中的对应位置;
[0017]在该完整时间步内,需要的电磁场数据在共享内存里可以被进程随时调用,完成电磁场的更新后,进程会进行一次同步;
[0018]采用上述相同方法计算后续时间步内各网格面的电磁场数据。
[0019]进一步的,所述步骤3中采用如下公式计算电场:
[0020][0021]其中,t表示时间,表示第n时间步内(i+1/2,j,k)位置上x方向上的电场分量,表示第n+1/2时间步内(i+1/2,j+1/2,k)位置上z方向上的磁场强度,表示第n+1/2时间步内(i+1/2,j,k)位置上x方向上的电流密度;
[0022]采用下式计算磁场:
[0023][0024]其中,表示第n+3/2时间步内(i+1/2,j+1/2,k)位置上z方向上的磁场分量,表示第n+1时间步内(i+1/2,j+1,k)位置上x方向上的电场强度。
[0025]进一步的,当系统内不存在粒子或不存在相对论粒子时,可以通过上述递推方法对电磁场进行更新;当系统内存在相对论粒子时,需要采用下面的递推方法更新电磁场;
[0026][0027][0028]其中,D
n
表示第n时间步内的电场,为哈密顿算符,α1、α2、α3表示下一时刻、当前时刻以及上一时刻磁场值的权重因子,H
n+1/2
表示第n+1/2时间步内的磁场强度,J
n+1/2
表示第n+1/2时间步内的电流密度。
[0029]本专利技术方法,由于数据在共享内存中被各进程直接调用,比起原有计算里进程间
通过消息传递数据的方式,可以显著提高并行计算的效率,缩短模拟时间。
[0030]用网格数分别为(200,200,40)以及(200,200,25)下的波导进行测试,测试进程数分别设置为2,4,6。在这两种网格划分下,优化方法的提升率最高能在4进程下达到40%。
附图说明
[0031]图1为YEE元胞模型;
[0032]图2为网格面场分量;
[0033]图3为模拟空间示意图;
[0034]图4为模拟空间分区示意图;
[0035]图5中(a)为优化前的电磁场更新并行时序;(b)为优化后的电磁场更新并行时序;
[0036]图6为(a)为优化前隐式递推的并行时序;(b)为优化后隐式递推的并行时序。
具体实施方式
[0037]下面结合附图,对本专利技术进行详细描述。
[0038]首先采用YEE网格(图1)离散化模拟空间,以z坐标方向,提出了网格面的思想:Z方向相等的(X,Y)平面为一个网格面。在图2中标示了网格面A的电场分量,即水平向右方向为Ez方向。
[0039]两个进程下,一个进程模拟一个子区域,由图3所示,其中A~F为网格面,模拟空间按分界面(即D面)分为2个子区域,进程0模拟左边子区域,进程1模拟右边的子区域。
[0040]然后创建共享内存窗口,在该共享内存中存放一个共享数组,一个时间步内每一个网格上各个方向上的分量存入数组且仅与数组中的一个索引对应,所有进程都可以对该数组进行读或者写。
[0041]多个进程拿出自己的一部分空间,或者是只由一个进程拿出一部分空间,将这部分空间置于一个共享窗口中,对于这个窗口,通信域中的进程都可以对他进行访问,意味着进程间通过该共享窗口可以在进程间传递消息。
[0042]在共享内存窗口中存放一个数组,该数组的大小为size本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于共享内存的电磁场模拟并行计算方法,该方法包括:步骤1:将物理模型按空间平均划分为多个子区域,每个子区域由一个进程模拟,下面从简单的两个进程来考虑;对空间进行网格化,设要计算一行网格面的电磁场;步骤2:然后创建共享内存窗口,在该共享内存中存放一个共享数组,一个时间步内每一个网格上各个方向上的电磁场分量存入共享数组且仅与数组中的一个索引对应,所有进程都依次对该数组进行读或者写;步骤3:确定分界面,该分界面将待计算的这一行网格面平均划分,并初始化共享内存;第1时刻内:进程0计算分界面及分界面一边的所有网格面的电场,进程1计算分界面另一边所有网格面的电场;将各网格面的电场数据根据索引存入共享数组中的对应位置;第1+1/2时刻内:进程0计算分界面及分界面一边的所有网格面的磁场,进程1计算分界面另一边所有网格面的磁场;将各网格面的磁场数据根据索引存入共享数组中的对应位置;在该完整时间步内,需要的电磁场数据在共享内存里可以被进程随时调用,完成电磁场的更新后,进程会进行一次同步;第2时刻内:根据共享内存中各网格面的磁场数据,进程0计算分界面及分界面一边的所有网格面的电场,进程1计算分界面另一边所有网格面的电场;将各网格面的电场数据根据索引存入共享数组中的对应位置;第2+1/2时刻内:根据共享内存中各网格面的电场数据,进程0计算分界面及分界面一边的所有网格面的磁场,进程1计算分界面另一边所有网格面的磁场;将各网格面的磁场数据根据索引存入共享数组中的对应位置;在...

【专利技术属性】
技术研发人员:胡玉兰刘大刚刘腊群王辉辉陈凤贺
申请(专利权)人:电子科技大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1