[发明专利]GPU发散栅栏有效
申请号: | 201480052983.1 | 申请日: | 2014-09-10 |
公开(公告)号: | CN105579967B | 公开(公告)日: | 2019-09-03 |
发明(设计)人: | 梅春惠;阿列克谢·弗拉狄米罗维奇·布尔德;陈林 | 申请(专利权)人: | 高通股份有限公司 |
主分类号: | G06F9/52 | 分类号: | G06F9/52 |
代理公司: | 北京律盟知识产权代理有限责任公司 11287 | 代理人: | 宋献涛 |
地址: | 美国加利*** | 国省代码: | 美国;US |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | gpu 发散 栅栏 | ||
一种装置包含存储器和至少一个可编程处理器,所述至少一个可编程处理器经配置以为多个线程束中的每一线程束确定对于每一线程束的对应线程布尔表达式是否为真;暂停执行对于其所述表达式为真的具有对应线程的每一线程束;确定对于其所述表达式为真的所述多个线程束中的每一者的活动线程的数目;基于所述多个线程束中的每一者的活动线程的所述数目将对于其所述表达式为真的所述多个线程束排序;将所述多个线程束的第一线程束的活动线程的线程数据与所述多个线程束的第二线程束的非活动线程的线程数据调换;以及恢复执行对于其所述表达式为真的所述多个线程束中的所述至少一者。
技术领域
本发明涉及图形处理,且更确切地说,涉及用于管理执行图形处理单元(GPU)上的线程的技术。
背景技术
最近,已存在一种朝向所谓的通用GPU(GPGPU)的转变。不同于执行图形渲染的传统GPU,GPGPU可经配置以执行通常被称作“核心”的通用任务或程序。一些类型的任务可更好地适合于特定类型的处理器,例如中央处理单元(CPU)或GPU。CPU可更好地适合于具有更多分支、跳转和条件性逻辑的任务,而GPU可适合于高度平行任务及/或具有多个浮点计算的任务。由于多个GPU具有SIMD硬件架构,因此GPU还可包含执行SIMD(单指令多数据)指令的能力。当GPU执行SIMD指令时,GPU可对多个数据值执行由指令指示的同一操作。通常,GPU具有多个执行单元,所述多个执行单元能够并行执行由SIMD指令指示的操作。
发明内容
本发明的技术提供用于降低执行于图形处理单元(GPU)上的线程当中的发散的技术。GPU可包括支持被称作“发散栅栏”指令的指令。发散栅栏指令尝试将来自多个线程束的发散线程分组到新线程束中,使得线程执行同一指令,进而改善GPU性能。
在一个实例中,本发明描述一种方法,所述方法包括:为多个线程束中的每一线程束确定对于每一线程束的对应线程布尔表达式是否为真;暂停执行具有对于其表达式为真的对应线程的每一线程束;确定对于其表达式为真的多个线程束中的每一者的活动线程的数目;基于多个线程束中的每一者的活动线程的数目将对于其表达式为真的多个线程束排序;将多个线程束的第一线程束的活动线程的线程数据与多个线程束的第二线程束的非活动线程的线程数据调换;以及恢复执行对于其表达式为真的多个线程束中的至少一者。
在另一实例中,本发明描述一种包含存储器和至少一个可编程处理器的装置,所述至少一个可编程处理器经配置以:为多个线程束中的每一线程束确定对于每一线程束的对应线程布尔表达式是否为真;暂停执行具有对于其表达式为真的对应线程的每一线程束;确定对于其表达式为真的多个线程束中的每一者的活动线程的数目;基于多个线程束中的每一者中的活动线程的数目将对于其表达式为真的多个线程束排序;将多个线程束的第一线程束的活动线程的线程数据与多个线程束的第二线程束的非活动线程的线程数据调换;以及恢复执行对于其表达式为真的多个线程束中的至少一者。
在另一实例中,本发明描述一种设备,所述设备包含:用于为多个线程束中的每一线程束确定对于每一线程束的对应线程布尔表达式是否为真的装置;用于暂停执行具有对于其表达式为真的对应线程的每一线程束的装置;用于确定对于其表达式为真的多个线程束中的每一者的活动线程的数目的装置;用于基于多个线程束中的每一者中的活动线程的数目将对于其表达式为真的多个线程束排序的装置;用于将多个线程束的第一线程束的活动线程的线程数据与多个线程束的第二线程束的非活动线程的线程数据调换的装置;用于恢复执行对于其表达式为真的多个线程束中的至少一者的装置。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于高通股份有限公司,未经高通股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201480052983.1/2.html,转载请声明来源钻瓜专利网。