CUDA学习日志:开发环境配置和学习资源

接触CUDA的时间并不长,最开始是在cuda-convnet的代码中接触CUDA代码,当时确实看的比较痛苦。最近得空,在图书馆借了本《GPU高性能编程 CUDA实战》来看看,同时也整理一些博客来加强学习效果。

Jeremy Lin

什么是CUDA

CUDA(Compute Unified Device Architecture)是由NVIDIA推出的并行计算平台和编程模型。它是一种专门为提高并行程序开发效率而设计的计算架构。在构建高性能应用程序时,CUDA架构能充分发挥GPU(Graphic Processing Unit)的强大计算能力。它包含了CUDA指令集架构以及GPU内部的并行计算引擎。开发人员可以使用C/C++语言来为CUDA架构编写程序。更多的介绍,可以参考NVIDIA的about page。


CUDA开发环境配置

在开始学习CUDA之前,我们需要先配置好CUDA的开发环境。我实验室电脑的系统是Windows8.1的,所以我下面配置的是Windows下的CUDA开发环境。


(1)第一步是确定电脑上是否装有支持CUDA的GPU。

你可以通过右击 我的电脑 -> 管理 -> 设备管理 -> 显示适配器 查看

CUDA学习日志:开发环境配置和学习资源_第1张图片

我电脑上这个GPU比较烂,是GeForce GT 620的,不过还好,它支持CUDA。

其他支持CUDA的GPU你可以通过NVIDIA的网站查看:https://developer.nvidia.com/cuda-gpus


(2)安装好GPU的设备驱动程序

NVIDIA提供了一些系统软件来实现应用程序与支持CUDA的硬件之间的通信。如果正确安装了NVIDIA GPU,那么在机器上将已经安装好了这些软件。要确保安装最新的驱动程序,可以访问:

http://www.nvidia.com/Download/index.aspx?lang=en-us

来选择与开发环境相符的驱动。

CUDA学习日志:开发环境配置和学习资源_第2张图片


(3)下载CUDA开发工具箱

在有了一款支持CUDA的GPU和相应的设备驱动程序后,就可以运行编译好的CUDA C代码。然而,如果你想要使用CUDA C为NVIDIA GPU开发代码,那么还需要其他一些软件。我们需要明白,CUDA C应用程序将在两个不同的处理器上执行计算,因此需要两个编译器。其中一个编译器为CPU编译代码,而另一个编译器为GPU编译代码。为CPU编译代码的编译器我们已经有了,机子上安装的是Visual Studio 2012,而编译GPU的编译器我们还需要自己安装。这个编译器就是CUDA Toolkit。

你可以从https://developer.nvidia.com/cuda-downloads下载到合适的CUDA Toolkit。




我下载的是cuda_6.5.14_windows_general_64.exe。安装过程就是傻瓜流程,一直next和OK就可以了。


(4)验证安装

这个很简单,在电脑上打开cmd.exe,然后键入nvcc -V 

CUDA学习日志:开发环境配置和学习资源_第3张图片

然后,改变路径进入CUDA Samples中运行deviceQuery.exe。在Windows 7、Windows 8.1中可能的路径是:

C:\ProgramData\NVIDIA Corporation\CUDA Samples\v6.5\bin\win32\Release

我的电脑上的路径是:

CUDA学习日志:开发环境配置和学习资源_第4张图片


运行结果如下所示:

CUDA学习日志:开发环境配置和学习资源_第5张图片


(5)新建CUDA程序

依次打开:Visual Studio -> 文件 -> 新建 -> 项目 -> NVIDIA -CUDA 6.5



CUDA学习日志:开发环境配置和学习资源_第6张图片


推荐学习资源:

[1] 官方:CUDA Education 地址

[2] 教材:Jason Sanders 《GPU高性能编程 CUDA实战》

[3] 课程:伊利诺伊大学 异构并行编程  地址

[4] 博客:从零开始学习《GPU高性能运算之CUDA》地址

[5] 博客:卜居,CUDA从入门到精通  地址 

[6] 其他:清华大学CUDA培训教程;CUDA教程;深入浅出谈CUDA;风辰的CUDA入门教程 打包下载


本文地址:http://blog.csdn.net/linj_m/article/details/41314763

更多资源请 关注博客:LinJM-机器视觉 微博:林建民-机器视觉


你可能感兴趣的:(CUDA,环境配置,windows8.1,LinJM)