CUDA程序性能优化 并行归约
归约算法
基本思想是,对于一个输入数组执行某种计算,然后产生一个更小的结果数组。当大量的数进行加和运算时,可以利用归约算法,多线程进行求和运算
例如

- 串行实现需要7步,性能比较差
- 成对方式是典型的分治思想,只需要log₂N步来计算结果,由于不能合并内存事物,这种情况在CUDA中性能较差。
- 在CUDA中,无论是全局内存还是局部内存,基于交替策略效果会更好。
成对方式导致线程发散如下

核心代码
完整代码
解决方法: 相邻线程执行相同的代码
交替策略

核心代码
完整代码
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!




