用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. 读写csv文件——考虑各种异常场景,源码

    CSV是以逗号间隔的文本文件,其文件以纯文本形式存储表格数据(数字和文本).在JAVA中可以通过输出文件流的方式将数据写入CSV文件,通过BufferedReader类去读该路径中的文件,使用read ...

  2. Java开篇

    首先致敬Java之父:JAMES GOSLING 一.什么是JDK,JRE,JVM?     1.JDK(Java Development Kit) Java开发工具包.        JDK = 开 ...

  3. 由上一个血案引发的关于property和attribute关系的思考

    boss说,学习要刨根问底. 好的,开刨. 一.property和attribute在英语里有什么区别 看似没有区别.但其实大神说: property是 物体本身自带属性,不能改变的(一旦改了就是另外 ...

  4. SQL server查找指定表的所有索引

    WITH tmp AS ( SELECT indexname = a.name , tablename = c.name , indexcolumns = d.name , a.indid FROM ...

  5. The difference between creating a string object constructor and assigning it directly

    字符串对象构造方法创建和直接赋值的区别? package com.itheima_02; /* * 通过构造方法创建的字符串对象和直接赋值方式创建的字符串对象有什么区别呢? * 通过构造方法创建字符串 ...

  6. 网页简单布局之结构与表现原则(HTML/CSS)

    结构 样式 行为真正的分离 前端初级人员会在页面上单纯的用各个div把相关内容独立开: 前端中级人员明白相关属性的设置会给元素带来什么改变,从而减少div的书写: 前端高级人员会以及其简单的和稳定的方 ...

  7. 安卓性能优化之清除Handler的Message和Runnable

    安卓性能优化之清除Handler的Message和Runnable Handler是由系统所提供的一种异步消息处理的常用方式,一般情况下不会发生内存泄露. 但既然是调优,当在A_Activity中使用 ...

  8. sqldataAdapter/dataset/datatable的使用

    public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Loa ...

  9. 产品从生到死的N宗罪

    写在前面 昨天晚上做了一个梦,大概就是跟CTO,PM在说着什么..现在回想起好像就是说产品怎么怎么的..:索性就吐槽下这几个项目生与死的N宗罪吧.. 特别提示: 本文为全方位吐槽型,前方多处具有针对性 ...

  10. HTML5新增的标签和属性归纳

    收集总结的HTML5的新特性,基本除了IE9以下都可以使用. HTML5语法 大部分延续了html的语法 不同之处:开头的 <!DOCTYPE html> <html lang=&q ...