基于gpu众核平台的脉冲压缩参考矩阵并行生成方法

文档序号:6575084阅读:453来源:国知局
专利名称:基于gpu众核平台的脉冲压缩参考矩阵并行生成方法
技术领域
本发明涉及一种基于GPU众核平台的脉冲压缩参考矩阵的并行生成方法以及在 工程实践中的应用。
背景技术
合成孔径雷达是一种二维微波遥感成像雷达,这种雷达具有远距离全天候高分辨 率成像、自动识别目标和先进的数字处理能力等特点,而其中的高分辨率一方面是方位向 的合成孔径技术的结果,另一方面是距离向的脉冲压缩的结果,可见脉冲压缩技术的成熟 程度和精确程度在很大程度上影响着SAR最终成像的质量。在脉冲压缩技术中,脉冲压缩 参考矩阵的生成是重要的一步而且往往占用SAR成像算法的很大一部分的时间,因此,对 参考矩阵的生成的优化就很有价值。目前,参考矩阵的生成均是采用二重循环的办法,在 CPU上串行生成,但是CPU的集成度比较低,算法并行度较差,运行效率比较低,而GPGPU是 一种处理密集型数据和并行数据的可以内含成百上千个处理核心的处理器,因此更适合于 大规模并行计算。但是,目前并没有在数百个处理核心上同时并行处理完成脉冲压缩参考 矩阵的生成。

发明内容
本专利要解决的问题就是提供一种基于众核平台的脉冲压缩参考矩阵的并行生 成方法,能够在包含成百上千个处理核心的GPGPU上并行、高效的实现脉冲压缩参考矩阵 的生成并在各种工程实践中加以应用,从而提高了运算效率和运算的精度。该基于众核平台的脉冲压缩参考矩阵的并行生成方法包括以下步骤第一步计算存储空间的大小设参考矩阵是M行N列,根据参考矩阵的大小和矩 阵元素的数据类型计算存储空间的大小,标识为A ;第二步分别在内存和GPU的全局存储器分配大小为A的一维数组分别标识为 B、C ;第三步数据分割GPU的组织包括线程网格层、线程块层、线程层,即一个网格包 含两个以上线程块,是一维组织或二维组织以及三维组织,每个线程块包含两个以上运行 线程,组织成一维到三维之间,每个块有一个被该线程块内所有线程可见的共享存储器;线 程块层设置为二维的而且每维的大小一致;线程网格层设置成二维的,大小由原矩阵的大 小M、N决定;第四步查阅硬件允许的每个线程块内共享存储器的上限W,计算每个线程块内 所需要的临时自变量所占的总的存储空间Q,要求Q < W,否者,多余的临时自变量分配在 GPU全局存储器;计算频繁,使用频率高的临时自变量优先分配在共享存储器,然后在每个 线程块的共享存储器或GPU全局存储器上分配临时自变量;第五步输入数据索引以线程块为单位运算,根据要求得到的矩阵模型和GPU通 用编程的内置变量计算出行方向对原始矩阵的索引以及列方向的索引;
第六步根据索引和参考函数的物理关系,生成临时自变量;第七步根据第六步的临时自变量生成对应于每个线程的每个参考矩阵元素相 位,然后计算实部与虚部,结果保存在对应元素的存储空间C ;第八步同步所有的线程,所有的线程均运算完毕,将一维数组C拷贝到CPU内存 B ;第九步将B每N个数切割一次成为一行并按序组合成一个M行N列的二维数组, 此即为时域的脉冲压缩参考矩阵。通过以上步骤就实现了基于GPU众核平台的脉冲压缩参考矩阵的并行生成。本发明的有益效果1、通过并行编程,实现了在GPU上的脉冲压缩参考矩阵的并行实现,提高了程序 的并行度,使得运行效率很大的提高,运算时间大大减少;2、在实现过程中,我把需要用到的临时自变量都在每个块block的shared memory中生成,这样运算时自变量直接在共享存储器中找而不必到显存去取数据,这种充 分利用内部共享存储器的结构大大提高了程序的运行效率;3、先通过GPU的同步机制,保证所有元素均成功生成之后再将结果回写到CPU内 存,这种海量计算结合单次通信的策略大大隐藏了通信消耗。


