一种基于GPU加速的二次电子发射模拟方法及系统及设备技术方案

技术编号:32676145 阅读:30 留言:0更新日期:2022-03-17 11:32
一种基于GPU加速的二次电子发射模拟方法及系统及设备,包括以下步骤:初始化微放电模拟所需的参数及数据结构,对GPU设备进行初始化,在进行CUDA语言编程过程中,将GPU设备的初始化代码放置在电子推进函数的起始位置,并保证该函数在整个程序生命周期内仅执行一次;GPU读取数据后采用并行方式推进计算电子,并对二次电子发射过程进行计算;若达到结束调节则终止模拟计算过程,否则继续计算下一时间的电子推进模拟。本发明专利技术提出了一种基于GPU加速的二次电子发射模拟计算方法,采用GPU设备对微波器件中的大量电子进行并行轨迹计算并计算二次电子发射过程,实现了航天微波器件微放电模拟过程的快速、准确模拟。准确模拟。准确模拟。

【技术实现步骤摘要】
一种基于GPU加速的二次电子发射模拟方法及系统及设备


[0001]本专利技术涉属于空间微波部件可靠性研究
,特别涉及一种基于GPU加速的二次电子发射模拟方法及系统及设备。

技术介绍

[0002]随着科学技术的发展,利用计算机进行数值模拟已经成为科学研究的一种重要方法。作为众多数值模拟方法之一的粒子模拟方法,最初被用来对等离子体进行研究,经过几十年的快速发展和不断完善,应用范围越来越广,其中微波部件微放电粒子模拟就是最重要的应用领域之一。
[0003]近年来广泛应用于电子推进及二次电子发射过程算法是基于粗粒度的进程级并行编程模型,最常用的是基于消息通信的MPI并行编程模型。基于MPI并行编程模型的仿真算法,其实质是独立的地址空间和显式并行,即在该模型中,每个进程都有属于自己独立的地址空间,各个进程只能访问自己地址空间内的数据,如果需要访问其他进程地址空间中的数据,则需要用户显式通过消息传递机制来实现。
[0004]随着多核处理器的兴起,多线程编程方式越来越受到人们的关注,相比多进程并行模型,多线程模型在上下文切换、线程间通信等方面效率更高。OpenMP采用fork

join的并行执行模式,初始时程序从单线程开始执行,遇到编译制导语句时,单线程根据编译制导语句创建多个子线程,主线程和子线程同时并行完成计算任务,但OpenMP应用范围较窄,只适用于共享存储体系结构计算机。

技术实现思路

