CUDA1-hello world
电脑配置: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的更多相关文章
- CUDA1.1-函数类型限定符与变量类型限定符
这部分来自于<CUDA_C_Programming_Guide.pdf>,看完<GPU高性能变成CUDA实战>的第四章,觉得这本书还是很好的,是一种循序渐进式的书,值得看,而不 ...
- 我的第一个CUDA程序
最近在学习CUDA框架,折腾了一个多月终于把CUDA安装完毕,现在终于跑通了自己的一个CUDA的Hello world程序,值得欣喜~ 首先,关于CUDA的初始化,代码和解释如下,这部分主要参考GXW ...
- CUDA 安装完成以后如何判断安装是否成功
最近在家里过寒假,可能这是还在学校里带着最大的福利了,无意之中翻出了多年前买的几本关于CUDA编程的书,于是随便在自己电脑上配置了一下环境,试试能不能把当年没有看完的书给看完了,于是有了今天这个判断C ...
- FFmpeg新版本(2016年10月份以后) 支持硬件解码
FFmpeg provides a subsystem for hardware acceleration. Hardware acceleration allows to use specific ...
- 离线配置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 ...
- CUDA编程(二) CUDA初始化与核函数
CUDA编程(二) CUDA初始化与核函数 CUDA初始化 在上一次中已经说过了,CUDA成功安装之后,新建一个project还是十分简单的,直接在新建项目的时候选择NVIDIA CUDA项目就能够了 ...
- VS2015 dlib编译 x64 Debug .lib生成
VS2015 dlib编译 x64 Debug >------ 已启动生成: 项目: ZERO_CHECK, 配置: Debug x64 ------ > Checking Build S ...
随机推荐
- 测试必备技能系列1 :通过mysql命令进行脚本数据导入
老徐,分享测试项目中实际能解决问题的干货! 今日分享: 如何通过mysql命令行,导入mysql脚本文件数据? ----- 解决实际的问题: 工作过程中,经常需要导入mysql脚本文件 很多同 ...
- eclipse配置文件导出问题
关于eclipse配置文件导出问题 eclipse的默认配置一般不能满足我们的要求,我们一般会修改一些配置,如字体.背景颜色.快捷键及一些template等等,这样方便我们的开发.可是当我们新建一个工 ...
- 编写一个Car类,具有String类型的属性品牌,具有功能drive; 定义其子类Aodi和Benchi,具有属性:价格、型号;具有功能:变速; 定义主类E,在其main方法中分别创建Aodi和Benchi的对象并测试对象的特 性。
package com.hanqi.test; public class Car { //构造一个汽车的属性 private String name; //创建getter和setter方法 publ ...
- oracle学习笔记系列------oracle操作例子的专用表
CREATE TABLE dept( deptno ), dname ) , loc ) ) ; CREATE TABLE emp( empno ), ename ), job ), mgr ), h ...
- CSS实现自定义手型气泡提示
实现自定义的手型气泡提示 <html> <head> <meta charset="utf-8"> <title></titl ...
- x01.os.13: 文件系统
停了两天电,忽然得空闲.找来破吉他,已然不成弦. 丁丁当当敲,敲到电来到.为把时间捡,熬夜三四点. 从我的置顶随笔 x01.Lab.Download 中下载 x01.os.12.t ...
- linux下怎么查看ssh的用户登录日志
linux下登录日志在下面的目录里: cd /var/log 查看ssh用户的登录日志: less secure linux日志管理: 1. 日志简介 日志对于安全来说,非常重要,他记录了系统每天发生 ...
- 四、Android学习第四天——JAVA基础回顾(转)
(转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 四.Android学习第四天——JAVA基础回顾 这才学习Android的 ...
- Mysql中使用find_in_set函数查找字符串
mysql有个表的字段的存储是以逗号分隔的,如domain字段login.s01.yy.com,s01.yy.com,s02.yy.com.现在要查找s01.yy.com这个.我们用like查找好像不 ...
- background-position控制背景位置
提示:需要把 background-attachment 属性设置为 "fixed",才能保证该属性在 Firefox 和 Opera 中正常工作.