关于gpu里simt stack

假设当前warp一共四个线程,那么mask为1111,1表示执行该线程

分支之前,我们执行cbj,把activemask存起来,就是分支之前是1111,waitmask是0000

程序即将分支,分支就是跳转指令。

分支情况为A:1110,B:0001。

条件跳转分两种pc,一种是跳到pc+imm,一种是pc+4,就是接着执行后续代码.设A分支的pc是pc+imm

假设我们先执行少的,那么就需要把A的mask和pc,即pc+imm和1110存进栈里。

接着把当前总mask设置为0001,pc为pc+4,

然后我们走完B分支,

执行cbs

找到之前存的mask,waitmask&mask=0001,并不等于我们重聚需要的1111,所以从stack里弹出,设置pc为pc+imm和mask,接着走a分支,

走完又遇到cbs,这时候把a分支的maks与上,发现和waitmask一致,都是1111,线程同步,然后继续下去。

一般分支结构如下

  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值