电脑配置:windows7 sp1 64bit  + CUDA6.5 + GeForce GTX780 Ti

显卡中的GPU因为多核可以处理很多相同的操作,相比较来说cpu就像个健全的手,什么活都能干,而gpu就是个非健全的手,只能干特定的事情,但是架不住手多,随便几百上千的。

关于从cpu过渡到GPU推荐先看《大规模并行处理器编程实战》中前两章,其中有详细地 讲解人们从cpu关注到gpu的历史,开始是用来图形处理的gpu,而且当时如果想使用gpu也需要通过opengl转换自己的思想成为图形处理,然后才能交予gpu处理。自从nvidia公司发现了这一潜力,他们开发了cuda,使得不需要经过opengl的api也能使用gpu这种多核处理的优势。这本书第二章中也详细说明了关于gpu上的结构包括寄存器,局部共享内存,全局共享内存,只读内存等;本书的缺点就是没有从开头介绍如何架构一个项目,也就是没有介绍hello
world。

《GPU高性能编程CUDA实战》中说明了如何进行从cpu编程转移到gpu编程上的过程,不过还不是完全详细。本文参考这本书加上官方文档完。

首先: 1、登陆https://developer.nvidia.com/cuda-gpus 查看自己的显卡是否支持CUDA。

2、进入https://developer.nvidia.com/cuda-toolkit 下载cuda6.5,点进去之后记得注意系统、位数和是笔记本还是桌面版,我按照系统字节64位选择的是64位版本。

3、首先安装Visual studio(推荐10 12 13 三个版本),就像往常一样,装好就行。

4、卸载本计算机上的NVIDIA的驱动和任何文件,因为你下载的cuda 6.5中包含了这些,而且你之前通过例如驱动精灵安装的驱动有可能高于内部的版本。为了少麻烦,推荐先卸载驱动,然后安装cuda6.5.

5、在安装cuda6.5的时候会有三个路径选择,第一个默认就行,第二个因为默认的是programdata,是隐藏的 推荐修改成自己其他定义的路径,第三个默认就行。

6、经过5的安装和重启,它会自动进行环境设置和vs的配置,无需手动操作。如果步骤5中第一项是默认的,那么就能够在C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v6.5\doc下面找到html和pdf两个文件夹,没错这个pdf文件夹中就是包含的所有资料。

7、(可选)编译cuda6.5自带的例子,在上面步骤5中的第二个路径中(C:\Program Files\NVIDIA GPU Samples)有三个.sln,分别是vs10,vs12和vs13.这是全局部分,如果想单独编译,那就点击如各自的文件夹中选择.sln。

双击打开然后进行重新生成项目,接下来等着132个生成完成就行(我只成功了122个)。

按照步骤6中提示的pdf文件夹中的《CUDA_Getting_Started_Windows.pdf》中所述“A few of the example projects require some additional setup. The simpleD3D9 example requires the system to have a Direct3D SDK (June 2010 or later) installed and the Visual Compiling CUDA Programs www.nvidia.com NVIDIA
CUDA Getting Started Guide for Microsoft Windows C++ directory paths (located in Tools > Options...) properly configured” 也就解释了为什么之前只成功了122个。

因为编译器是在win32位下运行,所以生成的所有可执行文件在C:\Program Files\NVIDIA GPU Samples\bin\win32\Debug里面,也就是上图中的bin文件夹中。common文件夹暂时不管。

测试是否安装完成:cmd命令行进入\bin\win32\Debug文件夹下,运行deviceQuery.exe,显示计算机上的显卡设备等信息

结果是pass。然后运行bandwidthTest.exe

结果显示的是主机(tip:对于cuda来说,host就是cpu和电脑的内存,而device指的是gpu和显卡的显存)到设备和设备到主机以及设备到设备之间的通信带宽速度。

hello world

正常的新建新项目:

然后:,写项目名称,接着确定就行。

这时候会在解决方案资源管理器中有kernel.cu。对于cpp语言来说,扩展名就是.cpp,而对于cuda的来说,他的源文件就是.cu。

这个kernel.cu,暂时不需要,可以移除就行。

如上图所示,进行添加新建项。

扩展名为.cu。

成功。接下来就可以进行其他的代码编写了。因为cuda是为了最大程度的迎合c/cpp语言,使得对cuda的编程的不适应程度降到最小,从而很多语法上,你几乎都不知道这是个cuda编程。这方面在书籍《大规模并行处理器编程实战》有所提及,不过那书有些年头了,对于cuda这种快速发展的东西来说,只能看看,因为后来的cuda新的特性多了很多。

