[发明专利]一种基于Kepler架构的CUDA运行时参数透明优化方法有效
申请号: | 201410341238.0 | 申请日: | 2014-07-18 |
公开(公告)号: | CN104102513A | 公开(公告)日: | 2014-10-15 |
发明(设计)人: | 杨刚;王严;杜三盛;张策 | 申请(专利权)人: | 西北工业大学 |
主分类号: | G06F9/445 | 分类号: | G06F9/445 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 710072 陕西省*** | 国省代码: | 陕西;61 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 kepler 架构 cuda 运行 参数 透明 优化 方法 | ||
1.一种基于Kepler架构的CUDA运行时参数透明优化方法,其特征在于,包括:
CUDA运行时截获端截获CUDA应用对运行时的调用请求,并将截获到的所述调用请求封装传递给后台服务端;
所述后台服务端解封所述截获端发送过来的封装后的调用请求,获得核函数的运行时参数信息;其中,所述核函数的运行时参数信息包括线程块个数、线程块大小、共享内存大小;
所述后台服务端根据Kepler架构GPU的硬件特点将总线程数按由少到多划分为4个线程数等级,并根据所述核函数的运行时参数信息计算出核函数所需线程总数,从而确定其所属线程数等级;
所述后台服务端根据所确定的线程数等级来修改线程块的大小,然后根据修改后的线程块的大小计算获得修改后的线程块数量和修改后的共享内存大小;
所述后端服务器将修改后的核函数运行时参数与核函数执行部分发送给后台服务端的CUDA运行时层进行执行,其中,所述修改后的核函数运行时参数包括修改后的线程块的大小、修改后的线程块数量和修改后的共享内存大小。
2.根据权利要求1所述的方法,其特征在于,所述后台服务端根据Kepler架构GPU的硬件特点将总线程数按由少到多划分为4个线程数等级,包括:
假设SN代表图形处理器GPU上多核流处理器SM的数量,线程数等级按由少到多依次是:第一等级,总线程数为0-1536*SN;第二等级,总线程数为1536*SN-2048*SN;第三等级,总线程数为2048*SN-3072*SN;第四等级,总线程数大于3072*SN。
3.根据权利要求1所述的方法,其特征在于,所述后台服务端根据所确定的线程数等级来修改选择线程块的大小,然后根据修改后的线程块的大小计算获得修改后的线程块数量和修改后的共享内存大小,包括:
当所确定的线程数等级为第一等级时,修改后的线程块大小为96;当所确定的线程数等级为第二等级时,修改后的线程块大小为128;当所确定的线程数等级为第三等级时,修改后的线程块大小为192;当所确定的线程数等级为第四等级时,修改后的线程块大小为256;
利用计算获得的核函数所需线程总数除以修改后的线程块大小,用其所得结果作为修改后的线程块数量;利用核函数原线程数和原共享内存大小相乘,其乘积结果作为所需总共享内存数,再用所得总共享内存数除以修改后的线程块大小,用其所得结果作为修改后的共享内存大小。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西北工业大学,未经西北工业大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410341238.0/1.html,转载请声明来源钻瓜专利网。