CUDA和VC8的混合编译

http://blog.youkuaiyun.com/chinacodec/article/details/3865558


如果想建立一个完全使用CUDA的程序,那么下载http://sourceforge.net/projects/cudavswizard/这个就可以了,但是很多时候对于大型工程,主要还是以c或者cpp代码为主,只是在需要性能优化的地方使用CUDA代码,这个时候需要一点点小知识来实现CUDA和VC8的混合编译.步骤如下:

 

1)   在你的VC8工程下面添加规则文件. 在工程文件上右键选择 -> 自定义生成规则 -> 查找现有的 -> $(NVIDIA CUDA SDK)/common/Cuda.rules -> 把CUDA Build Rule前面的勾给勾上

 

2)   鼠标选中 CUDA Build Rule -> 修改规则文件 -> 修改生成规则 -> 修改"命令行"里面的内容, 最后面  把$(InputFileName)改成[inputs].

 

3)   添加你要使用的 *.cu 代码到你的工程, 在.cu文件上点右键 -> 属性, 一般你添加了规则后,会自动识别.cu文件,然后工具栏里面显示的是 CUDA Build Rule, 如果不是, 手工选择之.

 

     最后就可以重新编译你的工程了,不过你马上会遇到很多问题:首先是比如你的cuda函数名字叫做 foo,但是在C或者cpp代码中提示无法连接,我们需要如下操作:

 

4)   用写字板或者记事本打开cuda.rules文件,使用替换功能将所有 *.cu.obj 改成 *.obj

      做了这个修改以后,千万要注意不要有相同文件名的cu和cpp文件再同一个工程中.比如说,不能在一个工程中同时存在 foo.cpp 文件和 foo.cu 文件, 因为两者都会被编译成为 foo.obj, 这样就造成了冲突

 

5)   在你自己的工程中将.cu文件中的foo函数定义成  extern "C" void foo();

 

6)   在.c或者.cpp中要调用cuda函数的地方声明foo:  extern void foo();

 

7)   最后添加cuda库支持cudart.lib cutil32.lib 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值