[发明专利]批量同步图形处理单元编程无效
| 申请号: | 200980134286.X | 申请日: | 2009-06-26 |
| 公开(公告)号: | CN102132249A | 公开(公告)日: | 2011-07-20 |
| 发明(设计)人: | K·周;H·齐明;B·郭 | 申请(专利权)人: | 微软公司 |
| 主分类号: | G06F9/44 | 分类号: | G06F9/44;G06F9/38;G06F15/76 |
| 代理公司: | 上海专利商标事务所有限公司 31100 | 代理人: | 陈斌 |
| 地址: | 美国华*** | 国省代码: | 美国;US |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 批量 同步 图形 处理 单元 编程 | ||
背景
当代商品图形硬件用中等成本提供了强大的原料处理能力。然而,对GPU进行编程用于通用计算是相对困难的。这部分地是因为现有的通用GPU编程语言基于流处理模型,因为GPU是流处理器;这些语言包括Brook、Sh和NVIDIA公司的CUDA。
流处理是以数据为中心的模型,其中数据被组织成元素的同类流。将调用个体函数的内核并行地应用于输入流的所有元素来产生输出流。通过在多个流上启动多个内核来实现复杂计算。这种流/内核抽象显式地暴露出底层数据依赖性。
然而,虽然提供高性能,但出于多个原因,流处理模型使得通用GPU编程很困难。其一,程序可读性和维护是一个大问题,因为根据数据依赖性而非功能来将程序分区到各内核中。将新的功能添加到现有程序通常涉及重写代码的许多不相关的部分。其二,由于中间或临时流的广泛使用,复杂应用中的数据流几乎不与低层程序逻辑有关。显式数据流管理因此是乏味的且易于出错的。
编程困难的另一原因在于并行原语的抽象是困难的,这妨碍了代码重用。更具体地,许多并行原语,诸如scan和sort,需要多个内核启动。当内核调用这种原语时,需要将原语的一部分与调用器进行捆绑来减小中间流尺寸和内核启动成本。结果是完整性被破坏的原语,这使得原语的抽象变得困难。
因为以上的问题,使用如今的GPU编程语言来编写即使中等复杂的通用程序也是极度困难的。对GPU可编程性的任何改进因此是高度需要的。
概述
提供本概述以便以简化形式介绍将在以下的详细描述中进一步描述的一些代表性概念。本概述不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在以限制所要求保护的主题的范围的任何方式来使用。
简言之,此处描述的主题的各方面涉及提供和便于对用于图形处理单元(GPU)上的通用计算的编程语言的使用的技术。对批量同步GPU编程(BSGP)程序,诸如系统的一部分进行编程来包括壁垒(barrier)来描述GPU上的并行处理。
在一个方面,BSGP编译器检测对应于超级步(superstep)的壁垒,基于壁垒将BSGP程序转换成内核,并对其进行组合。在编译期间,编译器对齐语句中的壁垒,并将相应的超级步捆绑在一起以便代码重用。提供par构造来允许程序员例如通过指定独立语句块来控制捆绑的各方面。
在一个方面,提供了线程操纵仿真来用操作fork(分叉)和kill(销毁)来透明地模拟线程创建和销毁。还提供了用于线程之间的高效通信的远程变量访问内部函数和集体原语操作。
结合附图阅读以下详细描述,本发明的其他优点会变得显而易见。
附图简述
作为示例而非限制,在附图中示出了本发明,附图中相同的附图标记指示相同或相似的元素,附图中:
图1是表示编译器自动地将BSGP程序转换成流内核并为GPU执行生成管理代码的计算(编程/编译和/或运行时环境)中的示例组件的框图。
图2A是示出线程之间的壁垒操作的构造的表示。
图2B是示出线程之间的集体操作的构造的表示。
图3A是流编程模型中的源代码重用的表示。
图3B是批量同步编程模型中的源代码重用的表示。
图4是示出编译BSGP程序所采用的示例步骤的流程图。
图5A-5C是用于便于临时流优化的最小流的图形构建的表示。
图6示出了表示壁垒对齐和合并的par构造的表示。
详细描述
此处描述的技术的各方面一般涉及用于GPU上的通用计算的新的GPU编程语言,此处被称为BSGP(批量同步GPU编程)。BSGP基于批量同步并行(BSP)模型,该模型是从低层程序结构中抽象以支持超级步(superstep)的并行编程模型。BSGP程序因此包括超级步的顺序集,其中每一超级步由多个线程完全并行地执行。如此处所使用的,在每一超级步的结尾处执行壁垒同步来确保按照相对于彼此的顺序次序来执行各步骤。
如将理解的,BSGP容易阅读、编写和维护。例如,BSGP程序看上去与顺序C++代码相似,只需要某些附加的额外信息来描述GPU上的并行处理。这是因为不像流处理中的内核,超级步不是具有显式指定的输入和输出参数的个体函数,而是类似于传统顺序编程中的语句,并且是在语义上推断的而非在语法上实施的。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于微软公司,未经微软公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200980134286.X/2.html,转载请声明来源钻瓜专利网。





