[发明专利]批量同步图形处理单元编程无效
| 申请号: | 200980134286.X | 申请日: | 2009-06-26 |
| 公开(公告)号: | CN102132249A | 公开(公告)日: | 2011-07-20 |
| 发明(设计)人: | K·周;H·齐明;B·郭 | 申请(专利权)人: | 微软公司 |
| 主分类号: | G06F9/44 | 分类号: | G06F9/44;G06F9/38;G06F15/76 |
| 代理公司: | 上海专利商标事务所有限公司 31100 | 代理人: | 陈斌 |
| 地址: | 美国华*** | 国省代码: | 美国;US |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 批量 同步 图形 处理 单元 编程 | ||
1.一种在计算环境中的方法,包括:
检测批量同步程序中的壁垒(102),每一壁垒定界超级步;以及
将所述超级步编译(108)成供图形处理单元(104)执行的流代码内核(1061-106n)。
2.如权利要求1所述的方法,其特征在于,编译所述超级步包括在每一壁垒处添加保存线程上下文的代码。
3.如权利要求1所述的方法,其特征在于,所述编译还包括使用分配的临时流组合所述内核中的至少一些。
4.如权利要求3所述的方法,其特征在于,使用分配的临时流包括采用图优化方案。
5.如权利要求1所述的方法,其特征在于,还包括提供将线程的总数用作参数来执行GPU代码块的spaWn语句。
6.如权利要求1所述的方法,其特征在于,还包括提供用于将控制处理器代码插入包含超级步的require构造,所述require构造用于在启动所述包含超级步之前执行所述控制处理器代码。
7.如权利要求1所述的方法,其特征在于,还包括提供在所述批量同步程序中使用来指定独立的语句块的par构造。
8.如权利要求1所述的方法,其特征在于,还包括提供在所述批量同步程序中使用的一组原语,包括提供数据并行原语、等级调整原语、或线程操纵原语,或数据并行原语、等级调整原语或线程操纵原语的任意组合。
9.如权利要求8所述的方法,其特征在于,提供所述一组原语包括提供reduce原语,scan原语,compact原语,split原语或sort原语,或reduce、scan、compact、split或sort原语的任意组合。
10.如权利要求8所述的方法,其特征在于,提供一组原语包括提供用于拆分线程的原语、用于对线程排序的原语,或用于拆分线程的原语和用于对线程排序的原语两者。
11.如权利要求8所述的方法,其特征在于,提供一组原语包括提供用于销毁线程的原语、用于分叉线程的原语,或用于销毁线程的原语和用于分叉线程的原语两者。
12.如权利要求1所述的方法,其特征在于,编译所述超级步包括:内联对包含壁垒的函数的调用,执行优化来降低数据依赖性,将CPU代码和GPU代码分开并生成内核和内核启动代码,将对CPU变量的引用转换为内核参数,寻找在定义超级步外部使用的值并生成保存和加载这些值的代码,以及生成临时流分配。
13.一种在计算环境中的系统,包括编译器(108),所述编译器(108)基于壁垒同步来将包括语句、构造和原语的源代码处理成流内核(1061-106n),并且将所述内核组合成能被配置成供图形处理单元(104)执行的代码。
14.如权利要求13所述的系统,其特征在于,所述语句中的一个包括用于在所述源代码中定界超级步的barrier语句,并且所述构造中的一个包括用于在所述源代码中将控制处理器代码插入包含超级步中的require构造,所述编译器编译所述源代码以便在启动对应于所述包含超级步的指令之前执行对应于所述控制处理器代码的指令。
15.如权利要求13所述的系统,其特征在于,所述原语包括reduce原语,scan原语,compact原语,split原语或sort原语,用于拆分线程的原语,用于对线程排序的原语,用于销毁线程的原语或用于分叉线程的原语,或reduce原语、scan原语、compact原语、split原语或sort原语、用于拆分线程的原语、用于对线程排序的原语、用于销毁线程的原语或用于分叉线程的原语的任意组合。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于微软公司,未经微软公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200980134286.X/1.html,转载请声明来源钻瓜专利网。





