![](https://img-blog.csdnimg.cn/20190804212929917.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
CUDA学习进阶史
GPU编程系列学习,结合C和C++进行开发,为初学者提供指导,当然也希望通过博客与大家一起探讨交流。只要智商不滑坡,办法总比bug多。
SetDreamer
细节决定你花多少时间
展开
-
CUDA矩阵乘法
一、使用全局内存矩阵乘法,即用矩阵A每行与矩阵B的每列,依次做乘积累加就可以得到各个元素的值。在CPU上用三层循环实现。这里是将二维数组用一维的形式表示,即按行存储。 size_t size = WIDTH*WIDTH * sizeof(int); int *h_A = (int *)malloc(size); int *h_B = (int*)malloc(size); int *原创 2017-06-07 20:53:39 · 4495 阅读 · 1 评论 -
CUDA拷贝结构体成员指针
在网上看了好多CUDA中在拷贝结构体以及在内核中如何访问结构体成员变量的帖子,都没找到一个质量好的,so, 自己写一个吧。。。先来个结构体:struct Stu_Struct{ int count; //人数 short* score; //每个人的分数,总计count short num; //附加分数};说明 首先大家都知道在主机端和设备端...原创 2019-07-14 15:14:10 · 2241 阅读 · 4 评论 -
CUDA学习之纹理内存
1、纹理存储器的特性 纹理存储器中的数据以一维、二维或者三维数组的形式存储在显存中,可以通过缓存加速访问,并且可以声明大小比常数存储器要大的多。在kernel中访问纹理存储器的操作称为纹理拾取(texture fetching)。将显存中的数据与纹理参照系关联的操作,称为将数据与纹理绑定(texture binding). 显存中可以绑定到纹理的数据有两种,分别是普通的线性存储器和c原创 2017-08-02 10:22:28 · 6161 阅读 · 9 评论 -
OpenMP入门学习
在看CUDA的时候,接触到了OpenMp,于是呢,就看了几篇博客了解了一下,,,,环境:Win10 x64 4核 VS20151、什么是OpenMP呢? OpenMP是由OpenMP Architecture Review Board牵头提出的,并已被广泛接受,用于共享内存并行系统的多处理器程序设计的一套指导性编译处理方案(Compiler Directive)。OpenM原创 2017-05-21 21:38:02 · 866 阅读 · 0 评论 -
CUDA 多GPU调用实现
当设备存在多块GPU时,为了高效利用GPU,我们常常需要使用多卡计算。本例中我们使用OpenMP来进行多线程调用多GPU运行,初学者无须详细了解OpenMP,只需知道一两句命令就行。详细步骤如下:1、建立一个普通CUDA项目:2、在项目属性C/C++设置语言:支持openMP3、在CUDA C/C++中设置预编译命令:-Xcompiler "/openm...原创 2019-03-06 21:45:00 · 8923 阅读 · 3 评论 -
CUDA GPU架构-硬件和软件
掌握部分硬件知识,有助于程序员编写更好的CUDA程序,提升CUDA程序性能,本文目的是理清sp,sm,thread,block,grid,warp之间的关系。由于作者能力有限,难免有疏漏,恳请读者批评指正。 首先我们要明确:SP(streaming Process),SM(streaming multiprocessor)是硬件(GPU hardware)概念。而thread,block转载 2017-09-27 17:25:05 · 1505 阅读 · 0 评论 -
图像均值滤波的CUDA并行化优化
1、算法原理均值滤波也是线性滤波,目标点的像素为周围(模板覆盖)像素的平均值。对图像进行均值滤波处理时,每一个像素点的处理与其它像素点无关,所以,可以把对于每一个像素的处理映射到每个线程中。2、并行思路将像素映射到二维坐标空间,然后使用i*WIDTH+j的方式索引像素,本实例是寻找周围9个像素点的值。对于每一个线程都将去寻找它的领域像素,然后对其求平均值。为了简化计算,边界采用复制像素原创 2017-08-18 16:26:49 · 7552 阅读 · 8 评论 -
CUDA使用二级指针表示二维数组
首先看下我们在CPU上是如何用二级指针表示二维数组的,其实就两点:一是用一级指针保存数据,二是用二级指针去按行索引数据位置。关于一级指针和二级指针的内存分配这里不讲了,注意数据类型就可以了。代码做了相关说明,应该比较好理解:#define Row 8#define Col 4 //声明Row个行指针: cpuA cpuA+0 cpuA+1 cpuA+Row int原创 2017-06-09 11:50:27 · 6468 阅读 · 8 评论 -
VS2015下CUDA9的安装
环境:win10 VS2015 GTX Geforce 1060由于提前安装了显卡驱动,安装CUDA9(cuda_9.0.176_win10 ) ,CUDA8 相继失败,总是说VS Integration无法安装,,,试了网上各种方法:卸载显卡驱动和所有与Nvidia有关的东西、先安装VS Integration再安装其他组件、装VS2013和CUDA8.0、均失败。。。。。就差...原创 2018-09-02 21:04:42 · 950 阅读 · 0 评论