CUDA程序配置备忘

3 篇文章 0 订阅
1 篇文章 0 订阅

最近又捡起了CUDA,因为需要做一个任务,将某程序使用CUDA并行计算加快速度,希望能尽量达到实时性。CUDA的安装没有什么好讲,就是一路Next就可以。现在CUDA只有一个安装包,并且集成了Nsight,特别方便,不像CUDA 4,居然要安装3个包,烦死。

安装过后就开始对具体工程进行配置。如果直接新建一个CUDA的工程,那么很方便,貌似可以直接编译运行,新建的cu文件也包含一个简单的向量加法。但是很多时候我们是将CUDA与其他语言结合使用,因此需要在一个普通的CPP工程中添加CUDA配置。因此记录如下,以备自己日后参考(在VS2010环境下配置):

1、生成依赖项:

工程名右击,选择“生成依赖项”,在CUDA选项前打钩。

2、包含文件:

包含文件(include file)目录中添加CUDA安装目录的include文件位置。(可以直接设置环境变量,略过此步骤)

3、附加库目录:

同上。

4、附加依赖项:

在链接器->输入->附加依赖项中添加cudart.lib。

5、*.cu文件:

对于单个.cu文件,需要右击.cu文件名->属性->常规,检查其是否从生成项中排除、项类型是否为CUDA C/C++。

6、64 bit:

如果工程需要设置为64位,也有2个地方需要注意:工程名右击->属性->CUDA C/C++->Common->Target Machine Platform选项是否为64bit,以及配置管理器处设置是否为“x64”。

以上是我在配置CUDA工程时遇到的一些坑。大概将这些地方都检查一遍,CUDA程序运行起来是没有问题的。

以下是我遇到的一些其他坑,现在凭着回忆,写在这里用于备忘:

1、在一个程序中用到了__global__函数的递归,在编译时提醒出错(具体错误信息未能回忆起),大概错误信息是计算能力太低。在查询后发现,我的显卡计算能力为3.5,超过递归使用的最低限制,因此不是硬件的问题。后来在仔细对比Sample与我个人程序编译命令行时发现,有一个地方是不相同的:工程名右击->属性->CUDA C/C++->Device->Code Generation中,我的值为compute_20,sm_20,compute_35,sm_35.......而对应Sample中却缺少了compute_20,sm_20这一项。删除掉,编译成功。

我觉得是因为我个人程序配置是希望支持所有计算能力2.0以上的显卡的,但是核函数递归只能在3.5或以上显卡上能用。因此导致此错误。若猜测不正确,希望大牛给予指正。

待续。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值