cuda
DevinTT
这个作者很懒,什么都没留下…
展开
-
CUDA 算法之 奇偶排序
我们常用的排序算法基本上都是单线程的,要在CUDA运用并行进行排序,就需要新的排序算法。这篇就介绍CUDA适用的排序方法:奇偶排序(odd even sort),它是基于“老朋友”冒泡排序衍生出来的算法。算法示意图CUDA的算法复杂度:O(n),稳定排序由于每个“小块”进行交换的时候都是互不相关的,所以使用CUDA进行并行计算非常合适。CUDA代码实现核函数:__gl...原创 2019-04-12 09:34:16 · 2700 阅读 · 2 评论 -
CUDA算法:矩阵转置(及其加速优化)
矩阵的转置就是对角的元素交换位置:定义A的转置为这样一个n×m阶矩阵B,满足B=b(j,i),即 a(i,j)=b (j,i)(B的第i行第j列元素是A的第j行第i列元素),记A'=B。由于该算法数据之间没有依赖关系,很适合使用cuda进行并行加速运算。核函数:__global__ void cudaMatTrans(CudaImg8Mat *cudaMatA, CudaImg8Ma...原创 2019-04-17 16:03:24 · 3390 阅读 · 0 评论 -
CUDA算法:统计直方图(以及优化加速)
直方图是用来统计像素灰度值分布的一种方法,同理也可以统计RGB色素的分布。调整图像的对比度则需要直方图分布概率,才能进行灰度变换。对于CUDA来说,可以并行读取多个像素点的值,然后进行统计,但是统计过程则是串行的。这里需要使用CUDA串行指令“原子操作”。核函数:__global__ void cudaMatHistogram(CudaImg8Mat *cudaMat, unsign...原创 2019-04-17 17:27:07 · 3884 阅读 · 0 评论 -
CUDA算法:矩阵相乘(含C语言代码和OPENMP)
CUDA是基于nvidia的显卡SDK一门并行编程技术。做矩阵相乘自然是“得心应手”。设A为的矩阵,B为的矩阵,那么称的矩阵C为矩阵A与B的乘积,记作。C/CPP串行实现代码:int Matrix::MatMulti(Mat &MatA, Mat &MatB, Mat &MatC){ if(MatA.col!=MatB.row) ...原创 2019-04-15 13:51:44 · 1298 阅读 · 0 评论