![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并行计算
文章平均质量分 57
zhouzhouasishuijiao
这个作者很懒,什么都没留下…
展开
-
CUDA学习 一些零散的知识点总结
row major(行主序)和column major(列主序)行主序表示在有多行组织数据时,内存连续存储,且以行为主要序列列主序表示在有多列组织数据时,内存连续存储,且以列为主要序列,下面展示一个列主序的存储在内存里面就是 行主序和列主序对于计算时间是有影响的,访问连续部分用时少,访问间断部分用时长row major和column major在opencv,openGL...原创 2018-11-28 21:27:55 · 703 阅读 · 0 评论 -
CUDA学习(十一) 利用npp做图像处理
今天想着使用npp做一些图像处理npp是cuda的一个library,主要用于处理图像和视频,封装了大量的处理函数。接下来就看一个CUDA SDK里面的一个sample,\v9.1\7_CUDALibraries\cannyEdgeDetectorNPP\它原先是用来处理pgm的图片,这种格式不常见,所以就把代码简单的修改为处理bmp的图片,下面就看看这个demo的细节吧,以备后日使用...原创 2018-12-03 22:22:08 · 7335 阅读 · 2 评论 -
CUDA学习(十四)cuSolver学习
https://docs.nvidia.com/cuda/archive/9.1/cusolver/index.htmlcuSlover是基于cuBLAS和cuSPARES库的一个对矩阵操作的库,包括矩阵分解和求解方程等内容,它里面包含了三个独立的库文件,包括cuSolverDN,cuSolverSP,cuSolverSPcuSolverDN:可以做矩阵分解(LU,QR,SVD,LDLT)...原创 2018-12-06 11:08:06 · 8189 阅读 · 0 评论 -
CUDA学习(十三)cublas学习
cublas是cuda的一个线性代数库,cublas_api.h声明了关于线性代数的函数,自己边看边记录一下,以备以后用简单总结一下:cublas只是简单的矩阵运算,只有几个函数涉及的解方程的内容,有一个地方提到了LU分解,内容有限1 从cpu的vector复制n个元素到GPU的memorycublasStatus_t CUBLASWINAPI cublasSetVector (in...原创 2018-12-05 22:48:48 · 7327 阅读 · 0 评论 -
CUDA学习(十)使用texture 进行图像处理
首先texture在硬件层次上是属于一块存储器,通过绑定操作,可以用纹理操作根据坐标去获取数据,然后进行相应的操作但是我现在对于texture的理解是,它可以较快的读取数据,如果你需要进行滤波,使用texture是最合适的,但是如果你不需要滤波,我没想到它的使用与global memory相比有什么好处,好想找人讨论啊,感觉自己理解不够代码层次上对于texture存储器的使用,主要有以下几...原创 2018-12-02 00:17:35 · 5600 阅读 · 3 评论 -
CUDA学习(九)想好好解释一下利用shared memory去做matrixMul
代码来自CUDA Samples\v9.1\0_Simple\matrixMul主要注释了matrixMulCUDA()C=A*B它的理念是把矩阵分成小块,每个线程利用两层循环,大循环在迭代subMatrix,小循环则是迭代每个小subMatrix的横纵坐标,可以理解为一个线程计算出的Csub就是对应一个元素,然后你想象所有线程是并行的,所以所有的元素计算就可以理解过来了,但是单...原创 2018-12-01 21:48:40 · 1026 阅读 · 0 评论 -
CUDA学习(七) 谈谈id和线程调用
当我们在host端调用kernel函数,就意味着开始了thread调用但是如何只调用一次kernel就有多个thread被启用,我们抛开硬件,先看看抽象出来的软件模型看一段代码//kernel.cu#define N 16__global__ void MatAdd(float A[N][N],float B[N][N],float C[N][N]){ int i=th...原创 2018-11-28 12:02:25 · 1283 阅读 · 1 评论 -
CUDA学习(三)
CUDA C语言CUDA C语言主要是对C语言进行了一些扩展引入函数类型限定符 __device__该函数在device上执行__host__该函数在host上执行__global__该函数在host上调用,在device上执行,主要是在kernel函数,即执行指令引入变量类型限定符这主要是用来规定变量被存储在哪一类存储器上。在CUDA编程模型中,一共抽象出来多达8种不同的存...原创 2018-11-26 21:40:05 · 426 阅读 · 0 评论 -
CUDA学习(六)
CUDA线程执行模型为两层,一层Grid,一层Block,block之间时不可以通信的,但是block里面的线程可以相互通信,逻辑层和物理层的实现,以及代码端的书写都需要好好学习__syncthreads()__syncthreads()实现了线程块内的线程同步,它保证了线程块中的所有线程都执行到同一位置。这都是线程操作所必须的内容。只有当整个线程块走向相同分支时,才能在条件语句里面使用...原创 2018-11-27 14:56:08 · 363 阅读 · 0 评论 -
CUDA学习(五)
纹理存储器(texture memory)是一种只读存储器,由GPU用于纹理渲染的图形专用单元发展而来,提供了地址映射、数据滤波、缓存等功能。纹理存储器中的数据以一维、二维或者三维数据的形式存储在显存中了可以通过缓存加速访问,并且可以声明大小比常数存储器要大的多。纹理存储器非常适合实现图像处理和查找表,对大量数据的随机访问或非对齐访问有良好的效果纹理拾取在kernel中访问纹理存储器的操作称...原创 2018-11-27 11:12:39 · 307 阅读 · 0 评论 -
CUDA学习(四)
主机内存CUDA主机端内存分为两种:可分页内存和页锁定内存可分页内存即通过操作系统API(malloc(),new())分配的存储空间;而需要注意的是页锁定内存(pinned memory)。页锁定内存是由CUDA函数cuddaHostAlloc()在主机内存上分配的,页锁定内存的重要属性是主机的操作系统不会对这块内存进行分页和交换操作,确保该内存始终驻留在物理内存中。以后总结一下操作系...原创 2018-11-27 10:01:23 · 409 阅读 · 0 评论 -
CUDA学习(一)
CUDA编程模型CUDA编程模型将CPU作为主机(Host),GPU作为协处理器或者设备(Device)。在一个系统中可以存在一个主机和若干设备。CPU负责进行逻辑性强的事务处理和串行计算,GPU则专注于执行高度线程化的并行处理任务。CPU和GPU拥有各自独立的存储地址空间:主机端的内存和设备端的显存。CUDA对内存的操作同一般的C程序相同,而对显存则需要调用CUDA API中的存储管理函数...原创 2018-11-26 17:11:43 · 1162 阅读 · 0 评论 -
CUDA学习(十二) npp头文件学习
CUDA的npp函数库,主要用于图像和视频的处理,今天,我就简单的记录一下各个头文件所包含的函数有哪些,以备后日用首先看看npp头文件的组织形式npp.h#include <nppversion.h>//版本#include <nppdefs.h>//npp的一些数据结构的定义#include <nppcore.h>//npp的一些核心内容,...原创 2018-12-04 11:07:29 · 2751 阅读 · 4 评论 -
CUDA学习(八)图像处理--不用texture
前面也学习了如何使用CUDA,今天就来试试它的图像处理,今天实现的一个功能是彩色图转换为灰度图。使用的开发环境是VS2015+CUDA 9.1+Opencv340安装好了之后新建一个工程,选择NVIDIA->CUDA9.1 新建了工程之后,需要自己配置Opencv340可以选择使用它自己的kerner.cu,也可以选择自己新建一个.cu 这里添加,只能选择在工程上...原创 2018-11-29 17:41:26 · 3587 阅读 · 0 评论 -
CUDA学习(十四) cuSolver学习中的 compressed sparse row format matrix(行存储的压缩矩阵 CSR)
http://www.netlib.org/utk/people/JackDongarra/etemplates/node373.html主要参考这里面的内容现有一个矩阵观察该矩阵可以发现,该矩阵有很多0,压缩的方式就是去掉这些0元素,所用的方法就是将这个矩阵的存储换为3个数组进行存储 val 10 -2 3 9 3 7 8 ...原创 2018-12-11 21:00:48 · 950 阅读 · 0 评论