CUDA 性能优化学习笔记 主要是关于 warp 层面

1.warp divergence

当一个 warp 中的线程遇到条件分支走不同的分支时,因为硬件一次只能发生相同的指令,所以必须串行执行。

2.处理 warp divergence

分支条件按照 warp 对齐;用算术运算代替条件指令;循环统一退出条件;数据重排

3.为什么需要 warp shuffle

避免消耗昂贵的共享内存,避免 syncthread 同步

4.寄存器交换

__shfl_sync 参数分别是参与线程、提供的值,获取线程的编号

总结 除了 warp divergence 还有 bank conflict 性能问题,一个是硬件层面指令发射,一个是共享内存层面的问题,有不同的解决方法,然后寄存器通信可以避免共享内存使用,有很多好处,寄存器更快。

bank conflict 也会把并行变串行因为不能同时访问一个 bank 的不同地址,warp divergence 是因为不能在硬件对同一个线程束线程发布不同指令。

相关推荐
聪明的笨猪猪13 小时前
实际工程问题:AI 生成 Spring Cache(@Cacheable / @CachePut / @CacheEvict)缓存注解踩坑
java·经验分享·面试·ai编程
Hone13 小时前
juejin-skills 系列 ②:我把「看掘金热榜」也做成了 Agent 技能
开源·node.js·ai编程
小虎AI生活15 小时前
Anatomy 接入 WorkBuddy 实操:一句话生成 12 零件可交互科普模型(附2组提示词)
aigc·ai编程
OpsEye15 小时前
别再挨个充会员了:多模型编码,最麻烦的从来不是选模型
javascript·ai编程
程序员老刘16 小时前
GUI的时代过去了
ai编程
用户37215742613516 小时前
C# 实现 Excel 单元格保护:锁定公式并允许编辑指定区域
c#·ai编程·编程语言
浪遏18 小时前
06|AI 失败不扣次,这句话要靠什么兑现
ai编程
浪遏18 小时前
01|把简历操作交给 AI:流萤简历的 CLI 自动化实践
ai编程
ZzT19 小时前
AI 是放大器:基础越扎实,放大效果越明显
人工智能·ai编程
疯华整猫20 小时前
把二十七个 init 从首帧前面搬走:用 Trae 把启动优化钉进 CI
android·性能优化·ai编程