已关闭
[Requirement|需求建议]: 【AscendC样例】SIMT分支发散特性样例 #1044
shaonaite创建于  6月25日关闭于  6月29日
shaonaite
shaonaite成员
6月25日 创建

Thanks for sending an requirement! Please fill in the following template to help quickly solve your problem.

Backgroud(背景信息)

通过稀疏矩阵向量乘(SpMV)算子,介绍Ascend C SIMT编程方式Warp Divergence对性能的影响及优化思路。

Origin(信息来源)

无

Benefit / Necessity (价值/作用)

指导用户了解warp divergence特性及优化思路

Design(设计方案)

使用CSR格式存储稀疏矩阵,样例分为2个case,通过对比2个case的性能介绍warp divergence及优化。
case1:一个线程处理一行数据,由于不同行的非零元素数量不同,同一Warp内线程的循环次数不一致,产生严重的Warp Divergence。
实现方式:每个线程根据全局ID确定处理的行号,独立遍历该行的所有非零元素并累加乘积。同一Warp内32个线程处理32行,各行非零元素个数不同,循环次数从1到64不等。
case2:一个Warp协作处理一行数据,减小Warp Divergence。
实现方式:一个Warp的32个线程协作处理同一行数据,各线程以warpSize为步长访问该行的非零元素,循环次数基本相同。使用asc_reduce_add()对Warp内各线程的部分和进行规约,由线程0写出最终结果。

likedislike
shaonaiteshaonaite成员
6月25日 添加了label:requirement
shaonaiteshaonaite成员
6月25日 关联了pull request:simt新增warp divergence样例
shaonaite
shaonaite成员
6月25日 评论:

预计6.30前闭环

likedislike
shaonaiteshaonaite成员
6月26日 关联了pull request:新增simt控制流最佳实践资料
shaonaiteshaonaite成员
6月29日 关闭了 issue
shaonaiteshaonaite成员
6月29日 issue状态由 待办的 改变为 已解决
CANN-robotCANN-robot成员
6月29日 添加了label:resolved