图1为本发明的流程图。
具体实施例方式以在SAR系统中4096X4096点目标成像的方位向脉冲压缩参考矩阵的生成为例, GPU平台是NVIDIA的GPU,型号quadro fx 5600,本专利的实现主要包括以下流程1.先将要用到的字符串常量写成头文件,标识为RefMatrixConst. h,并将该文件 包含在主程序中;2.计算存储空间的大小在本系统应用中,矩阵元素的数据类型为浮点数,那么 GPU生成的一维数组所占存储空间为mem_size = sizeof (float)*4096*4096 = 67108864b ytes ;3.分别在CPU内存和GPU全局存储器分配mem_size大小的一维数组CPU实部 RefMatrix_Re_h [16777216],CPU 虚部 RefMatrix_Im_h [16777216],GPU 实部 RefMatrix_ Re_d[16777216],GPU 虚部 RefMatrix_Im_d[I67772I6];4.数据分割先考虑线程块层,quadro_fx_5600允许的线程块内含的线程不可 以超过512,为了方便处理,我们设置为二维的而且每维的大小一致即每个线程块包含 16X 16个线程;考虑网格层,为方便处理,我们也设置成二维的,但是大小由原矩阵的大小 决定沿行的方向 gridx = 4096/16 = 256,沿列的方向 gridy = 4096/16 = 256 ;5. Quadro_FX_5600允许的每个线程块内共享存储器的上限为16384bytes,而每 个线程块内所需要的临时自变量包括_shared_double Rr_D[16];_shared_double ChirpSlope_Azimuth_D[16];
shared_double_AzimuthTime_D[16];_shared_double AzimuthReArg_D[16][16];以上自变量依次是距离向距离数组、方位向调频率、方位向时间、方位向 参考相位矩阵,那么所占存储空间为sizeof(double)*(16*3+16*16) = 2432bytes < 16384bytes,因此所有临时自变量均分配在共享存储器;6.输入数据索引以线程块为单位运算,首先根据要生成的矩阵的模型和GPU通 用编程的内置变量blockldx. x和threadldx. x计算出行方向的索引xlndex = blockldx. x*16+threadldx. x,同理计算出列方向的索引ylndex = blockldx. y*16+threadldx. y ;7.先生成临时自变量距离向距离数组、方位向调频率、方位向时间;8.由以上准备好的临时自变量生成对应于每个线程的每个参考矩阵元素相位,然 后将该相位的余弦和正弦分别对应输出到全局存储器上的一维的实部数组和虚部数组;9.采用GPU内部函数_巧此让仪3(18()来进行同步,然后将GPU运算得到的实部和 虚部拷贝到 CPU 内存 RefMatrix_Re_h 和 RefMatrix_Im_h ;10.将 RefMatrix_Re_h 和 RefMatrix_Im_h 每 4096 个数切割一次成为一行并按序 组合成一个4096行4096列的二维数组,此即为时域的脉冲压缩参考矩阵。通过以上十步就实现了在GPU上对SAR成像系统中脉冲压缩方位向参考矩阵的 并行生成。在本方法中,为充分利用GPU的数百的处理核心,对数据进行了三个层次的分 割,同时采用了单词通信海量运算的模式来最大程度的提高运行效率,还有就是充分利用 了 GPU的高效内部存储器共享存储器,从而进一步减少了运行时间,总之,通过以上三个 策略,最终完成了对参考矩阵的高效、并行生成。
权利要求
基于众核平台的脉冲压缩参考矩阵的并行生成方法,其特征在于包括以下步骤第一步计算存储空间的大小设参考矩阵是M行N列,根据参考矩阵的大小和矩阵元素的数据类型计算存储空间的大小,标识为A;第二步分别在内存和GPU的全局存储器分配大小为A的一维数组分别标识为B、C;第三步数据分割GPU的组织包括线程网格层、线程块层、线程层,即一个网格包含两个以上线程块,是一维组织或二维组织以及三维组织,每个线程块包含两个以上运行线程,组织成一维到三维之间,每个块有一个被该线程块内所有线程可见的共享存储器;线程块层设置为二维的而且每维的大小一致;线程网格层设置成二维的,大小由原矩阵的大小M、N决定;第四步查阅硬件允许的每个线程块内共享存储器的上限W,计算每个线程块内所需要的临时自变量所占的总的存储空间Q,要求Q<W,否者,多余的临时自变量分配在GPU全局存储器;计算频繁,使用频率高的临时自变量优先分配在共享存储器,然后在每个线程块的共享存储器或GPU全局存储器上分配临时自变量;第五步输入数据索引以线程块为单位运算,根据要求得到的矩阵模型和GPU通用编程的内置变量计算出行方向对原始矩阵的索引以及列方向的索引;第六步根据索引和参考函数的物理关系,生成临时自变量;第七步根据第六步的临时自变量生成对应于每个线程的每个参考矩阵元素相位,然后计算实部与虚部,结果保存在对应元素的存储空间C;第八步同步所有的线程,所有的线程均运算完毕,将一维数组C拷贝到CPU内存B;第九步将B每N个数切割一次成为一行并按序组合成一个M行N列的二维数组,此即为时域的脉冲压缩参考矩阵。通过以上步骤就实现了基于GPU众核平台的脉冲压缩参考矩阵的并行生成。
2.根据权利要求1所述的一种基于众核平台的脉冲压缩参考矩阵的并行生成方法,其 特征在于线程块层设置为二维或二维以上,而且每维的大小一致。
3.根据权利要求1所述的一种基于众核平台的脉冲压缩参考矩阵的并行生成方法,其 特征在于线程网格层设置成二维或二维以上,大小由原矩阵的大小M、N决定。
全文摘要
本发明公开了一种基于众核平台的脉冲压缩参考矩阵的并行生成方法,该方法通过并行编程,实现了在GPU上的脉冲压缩参考矩阵的并行,将用到的临时自变量都在每个线程块的共享存储器中生成,运算时自变量直接在共享存储器中找而不必到全局存储器去取数据,充分利用内部共享存储器的结构,通过GPU的同步机制,保证所有元素均成功生成之后再将结果回写到CPU内存;本发明所采用的海量计算结合单次通信的策略大大隐藏了通信消耗,提高了程序的并行度,使得运行效率很大的提高,运算时间大大减少。
文档编号G06T1/60GK101937555SQ20091008837
公开日2011年1月5日 申请日期2009年7月2日 优先权日2009年7月2日
发明者刘峰, 姚迪, 靳星星, 龙腾 申请人:北京理工大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1