CN110222410A - 一种基于Hadoop MapReduce的电磁环境仿真方法 - Google Patents
一种基于Hadoop MapReduce的电磁环境仿真方法 Download PDFInfo
- Publication number
- CN110222410A CN110222410A CN201910465286.3A CN201910465286A CN110222410A CN 110222410 A CN110222410 A CN 110222410A CN 201910465286 A CN201910465286 A CN 201910465286A CN 110222410 A CN110222410 A CN 110222410A
- Authority
- CN
- China
- Prior art keywords
- key
- ray
- value pair
- gpu
- value
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Image Generation (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明涉及一种基于Hadoop MapReduce的电磁环境仿真方法,包括以下步骤:1)场景预处理;2)以辐射源球心为原点,按照水平方向0到360度,垂直方向0到180度依次取一个水平角度和一个垂直角度来确定一个唯一的射线方向;3)将辐射源产生的初始射线数据作为Hadoop Map处理的输入数据提交;4)Hadoop框架调用用户实现的Map函数对射线数据进行处理;5)对所有中间键值对进行整理,并将到达同一接收机的有效射线分配至相同的Reduce节点,进行多条射线的叠加计算;6)合并多个Reduce节点的输出,以得到所有接收机的结果。本发明提出的一种基于Hadoop MapReduce的电磁环境仿真方法,基于Hadoop MapReduce框架实现了电磁环境仿真的并行计算,有效提高了电磁环境仿真的效率。
Description
技术领域
本发明涉及一种电磁环境仿真方法,特别涉及一种基于Hadoop MapReduce的电磁环境并行仿真计算方法。
背景技术
在对环境或物体进行电磁仿真时,由于电磁场本身属性较为复杂,而其在大规模开放环境中的传播问题难以精确地模拟,需要对计算模型进行简化。对高频电磁波而言,在波长确定的情况下,传播媒介的变化可以基本忽略,此时电磁波的传播具有局部特性,即一个点处的电磁特性仅由其附近的场强特性所决定。在这种情况下,从电磁波辐射源点到观测点的能量传输情况就可以不考虑其他区域,仅考虑射线路径周围的有限空间。同时,在局部空间中,高频场表现出平面波特性,因此可以用几何光学来计算高频波的传播问题。射线追踪方法就是利用几何光学原理,模拟计算电磁波传播过程中电波传播的几何路径,根据射线属性和表面属性模拟计算传播过程中发生的反射、折射和绕射现象,不断计算在射线传播过程中的能量,直到射线到达接收机或能量衰减到阈值为止。射线追踪方法分为正向和反向两种:
反向射线追踪方法通过反向推导计算接收机处的结果,得出可能从辐射源到达接收机的传播路径来确定射线传播路径。该方法需要从每一个接收机出发,枚举计算所有可能的路径,通常使用镜像法筛选有效路径,并对每一条有效射线路径精确计算电磁参数。在对开放式复杂电磁环境进行仿真时,为了了解电磁态势分布,通常需要在场景中密集布置大量的接收机。若以反向射线追踪算法进行计算,则需要枚举每个接收机的所有可能的射线路径,对于实际应用来说要实现这一点需要的计算量和内存需求并不现实。因此,反向射线追踪算法通常用以精确地计算一个特定位置接收机的电磁参数,而不是用以大规模的估算。
正向射线追踪法(也称为射线弹跳法,Shoot and Bouncing Ray)则是模拟了电磁波本身的物理传播方式,即首先针对辐射源按照一定的划分方法生成该辐射源发射的所有初始射线,而后跟踪每一条射线,模拟其行进过程中的反射、折射和绕射等现象,直到其到达接收机,并通过以下两个条件来判定其路径是否属于有效路径:(1)射线到达接收机的范围处于接收球内;(2)射线到达接收机处的功率超过规定的阈值。正向射线法追踪法的流程如图1所示。
应用环境中,较大区域内的电磁仿真需求更趋向于实时快速估算了解电磁态势分布,而非精确计算,故正向射线追踪法在这种需求下实用性和效率较有优势。正向射线追踪方法由于每一条射线的计算和判定都相对独立,理论上也非常适合实现并行化。
Hadoop MapReduce是现在应用最广泛的并行计算框架。MapReduce本身的思路并不复杂,其核心思想在于以键值对的方式处理每个阶段的数据。Hadoop的MapReduce部分处理流程可分为三个主要阶段:Map,Shuffle和Reduce,其中每个阶段主要的输入输出形式均为键值对。
Map阶段在整个计算任务开始前,用户需要将待计算的数据文件提交到分布式文件系统(HDFS)上,并指定文件分片大小,每个分片对应一个Map作业。单个Map作业运行于集群的单个计算节点之上,首先根据用户配置从分片文件读入键值对,并对读入的键值对执行用户实现的Map函数,产生一系列的中间键值对。这些键值对将由MapReduce框架的内部组件进行处理,对各个Map作业产生的键值对进行排序和合并操作。
Map结束后进入Shuffle阶段,框架会将集群多个Map作业产生的大量中间键值对按照其对应的处理分区,发送到对应的多个执行Reduce作业的计算节点之上。
Reduce阶段。执行Reduce作业的计算节点将接收中间键值对,并对具有相同键的键值对合并调用用户实现的Reduce函数,完成相关计算。Reduce作业最终的输出是用户定义的键值对形式,输出内容存在于分布式文件系统上。
由于每个map和reduce执行相对独立的任务,因此使用MapReduce框架,可以把一个复杂的任务分成若干个简单的任务分发到网络上的每个工作节点并行执行,从而实现分布式并行计算。
在现有技术中,未找到通过Hadoop MapReduce框架,使用正向射线法实现电磁环境仿真的技术方案。
发明内容
本发明的目的在于针对现有技术的不足,提供一种基于Hadoop MapReduce框架,通过并行计算实现正向射线法电磁环境仿真的方案,高效的实现电磁环境仿真。
为达到上述目的,本发明提供了一种基于Hadoop MapReduce的电磁环境仿真方法,包括以下步骤:
1)场景预处理:根据场景、辐射源和接收机数据构造场景信息,将生成的场景信息文件作为静态数据同步传输到各个Hadoop计算节点,作为后续并行仿真计算的访问资源;
2)将辐射源视为一个均匀向水平360度范围,垂直180度范围发射电磁波的均匀球体;在此种情况下,以辐射源球心为原点,按照水平方向0到360度,垂直方向0到180度依次取一个水平角度和一个垂直角度来确定一个唯一的射线方向,角度间隔为用户设定的参数,改变该参数即可改变单个辐射源发射的初始射线密度;
3)将辐射源产生的初始射线数据作为Hadoop Map处理的输入数据提交给各个Hadoop计算节点;
4)Hadoop框架调用用户实现的Map函数对射线数据进行处理,对于每条初始射线,首先遍历场景信息确定应执行相交测试的区块,然后依次对每个需要执行相交测试的表面进行相交测试,并由测试通过的表面属性计算该原始射线的状态;若该原始射线由于反射产生了子射线,则对子射线递归执行计算,并将该次反射路径添加到原始射线的路径中;Map步骤最终输出结果是以键值对形式存在的能够到达接收机的有效射线及其路径,射线在行进过程中对接收机产生的场贡献会同时被计算,并存储到相应数据结构中;
5)对所有中间键值对进行整理,并将到达同一接收机的有效射线分配至相同的Reduce节点,进行多条射线的叠加计算;
6)单个Reduce节点产生结果只针对单个接收机,最后合并多个Reduce节点的输出,以得到所有接收机的结果。
优选地,采用GPU并行处理每一条射线数据,具体方法为:
在Hadoop MapReduce框架和用户之间增加一个GPU计算模块,用户将具体的Map函数、Reduce函数提交给GPU计算模块,该GPU计算模块在Map步骤之前,通过Hadoop提供的接口将工作节点分配到的整个数据块作为键值对的“值”来处理,从而将数据块转换为一个单一的键值对;在Map步骤中,该GPU计算模块将用户提交的Map函数封装成新的Map函数提交给Hadoop框架,该新的Map函数从Hadoop框架接收数据块,进一步划分一条射线为一个键值对,其键为该射线的id,其值为一个数据结构,包含所有用以电磁场强计算的相关参数;并将每个键值对分配给不同的GPU线程,由每个GPU线程调用用户提交的Map函数进行并行计算。
优选地,所述GPU计算模块在启动GPU设备的计算任务前,将需要计算的数据提前复制到设备内存中,设备计算的中间数据及计算完成后结果数据同样存储在设备内存,计算完成后再将结果从GPU设备内存取回并写入到Hadoop的分布式文件系统中。
优选地,每个GPU线程在执行用户提交的Map函数之前,执行一个类似Map的Pre-Map函数,该步骤并不实际产生中间键值对,仅仅并行统计每个GPU线程所产生的键值对个数和占用的总内存大小;Pre-Map函数执行完成后,主机端取得每个GPU设备所有线程的统计信息,为中间键值对的存储预先分配足够大小的内存,再执行Map步骤实际产生中间键值对。
优选地,GPU计算模块将每个键值对的操作分为两个相对独立的阶段:数据传输和数据在GPU内的计算,分别由主机端两个独立的线程IO线程和任务调度线程管理;
在启动所有任务之前,在每个GPU设备内存中开启一个内存缓冲区,当缓冲区空间被释放,IO线程读取待处理的数据块传送到该内存缓冲区;当缓冲区已满,IO线程阻塞,文件传输停止;
当一个计算任务完成后,其结果写入到GPU设备的全局共享内存,此时由任务调度线程检测缓冲区中是否存在未被处理的数据,如果还有待处理数据就开始分派下一次计算任务,同时从缓冲区中彻底释放已处理的数据块;在计算任务进行的同时,IO线程将结果数据从GPU设备内存拷贝到主机的内存中。
优选地,采用适用于并行计算的键值对存储结构:
键值对存储区包含三块较大的连续内存区域,分别用来存储键、值和索引;每个索引结构包含四分量,包括该索引对应键值对的键和值相对于各自存储基址的偏移,以及键、值分别占用的内存长度;对整个存储区记录键、值、索引的存储基址以及存储的键值对数量;访问单个键值对时,提供键值对的编号访问索引数组,计算偏移得到存储区的实际地址,从而取得实际的键值对内容。
优选地,采用基于哈希方法的射线路径比较剔除重复路径:在场景预处理阶段,对场景中所有的几何图元进行编号,并赋与其唯一的index值,射线结构体中添加用以代表射线路径的HashCode变量;在迭代计算射线路径的过程中,射线每一次和几何图元相交,则使用该图元的index值和当前射线路径的HashCode进行哈希运算,将运算结果作为射线新的HashCode;在进行射线路径比较时,仅仅需要比较两条射线的HashCode值即可确定是否重复,若重复则进行剔除。
有益效果
本发明提出的一种基于Hadoop MapReduce的电磁环境仿真方法,基于HadoopMapReduce框架实现了电磁环境仿真的并行计算,有效提高了电磁环境仿真的效率。
附图说明
图1为正向射线追踪方法的流程图;
图2为实施例1中基于Hadoop MapReduce的电磁环境仿真方法流程;
图3为GPU线程和存储结构示意图;
图4为加入了GPU计算模块之后的并行计算方法数据流图;
图5为基于GPU线程并行的键值对处理示意图;
图6为实施例1的存储方式示意图。
图7为实施例1添加Pre-Map步骤的流程图以及与不添加该步骤的对比;
图8为实施例1采用的多线程流水线方法示意图;
图9为实施例1采用的适用于并行计算的键值对存储结构;
具体实施方式
下面结合附图,具体说明本发明的优选实施方式。
实施例1具体实现了本发明提出的一种基于Hadoop MapReduce的电磁环境仿真方法,如图2所示,包括以下步骤:
1)场景预处理:根据场景、辐射源和接收机数据构造场景信息,将生成的场景信息文件作为静态数据同步传输到各个Hadoop计算节点,作为后续并行仿真计算的访问资源;
2)将辐射源视为一个均匀向水平360度范围,垂直180度范围发射电磁波的均匀球体;在此种情况下,以辐射源球心为原点,按照水平方向0到360度,垂直方向0到180度依次取一个水平角度和一个垂直角度来确定一个唯一的射线方向,角度间隔为用户设定的参数,改变该参数即可改变单个辐射源发射的初始射线密度;
3)将辐射源产生的初始射线数据作为Hadoop Map处理的输入数据提交给各个Hadoop计算节点;
4)Hadoop框架调用用户实现的Map函数对射线数据进行处理,对于每条初始射线,首先遍历场景信息确定应执行相交测试的区块,然后依次对每个需要执行相交测试的表面进行相交测试,并由测试通过的表面属性计算该原始射线的状态;若该原始射线由于反射产生了子射线,则对子射线递归执行计算,并将该次反射路径添加到原始射线的路径中;Map步骤最终输出结果是以键值对形式存在的能够到达接收机的有效射线及其路径,射线在行进过程中对接收机产生的场贡献会同时被计算,并存储到相应数据结构中;
5)对所有中间键值对进行整理,并将到达同一接收机的有效射线分配至相同的Reduce节点,进行多条射线的叠加计算;
6)单个Reduce节点产生结果只针对单个接收机,最后合并多个Reduce节点的输出,以得到所有接收机的结果。
得益于射线追踪方法的机制,射线之间可相互独立计算,几乎不会发生耦合,唯一需要读取的共享资源就是场景信息,需要写入的共享资源为接收机信息。而接收机电磁参数计算又可延迟到最后的Reduce阶段累加,故射线追踪方法可较为方便地在MapReduce框架中做到并行化,依靠集群计算的优势提升仿真效率。
采用现有的Hadoop MapReduce框架,可以实现将辐射源产生的初始射线数据分片,即分成多个数据块,每个数据块由不同的工作节点并行处理。但是同一个工作节点包含的键值对本质上仍然是串行的。
在现有的Hadoop分布式并行计算框架中,工作节点都是与CPU的物理核心相对应的。在硬件上,CPU的物理核心较为有限,目前消费级计算机的中高端CPU也通常不超过8个物理核心。如果要增加工作节点的数量,就需要通过网络中的大量CPU实现。这种方式增加的工作节点成本高昂,管理复杂,而且工作节点的数量也远远不足以达到甚至接近键值对级别的并行。
为了进一步提高电磁环境仿真的效率,实施例1进行了进一步优化,采用GPU并行处理每一条射线数据,实现方法如下:
GPU是一种大规模并行的计算硬件,其线程架构和存储结构可抽象为图3所示的结构。每个计算设备(Compute Device)存在若干个计算单元(Compute Unit),而每个计算单元下面又有多个处理单元(Processing Elements),每个处理单元通常对应一个最小的GPU线程。每个处理单元或线程都有自己的私有内存,通常以硬件寄存器的形式存在;同一个计算单元的所有线程可以访问该计算单元的本地内存(Local Memory),而所有计算单元的所有线程均可访问全局内存(Global Memory)和常量内存(Constant Memory)。通常GPU以计算单元为单位进行任务调度,每个计算单元的所有线程都执行相同的指令而处理不同的数据,以单指令多线程方式(Single Instruction Multi Thread)工作,而不同的计算单元又可以执行不同的指令。由于现代GPU上通常存在着远大于CPU核心数的计算单元数量,若能将这些处理单元用以并行处理键值对,则可达到接近键值对级别的并行,提升Map/Reduce阶段的效率。
如果通过改写Hadoop MapReduce组件的底层源代码来实现使用GPU作为并行计算的工作节点,不仅需要花费大量的时间,增加开发的难度,也会使得框架的可用性和适应性下降。因此,最优的实现方式是通过Hadoop框架提供的用户接口,将实现方法封装到提供给Hadoop的用户函数中,也就是通过在Map函数中实现对计算的接管。
基于此思想,本实施例在Hadoop MapReduce框架和用户之间增加一个GPU计算模块,用户将具体的Map函数、Reduce函数提交给GPU计算模块,该GPU计算模块在Map步骤之前,通过Hadoop提供的接口将工作节点分配到的整个数据块作为键值对的“值”来处理,从而将数据块转换为一个单一的键值对;在Map步骤中,该GPU计算模块将用户提交的Map函数封装成新的Map函数提交给Hadoop框架,该新的Map函数从Hadoop框架接收数据块,进一步划分一条射线为一个键值对,其键为该射线的id,其值为一个数据结构,包含所有用以电磁场强计算的相关参数;并将每个键值对分配给不同的GPU线程,由每个GPU线程调用用户提交的Map函数进行并行计算。
在Hadoop的Map/Reduce过程中,一个Map/Reduce作业被提交后,存放在HDFS上的输入数据将会按照设定的数据分片(Split)大小,由Hadoop管理系统将分片数据提交给各个Map节点进行Map操作。每个Map节点将会按照作业提交时设定的数据输入格式类(通过setInputFormatClass函数设定)来决定如何处理输入的数据块。通常情况下,该类提供了将一整块输入数据划分为键值对的规则。在Hadoop的设计中,Map节点的任务管理器将对每一对单独的键值对执行一次用户实现的Map函数。为了达到使用GPU处理大量Map数据的目的,不能继续沿用此种数据流方式。因为在使用GPU进行计算的时候,每次Map函数中仅仅处理一对键值对,相对于实际计算过程所用的时间,准备阶段(初始化GPU环境,加载相关库,计算设备和主机交换数据带来的额外开销等)所用的时间往往占用了更多的资源和时间。在这种情况下,合理的处理方式是将该计算节点分配到的需要Map的数据块整个提交给GPU设备,之后指定键值对划分规则并直接在GPU中执行所有的Map操作。因此,本实施例首先通过Hadoop接口设定特殊的数据输入格式类,即将整个数据块作为Hadoop用户程序Map函数参数中键值对的“值”来处理,可以做到将整个数据块在调用一次Map函数的情况下就传输到GPU进行处理,同时也可以一次性将Map产生的中间键值对取出并传输回Hadoop框架,从而以最小的额外开销实现将Map计算移交到GPU的目的。加入了GPU计算模块之后的并行计算方法数据流图如图4所示。
在Map中,每个键值对交由不同的GPU线程并行处理,就可以充分利用大量GPU执行单元达到并行的细粒度和规模最大化,如图5所示。
由于GPU的硬件设计和处理模式都和CPU有所不同,设计在GPU上运行的MapReduce框架首先需要考虑的就是尽量避免不适合GPU的工作方式。GPU的硬件特点决定了其与自身相连的设备内存数据交换速率远高于通过PCI-E总线和主机相连的主存的数据交换速率。同时,在设备端分配内存是一个开销较大的操作,因分配内存的操作需要经历由控制端发出命令、设备驱动程序执行、设备实际分配内存、返回分配结果四个步骤。良好设计的GPU程序,通常会将设备端计算的数据需要提前复制到设备内存中,启动GPU设备的计算任务,计算期间主机负责调度工作和串行操作;设备计算完成后结果同样存储在设备内存中,由控制端复制回主机内存中。这样主机和GPU设备可以同时工作,尽可能地减少相互等待的情况,提高利用率和执行效率。
因此,实施例1中,所述GPU计算模块在启动GPU设备的计算任务前,将需要计算的数据提前复制到设备内存中,设备计算的中间数据及计算完成后结果数据同样存储在设备内存,计算完成后再将结果从GPU设备内存取回并写入到Hadoop的分布式文件系统中,如图6所示。
图5所示的基于GPU线程的键值对处理是最理想的情况,可以将每个键值对交由一个GPU线程来处理。而实际运行时,需要处理的键值对数量不可能和可用的GPU线程数量一一对应。在键值对数量超过GPU线程数量时,每个GPU线程仍然需要串行处理多个键值对。而Map和Reduce的本质决定了其输出键值对的数量和输入键值对不存在确定关系,即一个输入键值对经过Map处理可能会产生0至多个中间键值对,总的中间键值对数量在整个Map阶段结束前是未知的。单个Map或Reduce阶段的执行,在确定输入键值对数量的情况下,输出键值对数量由具体执行的应用程序决定。这个特点要求在GPU执行计算的过程中动态分配设备内存以存储中间键值对,而GPU的特点又决定大部分设备无法在执行设备端程序时自主分配内存,分配设备内存的操作需要转移回主机进行,意味着打断正在执行的计算,在主机和设备之间进行频繁的状态切换,使得并行变得毫无意义。若能在GPU分配计算任务之前,确定Map操作产生的键值对所需的存储区域和位置并预先分配,在执行计算时GPU设备就可以直接进行中间键值对的写入,提高执行效率。
基于此思想,实施例1每个GPU线程在执行用户提交的Map函数之前,执行一个类似Map的Pre-Map函数,该步骤并不实际产生中间键值对,仅仅并行统计每个GPU线程所产生的键值对个数和占用的总内存大小;Pre-Map函数执行完成后,主机端取得每个GPU设备所有线程的统计信息,为中间键值对的存储预先分配足够大小的内存,再执行Map步骤实际产生中间键值对,如图7所示。
在GPU设备上执行MapReduce的另外一个问题就是硬件限制的内存大小。在现今的GPU设备上,设备内存通常远小于主机的内存。对于GPU计算来说,一个不容忽视的问题就是CPU与GPU之间数据传输效率问题。当一次性需要处理的数据量较大时,用于在GPU和主机内存之间传输数据所占的时间甚至可能超过GPU实际的计算时间,由此带来效率上的损失。减少数据传输时间是性能优化的一个重要方面,为了尽可能地减小这种损失,实施例1在主机端使用多线程流水线来控制执行的顺序,如图8所示,将每个键值对的操作分为两个相对独立的阶段:数据传输和数据在GPU内的计算,分别由主机端两个独立的线程IO线程和任务调度线程管理;
在启动所有任务之前,在每个GPU设备内存中开启一个内存缓冲区,当缓冲区空间被释放,IO线程读取待处理的数据块传送到该内存缓冲区;当缓冲区已满,IO线程阻塞,文件传输停止;
当一个计算任务完成后,其结果写入到GPU设备的全局共享内存,此时由任务调度线程检测缓冲区中是否存在未被处理的数据,如果还有待处理数据就开始分派下一次计算任务,同时从缓冲区中彻底释放已处理的数据块;在计算任务进行的同时,IO线程将结果数据从GPU设备内存拷贝到主机的内存中。
采用多线程流水线技术,对于IO时间占比较高的应用来说,用于数据IO的时间会掩盖GPU中的计算时间。反之,对于计算为主导的应用,计算时间会遮掩数据传输时间。在对大型数据块进行分片连续的作业中,这种流水线技术大大提高了时间利用率,将IO操作和计算操作同时进行,能够不间断地进行Map/Reduce处理,相比于将计算和IO串行的实现方法,能显著提高GPU计算Map/Reduce的效能。
实施例1采用了适用于并行计算的键值对存储结构,如图9所示:
键值对存储区包含三块较大的连续内存区域,分别用来存储键、值和索引;每个索引结构包含四分量,包括该索引对应键值对的键和值相对于各自存储基址的偏移,以及键、值分别占用的内存长度;对整个存储区记录键、值、索引的存储基址以及存储的键值对数量;访问单个键值对时,提供键值对的编号访问索引数组,计算偏移得到存储区的实际地址,从而取得实际的键值对内容。
在进行辐射源初始射线划分时,采用的方式是以经纬度等角度划分,这种划分在纬度接近0和180度时,会导致该纬度对应所有经度上的射线重合,因而导致参数完全相同的射线被计算多次,影响计算结果的准确性。因此,对无效和重复路径的射线进行剔除是一个关键的步骤。
初始无效射线可以在Map预处理阶段就剔除掉,对运行时的效率影响不大;而重复路径的射线在计算完毕之前,基本无法确定剔除。解决这个问题的办法就是在代表射线的结构体中,添加用以记录射线路径的分量,在比较两条射线是否路径重复时,依次比较路径中的所有节点。该方法在射线量较少的时候效率可以接受,但当场景复杂、射线数量巨大时,会严重影响效率。同时,存储路径的另一个问题就是在GPU上不便于动态分配内存,故需要为每条初始射线预先分配用以存储路径的足量存储空间,若预分配的内存数量较大,则在射线路径较短的情况下这些存储空间被大量浪费;若预先分配的内存过少,则在射线追踪过程中可能出现存储空间不足无法继续记录射线路径的情况。
针对此问题,实施例1采用基于哈希方法的射线路径比较剔除重复路径:在场景预处理阶段,对场景中所有的几何图元进行编号,并赋与其唯一的index值,射线结构体中添加用以代表射线路径的HashCode变量;在迭代计算射线路径的过程中,射线每一次和几何图元相交,则使用该图元的index值和当前射线路径的HashCode进行哈希运算,将运算结果作为射线新的HashCode;在进行射线路径比较时,仅仅需要比较两条射线的HashCode值即可确定是否重复,若重复则进行剔除。该方法无需为了记录射线路径分配额外的存储空间,在射线反射次数阈值设置较高的时候可显著减小比较次数,减小记录单条射线路径所需的存储空间,并提升算法在GPU上运行的整体性能。
采用实施例1的技术方案,基于Hadoop MapReduce框架实现了电磁环境仿真的并行计算,有效提高了电磁环境仿真的效率。
虽然结合附图描述了本发明的实施方式,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下做出各种修改和变型,这样的修改和变型均落入本发明权利要求所限定的范围之内。
Claims (9)
1.一种基于Hadoop MapReduce的电磁环境仿真方法,其特征在于,包括以下步骤:
1)场景预处理:根据场景、辐射源和接收机数据构造场景信息,将生成的场景信息文件作为静态数据同步传输到各个Hadoop计算节点,作为后续并行仿真计算的访问资源;
2)以辐射源球心为原点,按照水平方向0到360度,垂直方向0到180度依次取一个水平角度和一个垂直角度来确定一个唯一的射线方向,角度间隔为用户设定的参数,改变该参数即可改变单个辐射源发射的初始射线密度;
3)将辐射源产生的初始射线数据作为Hadoop Map处理的输入数据提交给各个Hadoop计算节点;
4)Hadoop框架调用用户实现的Map函数对射线数据进行处理,对于每条初始射线,首先遍历场景信息确定应执行相交测试的区块,然后依次对每个需要执行相交测试的表面进行相交测试,并由测试通过的表面属性计算该原始射线的状态;若该原始射线由于反射产生了子射线,则对子射线递归执行计算,并将该次反射路径添加到原始射线的路径中;Map步骤最终输出结果是以键值对形式存在的能够到达接收机的有效射线及其路径,射线在行进过程中对接收机产生的场贡献会同时被计算,并存储到相应数据结构中;
5)对所有中间键值对进行整理,并将到达同一接收机的有效射线分配至相同的Reduce节点,进行多条射线的叠加计算;
6)合并多个Reduce节点的输出,以得到所有接收机的结果。
2.根据权利要求1所述的一种基于Hadoop MapReduce的电磁环境仿真方法,其特征在于,采用GPU并行处理每一条射线数据,具体方法为:
在Hadoop MapReduce框架和用户之间增加一个GPU计算模块,用户将具体的Map函数、Reduce函数提交给GPU计算模块,该GPU计算模块在Map步骤之前,通过Hadoop提供的接口将工作节点分配到的整个数据块作为键值对的“值”来处理,从而将数据块转换为一个单一的键值对;在Map步骤中,该GPU计算模块将用户提交的Map函数封装成新的Map函数提交给Hadoop框架,该新的Map函数从Hadoop框架接收数据块,进一步划分一条射线为一个键值对,其键为该射线的id,其值为一个数据结构,包含所有用以电磁场强计算的相关参数;并将每个键值对分配给不同的GPU线程,由每个GPU线程调用用户提交的Map函数进行并行计算。
3.根据权利要求2所述的一种基于Hadoop MapReduce的电磁环境仿真方法,其特征在于,所述GPU计算模块在启动GPU设备的计算任务前,将需要计算的数据提前复制到设备内存中,设备计算的中间数据及计算完成后结果数据同样存储在设备内存,计算完成后再将结果从GPU设备内存取回并写入到Hadoop的分布式文件系统中。
4.根据权利要求3所述的一种基于Hadoop MapReduce的电磁环境仿真方法,其特征在于,每个GPU线程在执行用户提交的Map函数之前,执行一个类似Map的Pre-Map函数,该步骤并不实际产生中间键值对,仅仅并行统计每个GPU线程所产生的键值对个数和占用的总内存大小;Pre-Map函数执行完成后,主机端取得每个GPU设备所有线程的统计信息,为中间键值对的存储预先分配足够大小的内存,再执行Map步骤实际产生中间键值对。
5.根据权利要求2-4任一项所述的一种基于Hadoop MapReduce的电磁环境仿真方法,其特征在于,
该GPU计算模块将每个键值对的操作分为两个相对独立的阶段:数据传输和数据在GPU内的计算,分别由主机端两个独立的线程IO线程和任务调度线程管理;
在启动所有任务之前,在每个GPU设备内存中开启一个内存缓冲区,当缓冲区空间被释放,IO线程读取待处理的数据块传送到该内存缓冲区;当缓冲区已满,IO线程阻塞,文件传输停止;
当一个计算任务完成后,其结果写入到GPU设备的全局共享内存,此时由任务调度线程检测缓冲区中是否存在未被处理的数据,如果还有待处理数据就开始分派下一次计算任务,同时从缓冲区中彻底释放已处理的数据块;在计算任务进行的同时,IO线程将结果数据从GPU设备内存拷贝到主机的内存中。
6.根据权利要求2-4任一项所述的一种基于Hadoop MapReduce的电磁环境仿真方法,其特征在于,采用适用于并行计算的键值对存储结构:
键值对存储区包含三块较大的连续内存区域,分别用来存储键、值和索引;每个索引结构包含四分量,包括该索引对应键值对的键和值相对于各自存储基址的偏移,以及键、值分别占用的内存长度;对整个存储区记录键、值、索引的存储基址以及存储的键值对数量;访问单个键值对时,提供键值对的编号访问索引数组,计算偏移得到存储区的实际地址,从而取得实际的键值对内容。
7.根据权利要求5所述的一种基于Hadoop MapReduce的电磁环境仿真方法,其特征在于,采用适用于并行计算的键值对存储结构:
键值对存储区包含三块较大的连续内存区域,分别用来存储键、值和索引;每个索引结构包含四分量,包括该索引对应键值对的键和值相对于各自存储基址的偏移,以及键、值分别占用的内存长度;对整个存储区记录键、值、索引的存储基址以及存储的键值对数量;访问单个键值对时,提供键值对的编号访问索引数组,计算偏移得到存储区的实际地址,从而取得实际的键值对内容。
8.根据权利要求1-4任一项所述的一种基于Hadoop MapReduce的电磁环境仿真方法,其特征在于,采用基于哈希方法的射线路径比较剔除重复路径:在场景预处理阶段,对场景中所有的几何图元进行编号,并赋与其唯一的index值,射线结构体中添加用以代表射线路径的HashCode变量;在迭代计算射线路径的过程中,射线每一次和几何图元相交,则使用该图元的index值和当前射线路径的HashCode进行哈希运算,将运算结果作为射线新的HashCode;在进行射线路径比较时,仅仅需要比较两条射线的HashCode值即可确定是否重复,若重复则进行剔除。
9.根据权利要求5所述的一种基于Hadoop MapReduce的电磁环境仿真方法,其特征在于,采用基于哈希方法的射线路径比较剔除重复路径:在场景预处理阶段,对场景中所有的几何图元进行编号,并赋与其唯一的index值,射线结构体中添加用以代表射线路径的HashCode变量;在迭代计算射线路径的过程中,射线每一次和几何图元相交,则使用该图元的index值和当前射线路径的HashCode进行哈希运算,将运算结果作为射线新的HashCode;在进行射线路径比较时,仅仅需要比较两条射线的HashCode值即可确定是否重复,若重复则进行剔除。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910465286.3A CN110222410B (zh) | 2019-05-30 | 2019-05-30 | 一种基于Hadoop MapReduce的电磁环境仿真方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910465286.3A CN110222410B (zh) | 2019-05-30 | 2019-05-30 | 一种基于Hadoop MapReduce的电磁环境仿真方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110222410A true CN110222410A (zh) | 2019-09-10 |
CN110222410B CN110222410B (zh) | 2020-12-11 |
Family
ID=67818650
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910465286.3A Active CN110222410B (zh) | 2019-05-30 | 2019-05-30 | 一种基于Hadoop MapReduce的电磁环境仿真方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110222410B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112256700A (zh) * | 2020-10-19 | 2021-01-22 | 北京字节跳动网络技术有限公司 | 数据存储方法、装置、电子设备及计算机可读存储介质 |
CN113128142A (zh) * | 2021-04-27 | 2021-07-16 | 北京智芯仿真科技有限公司 | 基于文件锁的集成电路电磁仿真粗颗粒并行方法及装置 |
CN113866740A (zh) * | 2021-09-28 | 2021-12-31 | 北京环境特性研究所 | 集群目标动态电磁散射特性计算方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101349722A (zh) * | 2008-09-01 | 2009-01-21 | 中国舰船研究设计中心 | 基于仿真数据的电磁环境测试方法 |
CN103714009A (zh) * | 2013-12-20 | 2014-04-09 | 华中科技大学 | 一种GPU上基于内存统一管理的MapReduce实现方法 |
CN104008217A (zh) * | 2013-02-25 | 2014-08-27 | 北京市劳动保护科学研究所 | 面向大尺度复杂目标模型的电磁波阴影处理方法 |
CN104280621A (zh) * | 2014-10-29 | 2015-01-14 | 中国电子科技集团公司第二十九研究所 | 一种区域电磁环境射线传播路径并行搜索方法 |
CN104965689A (zh) * | 2015-05-22 | 2015-10-07 | 浪潮电子信息产业股份有限公司 | 一种cpu/gpu的混合并行计算方法及装置 |
US20160321350A1 (en) * | 2013-12-27 | 2016-11-03 | International Business Machines Corporation | Stratified sampling using adaptive parallel data processing |
-
2019
- 2019-05-30 CN CN201910465286.3A patent/CN110222410B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101349722A (zh) * | 2008-09-01 | 2009-01-21 | 中国舰船研究设计中心 | 基于仿真数据的电磁环境测试方法 |
CN104008217A (zh) * | 2013-02-25 | 2014-08-27 | 北京市劳动保护科学研究所 | 面向大尺度复杂目标模型的电磁波阴影处理方法 |
CN103714009A (zh) * | 2013-12-20 | 2014-04-09 | 华中科技大学 | 一种GPU上基于内存统一管理的MapReduce实现方法 |
US20160321350A1 (en) * | 2013-12-27 | 2016-11-03 | International Business Machines Corporation | Stratified sampling using adaptive parallel data processing |
CN104280621A (zh) * | 2014-10-29 | 2015-01-14 | 中国电子科技集团公司第二十九研究所 | 一种区域电磁环境射线传播路径并行搜索方法 |
CN104965689A (zh) * | 2015-05-22 | 2015-10-07 | 浪潮电子信息产业股份有限公司 | 一种cpu/gpu的混合并行计算方法及装置 |
Non-Patent Citations (2)
Title |
---|
李朋朋: "基于发射源分割算法的分布式复杂电磁环境仿真加速计算系统的研究及应用", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
邹新龙: "射线追踪室内算法的改进研究", 《中国优秀硕士学位论文全文数据库 工程科技Ⅱ辑》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112256700A (zh) * | 2020-10-19 | 2021-01-22 | 北京字节跳动网络技术有限公司 | 数据存储方法、装置、电子设备及计算机可读存储介质 |
CN113128142A (zh) * | 2021-04-27 | 2021-07-16 | 北京智芯仿真科技有限公司 | 基于文件锁的集成电路电磁仿真粗颗粒并行方法及装置 |
CN113866740A (zh) * | 2021-09-28 | 2021-12-31 | 北京环境特性研究所 | 集群目标动态电磁散射特性计算方法及装置 |
CN113866740B (zh) * | 2021-09-28 | 2024-05-24 | 北京环境特性研究所 | 集群目标动态电磁散射特性计算方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110222410B (zh) | 2020-12-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3861489A1 (en) | Parcelled quantum resources | |
He et al. | A novel task-duplication based clustering algorithm for heterogeneous computing environments | |
Bhimani et al. | Docker container scheduler for I/O intensive applications running on NVMe SSDs | |
Ardagna et al. | Performance prediction of cloud-based big data applications | |
Chen et al. | Deep learning research and development platform: Characterizing and scheduling with qos guarantees on gpu clusters | |
CN110222410A (zh) | 一种基于Hadoop MapReduce的电磁环境仿真方法 | |
CN113821332B (zh) | 自动机器学习系统效能调优方法、装置、设备及介质 | |
CN110187969A (zh) | 一种基于gpu的分布式大数据并行计算方法 | |
CN110187970A (zh) | 一种基于Hadoop MapReduce的分布式大数据并行计算方法 | |
Wang et al. | An efficient and non-intrusive GPU scheduling framework for deep learning training systems | |
Lin et al. | A model-based approach to streamlining distributed training for asynchronous SGD | |
Ataie et al. | Modeling and evaluation of dispatching policies in IaaS cloud data centers using SANs | |
Nanda et al. | Racc: resource-aware container consolidation using a deep learning approach | |
Zhang et al. | Astraea: towards QoS-aware and resource-efficient multi-stage GPU services | |
CN117785490B (zh) | 一种图神经网络模型的训练架构、方法、系统及服务器 | |
Sun et al. | Cognn: efficient scheduling for concurrent gnn training on gpus | |
US20210390405A1 (en) | Microservice-based training systems in heterogeneous graphic processor unit (gpu) cluster and operating method thereof | |
Liu et al. | Funcpipe: A pipelined serverless framework for fast and cost-efficient training of deep learning models | |
EP4057142A1 (en) | Job scheduling method and job scheduling apparatus | |
Zhou et al. | Canary: Decentralized distributed deep learning via gradient sketch and partition in multi-interface networks | |
Jiang et al. | AMS: Adaptive multiget scheduling algorithm for distributed key-value stores | |
CN108009074B (zh) | 一种基于模型和动态分析的多核系统实时性评估方法 | |
Wang et al. | GPARS: Graph predictive algorithm for efficient resource scheduling in heterogeneous GPU clusters | |
Chen et al. | Pickyman: A preemptive scheduler for deep learning jobs on gpu clusters | |
Jiang et al. | Energy optimization oriented three-way clustering algorithm for cloud tasks |
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 |