cuda编程---二维图像实现并行归约算法及基础优化方式
注:
1、本文不做任何公式推导,主要包含对算法的个人理解及少量的代码
2、以求取最大值为例,给出二维图像并行规约代码
代码中对于图像数据的处理,采用1维的共享内存和2维的共享内存分别实现归约
3、对于归约算法基础的优化方式(这里指连续寻址、分支发散),分析其背后的机制
一、前言
cuda的并行归约算法是cuda的入门经典算法之一,网上有许多公式推导和原理的详解,并行归约的核心思想就是每一个线程同时计算一部分数据,最后再把结果合并。这里不做过多的赘述。
在本文中,我们假设有一个1000 * 512大小的图像数据流float * data,每一行的pitch为1024* sizeof(float),在此基础上我们对并行规约算法及其常见的、基础的、经典的优化算法进行研究。
最简单的规约算法如下:
__global__ void MyReduction1D(float* _inData, float
本文介绍了CUDA编程中并行归约算法的基础和优化方法,针对1000 * 512大小的图像数据流,通过连续寻址和避免分支发散提高内存读取效率,利用二维线程块实现共享内存归约求图像最大值,讨论了优化后的代码和注意事项。
订阅专栏 解锁全文
266

被折叠的 条评论
为什么被折叠?



