摘要: 1、cudaMemcpy()<--> cudaMalloc() //线性内存拷贝1 //线性内存拷贝2 cudaMalloc((void**)&dev_A, data_size);3 cudaMemcpy(dev_A, host_A, data_size, cudaMemcpyHostToDevice);2、cudaMemcpy2D()<-->cudaMallocPitch() //线性内存拷贝cudaError_t cudaMemcpy2D( void * dst, size_t dpitch, const void * src, si... 阅读全文
posted @ 2013-04-12 14:09 traceorigin 阅读(2171) 评论(0) 推荐(1) 编辑
摘要: cuda内存分配真是乱啊,这次总结一下数组的分配。概述:数组分配可以通过cudaMallocArray()和cudaMalloc3DArray()1、cudaMallocArray()cudaError_t cudaMallocArray ( struct cudaArray ** array, const struct cudaChannelFormatDesc * desc, size_t width, size_t height = 0, unsigned int flags = 0 ) 例:2DA... 阅读全文
posted @ 2013-04-12 13:57 traceorigin 阅读(2631) 评论(0) 推荐(0) 编辑
摘要: 1、概述 纹理存储器中的数据以一维、二维或者三维数组的形式存储在显存中,可以通过缓存加速访问,并且可以声明大小比常数存储器要大的多。 在kernel中访问纹理存储器的操作称为纹理拾取(texture fetching)。将显存中的数据与纹理参照系关联的操作,称为将数据与纹理绑定(texture binding). 显存中可以绑定到纹理的数据有两种,分别是普通的线性存储器和cuda数组。 注:线性存储器只能与一维或二维纹理绑定,采用整型纹理拾取坐标,坐标值与数据在存储器中的位置相同; CUDA数组可以与一维、二维、三维纹理绑定,纹理拾取坐标为归一化或者非归一化的浮点型,并且支持许多... 阅读全文
posted @ 2013-04-11 23:36 traceorigin 阅读(3961) 评论(0) 推荐(1) 编辑
摘要: 概述:线性存储器可以通过cudaMalloc()、cudaMallocPitch()和cudaMalloc3D()分配1、1D线性内存分配1 cudaMalloc(void**,int) //在设备端分配内存2 cudaMemcpy(void* dest,void* source,int size,enum direction) //数据拷贝3 cudaMemcpyToSymbol //将数据复制到__constant__变量中,或者__device__变量中4 cudaMemcpyFromSynbol //同上相反5 cudaFree() ... 阅读全文
posted @ 2013-04-11 22:12 traceorigin 阅读(2643) 评论(0) 推荐(0) 编辑
摘要: CUDA存储器类型:每个线程拥有自己的register and loacal memory;每个线程块拥有一块shared memory;所有线程都可以访问global memory;还有,可以被所有线程访问的只读存储器:constant memory and texture memory1、 寄存器Register 寄存器是GPU上的高速缓存器,其基本单元是寄存器文件,每个寄存器文件大小为32bit. Kernel中的局部(简单类型)变量第一选择是被分配到Register中。 特点:每个线程私有,速度快。2、 局部存储器 local memory 当register耗尽时,数据将被存... 阅读全文
posted @ 2013-04-11 21:45 traceorigin 阅读(1513) 评论(0) 推荐(1) 编辑
摘要: 安家在博客园啦,喜欢它简洁的风格。淡淡的,素雅的,在忙乱中,给人一湾宁静,不慌不忙地静静流淌...... 阅读全文
posted @ 2013-04-11 20:55 traceorigin 阅读(154) 评论(0) 推荐(0) 编辑