用CUDA进行GPU加速开发的同学在移植一些代码片段时应该都有过这样的经历,如果自己用的是高版本的CUDA,系统有时会报错:CANNOT FIND CUTIL.H。查看代码才发现原来是多了CUTIL.H,CUTIL_MATH.H,CUTIL_INLINE.H的头文件。这种报错该如何处理呢?

  可以先尝试着注释掉这三个头文件,再运行一下,看看到底是哪里调用到。不出意外的话,系统弹出的error总是CUDA_SAFE_CALL。这也是CUTIL.H用的最多的地方。

  查阅NVIDIA技术文档,便可以对这个错误的前因后果有个详细的了解。NVIDIA公司在CUDA5之后便不再使用CUTIL.H,之前使用也只是开发示例代码的团队自用,并不具备在新版本中兼容的功能。CUTIL.H的包含着NV的工程师为了编写方便而使用的宏和函数。想要调用,可以下载CUTIL.H,将它放到CUDA的INCLUDE目录下即可。

  但我并不建议这么做。高版本的CUDA淘汰掉CUTIL.H是有自己理由的。那么,鉴于在使用老版本CUDA代码段时会经常碰到CUTIL.H,如何去做?

  首先是注释掉头文件中与CUTIL.H有关的内容。然后尝试编译发现出错的位置,一般会指出该头文件的内置宏和函数,然后用新版本中的函数替代即可。如CUDA_SAFE_CALL这一cudaMalloc()的保障机制,便可以用CUDA内联的枚举类型cudaError来替代。CUTIL.H中的函数在新版本中总有替代的东西,这一点不必担心。

  当然了,最后不要忘了在Makefile里把include里的-l 里的CUTIL X86去掉。

  在官方的编程指南里面提到自从CUDA 5.0以后cutil.h就已经被移除了。你可以在C:\ProgramData\NVIDIA Corporation\CUDA Samples\v6.5\common\inc里面的那些helper中找到你想要用的方法,谢谢。不过,如果你非想要这个头文件,也可以去网上单独下载下来。

关于CUDA5之后cutil.h不可用的问题的更多相关文章

  1. cutil.h问题

    CUDA5.0没有cutil.h头文件,貌似用helper_cuda.h文件代替,暂时没出问题.

  2. 【二】H.264/MPEG-4 Part 10 White Paper 翻译之 Prediction of Intra Macroblocks

    翻译版权所有,转载请注明出处~ xzrch@2018.09.14 ------------------------------------------------------------------- ...

  3. [Python] Ubuntu12.04LTS

    Ubuntu 12.04LTS中缺省安装了Python2.7.3. python -h 查看可用选项 python -V 查看Python版本 下面写个简单的测试程序: 新建HelloWorld.py ...

  4. HTML5学习总结-01 开发环境和历史

    1 搭建HTML5开发环境 1 安装一款支持HTML5的浏览器 FireFox, Chrome 2 开发工具 SublineText, Eclipse, HBuilder, WebStorm 注:使用 ...

  5. 转:从编译链接过程解析static函数的用法

    关于static函数的用法 就像我们熟知的那样,变量可以分全局的和局部的,函数也可以分全局的和局部的. 比如说,在一个工程的common.h中定义了一个全局变量 int test;那么在整个工程的作用 ...

  6. 【转】Samba配置文件详解

    一. 客户命令: 1. smbclient smbclient 命令用来存取远程 samba 服务器上的资源,它的界面到目前为止还是文本方式的,命令形式和 ftp 类似. smbclient 命令的语 ...

  7. PNG图片数据解析

    PNG是一种非常流行的图片格式,它不仅支持透明效果,而且图片数据经过了压缩处理,所以广泛用于web等应用. PNG的文件格式: PNG文件中的数据,总是以一个固定的8个字节开头: (图片来自http: ...

  8. IOS刷新数据

    在一个项目开发过程中为了更好的体验经常会用到下拉刷新更新数据,当然也伴随一些上拉加载更多数据的情况:当前比较火的EGOTableViewPullRefresh只实现了下拉功能,而没有上拉的功能.这里介 ...

  9. JS获取屏幕各种高

    <script language="javascript"> var h = ""; h += " 网页可见区域宽:"+ doc ...

随机推荐

  1. 长平狐 Android-x86虚拟机安装配置全攻略

    Android-x86虚拟机安装配置网上有很多,但是全部说明白的确不多,希望这篇文章能把主要的配置介绍给您,帮助您少走一些弯路. 本文分别针对VMWare和Virtual Box两种虚拟机介绍安装配置 ...

  2. js将map转换成数组

    /** * map转数组. * * @param {Map}map * map对象 * @return 数组 */ Share.map2Ary = function(map) { var list = ...

  3. HDU4862 Jump(放大边权的费用流)

    题目大概给一个n×m的格子,每个格子有一个一位数字,格子不能重复经过,最多进行这样的k次行走:每一次选择任意一个格子出发,可以从当前格子走到下面或右边格子,花费能量是曼哈顿距离-1,而如果起点和终点格 ...

  4. 翻译「C++ Rvalue References Explained」C++右值引用详解 Part6:Move语义和编译器优化

    本文为第六部分,目录请参阅概述部分:http://www.cnblogs.com/harrywong/p/cpp-rvalue-references-explained-introduction.ht ...

  5. 【自动化测试】Selenium excel操作

    http://www.cnblogs.com/lhj588/archive/2012/01/06/2314181.html http://blog.csdn.net/five3/article/det ...

  6. python 零散记录(四) 强调字典中的键值唯一性 字典的一些常用方法

    dict中键只有在值和类型完全相同的时候才视为一个键: mydict = {1:1,':1} #此时mydict[1] 与 mydict['1']是两个不同的键值 dict的一些常用方法: clear ...

  7. Android Animation学习 实现 IOS 滤镜退出动画

    IOS的用户体验做的很好,其中一点很重要的地方就是动画效果. 最近在学习Android的Animation,简单实现了一个IOS相机滤镜退出的动画: 布局文件:activity_animation_d ...

  8. Qt5程序开机自启动(windows)

    简介 window下开机启动最简单的实现方式就是在注册表中添加启动项目 添加位置有两个 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVer ...

  9. Android:关于服务的总结

    服务 startService(intent) stopService(intent) 服务的生命周期 如果采用start的方式开启服务 oncreate()--->onstartcommand ...

  10. SignalR的另类实现技巧

    很久之前发表过一篇名为<通过三个DEMO学会SignalR的三种实现方式>的文章,在那篇文章里面详细介绍了在WEB应用下的常用SignalR实现方法,而今天我们来利用SignalR来实现其 ...