![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
CUDA
文章平均质量分 78
Augusdi
让时间验证一切,让时间验证我。感谢大家的无私帮助,我愿以同样的态度回馈我热情的朋友,用我们的热忱开创美好未来!
展开
-
CUDA编程
http://www.cnblogs.com/stewart/archive/2013/01/05/2846860.html目录:1.什么是CUDA2.为什么要用到CUDA3.CUDA环境搭建4.第一个CUDA程序5. CUDA编程5.1. 基本概念5.2. 线程层次结构5.3. 存储器层次结构5.4. 运行时API5.4.1. 初始化5.4.2. 设备管理5.4.3. 存储器管理5.4.3.1.转载 2013-09-30 10:41:22 · 6423 阅读 · 0 评论 -
CUDA存储器模型
CUDA存储器模型:GPU片内:register,shared memory;板载显存:local memory,constant memory, texture memory, texture memory,global memory;host 内存: host memory, pinned memory. register: 访问延迟极低; 基本单元:register转载 2013-09-30 11:24:16 · 1733 阅读 · 0 评论 -
CUDA文件Visual Assist 添加支持*.cu文件
Visual Assist 添加支持*.cu文件1. 打开注册表,在HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/VisualStudio/8.0/Languages/File Extensions/ 下面添加子键 .cu 然后copy .cpp的键值到.cu。这样才能表示cu也是VS下的VC的工程文件。2. 打开注册表HKEY_CURRENT转载 2012-09-20 16:07:10 · 3399 阅读 · 0 评论 -
CUDA在Visual Studio 2010中CUDA 4.0的安装与配置
安装环境:Win7 64位系统,Geforce GT 430显卡安装前提: Visual Studio 2010 Visual Assist X安装步骤:1,Nvidia显卡驱动,装275.33版,这是最新版本驱动,初次安装为了少出错,最好安装比较新版本的驱动。2,Cuda Toolkit 4.0安装,CUDA 4.0的新特性可以参见其Release Notes,其中包括了转载 2013-07-25 15:55:42 · 2419 阅读 · 0 评论 -
CPU+GPU异构计算编程简介
异构计算(CPU + GPU)编程简介1.概念 所谓异构计算,是指CPU+ GPU或者CPU+ 其它设备(如FPGA等)协同计算。一般我们的程序,是在CPU上计算。但是,当大量的数据需要计算时,CPU显得力不从心。那么,是否可以找寻其它的方法来解决计算速度呢?那就是异构计算。例如可利用CPU(Central Processing Unit)、GPU(Graphic Processing Unit)转载 2013-09-13 15:14:00 · 12904 阅读 · 0 评论 -
CUDA内存类型memory
http://www.cnblogs.com/traceorigin/archive/2013/04/11/3015482.htmlCUDA存储器类型:每个线程拥有自己的register and loacal memory;每个线程块拥有一块shared memory;所有线程都可以访问global memory;还有,可以被所有线程访问的只读存储器:constant memory and tex转载 2013-09-30 10:34:47 · 14441 阅读 · 1 评论 -
CUDA线性内存分配
http://www.cnblogs.com/traceorigin/archive/2013/04/11/3015554.html概述:线性存储器可以通过cudaMalloc()、cudaMallocPitch()和cudaMalloc3D()分配1、1D线性内存分配1 cudaMalloc(void**,int) //在设备端分配内存2 cudaMemcpy(void* dest,vo转载 2013-09-30 10:35:40 · 5764 阅读 · 1 评论 -
CUDA内存拷贝
http://www.cnblogs.com/traceorigin/archive/2013/04/12/3016568.htmlCUDA内存拷贝1、cudaMemcpy() cudaMalloc() //线性内存拷贝1 //线性内存拷贝2 cudaMalloc((void**)&dev_A, data_size);3 cudaMemcpy(dev_A, host_A, data_size转载 2013-09-30 10:38:03 · 13804 阅读 · 0 评论 -
CUDA的BLAS数学库
刚刚从C++博客迁徙过来,原来的那么多东西要拷贝要粘贴图片要重新上传真是累。看过的朋友可不要骂小弟灌水注:本文的代码图片资料选自NVIDIA CUDAProgramming Guide,原作者保留所有著作权。 NVIDIA近日终于发布了CUDA,有可能作为下一代SDK10的一部分奉送给乐于发掘GPU计算能力的专业人员。感兴趣的朋友可以去这里一探究竟,下载尝鲜,提供了大量的范例。 我们都知道,G转载 2013-09-30 10:46:30 · 10202 阅读 · 1 评论 -
CUDA 纹理内存
http://www.cnblogs.com/traceorigin/archive/2013/04/11/3015755.html1、概述 纹理存储器中的数据以一维、二维或者三维数组的形式存储在显存中,可以通过缓存加速访问,并且可以声明大小比常数存储器要大的多。 在kernel中访问纹理存储器的操作称为纹理拾取(texture fetching)。将显存中的数据与纹理参照系关联的操作,称为将转载 2013-09-30 10:36:34 · 10472 阅读 · 0 评论 -
CUDA数组分配
http://www.cnblogs.com/traceorigin/archive/2013/04/12/3016540.htmlcuda内存分配真是乱啊,这次总结一下数组的分配。概述:数组分配可以通过cudaMallocArray()和cudaMalloc3DArray()1、cudaMallocArray()cudaError_t cudaMallocArray ( struct转载 2013-09-30 10:37:13 · 3677 阅读 · 0 评论 -
CUDA统计时间
原文地址:CUDA 统计时间作者:handsomefriend转载:http://blog.csdn.net/jdhanhua/article/details/4843653使用cutil.h中的函数unsigned int timer=0;//创建计时器cutCreateTimer(&timer);//开始计时cutStartTimer(timer);{ //统计的代码段 …………}//停止转载 2013-09-30 11:15:47 · 1599 阅读 · 0 评论 -
CUDA的初始化
http://www.cnblogs.com/dflower/archive/2009/10/16/1584827.html 首先介绍一下开发环境,Visual Studio 2008 + CUDA Wizard for Visual Studio. 确保显卡支持CUDA(GeForce 8系列之后,否则只能用模拟模式)并安装CUDA DDK及CUDA Toolkit。 安装完CUDA转载 2013-09-30 11:03:40 · 3364 阅读 · 0 评论 -
CUDA内存整理
函数类型__device__ 标记的函数从一个在器件中执行的函数呼叫,在器件中执行 __global__ 表示该函数从一个在主机中执行的函数呼叫,在器件中执行__host__ 表示在主机中呼叫,在主机中执行的函数 线程grid里面包含block,block里面包含threadgrid里面所有的block都是同样大小的,每个block最多可以有1024个thread。blockDim表原创 2013-09-30 19:00:57 · 2010 阅读 · 0 评论 -
CUDA之Hello World
1. Cuda 编程环境的搭建: 网上针对不同的操作系统和cuda版本有很多详细的安装说明,推荐使用安装Cuda VS Wizard,下载地址http://sourceforge.net/projects/cudavswizard/。 2. 第一个Cuda程序: 新建项目,选择CUDA—CUDAWinAPP—输入项目名称—确定。其中一个自动生成的文件叫sample.cu,这是环境自转载 2013-09-30 19:10:25 · 4810 阅读 · 0 评论 -
CUDA: 通过九个步骤实现在VS2010中加载CUDA 3.2
说明 本文主要通过图片,外加一些文字进行说明。 通过本文,希望你初步学会使用 nVidia CUDA SDK v3.2 , 享受GPU 编程带给你的乐趣。学会使用 CUDA ,你就可以在使用了 nVidia 显卡的机子上进行 GPU编程了。 相关资料 用 CUDA sdk编写的程序,相关的文件结尾一般是 *.cu ,这些程序一般称之为 kernels 。 一个 kernel 就是一个结构转载 2013-09-30 19:22:23 · 2548 阅读 · 0 评论 -
CUDA在VS2010下5.5设置
在开始学习之前,首先要做的就是找到一本好的教材,要知道一本好的教材可以让我们更加轻松地入门。在看了一些个CUDA编程相关的教材之后,我向大家推荐的一本教材叫做《GPU高性能编程CUDA实战》。本教材相比其他的教材而言,它讲得比较细,对于一些我们可能不太明白的知识点做了详细的说明。而且这本教材以层层深入的方式向我们展示了GPU的世界,从而引领我们进入CUDA编程的大门。其他的教材的话我建议的是《深入转载 2013-09-30 19:32:46 · 7646 阅读 · 2 评论 -
CUDA笔记
CPU代码作用:在kernel启动前进行数据准备和设备初始化的工作,以及在kernel之间进行的一些串行运算。理想状况下 ,CPU串行代码的作用只是清理上一个kernel函数,并启动下一个kernel函数。 CUDA并行计算函数kernel:它是整个CUDA程序中的一个可以被并行执行的步骤。 kernel函数中存在两个层面的并行:Grid中的block间并行;block中的转载 2013-09-30 20:33:45 · 2380 阅读 · 0 评论 -
CUDA函数前缀与存储器前缀讨论
转自:http://space.itpub.net/?uid-23172605-action-viewspace-itemid-627164在CUDA C语言对C语言的扩展之一就是加入了一些函数前缀和存储器前缀,它们是:函数前缀:__device__ , __global__, __host__存储器类型前缀:__device__, __shared__, __constant__(constan转载 2013-09-30 20:46:58 · 2016 阅读 · 0 评论 -
CUDA的配置与入门
开始接触CUDA,我安装好后完全不知道怎么运行demo,当然也没有见到详细的安装说明。下面说说我的经验。Platform:Win XP64IDE:VS20081 获取可访问以下网址:http://www.nvidia.com/object/cuda_get.html共需下载3个应用程序,分别是:1> CUDA Driver2> CUDA Toolkit3> CUDA SDK转载 2013-09-30 22:48:04 · 7203 阅读 · 0 评论 -
CUDA写显卡内存的FFT问题。
今天尝试用cuda把FFT实现,遇到了难题。直接调用cufft库的话,内存拷贝与数据处理的时间比大约是1:2。但是据说cufft并不是最高效的,所以想自己锻炼一下。 我的思路是将二维的每一行映射到一个block,每个点都是一个thread。先将数据拷贝到显卡全局内存,然后拷贝到每个block的共享内存,这是因为读取global memory会占用更多的指令周期。然后就是处理这段shared mem转载 2013-09-30 22:51:52 · 3594 阅读 · 0 评论 -
CUDA 深入浅出谈
CUDA 深入浅出谈 “CUDA 是 NVIDIA 的 GPGPU 模型,它使用 C 语言为基础,可以直接以大多数人熟悉的 C 语言,写出在显示芯片上执行的程序,而不需要去学习特定的显示芯片的指令或是特殊的结构。” “CUDA 是 NVIDIA 的 GPGPU 模型,它使用 C 语言为基础,可以直接以大多数人熟悉的 C 语言,写出在显示芯片上执行的程序,而不需要去转载 2013-09-30 23:12:31 · 7942 阅读 · 0 评论 -
CUDA和OpenCL
源地址:http://www.qingran.net/2011/07/cuda%e5%92%8copencl/作者:夏清然虽然我们可以使用已有的图形API来调用GPU,但是通过前文的分析,这个过程冗长且复杂。严重违反了程序员的优雅、和lazy原则。需要去学习图形学的一些知识,了解texture、shader等图形学专用概念,而且需要学习CGSL或者HLSL等shader着色语言。而且还要熟悉Ope转载 2013-09-30 23:22:56 · 2960 阅读 · 0 评论 -
CUDA和OpenCV实现的图像GAMMA变换
一个很简单的CUDA程序,适合刚刚接触CUDA的人了解CUDA的工作原理,以及与OpenCV结合的基本用法。#include #include #include #include #include "cutil_inline.h"#define GAMMA 0.4void runTest(int argc, char** argv);__global__ v转载 2013-09-30 23:30:04 · 3520 阅读 · 1 评论 -
CUDA 与 OpenCL 区别
根据网站资料,简单地汇编一下CUDA与OpenCL的区别。如有错误请指出。题外话: 美国Sandia国家实验室一项模拟测试证明:由于存储机制和内存带宽的限制,16核、32核甚至64核处理器对于超级计算机来说,不仅不能带来性能提升,甚至可能导致效率的大幅度下降。什么是OpenCL?是由苹果(Apple)公司发起,业界众多著名厂商共同制作的面向异构系统通用目的并行编程的开放式、免费标准,也是一个统一的转载 2013-09-30 23:32:52 · 2670 阅读 · 0 评论 -
CUDA和OpenCL全解释
Khronos组织最近规范了OpenCL 1.0, OpenCL实际上是针对异构系统进行并行编程的一个全新的API,简单来说OpenCL它可以利用GPU,然后进行一些并行计算这方面的工作,这是API应用程序的编程接口,图形里面也有很多API,比如OpenGL那是针对图形的,OpenCL是针对并行计算的API。OpenCL开发人员可以利用GPU和CPU的计算能力,把GPU和CPU异构的系统运用在很多转载 2013-09-30 23:43:12 · 2335 阅读 · 0 评论 -
CUDA: 理解CUDA
1. 理解GPU为了提升运算能力,大家更喜欢用 “更多的、简单的计算单元”CPU解决的问题是Latency,每个任务最短能在多长时间内完成GPU解决的是ThroughPut,每个单位时间能解决多少任务GPU擅长高效的并发并行的执行大量的线程2. CUDA计算模型3. 典型的GPU程序CPU为GPU分配内存空间 CUDA MALLOCCPU拷贝输入数据 CPU->GPU CUDA m转载 2013-09-30 18:03:35 · 5415 阅读 · 0 评论 -
CUDA中的一些概念和提示
1.在用vs运行cuda的一些例子时,在编译阶段会报出很多警告: warning C4819 ...... 解决这个警告的方法是打开出现warning的文件,Ctrl+A全选,然后在文件菜单:file->Advanced save options,在弹出的选项中选择新的编码方式为:UNICODE- codepage 1200 ,点确定后重新编译。 为什么会出现这个警告呢?原因在于转载 2013-09-30 19:03:43 · 3625 阅读 · 0 评论 -
深入浅出谈CUDA
深入浅出谈CUDA2009-2-5 作者: he21he21 来源: he21he21关键字: CUDA NVIDIA CUDA是什么?能吃吗? 编者注:NVIDIA的GeFoce8800GTX发布后,它的通用计算架构CUDA经过一年多的推广后,现在已经在有相当多的论文发表,在商业应用软件等方面也初步出现了视频编解码、金融、地质勘探、科学计算等领域的产品,是时候让我们对其作更深一步的了解。为转载 2013-09-30 23:04:11 · 2250 阅读 · 0 评论 -
CUDA实现 全局光照中辐射度(Radiosity)算法
http://blog.csdn.net/BugRunner/article/details/5366692 1. 简介辐射度算法是一种经典的全局光照算法,它可以解决光线跟踪等直接照明方法中所不能表现的真实世界中的照明现象问题。虽然渲染的结果表现力强,但是问题之一就是算法的耗费较大,由于其原理就是对各个多边形面片进行着色,而且常常需要较多的迭代次数才能达到比较理想的效果,因此算法原理虽然比较简单转载 2013-09-30 23:28:01 · 3697 阅读 · 0 评论 -
CUDA的OpenCV-2.3.x/OpenCV-2.4.x编译
版权声明:对于本博客所有原创文章,允许个人、教育和非商业目的使用,但务必保证文章的完整性且不作任何修改地以超链接形式注明原始作者、出处及本声明。 博客地址:http://blog.csdn.net/shuxiao9058 原始作者:季亚 前面,我们讲到了使用OpenCV-2.4.0在Visual Studio 2005/2008/2010常规编译的方法,本文则主要讲述如何使Ope转载 2013-09-30 23:35:54 · 2686 阅读 · 0 评论 -
CUDA下的GPU编程--线程和变量
CUDA的线程是多维的,启动一个线程格,线程格可以是多维的,线程格中分为线程块,线程块也可以是多维的,线程块中包含线程,对于GPU来说,同时启动200万个线程是很轻易的事情。blockIdx :当前执行设备代码的线程块的索引dim3 grid(DIM,DIM):声明一个二维的线程格,名字为grid;kernel>(dev_t):线程块为一个二维线程块,每个线程块有一个线程gridDim:保存线程格转载 2013-09-30 23:41:13 · 2246 阅读 · 0 评论 -
CUDA优化
1. memory coalescing,保证内存融合。因为global memory在CC为1.x上是按照half wrap进行访问读写的,而在2.x上是按照wrap进行访问读写的。在显存中,有多个存储器控制器,负责对显存的读写,因此,一定要注意存储器控制器的负载均衡问题。每一个存储器控制器所控制的那片显存中的地址空间称为一个分区。连续的256Byte数据位于同一个分区,相邻的另一组256Byt转载 2013-09-30 19:23:31 · 2316 阅读 · 0 评论 -
CUDA的Threading:Block和Grid设定
硬件基本架构 实际上在 nVidia 的 GPU 里,最基本的处理单元是所谓的 SP(Streaming Processor),而一颗 nVidia 的 GPU 里,会有非常多的 SP 可以同时做计算;而数个 SP 会在附加一些其他单元,一起组成一个 SM(Streaming Multiprocessor)。几个 SM 则会在组成所谓的 TPC(Texture Processing Cluste转载 2013-09-30 19:33:34 · 2360 阅读 · 0 评论 -
VS2010配置CUDA5.0
1.安装CUDAhttp://blog.csdn.net/mrzhufeng/article/details/91865152.VS创建控制台空项目Properties--->VC++ Directories 设置头文件目录和库目录Linker---->Input加入lib3.选择编译环境选中工程,Project--->Build Customization4.新建.cu文件选择CUDA C/C+转载 2013-09-30 19:37:37 · 2746 阅读 · 0 评论 -
CUDA开发环境配置大全
原文地址:http://cudazone.nvidia.cn/forum/forum.php?mod=viewthread&tid=3735一、操作系统:(1)windows操作系统:1.windows xp:(1) win32_xp_ CUDA3.0_VS2010_配置指南-DOC:http://cudabbs.it168.com/forum.php?mod=viewthread&t转载 2013-09-30 19:38:38 · 3424 阅读 · 0 评论 -
CUDA中__threadfence()的含义与理解
在CUDA里面,不同线程间的数据读写会彼此影响,这种影响的作用效果根据不同的线程组织单位和不同的读写对象是不同。在不考虑2.x的优化的情况下,(1)在同一个warp内的线程读写shared/global, 读写global和shared是立刻对本warp内的其他线程立刻可见的。(2)在同一个block内的不同warp内线程读写shared/global, 这种读写必须使用__syncthr转载 2013-09-30 19:40:41 · 3580 阅读 · 0 评论 -
CUDA之VS2010中配置CUDA5.0
原文地址:http://blog.csdn.net/diyoosjtu/article/details/84542531、安装之前必须确认自己电脑的GPU支持CUDA。在设备管理器中找到显示适配器(Display adapters),找到自己电脑的显卡型号,如果包含在http://www.nvidia.com/object/cuda_gpus.html的列表中,说明支持CUDA。安装CUDA之前最转载 2013-09-30 19:45:43 · 2046 阅读 · 0 评论 -
CUDA任意维度的矩阵相乘
__global__ void matrixMul( float* A, float* B, float* C, int hA,int wA, int wB){int bx = blockIdx.x;int by = blockIdx.y;int tx = threadIdx.x;int ty = threadIdx.y;float Csub = 0.0f;转载 2013-09-30 23:23:49 · 4685 阅读 · 0 评论 -
CUDA编程总结
Cuda编程总结2013-10-120:32:46--------余家奎 参加书籍:NVIDIACUDA C Programming GuideOpenGL编程指南 学习cuda例子中的总结1、__constant__和__device__,__shared__的使用说明...22、分配二位数组实现两个二位数组相加...23、用cudaMemcpyPitch和cudaMemcpy2D实现二位数组的转载 2013-10-08 14:52:32 · 6205 阅读 · 0 评论