我们在cuda编程中定义变量的时候,可以用__constant__来修饰定义,代表着定义了一个常量内存。向常量内存中拷贝数据的时候不再使用cudaMemcpy,而改为使用cudaMemcpyToSymbol。对于常量内存,不需要在使用完成后用cudafree释放空间。
常量内存带来的性能提升
__constant__把对变量的访问限制为只读,跟从全局内存读取数据相比,从常量内存读取相同的数据可以节约内存带宽,原因是对常量内存的单次读操作可以广播到同一个线程块内的其他线程(节约15次读操作)。且常量内存的数据将被缓存起来,对相同地址的连续读操作将不会产生额外的内存通信量。
为了方便理解,写了一个用常量内存给数组赋值的程序。
#include<cuda_runtime.h> #include<windows.h> #include<iostream> using namespace std; const int nMax = 50; __constant__ float num1[40]; __global__ void exchangeKernel(float *aaa) { int offset = threadIdx.x + blockDim.x * blockIdx.x; aaa[offset] = num1[offset]; } int main(){ float *devA,tmp[40],res[40]; cudaMalloc((void**)&devA, 40*sizeof(float)); for (int i = 0; i < 40; i++)tmp[i] = i*1.5f; cudaMemcpyToSymbol(num1, tmp, 40 * sizeof(float)); exchangeKernel << <4, 10 >> >(devA); cudaMemcpy(res, devA, 40 * sizeof(float), cudaMemcpyDeviceToHost); for (int i = 0; i < 40; i++){ cout << res[i] << " " << endl; } cin >> res[1]; return 0; }
相关推荐
本程序是中国科学技术大学谭立湘老师GPU并行计算最后大作业的实验程序。主要内容是利用CUDA全局和共享内存实现了对图像腐蚀膨胀的优化加速。可用作学习参考。
如何充分利用本地多处理器内存资源,如共享内存、常量内存,以及寄存器。
C++多线程cuda显存申请性能优化
纹理内存是只读内存,与常量内存相同的是,纹理内存也缓存在芯片中,因此某些情况下,它能减少对内存的请求并提供更高效的内存宽带。纹理内存专门为那些内存访问模式中存在大量空间局部性的图形应用程序而设计的。在...
二、cuda与OpenCV结合方法 三、代码实例:图像均值滤波和图像反色 3.1 代码 3.2 代码说明 3.3 网格大小与线程块大小的确定 3.3.1 网格与线程块大小的限制 3.3.2 如何确定网格大小与线程块大小? 3.4 并行与串行的...
CUDA调试工具cuda-gdb,包含一个可以在CUDA中检测和调试内存错误的内存检查特性。该文档描述了这个名为cuda-memcheck的工具与它的功能。 NVIDIA用它强大的cuda-gdb硬件调试器简化了CUDA程序错误的调试。然而,每个...
CUDA中文手册 NVIDIA CUDA 统一计算设备架构 ...5.4 纹理拾取与全局或常量内存读取 5.5 整体性能优化策略 第6章 矩阵乘法示例 6.1概述 6.2 源码清单 6.3 源码攻略 6.3.1Mul() 6.3.2Muld() 附录
5.0 共享内存和常量内存 5.1 CUDA共享内存概述 5.2 共享内存的数据布局 5.3 减少全局内存访问 5.4 合并的全局内存访问 5.5 常量内存 5.6 线程束洗牌指令 6.0 流和并发 6.1 流和事件概述 6.2 并发内
CUDA实现基于共享内存的位图显示,线程同步
详细对于CUDA中内存存储问题的编程,以点积的例子来展现,可以在GPU上运行。
CUDA并行程序设计:GPU编程指南共...第6章 CUDA内存处理 第7章 CUDA实践之道 第8章 多CPU和多GPU解决方案 第9章 应用程序性能优化 第10章 函数库和SDK 第11章 规划GPU硬件系统 第12章 常见问题、原因及解决方案
CUDA(Compute Unified Device Architecture),是显卡厂商NVIDIA推出的运算平台。 CUDA是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。 该资源主要由Introduction、Utilities、...
博主自行实现的动态链接库,通过python导入后可以实现释放显存,与ai框架无关。支持pytorch、tensorflow、onnxruntime等cuda运行环境。调用dll.reset_cuda()即可释放显存
百度网盘提供,包含以下三种版本的cuda toolkit和对应的cudnn版本,适合windows10系统。 cudnn-10.1-windows10-x64-v7.6.4.38.zip cuda_10.1.243_426.00_win10.exe cudnn-11.0-windows-x64-v8.0.4.30.zip cuda_...
CUDA并行程序的内存访问优化技术研究
配置CUDA 5.0以及MFC的CUDA工程配置。有时候需要完成包含有窗体的CUDA工程,需要按照上传的资料进行配置
for cuda beginner, using c for cuda.
CUDA详细参数(算力+CUDA支持版本)
里面有四个文件 包括cuda的安装 在windows下的使用 使用经验 cuda博客 学习cuda的入门好资料