http://blog.csdn.net/xsc_c/article/details/23470565
博主由于工作当中的需要,开始学习 GPU 上面的编程,主要涉及到的是基于 GPU 的深度学习方面的知识,鉴于之前没有接触过 GPU 编程,因此在这里特地学习一下 GPU 上面的编程。有志同道合的小伙伴,欢迎一起交流和学习,我的邮箱: caijinping220@gmail.com 。使用的是自己的老古董笔记本上面的 Geforce 103m 显卡,虽然显卡相对于现在主流的系列已经非常的弱,但是对于学习来说,还是可以用的。本系列博文也遵从由简单到复杂,记录自己学习的过程。
0. 目录
- GPU 编程入门到精通(一)之 CUDA 环境安装
- GPU 编程入门到精通(二)之 运行第一个程序
- GPU 编程入门到精通(三)之 第一个 GPU 程序
- GPU 编程入门到精通(四)之 GPU 程序优化
- GPU 编程入门到精通(五)之 GPU 程序优化进阶
1. CUDA-5.5 的新特性
-
—— 动态并行(Dynamic Parallelism):GPU 加速新算法
GPU 线程可以动态地衍生新线程,从而更好地适应数据流。
通过最大程度地简化与 GPU 的往来通信,动态并行技术可以大大简化并行编程,
让更多流行算法支持 GPU 加速,比如自适应网格加密、计算流体动力学等等。 -
—— GPU-Callable 库:支持第三方生态系统
新的 CUDA BLAS 库可以让开发人员为他们自己的 PU-Callable 库使用动态并行,
比如设计插件API、让其他人扩展其内核的功能性,部署 GPU Callback、自定义第三方 GPU-Callable 库的功能性。
对象链接(object linking)可将多个 CUDA 源文件编译成不同的对象文件,然后链接到更大的应用和库中,从而更简单、更高效地开发大型 GPU 应用。 -
—— GPUDirect 支持 RDMA (远程直接内存访问):消除系统内存瓶颈
GPUDirect 技术建立了 GPU 与其它 PCI-E 设备的直接通信,并支持网卡与 GPU 之间的 RDMA,还能大幅降低集群中GPU 节点间的 MPISendRecv 延迟、改进整体应用性能。 -
—— NVIDIA Nsight Eclipse Edition:快速简单地生成 GPU 代码
Linux、Mac OS X 平台上,NVIDIA Nsight Eclipse Edition 可以让开发人员在熟悉的 Eclipse IDE 环境内开发、调试和编译 GPU 应用,并自带 CUDA 编辑器和 CUDA 示例,可以更快地生成 CUDA 代码,还整合了专家级的分析系统,提供自动性能分析,以及修复代码中性能瓶颈的向导,还有语法高亮区分 GPU 代码和 CPU 代码。
2. 操作系统支持
CUDA 5 操作系统支持包括:Windows XP 台式机、Windows Vista/7/8 台式机和笔记本、Ubuntu 11.04/11.10、Fedora 16、Red Hat Enterprise Linux 5.x/6.x(后者仅限64位)、OpenSUSE 12.1(64位)、SUSE Server 11 SP1/SP2、Mac OS X。
3. 安装环境检测
3.1. 检测自己的电脑是否具备支持 CUDA 的 GPU
可以采用如下命令:
lspci | grep -i nvidia
通过运行上面的命令,得到如下结果:
01:00.0 VGA compatible controller: NVIDIA Corporation G98M [GeForce G 103M] (rev a1)
通过命令,获知我的笔记本是 GeForce G 103M 型号的 GPU
进入如下链接,查看自己 GPU 型号是否支持 CUDA。
官网链接
3.2. 下载安装包
进入后出现如下下载界面,现在已经出来 CUDA-6.5了,大家只要找到自己相应的安装包即可,这里视各自情况不同,自行选择。
我的系统是 ubuntu12.04 32位的,所以选择下载 Ubuntu 12.04 下面 32 位的 RUN 就可以了,600M+
4. CUDA-5.5 安装
4.1. 软件安装
安装 build-essential 安装包,以确保 cuda 及显卡驱动所需的 gcc 的安装
apt-get install build-essential
退出图形界面,进入控制台
/etc/init.d/lightdm stop
按【Ctrl】+【alt】+【F1】进入控制台界面,运行如下命令
sudo sh cuda_5.5.22_linux_32.run
在此过程中,一开始会出来一个文档,比较长,可以通过按下按键【q】退出文档,然后输入【accept】就可以安装,一直按确认,默认安装即可,中间会选择驱动文件目录等。
4.2. 环境变量配置
在 /etc/profile 下添加如下语句:
export PATH=$PATH:/usr/local/cuda-5.5/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-5.5/lib
通过运行如下命令,使得环境变量生效:
source /etc/profile
4.3. 退出控制台
启动 lightdm 服务
service lightdm start
5. 编译 Sample
直接运行 make 就可以编译 samples 里面的程序
随机找了一个例子运行如下: