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 是因为不能在硬件对同一个线程束线程发布不同指令。

相关推荐
熊猫钓鱼2 小时前
TRAE开发工具化自检,我用它吐槽两句轻松解决办公电脑内存崩溃问题
ai编程·trae
Behavior2 小时前
影响约 70% 网站:OpenAI 牵头协调全球发现/修复 PHP 高危漏洞
php·openai·ai编程
codigger2 小时前
AI学会写代码之后,程序员节为什么更重要了
ai·程序员·ai编程·#人工智能
挖掘狂人2 小时前
1024程序员节:AI时代,为什么我们依然需要程序员
人工智能·程序员·ai编程
狗凯之家源码网3 小时前
AI 一键生成带卡密续费功能的网站实战指南
ai编程
围炉聊科技3 小时前
Codex Hooks使用实践
ai编程·开发工具·实战教程
LEE4 小时前
为什么你的 Claude Code 还在转圈等,别人的已经干完三件事了?
前端·后端·ai编程
Layer4 小时前
一些脱离 Mac 依赖的 Agent 操作 iPhone 实现
ios·ai编程·测试
黑黑的脸蛋5 小时前
同时用 Claude Code 和 Codex,我做了个 Agent 资产库:能预览、能投递、能追更新
ai编程·claude·mcp