[0005]本专利技术的目的在于提供一种基于GPU加速的二次电子发射模拟方法及系统及设备,以解决当前微放电模拟过程中计算电子推进及二次电子发射过程速度慢的问题。
[0006]为实现上述目的,本专利技术采用以下技术方案:
[0007]一种基于GPU加速的二次电子发射模拟方法,包括以下步骤:
[0008]初始化微放电模拟所需的参数及数据结构,对GPU设备进行初始化,在进行CUDA语言编程过程中,将GPU设备的初始化代码放置在电子推进函数的起始位置,并保证该函数在整个程序生命周期内仅执行一次;
[0009]GPU读取数据后采用并行方式推进计算电子,并对二次电子发射过程进行计算;
[0010]在GPU完成电子推进及二次电子发射计算后,将数据传回系统主存进行数据结构更新,并由CPU进程判断是否继续进行模拟,若达到结束调节则终止模拟计算过程,否则继续计算下一时间的电子推进模拟。
[0011]进一步的,初始化微放电模拟所需的参数及数据结构包括:
[0012]步骤1,采用三维CAD建模软件/电磁场仿真软件建立待求电子发射器件模型,然后将其以STL/STEP格式进行存储;
[0013]步骤2,通过已有粒子模拟软件/电磁场仿真软件求解电子发射器件中的电磁场分
布并将其以频域形式导出;
[0014]步骤3,将电子发射器件几何结构进行离散剖分以构成电磁场计算的交错对偶网格体系,即Yee网格;
[0015]步骤4,采用已有二次电子发射模拟程序导入步骤1中的几何模型并读取步骤2中导出的电磁场数据。
[0016]进一步的,开启电子推进及二次电子发射计算过程,具体步骤如下:
[0017]设置初始加载电子参数,包括初始加载电子的总数,每个宏电子所包含的实际电子数目,电子加载区域,电子加载开始时间,电子加载结束时间;计算参数初始化,设置初始模拟时间步长以及模拟时长;
[0018]对GPU设备的CUDA运行环境进行初始化,初始化过程必须在电子推进过程之前完成,且整个程序生命周期内仅执行一次初始化操作;
[0019]将空间中的电子划分为若干个电子组,每个电子组中包含2000个电子,在电子推进过程中对每个电子组再次进行划分形成多个流处理计算组,流处理计算组中的电子数目是启用CUDA计算线程的整数倍;
[0020]调用GPU设备核函数完成一个电子组中各个流处理计算组的电子轨迹计算任务,并判断电子是否与器件边界发生碰撞,若发生碰撞,则计算二次电子发射情况,否则仅进行电子推进计算。
[0021]进一步的,通过调用设备核函数完成一个电子组的电子轨迹计算任务,具体为:
[0022]每个线程负责完成一个电子的相关计算任务,启用多个CUDA线程,并行读取电子的初始位置x及速度u,根据获得的电磁场并行计算电子的新位置x'与速度u',然后判断电子运动轨迹是否越过器件边界,若越过边界,则根据二次电子发射模型计算新的二次电子并确定电子数目和速度。
[0023]进一步的,在电子推进及二次电子发射计算过程中,采用GPU原子累加操作计算新增的二次发射电子总数M,并记录原子累加过程中每个CUDA线程的累加起始位置,存放在数组stackStartPos[i]中,其中i为CUDA线程编号,stackStartPos[i]的值为i号CUDA线程应该写入的新增电子数组位置;
[0024]在GPU上动态申请大小为M的存储空间数组newParticles,用于存放新增的二次发射电子;
[0025]启用CUDA核函数,以并行方式读取stackStartPos数组,第i号CUDA线程读取stackStartPos[i]的值,并将上一步计算产生的二次发射电子数据存储到数组newParticles中,写入存储的起始位置为newParticles[stackStartPos[i]+k

1],其中k为正整数,表示第i号线程产生的二次发射电子数;
[0026]CUDA线程对电子组中的电子进行标记,若发生碰撞则将标记变量Flag[i]值设置为1,否则Flag[i]值设为0,Flag为整数类型的数组;CUDA核函数计算完成后,将计算产生的电子位置、速度信息及newParticles、Flag数组由设备显存传输到主存中。
[0027]进一步的,根据Flag[i]值,由CPU线程更新主存中电子组的电子速度、位置信息,并将产生的二次发射电子加入到主存电子组队列中;判断当前所有电子组是否推进计算完毕,推进完毕则执行判断是否到达仿真时间,若超过则停止仿真,否则增加一个仿真使时间步并继续执行调用GPU设备核函数完成一个电子组中各个流处理计算组的电子轨迹计算任
务。
[0028]进一步的,采用GPU原子累加操作实现二次发射电子的多线程并行累加计数,同时提取累加计算的中间结果,获取每个CUDA线程的累加起始位置,存放在数组变量stackStartPos[i]中,用于标记后续写入二次发射电子的数组位置,其中i为CUDA线程编号,stackStartPos[i]的值为i号CUDA线程应该写入的二次发射电子数组起始位置。
[0029]进一步的,Flag[i]值更新电子组中的电子信息,若Flag[i]值为1,删除索引号为i的电子位置、速度,同时将该电子组的总数减1;之后使用计算推进后的电子位置及速度替换主存中相应的数据,申请存储空间存放本次推进新的增二次发射电子并加入原主存电子组队列。
[0030]进一步的,一种基于G本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于GPU加速的二次电子发射模拟方法,其特征在于,包括以下步骤:初始化微放电模拟所需的参数及数据结构,对GPU设备进行初始化,在进行CUDA语言编程过程中,将GPU设备的初始化代码放置在电子推进函数的起始位置,并保证该函数在整个程序生命周期内仅执行一次;GPU读取数据后采用并行方式推进计算电子,并对二次电子发射过程进行计算;在GPU完成电子推进及二次电子发射计算后,将数据传回系统主存进行数据结构更新,并由CPU进程判断是否继续进行模拟,若达到结束调节则终止模拟计算过程,否则继续计算下一时间的电子推进模拟。2.根据权利要求1所述的一种基于GPU加速的二次电子发射模拟方法,其特征在于,初始化微放电模拟所需的参数及数据结构包括:步骤1,采用三维CAD建模软件/电磁场仿真软件建立待求电子发射器件模型,然后将其以STL/STEP格式进行存储;步骤2,通过已有粒子模拟软件/电磁场仿真软件求解电子发射器件中的电磁场分布并将其以频域形式导出;步骤3,将电子发射器件几何结构进行离散剖分以构成电磁场计算的交错对偶网格体系,即Yee网格;步骤4,采用已有二次电子发射模拟程序导入步骤1中的几何模型并读取步骤2中导出的电磁场数据。3.根据权利要求1所述的一种基于GPU加速的二次电子发射模拟方法,其特征在于,开启电子推进及二次电子发射计算过程,具体步骤如下:设置初始加载电子参数,包括初始加载电子的总数,每个宏电子所包含的实际电子数目,电子加载区域,电子加载开始时间,电子加载结束时间;计算参数初始化,设置初始模拟时间步长以及模拟时长;对GPU设备的CUDA运行环境进行初始化,初始化过程必须在电子推进过程之前完成,且整个程序生命周期内仅执行一次初始化操作;将空间中的电子划分为若干个电子组,每个电子组中包含2000个电子,在电子推进过程中对每个电子组再次进行划分形成多个流处理计算组,流处理计算组中的电子数目是启用CUDA计算线程的整数倍;调用GPU设备核函数完成一个电子组中各个流处理计算组的电子轨迹计算任务,并判断电子是否与器件边界发生碰撞,若发生碰撞,则计算二次电子发射情况,否则仅进行电子推进计算。4.根据权利要求3所述的一种基于GPU加速的二次电子发射模拟方法,其特征在于,通过调用设备核函数完成一个电子组的电子轨迹计算任务,具体为:每个线程负责完成一个电子的相关计算任务,启用多个CUDA线程,并行读取电子的初始位置x及速度u,根据获得的电磁场并行计算电子的新位置x'与速度u',然后判断电子运动轨迹是否越过器件边界,若越过边界,则根据二次电子发射模型计算新的二次电子并确定电子数目和速度。5.根据权利要求3所述的一种基于GPU加速的二次电子发射模拟方法,其特征在于,在电子推进及二次电子发射计算过程中,采用GPU原子累加操作计算新增的二次发射电子总
数M,并记录原子累加过程中每个CUDA线程的累加起始位置,存放在数组stackStartPos[i]中,其中i为CUDA线程编号,stackStartPos[i]的值为i号CUDA线程应该写入的新增电子数组位置;在GPU上动态申请大...

【专利技术属性】
技术研发人员:翟永贵王洪广李永东陈坤王柯林舒王瑞彭敏
申请(专利权)人:西安交通大学
类型:发明
国别省市:

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

1