归约算法
基本思想是,对于一个输入数组执行某种计算,然后产生一个更小的结果数组。当大量的数进行加和运算时,可以利用归约算法,多线程进行求和运算
例如
串行实现需要7步,性能比较差成对方式是典型的分治思想,只需要log₂N步来计算结果,由于不能合并内存事物,这种情况在CUDA中性能较差。在CUDA中,无论是全局内存还是局部内存,基于交替策略效果会更好。
成对方式导致线程发散如下
核心代码
完整代码
解决方法: 相邻线程执行相同的代码
交替策略
核心代码
完整代码
时间:2021-04-10 17:29:33
归约算法
基本思想是,对于一个输入数组执行某种计算,然后产生一个更小的结果数组。当大量的数进行加和运算时,可以利用归约算法,多线程进行求和运算
例如
串行实现需要7步,性能比较差成对方式是典型的分治思想,只需要log₂N步来计算结果,由于不能合并内存事物,这种情况在CUDA中性能较差。在CUDA中,无论是全局内存还是局部内存,基于交替策略效果会更好。
成对方式导致线程发散如下
核心代码
完整代码
解决方法: 相邻线程执行相同的代码
交替策略
核心代码
完整代码
《OpenACC并行程序设计:性能优化实践指南》一 第2章 性能导向开发
2023-01-21
Java程序性能优化 读书笔记(十三)并行设计模式:不变模式
2018-07-16
《OpenACC并行程序设计:性能优化实践指南》一 3.1 性能分析技术和术语
2024-04-18
Java程序性能优化 读书笔记(十)并行设计模式:Future模式
2019-09-07