找回密码
 立即注册
楼主: rustum

深入浅出GPU优化系列:reduce优化

[复制链接]
发表于 2022-6-29 09:19 | 显示全部楼层
用的gpu不一样,最后那张图用的是好多年前的卡,我用的是v100,所以带宽本身就不一样了哈
发表于 2022-6-29 09:27 | 显示全部楼层
噢噢原来如此[捂脸]
发表于 2022-6-29 09:35 | 显示全部楼层
哈喽楼主,想请假一下这里完全unroll looping的目的是什么呢,我个人的理解是当前cuda所有架构好像没有乱序执行,那么完全展开好像不能指令重排,增加指令的并行性?
发表于 2022-6-29 09:38 | 显示全部楼层
CUDA中的unroll looping主要是减少for循环中的判断和i++操作。如果用模板参数将循环次数传进去的话,生成的cubin汇编会将loop完全展开,判断和i++所需要的指令就没了,通过这种方式加快计算。
发表于 2022-6-29 09:42 | 显示全部楼层
谢谢楼主解答
发表于 2022-6-29 09:49 | 显示全部楼层
另外,完全展开后是有指令重排的。
发表于 2022-6-29 09:50 | 显示全部楼层
第五步第一行那个template <unsigned int blockSize>是啥意思啊, 我怎么设置这个blockSize
发表于 2022-6-29 09:58 | 显示全部楼层
这个就是用模板把参数传进去,这样的话,编译器可以在编译时做尽可能的优化。用法可以看我的代码哈,已经在github上了哈。
发表于 2022-6-29 10:08 | 显示全部楼层
那是什么对它做指令重排呢?
发表于 2022-6-29 10:14 | 显示全部楼层
编译器做的,
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-9-22 06:57 , Processed in 0.066160 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表