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 ...
随机推荐
- bootstrap的编辑标记 angularjs input 弹出框
.html <div> {{instance.description}} <span class="glyphicon glyphicon-pencil btn-link& ...
- [20140928]创建连接到MySQL的连接服务器
首先要安装 mysql odbc 然后 odbc下创建DSN,并且要在系统DSN下. 最后执行 exec sp_addlinkedserver @server= 'XY', --这是链 ...
- 数据库模型设计——历史与版本设计
在企业数据库设计中,经常会遇到一个需求,就是希望把操作之前的数据保留下来,能够看到操作之前是什么数据,操作之后是什么数据.对于这种需求,我们可以使用保留历史数据或者使用版本来实现. 为了能够保留历史数 ...
- js 求时间差
var date1=new Date(); //开始时间 var date2=new Date(); //结束时间 var date3=date2.getTime()-date1.getTim ...
- 【故障处理】一次RAC故障处理过程
[故障处理]一次RAC故障处理过程 1.1 故障环境介绍 项目 source db db 类型 2节点RAC db version 11.2.0.1.0 db 存储 ASM OS版本及kernel版 ...
- 【密码】Oracle用户密码系列
[密码]Oracle用户密码系列 1.1 BLOG文档结构图 1.2 前言部分 1.2.1 导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识, ...
- MySQL 调优基础(五) Linux网络
1. TCP/IP模型 我们一般知道OSI的网络参考模型是分为7层:“应表会传网数物”——应用层,表示层,会话层,传输层,网络层,数据链路层,物理层.而实际的Linux网络层协议是参照了OSI标准,但 ...
- 数据库 SQL Server 到 MySQL 迁移方法总结
最近接手一起老项目数据库 SQL Server 到 MySQL 的迁移.因此迁移前进行了一些调查和总结.下面是一些 SQL Server 到 MySQL 的迁移方法. 1. 使用 SQLyog 迁移 ...
- hadoop2.6分布式部署时 livenodes等于1的原因
1.问题描述 在进行hadoop2.x版本的hdfs分布式部署时,遇到了一个奇怪的问题: 使用start-dfs.sh命令启动dfs之后,所有的datanode节点上均能看到datanode进程,然而 ...
- TCL校园招聘——软件开发工程师(java) 只招5个。。。
简介 TCL集团股份有限公司创立于1981年,是全球性规模经营的消费类电子企业集团之一,广州2010年亚运会合作伙伴,总部位于广东省惠州市仲恺高新区TCL科技大厦.旗下拥有TCL集团.TCL多媒体科技 ...