CUDA1-hello world的更多相关文章

  1. CUDA1.1-函数类型限定符与变量类型限定符

    这部分来自于<CUDA_C_Programming_Guide.pdf>,看完<GPU高性能变成CUDA实战>的第四章,觉得这本书还是很好的,是一种循序渐进式的书,值得看,而不 ...

  2. 我的第一个CUDA程序

    最近在学习CUDA框架,折腾了一个多月终于把CUDA安装完毕,现在终于跑通了自己的一个CUDA的Hello world程序,值得欣喜~ 首先,关于CUDA的初始化,代码和解释如下,这部分主要参考GXW ...

  3. CUDA 安装完成以后如何判断安装是否成功

    最近在家里过寒假,可能这是还在学校里带着最大的福利了,无意之中翻出了多年前买的几本关于CUDA编程的书,于是随便在自己电脑上配置了一下环境,试试能不能把当年没有看完的书给看完了,于是有了今天这个判断C ...

  4. FFmpeg新版本(2016年10月份以后) 支持硬件解码

    FFmpeg provides a subsystem for hardware acceleration. Hardware acceleration allows to use specific ...

  5. 离线配置Anaconda3+tensorflow-gpu1.4.0+cuda8.0+cudnn6.0

    1.首先下载anaconda3 ----从官网上下载Anaconda3-5.1.0-Linux-x86_64.sh 直接通过命令 bash Anaconda3-5.1.0-Linux-x86_64.s ...

  6. CUDA编程(二) CUDA初始化与核函数

    CUDA编程(二) CUDA初始化与核函数 CUDA初始化 在上一次中已经说过了,CUDA成功安装之后,新建一个project还是十分简单的,直接在新建项目的时候选择NVIDIA CUDA项目就能够了 ...

  7. VS2015 dlib编译 x64 Debug .lib生成

    VS2015 dlib编译 x64 Debug >------ 已启动生成: 项目: ZERO_CHECK, 配置: Debug x64 ------ > Checking Build S ...

随机推荐

  1. 验证位置时发生错误:“org.tigris.subversion.javahl.ClientException......

    验证位置时发生错 误:“org.tigris.subversion.javahl.ClientException: RA layer request failed svn: Server sent u ...

  2. IO流05--毕向东JAVA基础教程视频学习笔记

    Day20 10 创建java文件列表11 Properties简述12 Properties存取13 Properties存取配置文件14 Properties练习15 PrintWriter16 ...

  3. 用SQL语句建库建表建约束(用SQl语句在指定盘符创建文件夹)

    一 :创建数据库 创建一个数据文件和一个日志文件(MySchool) create database MySchoolon primary      --默认属于primary主文件组,可省略(--数 ...

  4. mysql / mysqld_safe / mysqld 常见错误处理

    1. FATAL ERROR: Could not find ./bin/my_print_defaults [root@localhost scripts]# ./mysql_install_db ...

  5. MFC MDI 主框架和标签页数据互操作

    ==================================声明================================== 本文原创,转载在正文中显要的注明作者和出处,并保证文章的完 ...

  6. x01.os.5: DOS 功能调用

    DOS 功能调用(INT 21)-------------------------------AH = 0-2E 适用 DOS 1.0 以上版本AH = 2F-57 适用 DOS 2.0 以上版本AH ...

  7. linux 中/proc 详解

    proc 文件系统 在Linux中有额外的机制可以为内核和内核模块将信息发送给进程-- /proc 文件系统.最初设计的目的是允许更方便的对进程信息进行访问(因此得名),现在它被每一个有有趣的东西报告 ...

  8. Linux mke2fs 硬盘格式化

    [root@whp6 ~]# cat /etc/filesystems ext4 ext3 ext2 nodev proc nodev devpts iso9660 vfat hfs hfsplus ...

  9. 【JAVA小结】字符串比较是否相等

    public class CompareObject1 { public static void main(String[] args) { String str1 = new String(&quo ...

  10. KVM 介绍(2):CPU 和内存虚拟化

    学习 KVM 的系列文章: (1)介绍和安装 (2)CPU 和 内存虚拟化 (3)I/O QEMU 全虚拟化和准虚拟化(Para-virtulizaiton) (4)I/O PCI/PCIe设备直接分 ...