CUDA
文章平均质量分 84
zlingh
大家多多交流我邮箱是[email protected]
展开
-
深入浅出谈CUDA(二)
http://456852.blog.51cto.com/380820/178589前面介绍的计算平方和的程序,似乎没有什么实用价值。所以我们的第二个 CUDA 程序,要做一个确实有(某些)实用价值的程序,也就是进行矩阵乘法。而且,这次我们会使用浮点数。虽然矩阵乘法有点老套,不过因为它相当简单,而且也可以用来介绍一些有关 CUDA 的有趣性质。矩转载 2012-10-29 14:17:46 · 1321 阅读 · 0 评论 -
绑定纹理有两种
http://blog.sina.com.cn/s/blog_685768c30100ua2y.htmlhttp://blog.sina.com.cn/s/blog_604afbb00100n853.htmlhttp://tech.it168.com/a2009/1116/809/000000809439_2.shtml从GPU申请内存把数据从CPU复制到GPU绑定纹理gpu全局内存原创 2012-11-07 22:22:39 · 1825 阅读 · 0 评论 -
配置cuda
所有工具都可以在这个官网下载:http://www.nvidia.com/content/devzone/index.html如果电脑上没有gpu想用cpu模拟运行,安装cudatoolkit_2.3_win_32和cudasdk_2.3_win_32这两个东西就可以了。一:在vs中找到.cu文件右键在自定义生成步骤-常规命令行中输入具体选择哪个模式看情况,无gpu要使用模拟环境原创 2012-11-07 22:20:30 · 972 阅读 · 0 评论 -
CUDA和OpenCV配置参考
realease模式--------------VC++目录-包含目录:$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSdkDir)include;$(FrameworkSDKDir)\include;D:\ProgramFiles\OpenCV2.3.1\build\include;D:\ProgramFile原创 2012-11-07 22:23:34 · 734 阅读 · 1 评论 -
CUDA判断素数的程序
http://blog.csdn.net/smsmn/article/details/6315160 调用核函数:IsPrime>>()但是程序里使用的是: IsPrimeTHREAD_NUM, THREAD_NUM * sizeof(bool)>>>gpudata, result,time);三个参数,第三个是共享内存的大小。程序是这样做的,每个块block统一一个结果,因为有原创 2012-11-07 22:21:54 · 635 阅读 · 0 评论 -
介绍cuda的一个好文章
进阶也可以看http://blog.csdn.net/smsmn/article/details/6315944原创 2012-11-07 22:22:28 · 383 阅读 · 0 评论 -
纹理
首先,他的大致流程会是:Host 的texture 建立部分宣告出texture reference透过 BindTexture 的函式,将 texture reference 和现有的 device memory 上的变数(linearmemory 或 CUDA array)做连结Device 使用透过 CUDA提供的 texture读取函式(tex1Dfetch原创 2012-11-07 22:22:03 · 358 阅读 · 0 评论 -
CUDA纹理绑定
最近学习了下CUDA矩阵内存对齐分配的方法,主要是cudaMemcpy2D和cudaMallocPitch两个函数的用法,先看看cudalibrary中如何定义的这两个函数:cudaError_t cudaMallocPitch(void ** devPtr, size_t * pitch,原创 2013-11-18 22:10:47 · 4369 阅读 · 0 评论 -
cuda中同步有关函数集合
__syncthreads() cudaDeviceSynchronize()cudaThreadSynchronize()cudaStreamSynchronize()cudaEventSynchronize()cudaMemcpyAsync原创 2014-03-11 15:45:54 · 3104 阅读 · 0 评论 -
cuda的Pinned Memory(分页锁定内存)
当为了提高CUDA程序的主机内存和设备内存传输消耗时,可以尝试一下两种方案一:使用分页锁定内存,分页锁定内存和显存之间的拷贝速度大约是6GB/s,普通的分页内存和GPU间的速度大约是3GB/s,(另外:GPU内存间速度是30G,CPU间内存速度是10GB/s),但是这种方法会带来额外的cpu内存间的拷贝时间二:使用内存映射(Zero Copy)让GPU直接使用CPU的内存,减少主机和设备间原创 2014-03-11 22:50:25 · 7969 阅读 · 1 评论 -
CUDA相关资料
nVidia CUDA 简介 (2007/10/31)先针对 GPGPU 做简单的介绍,然后再对 nVidia CUDA 本身软体架构、程式执行架构、记忆体架构,做最基本的介绍。 版本演进CUDA 1.1 Release (2007/12/16)针对 CUDA 1.1 的更新,做一些基本的比较。 CUDA Beta 2.0 for Windows & Vista (20转载 2013-11-19 23:08:49 · 1701 阅读 · 1 评论 -
CUDA使用CUDAArray的纹理
http://www.cnblogs.com/apapaxionga/archive/2012/03/28/2421621.html简单范例接下来,还是用实例来看吧∼这边是用 CUDA Array 的 texture来做 transpose 的动作。[程式原始码下载]首先,main() 的内容如下:void main( int argc, char** argv ){原创 2012-11-07 22:22:07 · 718 阅读 · 0 评论 -
CUDA和OpenCV小问题
共享内存一般用来存储临时数据 ,最初输入和最终输出都是全局内存。每个块一个共享内存,每个块一个结果。高速虽说 共享内存 在一个块内的线程都可以访问,但是 关于关键字:_syncthreads(),共享内存只有在执行_syncthreads()后才能使共享变量对其他线程可见。用于块内同步cudaThreadSynchronize()保证所有的流在进一步执行前已经完成 theRN原创 2012-11-07 22:22:14 · 530 阅读 · 0 评论 -
cuda常量内存的使用
首先声明一个常量数组,给定大小。再定义一个cpu上的数组_constant_ s[100];int temp[3]={1,2,3};然后把数据从内存复制到常量cudaMemcpyToSymbol(s,temp,sizeof(int)*sizeof(temp));原创 2012-10-29 18:07:48 · 1998 阅读 · 0 评论 -
cuda的内建变量
gridDim:dim3类型的,包含grid的维度blockIdx:uint3类型的,block在grid的位置blockDim:dim3类型,包含block的维度threadIdx:uint3类型的,Thread在block中的位置warpSize:int类型,线程中的warp大小原创 2012-10-29 18:46:22 · 931 阅读 · 0 评论 -
.cu文件
什么都不加也行,也能成功编译但可能会有波浪线加了可以减少波浪线,比如加#includecudaArray就不会有波浪线原创 2012-11-07 22:24:12 · 1008 阅读 · 0 评论 -
cuda中线程的组织
设有 dim3 blocks(bx,by);dim3 threads(tx,ty);ker>>()则每个线程块有tx行ty列的线程,x=threadIdx.x,y=threadIdx.y代表第x行第y列的那个线程;整个网格有bx行by列的线程块,blockIdx.x,blockIdx.y代表第x行第y列的那个线程块。行数和列数都可以从0开始,所以threadIdx.x必然小原创 2012-11-13 23:33:30 · 1106 阅读 · 0 评论 -
cuda 内存分类和使用
原创 2012-11-19 15:44:23 · 866 阅读 · 0 评论 -
如何编译OpenCV-2.3.x/OpenCV-2.4.x使其支持GPU-CUDA高速运算?
前面,我们讲到了使用OpenCV-2.4.0在Visual Studio 2005/2008/2010常规编译的方法,本文则主要讲述如何使OpenCV支持CUDA高速运算。 我们将要使用的工具除了常规编译方式使用的工具外,还要使用CUDA tookit和GPU Computing SDK,如本人使用的版本分别为cudatoolkit_4.2.9_win_64.msi和gpucomput转载 2012-11-21 21:18:13 · 886 阅读 · 0 评论 -
CUDA纹理存储器的特性及其使用
纹理存储器(texture memory)是一种只读存储器,由GPU用于纹理渲染的的图形专用单元发展而来,因此也提供了一些特殊功能。纹理存储器中的数据位于显存,但可以通过纹理缓存加速读取。在纹理存储器中可以绑定的数据比在常量存储器可以声明的64K大很多,并且支持一维、二维或者三维纹理。在通用计算中,纹理存储器十分适合用于实现图像处理或查找表,并且对数据量较大时的随机数据访问或者非对齐访问也有良好的转载 2013-11-19 23:05:03 · 1426 阅读 · 0 评论 -
深入浅出谈CUDA(一)
http://456852.blog.51cto.com/380820/178585不过似乎都是从这来的http://www.opengpu.org/forum.php?mod=viewthread&tid=2435第一个CUDA程序 CUDA 目前有两种不同的 API:Runtime API 和 Driver API,两种 API 各有其适用的范围。由于 runtim转载 2012-10-29 14:11:11 · 2554 阅读 · 0 评论 -
Cuda图像数据结构
CudaImage.hstruct CudaImage{int width;int height;float *imData;float *cuData;size_t pitch;size_t nBytes;void setPixel(int x, int y, float val)设置(x,y)处的像素值为valfloat getPixel(int x, int y)原创 2012-11-07 22:22:01 · 665 阅读 · 0 评论 -
cuda编程学习
http://blog.sina.com.cn/s/blog_48b9e1f90100fm5f.html硬件限制: GeForce8800GTX每个SM有8K个寄存器,整个处理器有128K个寄存器。一个SM最多有768个线程。如果要达到这个线程最大数,每个线程只能用8K/768=10个寄存器。如果每个线程要用11个寄存器,那么线程数就会减少。例如,如果一个block有25原创 2012-11-07 22:22:37 · 554 阅读 · 0 评论 -
CUDA程序优化技巧
有如下几个方面1. 使用共享内存减少全局内存读取次数;2. 把全局内存绑定为纹理;3. 减少bank conflict, 让不同线程读取连续内存,提高cash命中率;4. 内存对齐,利用GPU 上的内存控制器,从某个固定的倍数地址开始读取,才会有最高的效率(例如 16 bytes 的倍数)。分配内存时使用cudaMallocPitch替代cudaMalloc,相应 cudaMemc原创 2013-11-18 23:41:35 · 4032 阅读 · 4 评论