zoukankan      html  css  js  c++  java
  • 关于CUDA5之后cutil.h不可用的问题

      用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:ProgramDataNVIDIA CorporationCUDA Samplesv6.5commoninc里面的那些helper中找到你想要用的方法,谢谢。不过,如果你非想要这个头文件,也可以去网上单独下载下来。

  • 相关阅读:
    Regular Expression Matching
    Palindrome Number
    String to Integer (atoi)
    Reverse Integer
    ZigZag Conversion
    Longest Palindromic Substring
    Add Two Numbers
    git 操作原理
    ES6学习之路2----变量的解构赋值
    ES6学习之路1----变量的声明
  • 原文地址:https://www.cnblogs.com/rainbow70626/p/8525847.html
Copyright © 2011-2022 走看看