1 / 24
文档名称:

CUDA编程入门.doc

格式:doc   页数:24页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

CUDA编程入门.doc

上传人:xxj16588 2016/6/1 文件大小:0 KB

下载得到文件列表

CUDA编程入门.doc

相关文档

文档介绍

文档介绍:CUDA 编程入门 1. CUDA 简介 GPU 是图形处理单元(Graphic Processing Unit) 的简称,最初主要用于图形渲染。自九十年代开始, GPU 的发展产生了较大的变化, NVIDIA 、 AMD(ATI) 等 GPU 生产商敏锐的观察到 GPU 天生的并行性,经过他们对硬件和软件的改进, GPU 的可编程能力不断提高, GPU 通用计算应运而生。由于 GPU 具有比 CPU 强大的计算能力, 为科学计算的应用提供了新的选择。最早的 GPU 的开发直接使用了图形学的 API , 将任务映射成纹理的渲染过程,使用汇编或者高级着色器语言 Cg, HLSL 等编写程序,然后通过图形学 API 执行( Direct3D 和 OpenGL ),这样的开发不仅难度较大, 而且难以优化, 对开发人员的要求非常高, 因此, 传统的 GPU 计算并没有广泛应用。 2007 年6 月, NVIDIA 公司推出了 pute Unified Device Architecture) , CUDA 不需要借助图形学 API ,而是采用了类 C 语言进行开发。同时, CUDA 采用了统一处理架构,降低了编程的难度, 使得 NVIDIA 相比 AMD/ATI 后来居上。相比 AMD 的 GPU , NVIDIA GPU 引入了片内共享存储器,提高了效率。这两项改进使 CUDA 架构更加适合进行 GPU 通用计算。由于这些特性, CUDA 推出后迅速发展,被应用于石油勘测、天文计算、流体力学模拟、分子动力学仿真、生物计算、图像处理、音视频编解码等领域。由于采用的是 C/C++ 编译器为前端,以 C/C++ 语法为基础设计,因此对熟悉 C 系列语言的程序员来说, CUDA 的语法比较容易掌握。 CUD A 只对 ANSI C 进行了最小的必要扩展,以实现其关键特性-- 线程按照两个层次进行组织、共享存储器和栅栏同步。这些关键特性使得 CUDA 拥有了两个层次的并行:线程级并行实现的细粒度数据并行,和任务级并行实现的粗粒度并行。 2. linux 下 CUDA 开发环境构建前一节已经简单了说了一下 CUDA, 为了能够使用 CUDA 开放,这一节将说明怎样构建 CUDA 开发环境。本节讲解在 4 操作系统和 gcc 前端的基础上安装 CUD A 开发环境。首先,要保证自己机器上的 gcc 能够使用,因为 ubuntu 缺少 gcc 的一些包和 g++ , 所以这些得自己安装。安装命令:sudo apt-get install g++ ,待其完成后,弄个 C 代码试试看; 当然你得保证你的显卡支持 CUDA 。其次,到 nVidia 官方网站(ect/.html) 上下载对应操作系统的驱动(driver) 和工具包(toolkit) 。再次,转换到控制台,命令为 Ctrl+Alt+F1/F2/F3/F4 ,关掉 gdm ,命令为: sudo /etc/ stop ,要确定已经关闭,否则在安装时会提示你有x server 程序在运行。再次, 进入 driver 和 toolkit 目录, 执行安装命令, 为了方便, 请一定按照默认安装。然后, 文件或者/etc/profile 文件, 在其中加入命令: PATH=${PATH}:/usr/local/cuda/bin/ export PATH , LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/cuda/lib export LD_LIBRARY_PATH ,保存后执行 source .bashrc 或者/etc/profile ,依据你添加 PATH 和 LD_LIBRARY_PATH 时修改了那个文件确定。最后执行 命令,看看,如果提示你没有输入文件,就安装完成了。如果你要安装 SDK 的话, 还得安装一些包,依据 mak e 时的提示, googl e 和新力得应该可以搞定一切,现在你可以享受 CUDA 了! 3. CUDA 架构本来一直都想把自己对CUDA架构的理解写出来, 但是一方面自己是个懒人, 不太愿意动笔, 另一方面又感觉不太好组织语言, 今天终于借着这个第四期有奖讨论的机会,把我对 CUDA 架构的理解写下来吧! 至于题目中提到的有人将 CUDA 架构和 x86 的一样理解,这一定是错误的,如果说把 GPU 的架构和 x86 架构类比,这还有点道理。要理解 CUDA 架构, 个人认为应当先理解 CUDA , CUDA pute unit device architecture 的简称, 它统一了 NVIDIA 用于通用计算的 GPU 的编程模式, 同时引入的共