使用Visual Studio 2005 撰寫CUDA 程式

在前面一篇的《nVidia CUDA 简介》中,已经大概介绍过 CUDA 的概念了~接下来,大概来讲一下写 CUDA 程序的方法吧!不过这一篇,应该算是事前准备的前置工作部分就是了。而 Heresy 在这边,会用 Visual Studio 2005 来当作开发环境。

编译架构
由于 CUDA 有一部分是 C 语言的延伸,所以要编译 CUDA 的程序,还需要有 nVidia CUDA 的编译程序:nvcc。
而整个编译的流程,可以参考右图(本图参考 nVidia 在 Siggraph 2007 的 talk 的投影片绘制)。我们将包含 C/C++ 以及 CUDA 的程序写好之后,须要透过 nvcc 来进行编译;nvcc 会把 CUDA 的 GPU 程序的部分,转换成 PTX code,再经过数到手续,最后变成在 GPU 可以执行的程序。而 CPU 程序的部分,则会保留让 C/C++ 的编译程序来编译。不过,这一部分 Heresy 只是大概在概念上了解,实际运作的过程则比较不清楚。
在 CUDA 提供的 Sample 中,大部分的情形下,都会把 CUDA 的程序集中,写成一个(或数个)附档名是 .cu 的档案;而其他没有用到 CUDA 的部分,则还是写成 C++ 的 .cpp。而在编译的时候,就只会把 .cu 的档案丢给 CUDA 的 nvcc 进行编译,.cpp 的档案则仍然由 VS 的编译程序来处理。
而由于要另外指定一个 nvcc 在特定的档案,所以其实在 VisualStudio 的设定,就有一些小麻烦了~
 
 
官方建议:用 template 修改
以 nVidia 官方来说,是建议从 SDK 范例的 template 这个范例来做修改,这样就可以不用多费劲做其他设定了~
要这样做的话,他的说明文件是在「C:\Program Files\NVIDIA Corporation\NVIDIA CUDA SDK\doc\CUDA_SDK_release_notes_win32.txt」(根据安装设定不同,可能在不同地方)。这样的方法还算满简单的,步骤大概如下:
1. 将「NVIDIA CUDA SDK\projects\template」的内容,复制到自己的新项目目录下,假设项目名称是「myproject」。
2. 修改文件名成自己想要的。
3. 修改 *.sln 和 *.vcproj 以及程序文件,把所有的「template」用「myproject」取代。
到此,应该就算成功的把 template 改成 myproject 了;而应该会有 release, debug, emurelease, emudebug 四种建置的方法。其中,「emu」开头的,代表是用模拟的方法来执行的;也就是说,CUDA 会把 GPU 的程序也编译成 CPU 的程序,这样就可以用 Visual Studio 来设定断点或 debug 了!不过当然,速度也会非常的慢…
不过,nVidia 官方所有的 Sample Projects 都有使用到 SDK 提供的「CUda UTility Library」(cutil,位于「NVIDIA CUDA SDK\common」),所以直接根据上面的方法修改,可能会找不到 cutil 的路径。这时候,就要把项目里的「../../common/inc」、「../../common b」这两个 cutil 的相对路径做对硬的修改。另一个方法,就是不要使用 cutil~因为实际上,这也不是完全必须的;实际上,Heresy 就是采去「不使用 cutil」的方法。
而如果坚持想要开新项目来重头设定呢?最麻烦的部分,应该会是在编译规则的部分;在 nVidia 的 CUDA Forum <http://forums.nvidia.com/index.php?showforum=62> 中,有一些相关的讨论,有兴趣的可以参考《Simple CUDA build rule for Visual Studio 2005 <http://forums.nvidia.com/index.php?showtopic=30273>》这篇。不过 Heresy 自己在尝试了一段时间后,还是没有成功…最后还是放弃了。
 
语法的 highlight
由于 nVidia 建议 CUDA 程序的附文件名是用 .cu,所以虽然 CUDA 程序接近是基本的 C 语言,但是 VS 还是不会有语法解析的效果。而要让 .cu 的程序文件可以和 .c 或 .cpp 一样,有 highlight 效果的话,可以依照下面的步骤:
1. 首先,在 nVidia CUDA SDK 的安装目录(一般是在「C:\Program Files\NVIDIA Corporation\NVIDIA CUDA SDK」)的「\doc\syntax_highlighting」文件夹里,有一个 visual_studio_8 的文件夹;里面的 usertype.dat 这个档案,就是 nVidia 写好的语法文件。  
2. 找到 VS2005 的安装目录,一般是在「C:\Program Files\Microsoft Visual Studio 8」;然后,确认底下的「Common7\IDE」目录下,是否已经有 usertype.dat 这个档案。 有的话,可以把 nVidia 提供的档案内容附加到 VS 目录下的档案里;没有的话,直接复制一份过来就可以了。  
3. 开启 Visual Studio 2005,选择选单的「Tools」、「Options...」,展开左边的「Text Editor」那一项,并选择「File Extension」。接着,在右边的「Extension」的地方输入「cu」后,按下「Add」,并按下右脚的「ok」。  
4. 重新启动 Visual Studio 2005,就可以看到 .cu 的档案也有语法 highlight 了~
不过这样也只会有语法 highlight 的效果,其他像是自动完成、function 的折迭功能,仍然是没有的…
 

源自:<http://heresy.spaces.live.com/blog/cns%21E0070FB8ECF9015F%212760.entry>

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22785983/viewspace-619751/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/22785983/viewspace-619751/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值