[发明专利]一种基于消除OpenCL运行时开销提高GPU程序性能的方法在审
申请号: | 202210465374.5 | 申请日: | 2022-04-29 |
公开(公告)号: | CN114968253A | 公开(公告)日: | 2022-08-30 |
发明(设计)人: | 谢昌刚;魏大洲;李威;曲国远;李堃;童歆 | 申请(专利权)人: | 中国航空无线电电子研究所 |
主分类号: | G06F8/41 | 分类号: | G06F8/41 |
代理公司: | 中国航空专利中心 11008 | 代理人: | 卫媛媛 |
地址: | 200233 *** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 消除 opencl 运行 开销 提高 gpu 程序 性能 方法 | ||
1.一种基于消除OpenCL运行时开销提高GPU程序性能的方法,其特征在于,所述方法包括:
步骤1:构建OpenCL Kernel(内核)编译后代码的高效缓存机制,所述高效缓存机制包括缓存方式和缓存数据结构;
步骤2:根据所述高效缓存机制,确定快速查找策略、更新策略及新节点插入方法;
步骤3:根据所述快速查找策略、更新策略及新节点插入方法,确定启发式搜索队列的定义、启发式搜索队列的创建及启发式搜索队列的使用;
步骤4:根据所述启发式搜索队列,确定运行时对缓存的使用策略,包含查找启发式搜索队列和查找缓存队列,自动判断待调用的OpenCL Kernel是否需要编译,如果不需要,则返回已经编译好的OpenCL Kernel;否则调用OpenCL Kernel编译接口,对该OpenCL Kernel进行编译,最终实现有效消除OpenCL运行时开销。
2.根据权利要求1所述的方法,其特征在于,所述确定缓存方式包括:
OpenCL Kernel采用key-value的方式进行缓存,其中,key为kernel name(内核名称)+编译参数,作为OpenCL Kernel的唯一确认符;value为编译好的OpenCL Kernel。
3.根据权利要求1所述的方法,其特征在于,所述确定缓存数据结构包括:
采用链表队列作为存储OpenCL Kernel的高速缓存方式。
4.根据权利要求1所述的方法,其特征在于,所述快速查找策略包括:
直接通过Key值进行比较,如果比对成功,直接返回编译好的OpenCL Kernel,同时根据预先定义的更新策略更新整个队列;如果比对不成功,则返回NULL。
5.根据权利要求4所述的方法,其特征在于,更新策略包括:
如果比对成功的节点为链表的前5个节点,则队列保持不变;
如果比对成功的节点不是链表的前5个节点,则将所述比对成功的节点插入到链表的首部。
6.根据权利要求5所述的方法,其特征在于,新节点插入方法包括:
新节点插入到队列的第5位置。
7.根据权利要求1所述的方法,其特征在于,所述启发式搜索队列的定义包括:
启发式搜索队列只包含kernel缓存队列中常用的kernel序列,采用key-value的链表表示,启发式搜索队列包含了应用中OpenCL Kernel的调用顺序,具有重复的kernel缓存节点,启发式搜索队列具有最大长度N。
8.根据权利要求1所述的方法,其特征在于,所述启发式搜索队列的创建包括:
OpenCL程序每次调用kernel时,将对应的kernel节点插入到启发式搜索队列中,当启发式队列的长度等于2*N后,采用KMP(Knuth-Morris-Pratt,字符串查找)算法获得最小重复队列,所述最小重复队列就是启发式搜索队列。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国航空无线电电子研究所,未经中国航空无线电电子研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202210465374.5/1.html,转载请声明来源钻瓜专利网。