[发明专利]一种基于GPU片上的数据处理方法及设备有效
申请号: | 201710206474.5 | 申请日: | 2017-03-31 |
公开(公告)号: | CN106991007B | 公开(公告)日: | 2019-09-03 |
发明(设计)人: | 计晓斐;李建波;刘亮 | 申请(专利权)人: | 青岛大学 |
主分类号: | G06F9/48 | 分类号: | G06F9/48 |
代理公司: | 青岛清泰联信知识产权代理有限公司 37256 | 代理人: | 高洋 |
地址: | 266071 *** | 国省代码: | 山东;37 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 gpu 数据处理 方法 | ||
1.一种基于GPU片上的数据处理方法,其特征在于:包括以下步骤:
分析GPU程序代码,统计当前GPU片上共享存储空间的所有数组变量;
将统计得到的所有数组变量按访问次数排序;
选择访问次数最高的数组变量从共享存储空间迁移到寄存器或L1缓存:若数组变量的长度为常量,且为单线程访问,则迁移至寄存器;否则迁移至L1缓存中;
若迁移后的系统性能优于迁移前的性能,则从共享存储空间中迁移出更多的数组变量,否则终止。
2.如权利要求1所述的基于GPU片上的数据处理方法,其特征在于:所述统计当前GPU片上共享存储空间的所有数组变量,包括采用变量统计流程(CollectArray)统计当前GPU程序中存储在片上共享存储空间的所有数组变量。
3.如权利要求2所述的基于GPU片上的数据处理方法,其特征在于:所述变量统计流程(CollectArray)包括:
分析编程序代码;
找出其中所有存储在片上共享存储空间内的数组变量,记为SMArray。
4.如权利要求3所述的基于GPU片上的数据处理方法,其特征在于:所述统计当前GPU片上共享存储空间的所有数组变量,包括采用参数统计流程(CollectInfo)统计每个共享存储数组变量的相关参数。
5.如权利要求4所述的基于GPU片上的数据处理方法,其特征在于:所述参数统计流程(CollectInfo)包括:
统计SMArray中每个共享存储数组变量的参数信息,包括访问次数、是否被多线程访问以及下标是否为常数三个参数;
对于SMArray中某个数组变量arrayi而言,其访问次数记为arrayi.count,依次遍历GPU程序,若数组变量arrayi的该次访问在条件语句中,则假设本次访问有一半的概率可被执行,即arrayi.count+=0.5;若本次访问在循环体内且循环次数为常数,则访问次数arrayi.count+=loops,若循环体次数为变量则arrayi.count+=loops_app,其中loops表示常量的循环次数,loops_app表示近似的非常量的循环次数;loops_app是经验值;
对于SMArray中某个数组变量arrayi而言,该参数记为arrayi.threads,如果数组变量arrayi在某次访问中被多个线程访问则arrayi.threads=true,否则arrayi.threads=false;
对于SMArray中某个数组变量arrayi而言,该参数记为arrayi.constant,如果数组变量arrayi的长度为常量则arrayi.constant=true,否则arrayi.constant=false。
6.如权利要求5所述的基于GPU片上的数据处理方法,其特征在于:所述将统计得到的所有数组变量按访问次数排序,包括采用变量排序流程(SortArray)将所有共享存储数组变量按其访问次序从高到低排序,具体为:
调用程序开发平台集成的快速排序函数;
将SMArray中的数组变量按照每个数组变量的访问次数从高到低排序。
7.如权利要求6所述的基于GPU片上的数据处理方法,其特征在于:所述选择访问次数最高的数组变量从共享存储空间迁移到寄存器或L1缓存,包括采用变量迁移流程(PromoteArray)将部分共享存储数组变量从共享存储空间迁移到其他片上存储空间。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于青岛大学,未经青岛大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710206474.5/1.html,转载请声明来源钻瓜专利网。