[发明专利]一种软件化雷达跨平台通用并行计算库的构建方法在审
申请号: | 201910202113.2 | 申请日: | 2019-03-15 |
公开(公告)号: | CN109947416A | 公开(公告)日: | 2019-06-28 |
发明(设计)人: | 王章静;吴兆亮;刘帅;杨伦龙;余月琴;左家兴;余壮 | 申请(专利权)人: | 电子科技大学 |
主分类号: | G06F8/30 | 分类号: | G06F8/30;G06F8/71 |
代理公司: | 成都智言知识产权代理有限公司 51282 | 代理人: | 徐金琼 |
地址: | 610000 四川省成*** | 国省代码: | 四川;51 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 并行库 粗细粒度 跨平台 构建 雷达信号处理 软件化 头文件 并行计算 实现文件 文档 雷达信号处理领域 雷达 并行实现 处理效率 计算平台 雷达领域 同一接口 粗粒度 函数库 细粒度 通用 算法 映射 并行 主旨 统一 | ||
1.一种软件化雷达跨平台通用并行计算库的构建方法,其特征在于:包括以下步骤:
步骤1、利用宏定义实现对同一接口向不同计算平台的映射;
步骤2、建立粗细粒度并行库,对粗细粒度算法的划分,得到细粒度并行库和粗粒度并行库;
步骤3、为步骤2中所述的粗细粒度并行库的实现文件建立相应的头文件;
步骤4、为步骤3中所述的包含所有粗细粒度的用于软件化雷达领域的跨平台并行库构建统一的头文件;
步骤5、根据步骤4中的头文件和步骤3中并行库实现文件中的注释段构建一份说明文档,用户可利用该文档快速查阅所有并行库的具体信息。
2.根据权利要求1所述的一种软件化雷达跨平台通用并行计算库的构建方法,其特征在于:所述步骤1包括:
步骤1.1同构平台采用OpenMP多核共享变量编程模型实现;
步骤1.2异构平台采用OpenCL异构编程框架实现;
步骤1.3多节点平台采用MPI分布式内存编程模型实现。
3.根据权利要求1所述的一种软件化雷达跨平台通用并行计算库的构建方法,其特征在于:所述步骤2中:
所述的细粒度并行库包括:矢量运算函数库、矩阵运算并行库、FFT并行库;
所述的粗粒度并行库包括:脉冲压缩并行库、宽带匹配滤波、脉冲多普勒处理并行库、恒虚警率检测并行库。
4.根据权利要求1所述的一种软件化雷达跨平台通用并行计算库的构建方法,其特征在于:所述步骤2包括以下步骤:
步骤2.1、建立一个函数的具体实现文件,利用宏定义实现跨不同的同构或异构平台的实现;
步骤2.2、实现文件除了包括平台的映射实现外,还包括注释段和功能段。
5.根据权利要求4所述的一种软件化雷达跨平台通用并行计算库的构建方法,其特征在于:所述步骤2.2包括以下步骤:
步骤2.2.1、注释段包括:并行函数库的名称、并行函数库的功能描述、并行函数库的输入输出接口描述、并行函数库的输入输出接口的数据格式、并行函数库的作者信息、并行函数库的创建时间、创建版本;
步骤2.2.2、功能段包括:初始化平台设备、为实现该函数功能所必须包含的其他库文件、以及每个平台上的并行化实现的具体代码。
6.根据权利要求1所述的一种软件化雷达跨平台通用并行计算库的构建方法,其特征在于:所述步骤3中,该头文件应该包括:并行函数库名称的声明、并行函数库统一的调用接口、以及并行函数库接口的参数信息。
7.根据权利要求3所述的一种软件化雷达跨平台通用并行计算库的构建方法,其特征在于:所述FFT并行库,包括以下步骤:
步骤7.1、编写FFT并行库的头文件,定义函数的接口、参数;
步骤7.2、通过宏定义实现FFT跨平台的映射
步骤7.3、该FFT并行函数库在不同平台的实现;
步骤7.4、验证第三步中所实现的FFT并行库。
8.根据权利要求7所述的一种软件化雷达跨平台通用并行计算库的构建方法,其特征在于,所述步骤7.3包括以下步骤:
步骤7.3.1、在异构平台上实现FFT并行采用OpenCL异构编程框架来实现,将FFT核心计算放在kernel上执行,执行完后将FFT的结果拷回host端;
步骤7.3.2、多节点平台实现FFT并行采用MPI分布式编程框架来实现,将FFT任务分割成多个部分,并将这多任务分别在不同的节点上同时计算执行来达到并行化的目的。
9.根据权利要求7所述的一种软件化雷达跨平台通用并行计算库的构建方法,其特征在于,所述步骤7.4中,利用matlab工具箱中FFT函数接口对并行计算后的结果进行验证。
10.根据权利要求2所述的一种软件化雷达跨平台通用并行计算库的构建方法,其特征在于,
步骤1.1同构平台采用OpenMP多核共享变量编程模型实现;
步骤1.1.1:利用编译指导语句omp parallel for为并行计算设定各种参数,包括:用于计算的核心数、资源调度方式、私有/公有变量划分;
步骤1.1.2:
对步骤1.1.1中的核心数的计算可调用omp_get_thread_nums来获取,调用set_omp_num_threads来设定用于并行计算的核心数;
对步骤1.1.1中资源调度方式可调用schedule来设定;
对步骤1.1.1中私有/公有变量的划分可调用private和shared来实现;
步骤1.1.3:在步骤1.1.2的基础上,即可实现将该部分计算采用多核并行;步骤1.2异构平台采用OpenCL异构编程框架实现;
步骤1.2.1:调用clGetPlatformIDs,获取并选择可用计算平台;
步骤1.2.2:调用clGetDeviceIDs,获取并选择可用的计算设备;
步骤1.2.3:调用clCreateContext,为已选择的GPU/FPGA设备创建上下文环境,上下文包括:已选择的设备、内核、程序对象和内存对象;
步骤1.2.4:调用clCreateCommandQueue创建命令队列,用于主机和设备之间进行命令交互;
步骤1.2.5:调用clCreateProgramWithSource为步骤1.2.3中的上下文创建程序对象;
步骤1.2.6:调用clBuildProgram编译内核程序,调用clCreateBuffer为步骤1.2.3中的上下文创建内存对象;
步骤1.2.7:调用clSetKernelArg设置内核参数,调用clEnqueueNDRangeKernel执行内核程序;
步骤1.2.8:调用clEnqueueReadBuffer将步骤1.2.7计算结果传回主机;
步骤1.2.9:释放步骤1.2.1至步骤1.2.8分配的所有资源;
步骤1.3多节点平台采用MPI分布式内存编程模型实现;
步骤1.3.1:对处于同一局域网中的PC机安装MPICH2以此来构建MPI编程环境,从而进行多节点并行程序的开发;
步骤1.3.2:在步骤1.3.1所建立的环境中通过调用MPI_Comm_size和MPI_Comm_rank函数,获取当前任务由多少个进程进行并行计算以及每个进程的进程号;
步骤1.3.3:在步骤1.3.2确定的进程数以及进程号的基础上,将要处理的任务平均分发给每个进程,并且每个进程接收自己将要处理的任务,可以通过调用MPI_Send和MPI_Recv函数来实现;
步骤1.3.4:经过以上的步骤,通过编译生成可执行文件,并将此文件放入到每台PC机上,在主节点上运行此文件,即可实现多节点并行编程。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于电子科技大学,未经电子科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910202113.2/1.html,转载请声明来源钻瓜专利网。