![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
CUDA
文章平均质量分 64
跬步达千里
深度学习 图像处理 tensorflow caffe python C++
展开
-
CUDA优化总结
总体的CUDA优化分以下几个策略:最大化并行执行来获得最大的利用率优化内存使用方法来获得最大的内存吞吐量优化指令使用方式来获得最大的指令吞吐量具体再可以从以下几个方面入手:CUDA配置优化:指的是在CUDA核函数执行之前,其参数的设置,根据显卡的参数,结合核函数的特点,需要注意以下几个参数:占用率:每个多核(个人觉得也可以理解成CUDA流处理)上正在执行的线程数,除以多核上允许执行的最大线原创 2016-12-16 17:55:30 · 7639 阅读 · 0 评论 -
CUDA存储类型
CUDA存储器类型:每个线程拥有自己的register and loacal memory;每个线程块拥有一块shared memory;所有线程都可以访问global memory;还有,可以被所有线程访问的只读存储器:constant memory and texture memory注意!:对于现在比较新的架构Fermi、Kepler,以及pascal,对local,转载 2016-12-15 15:57:51 · 1938 阅读 · 0 评论 -
CUDA统一内存、零复制内存、锁页内存
CUDA 6.0以后,出现了:统一内存,unified memory,其具有以下特性: 1 其声明有以下两种方式: a 使用关键字managed,可选的和device,一起使用,比如:device managed int ret[1000]; b 使用函数cudaMallocManaged(): int *ret; cudaMallocManaged(&ret,1000*s原创 2016-12-15 16:59:50 · 10970 阅读 · 0 评论 -
CUDA优化
1 使用锁页内存进行异步数据传输,在数据传输的同时,执行核函数,可以将二者中执行时间较短的掩盖2 使用共享内存,虽然共享内存不大,但是其访问速度比全局内存大很多,因此,能够用共享内存替代全局内存的尽量使用共享内存,给出一个例子:参见网页中的第五条:http://blog.csdn.net/augusdi/article/details/124340773 使用纹理内存(数据只需要读取时,还有一个内存原创 2016-12-15 17:22:42 · 827 阅读 · 0 评论 -
CUDA并发相关(流并发、主机设备并发)
核函数的并发执行,在下面需要注意的是,流与流之间通过事件来同步,即一个流等待另一个流执行完某个操作后再进行下一步操作,这时,创建事件时,应该使用:checkCudaErrors(cudaEventCreateWithFlags(&(kernelEvent[i]), cudaEventDisableTiming));使用时应该是:当前流等待上一个流运行后当前流再执行: for (int i=0;原创 2016-12-23 18:01:03 · 4200 阅读 · 0 评论 -
CUDA纹理内存相关参数解释
纹理内存的读取模式: cudaReadModeNormalizedFloat:如果纹理元素是一个16位或8位的整型,那么返回值将作为浮点数返回, 如果是无符号整型,将被映射到[0.0,1.0],如果是有符号整型,将被映射到[-1.0,1.0] cudaReadModeElementType:那么将返回回原始类型,不做转换纹理坐标归一化: 默认的,纹理坐标是使用浮点值进行访问:[0,N-1],原创 2016-12-20 11:06:07 · 1825 阅读 · 0 评论 -
CUDA流多处理器(stream multiprocessor,sm)和硬件流处理器(stream processor,sp)
SM是一种单指令多线程((single Instruction MultipleThread,SIMT)架构的处理器,类似单指令流多数据流(SIMD)的特点,含有指令发射单元,及若干个流处理器(streamingProcessor,sp)或标量处理器(Scalarproeessor,SP),特殊函数处理器(speeial Funetion Proeessor,SFU),可快速访问的共享存储器(sha转载 2017-01-10 10:45:45 · 7988 阅读 · 0 评论