一种多GPU并行计算的快速成像处理系统
技术领域
本发明属于快速成像处理技术领域,特别涉及一种多GPU并行计算的快速成像处理系统。
背景技术
二维多输入多输出(Multiple inputMultiple Output,MIMO)阵列可以获取目标高分辨率三维图像,凭借其快速数据获取能力,可被应用于快速人体安检场合。采用MIMO阵列的探测系统,其发射端和接收端均采用多阵元天线结构,并同时使用多个相互正交的发射信号来探测目标,多路正交信号经目标散射后被接收端的所有阵元接收。每个接收信号都通过一组匹配滤波器分选对应各个发射波形的回波信号,从而引入了远多于实际物理阵元数目的观测通道和自由度。MIMO雷达独特的多收发天线阵列结构,使得常规的高效率成像算法难以直接应用MIMO雷达成像机制,而来源于计算机层析(computerizedtomography,CT)成像技术的后向投影(back projection,BP)算法却不受天线阵列形式的限制,能够直接进行MIMO雷达成像处理。
BP算法是一种精确的时域成像算法,但计算效率很低,应用于MIMO雷达成像时需要考虑如何降低计算时间的问题。常规的CPU计算方式,效率低下,成像时间慢。采用现场可编程门阵列(Field-Programmable Gate Array,FPGA),虽可以大大提高计算效率,但其成本较高,发热量大,散热问题严峻。采用GPU运算,利用其并发处理的优势,可大大提高运算效率,且成本相对较低,是BP成像计算的首选方式。在基于GPU的快速成像信号处理系统中,会面临两个难以解决的问题,一是低延迟的加载回波数据到GPU中,二是设计一个合理的GPU并行计算架构,以达到一个低延迟的成像性能。采用BP算法的MIMO近场成像方法,由于计算量大,对于快速成像的应用场合,单个GPU受限于内存和并行核数,计算效率会受到限制,因此迫切需要研究提出利用多个GPU并行实施MIMO近场快速成像的方法。
毫米波回波数据的采集通常由一块搭载FPGA的电路板完成,该电路板通常放置在天线阵列附近,同时距离GPU处理系统较远。一种常见的做法是,通过以太网连接数据采集板与GPU处理系统,这种做法的显著弊端有两个,一是当成像系统中天线阵列数量较大时,网络传输时间可能长达几十毫秒甚至更长,这是不可忽略的大延迟;二是网络传输的数据首先会加载进CPU中,再从CPU加载进GPU中,特别地,当GPU数量不止一个时,数据还需要分别加载到这些GPU中,这个数据路径是冗长低效率的。
发明内容
针对上述问题,本发明提供了一种多GPU并行计算的快速成像处理系统,所述快速成像处理系统包括采集模块、接收模块、GPU组和CPU;
所述采集模块,用于采集回波数据,顺序处理所述回波数据,得到顺序数据;
所述接收模块,用于接收所述顺序数据,直接加载所述顺序数据;
所述GPU组,用于运算处理所述顺序数据,得到一维距离信息,均分处理所述一维距离信息,得到距离信息分量,计算处理所述距离信息分量,得到图像结果,累加处理所述图像结果,得到累加结果,发送所述累加结果;
所述CPU,用于接收所述累加结果,对所述累加结果进行图片处理,得到成像结果。
优选的,所述接收模块至少包括1片FPGA,1个4×高速输入/输出接口和1个PCIe×8接口;
所述FPGA集成有PCIe控制器,用于直接加载所述顺序数据。
优选的,所述GPU组为以环形拓扑结构连接的N个GPU,所述每个GPU分别处理1/N份一维距离信息,其中N≥2;
环形拓扑结构中第1个GPU,
用于接收所述顺序数据,对所述顺序数据在频率维度进行一维快速傅里叶运算,得到所述一维距离信息;
还用于对所述一维距离信息进行切割处理,得到N份距离信息分量,N为GPU的总个数,其中,距离信息分量等于1/N所述一维距离信息。
优选的,每个所述GPU包括缓冲区和多个处理单元,其中,
所述缓冲区包括执行缓冲区和临时缓冲区,所述执行缓冲区用于拷贝1/N所述一维距离信息,所述临时缓冲区,用于存储剩余的所述一维距离信息,并将所述剩余的所述一维距离信息发送到下一个GPU中;
所述多个处理单元用于对所述1/N所述一维距离信息并行执行算法处理。
优选的,环形拓扑结构中第n个GPU的所述临时缓冲区,还用于存储执行区执行图像处理的执行结果,并将所述执行结果发送到下一个GPU的临时缓冲区,其中1<n<N。
优选的,环形拓扑结构中第N个GPU的所述临时缓冲区,还用于存储执行区执行图像处理的执行结果,并将所述执行结果发送到第一个GPU的图像累加单元。
优选的,采集回波数据,顺序处理所述回波数据,得到顺序数据;
接收所述顺序数据,加载所述顺序数据;
以环形拓扑结构连接的N个GPU,运算处理所述顺序数据,得到一维距离信息,均分处理所述一维距离信息,得到距离信息分量,计算处理所述距离信息分量,得到图像结果,累加处理所述图像结果,得到累加结果,发送所述累加结果;
接收所述累加结果,对所述累加结果进行图片处理,得到成像结果。
优选的,所述顺序处理包括:对所述回波数据进行先频率维度,然后接收阵列维度,最后发射阵列维度的顺序处理。
优选的,所述运算处理包括:接收所述顺序数据,对所述顺序数据在频率维度进行一维快速傅里叶运算,得到所述一维距离信息;
所述均分处理包括:对所述一维距离信息进行切割处理,得到N份所述距离信息分量,N为GPU的总个数,距离信息分量等于1/N所述一维距离信息;
所述计算处理包括:
接收1/N所述一维距离信息,发送1/N所述一维距离信息;
算法处理1/N所述一维距离信息,得到图像结果;
接收(N-I+1)/N所述一维距离信息和所述图像结果,发送所述图像结果,其中I=1,2…,N。
优选的,所述算法处理包括距离向插值、方位向时延校正和相干累加。
本发明通过采集模块采集回波数据,按顺序处理回波数据,并发送给接收模块,接收模块接收到回波数据后通过PCIe接口和RDMA技术直接加载进GPU1,大大节省了回波数据加载时间,GPU组中多个GPU进行并行处理,通过优化多GPU间的拓扑结构和并行计算方法,使得成像计算时间与GPU个数基本呈线性的关系,大大提高了GPU组计算效率。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所指出的结构来实现和获得。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本发明的整体结构示意图;
图2示出了本发明的实施例中GPU组结构图;
图3示出了本发明的三个GPU内部运行结构图;
图4示出了本发明的四个GPU内部运行结构图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地说明,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供一种多GPU并行计算的快速成像处理系统,图1展示出了快速成像处理系统的整体结构示意图,如图1所示,所述快速成像处理系统包括采集模块、接收模块、GPU组和CPU。
具体的,所述采集模块,用于采集回波数据,顺序处理所述回波数据,得到顺序数据;采集模块前端接收到回波数据后,将回波数据按照先频率维度,然后接收阵列维度,最后发射阵列维度的顺序,得到顺序数据后,发送顺序数据。
其中,所述采集模块采用毫米波回波数据采集模块,毫米波回波数据采集模块至少包括1个4×Rapid IO接口。
具体的,所述接收模块,用于接收所述顺序数据,直接加载所述顺序数据,所述接收模块至少包括1片FPGA,1个4×高速输入/输出接口和1个PCIe×8接口,所述FPGA集成有PCIe控制器,用于直接加载所述顺序数据。
采集模块采用多路高速收发器,现以Rapid IO数据接收模块为例,其中,Rapid IO数据接收模块至少包括1片FPGA,1个4×Rapid IO接口和1个PCIe×8接口,其中FPGA集成有PCIe控制器。
烧录FPGA:在拥有N个Nvdia Quadro或Tesla系列显卡的计算机上创建一个混杂设备,通过文件操作集函数ioctl,实现nvidia_p2p_get_pages接nvidia_p2p_put_pages接口的PINNING GPU MEMORY和UNPINNING GPU MEMORY功能;通过nvidia_p2p_get_pages映射物理页表,并保存在nvidia_p2p_page_table结构体中;根据申请的虚拟内存地址映射物理页表,并建立一个scatterlist;将nvidia_p2p_page_table中映射好的页表信息填入D MA描述符表中;CPU将DMA描述符表通过PCIe写寄存器的方式写入到FPGA中。
Rapid IO数据接收模块中的FPGA将接收到的顺序数据通过PCIe DM A写的方式传输到GPU组中的GPU1的显存中。
具体的,所述GPU组,用于运算处理所述顺序数据,得到一维距离信息,均分处理所述一维距离信息,得到距离信息分量,计算处理所述距离信息分量,得到图像结果,累加处理所述图像结果,得到累加结果,发送所述累加结果。
进一步地,所述GPU组为以环形拓扑结构连接的N个GPU,所述每个GPU分别处理1/N份一维距离信息,其中N≥2。
进一步地,环形拓扑结构中第1个GPU,用于接收所述顺序数据,对所述顺序数据在频率维度进行一维快速傅里叶运算,得到所述一维距离信息,一维距离信息即Fecho(i,j,p),其中i=1,2,……Nt,Nt为天线发射阵列的个数,j=1,2,……Nr,Nr为接收阵列的个数;p=1,2,……,Nf,Nf为步进频率的个数。
进一步地,环形拓扑结构中第1个GPU,还用于对所述一维距离信息进行切割处理,得到N份距离信息分量,N为GPU的总个数,其中,距离信息分量等于1/N所述一维距离信息。
进一步地,每个所述GPU包括缓冲区和多个处理单元,其中,所述缓冲区包括执行缓冲区和临时缓冲区,所述临时缓冲区,用于存储剩余的所述一维距离信息,并将所述剩余的所述一维距离信息发送到下一个GPU中;所述执行缓冲区用于拷贝1/N所述一维距离信息,所述多个处理单元用于对所述1/N所述一维距离信息并行执行算法处理。
GPU1对1/N一维距离信息进行算法处理,即对1/N一维距离信息进行距离向插值、方位向时延校正和相干累加,与此同时,GPU1通过GPU Di rect P2P技术将(N-1)/N一维距离信息传输到GPU2中。具体的,GPU1将1/N一维距离信息拷贝到执行缓冲区中,将剩下(N-1)/N一维距离信息拷贝到临时缓冲区,并将临时缓冲区中的数据通过GPU Direct P2P技术拷贝到G PU2中;在GPU1构造M个后向投影算法模块,并分配到M个的CUDA核心中进行并行计算,其中M不大于成像网格数中,每个后向投影算法模块执行距离向插值、方位向时延校正和相干累加计算;并行计算完毕后,将并行计算结果进行合并,形成第一图片,拷贝到临时缓冲区。
进一步地,环形拓扑结构中第n个GPU的所述临时缓冲区,还用于存储执行区执行图像处理的执行结果,并将所述执行结果发送到下一个GPU的临时缓冲区,其中1<n<N。
GPUi从GPUi-1接收到(N-i+1)/N一维距离信息,i=2,3,…,N,只对1/N一维距离信息进行距离像插值、时延校正和相干累加,GPUi将剩余的1-[(N-i+1)/(N-1)]一维距离信息转发到GPUi+1中,并在计算任务完成后,将计算结果发送到GPUi+1中。具体的,GPUi将从GPUi-1中接收到(N-i+1)/N一维距离信息分为两部分,将1/N一维距离信息拷贝到执行缓冲区中,将剩下1-[(N-i+1)/(N-1)]一维距离信息拷贝到临时缓冲区,并将临时缓冲区中的数据通过GPU Direct P2P技术拷贝到GPUi+1中;在GPUi中构造M个后向投影算法模块,并分配到M个的CUDA核心中进行并行计算,其中M不大于成像网格数中,每个后向投影算法模块执行距离向插值、方位向时延校正和相干累加计算;并行计算完毕后,将并行计算结果进行合并,形成第i图片,拷贝到临时缓冲区;在GPUi中将第i图片拷贝到临时缓冲区中,并通过GPUDirect P2P技术拷贝到GPUi+1中。
进一步地,环形拓扑结构中第N个GPU的所述临时缓冲区,还用于存储执行区执行图像处理的执行结果,并将所述执行结果发送到第一个GPU的图像累加单元。
具体的,GPUn在计算任务完成后,将GPUn-1和自身的后向投影计算结果拷贝到临时缓冲区中,并通过GPU Direct P2P技术发送到GPU1中,GP U1接收到N-1个GPU计算结果,从临时缓冲区中取出自身计算结果,将N个GPU的计算结果进行累加,得到累加结果,完成聚焦成像。
进一步地,所述CPU,用于接收所述累加结果,对所述累加结果进行图片处理,得到成像结果。
以下结合快速成像处理系统的实际使用为例进行说明:
如图2和图3所示,毫米波数据采集前端在接收到毫米波回波数据后,将回波数据按照先频率维度,然后接收阵列维度,最后发射阵列维度的顺序,利用多路Rapid IO接口将毫米波回波数据从数据采集前端传输到一块Rapid IO数据接收模块FPGA中,在Rapid IO数据接收模块中,将接收到的回波数据通过PCIe接口和RDMA技术直接加载进GPU1中。
满足要求的Rapid IO数据接收模块可采用Xilinx设计的VC709开发板,该板卡采用一颗Xilinx Virtex-7系列FPGA作为处理器,拥有4×Rapid I O接口,总传输带宽高达40Gbps,同时拥有1个PCIe 2.0×8接口,总传输带宽高达64Gbps。
将3块Nvidia Quadro M4000显卡GPU1、GPU2、GPU3和一块Xilinx VC709开发板安装在Dell Precision T7910工作站的PCIe插槽中。在Rapi d IO数据接收模块中,将接收到的回波数据通过PCIe接口和RDMA技术直接加载进GPU1的显存中。
3块GPU间采用环形链接,每个GPU左右两个各有一个GPU,并且只从左边的GPU接收数据,再把数据发送至右边的GPU。为了避免与GP U与CPU之间的通信开销,GPU与GPU之间通过Nvida提供的GPUDirec t P2P技术直接通信。
收发天线阵列数目各800,跳频点数为256,成像区域网格划分为600*600*128,GPU1中对顺序数据在频率维度进行一维快速傅里叶运算,得到距离信息Fecho,GPU1将距离信息Fecho在发射阵列维度切割为3份。
在GPU1显存中设置执行缓冲区和临时缓冲区,将1/3一维距离信息拷贝到执行缓冲区中,将剩下2/3一维距离信息拷贝到临时缓冲区,并将临时缓冲区中的数据通过GPUDirect P2P技术拷贝到GPU2中,在GPU1中构造500个后向投影算法模块,并分配到500个的CUDA核心中进行并行计算,每个后向投影算法模块执行距离向插值、方位向时延校正和相干累加计算,当计算完成后,将500个CUDA核心的并行计算结果进行合并,形成第一图片,拷贝到临时缓冲区中。
GPU2从GPU1接收到2/3一维距离信息,只对1/3一维距离信息进行距离像插值、时延校正和相干累加,GPU2将剩余的1/3一维距离信息转发到GPU3中,在GPU2中构造500个后向投影算法模块,并分配到500个的C UDA核心中进行并行计算,每个后向投影算法模块执行距离向插值、方位向时延校正和相干累加计算,当计算完成后,将500个CUDA核心的并行计算结果进行合并,形成第二图片,拷贝到临时缓冲区中,并通过GPU Dir ect P2P技术拷贝到GPU3。
GPU3从GPU2接收到1/3的一维距离数据,构造500个后向投影算法模块,并分配到500个的CUDA核心中进行并行计算,每个BP算法模块执行距离向插值、方位向时延校正和相干累加计算,当计算完成后,将500个CUDA核心的并行计算结果进行合并,形成第三图片,并拷贝到临时缓冲区中,GPU3将临时缓冲区中的第一图片和第二图片通过GPU Direct P2P技术拷贝到GPU1中,GPU1接收第一图片和第二图片,并从临时缓冲区中取出自身计算结果第一图片,将3个GPU的计算结果进行累加,得到累加结果,完成聚焦成像,并将累加结果回传到CPU中进行后续图像处理,得到成像结果。
通过统计回波数据从采集到加载进GPU的时间,发现在1块、2块和3块GPU参与后向投影成像计算的情况下,回波数据从采集到加载进GPU的时间占总后向投影成像时间不到3‰,数据传输延迟已减小到可以忽略的程度。
通过对比在1块、2块和3块GPU参与BP成像计算的情况下的总成像时间,发现数据总成像时间和GPU个数基本呈现线性关系,对于成像网格数更大的应用场合,通过增加GPU的个数可以达到成像时间基本不变的效果。
综上所述,该系统通过多路高速收发器和PCIe总线,并利用RDMA技术将回波数据直接传输进GPU,大大节省了回波数据加载时间;GPU间采用环形拓扑结构,并利用P2P技术直接通信,从而减少了CPU与GPU间的通信回路,减少二维多输入多输出毫米波成像时间,且当成像区域网格点增大时,通过增加GPU的个数,可基本维持成像时间不变。
如果是4个GPU,其内部运行如图4所示,和3个GPU运行的流程原理一样,这里不做阐述。
本发明基于上述一种多GPU并行计算的快速成像处理系统,还介绍了一种多GPU并行计算的快速成像处理方法,快速成像处理方法步骤为:
采集回波数据,顺序处理所述回波数据,得到顺序数据;
所述顺序处理包括:对所述回波数据进行先频率维度,然后接收阵列维度,最后发射阵列维度的顺序处理;
接收所述顺序数据,加载所述顺序数据;
以环形拓扑结构连接的N个GPU,运算处理所述顺序数据,得到一维距离信息;
所述运算处理包括:接收所述顺序数据,对所述顺序数据在频率维度进行一维快速傅里叶运算,得到所述一维距离信息;
以环形拓扑结构连接的N个GPU,均分处理所述一维距离信息,得到距离信息分量;
所述均分处理包括:对所述一维距离信息进行切割处理,得到N份所述距离信息分量,N为GPU的总个数,其中,所述距离信息分量等于1/N所述一维距离信息;
以环形拓扑结构连接的N个GPU,计算处理所述一维距离信息,得到图像结果;
所述计算处理包括:
接收1/N所述一维距离信息,发送1/N所述一维距离信息;
算法处理1/N所述一维距离信息,得到图像结果;
所述算法处理包括距离向插值、方位向时延校正和相干累加;
接收(N-I+1)/N所述一维距离信息和所述图像结果,发送所述图像结果,其中I=1,2…,N;
以环形拓扑结构连接的N个GPU,累加处理所述图像结果,得到累加结果,发送所述累加结果;
CPU接收所述累加结果,对所述累加结果进行图片处理,得到成像结果。
尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。