opencv 编译cuda版本 error: “cudaUnbindTexture“ is undefined cuda_compile_1_generated_gpu_mat.cu.o

这篇具有很好参考价值的文章主要介绍了opencv 编译cuda版本 error: “cudaUnbindTexture“ is undefined cuda_compile_1_generated_gpu_mat.cu.o。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

完整报错

/var/docker/opencv-4.5.0/opencv_contrib-4.5.0/modules/cudev/include/opencv2/cudev/ptr2d/texture.hpp(61): error: texture is not a template

/var/docker/opencv-4.5.0/opencv_contrib-4.5.0/modules/cudev/include/opencv2/cudev/ptr2d/texture.hpp(83): error: identifier "cudaUnbindTexture" is undefined

/var/docker/opencv-4.5.0/modules/core/include/opencv2/core/cuda/common.hpp(99): error: identifier "textureReference" is undefined

[ 15%] Building C object 3rdparty/libwebp/CMakeFiles/libwebp.dir/src/dsp/upsampling_sse41.c.o
3 errors detected in the compilation of "/var/docker/opencv-4.5.0/modules/core/src/cuda/gpu_mat.cu".
CMake Error at cuda_compile_1_generated_gpu_mat.cu.o.RELEASE.cmake:282 (message):
  Error generating file
  /var/docker/opencv-4.5.0/build/modules/core/CMakeFiles/cuda_compile_1.dir/src/cuda/./cuda_compile_1_generated_gpu_mat.cu.o

make[2]: *** [modules/core/CMakeFiles/opencv_core.dir/build.make:77: modules/core/CMakeFiles/cuda_compile_1.dir/src/cuda/cuda_compile_1_generated_gpu_mat.cu.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:4078: modules/core/CMakeFiles/opencv_core.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....

问题根因

这是由于cuda的版本问题造成的,下面介绍方案

解决方案1 

 如果你的cuda版本是11.x,在opencv 4.5.0的项目根目录的CMakelists.txt的开头加一句

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_FORCE_INLINES")

参考:Ubuntu16.05+CUDA8下编译OpenCV错误 [...cuda_compile_generated_gpu_mat.cu.o] Error 1

没有验证过,如果有同学验证过,并成功了。希望在评论区积极反馈

解决方案2 

如果你的cuda版本是12.x,提供两个选择

  1. 要么选择降级cuda为11.x,而继续编译opencv4.5.0
  2. 要么选择升级opencv为4.8.0版本(亲测有效),而继续使用cuda12.x

参考:Build OpenCV with CUDA 12, undefined identifiers cudaUnbindTexture, textureReference

源文划重点:

CUDA 12.0 dropped support for legacy texture references. Therefore, any code that uses legacy texture references can no longer be properly compiled with CUDA 12.0 or beyond.

Legacy texture reference usage has been deprecated for some time now.

As indicated in the comments, by reverting to CUDA 11.x where legacy texture references are still supported (albeit deprecated) you won't run into this issue.

The other option may happen some day when OpenCV converts usage of legacy texture references to texture object methods. In that case, it may then be possible to use CUDA 12.0 or a newer CUDA toolkit to compile OpenCV/CUDA functionality.

There is no work around to somehow allow texture reference usage to be compiled properly with CUDA 12.0 and beyond.

Likewise, this limitation is not unique or specific to OpenCV. Any CUDA code that uses texture references can no longer be compiled properly with CUDA 12.0 and beyond. The options are to refactor that code with texture object usage instead, or revert to a previous CUDA toolkit that still has the deprecated support for texture reference usage.

 源文重点处翻译

CUDA 12.0 放弃了对旧纹理引用的支持。 因此,任何使用旧版纹理引用的代码都无法再使用 CUDA 12.0 或更高版本正确编译。

旧版纹理参考用法已被弃用一段时间了。

如评论中所示,通过恢复到仍支持旧纹理引用(尽管已弃用)的 CUDA 11.x,您将不会遇到此问题。

当 OpenCV 将旧纹理引用的使用转换为纹理对象方法时,有一天可能会出现另一种选择。 在这种情况下,可以使用 CUDA 12.0 或更新的 CUDA 工具包来编译 OpenCV/CUDA 功能。

没有解决方法可以以某种方式允许使用 CUDA 12.0 及更高版本正确编译纹理参考使用。

同样,这个限制并不是 OpenCV 独有的或特定的。 任何使用纹理引用的 CUDA 代码都无法再使用 CUDA 12.0 及更高版本正确编译。 这些选项是使用纹理对象使用来重构该代码,或者恢复到以前的 CUDA 工具包,该工具包仍然具有对纹理引用使用的已弃用支持

希望各位同学,能在评论区多多交流,相互避坑。

关于在编译opencv的其它问题,多是一些文件下载问题,网上有很多可以参考的地方,在此处就不再赘述。文章来源地址https://www.toymoban.com/news/detail-832123.html

到了这里,关于opencv 编译cuda版本 error: “cudaUnbindTexture“ is undefined cuda_compile_1_generated_gpu_mat.cu.o的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 解决Cmake编译 OPENCV_DNN_CUDA 报错: CMake Error at modules/dnn/CMakeLists.txt:39.

    首先,在camke编译过程中,不仅仅需要看报错的error部分,往上滑动会看见一行信息: 如果你没有装Cudnn,那么装上Cudnn再试试。注意,安装版本最低是7.5! 如果你装了7.5及以上版本还是会报错和有上面这行信息,请注意,这可能是在Cudnn 8版本以后的问题! 原因是cudnn 8的版本

    2024年02月16日
    浏览(34)
  • 关于error: #20: identifier “XXXX“ is undefined缺失.h文件的问题

    起因是在写stm32串口配置的时候,报了这个错,goto也没用,稍微查了查了也没搜到答案,但大概知道是我缺那stm32f1xx_hal_uart.h那个文件,但又不知道怎么给他添进去,最后是科协学长帮我解决的,特此感谢 下图就是当时报的错 然后我就去\\\"stm32f1xx_hal_uart.c\\\"那看看,然后就打开

    2024年02月13日
    浏览(50)
  • keil报错:main.c(99): error: #20: identifier “xxx“ is undefined

    报错如下: main.c(116): main.c(116): error:  #20: identifier \\\"g_pol_par_linear\\\" is undefined main.c(99): error:  #20: identifier \\\"g_motor_sta_linear\\\" is undefined main Interpolation_Linear.c 我认为在主函数里引用了“Interpolation_Linear”的头文件,就包含了里面定义的变量。 但是会报错。 解决办法:在主函数加ex

    2024年02月07日
    浏览(37)
  • [Vue warn]: Error in render: “SyntaxError: “undefined“ is not valid JSON“

    这说明出现了undefined这个变量类型,比如JSON.parse()时候会出现,可以先尝试打印JSON.parse()括号中的内容是否是undefined,如果是,那问题的根源就找到了。 举例: 可以先判断一下 就不会报错了。

    2024年02月12日
    浏览(40)
  • Qt 编译纯c的C99的项目, error: undefined reference to `f()‘

    把Cpp的后缀该为C是什么样的 尝试引用一个奇门排盘的c程序,在git上找到的叫cqm, 然后总是报错 error: undefined reference to `f()\\\' 很是郁闷 于是新建了个项目试验一下,终于摸清了需要命名空间。 后来这么写就可以了 a.h  a.cpp (c文件不支持命名空间!) test.cpp 引用的cpp

    2024年02月07日
    浏览(40)
  • 【OpenCV】 OpenCV 源码编译并实现 CUDA 加速 (Windows)

    目录 1. 环境准备 1.1 软件环境 1. 2 源码下载 2. CMake编译项目 2.1 创建cmake项目 2.2 设置编译配置 2.3 解决异常 2.3.1 文件下载异常 2.3.2 解决CUDA版本异常 2.4 编译项目 3. Visual Studio 编译项目 4. 项目测试 5. 总结   OpenCV是一个基于Apache2.0许可(开源)发行的跨平台计算机视觉和机器

    2024年02月03日
    浏览(29)
  • OpenCV_CUDA_VS编译安装

    我这里是下载的OpenCV4.5.4,但是不知道到在vs里面build时一直报错,后面换了4.7.0的版本测试,安装成功。 Release OpenCV 4.5.4 · opencv/opencv · GitHub 这个里面有官方预编译好的OpenCV库,可以直接食用。 扩展包: https://github.com/opencv/opencv_contrib/releases/tag/4.5.4 这里cmake版本要求应该不是

    2024年02月09日
    浏览(36)
  • 调用OpenCV库出现: undefined reference to `xxxxx‘ 的解决办法(使用MinGW编译器)

    我的CMakeLists.txt如下: cpp代码如下: 因为我的c++程序采用mingw64编译,所以使用 之后,总是出现undefined reference to cv::Mat::Mat()等一系列的undefined reference to XXX 原因是没有正确链接到动态库。或者之前有安装其他版本的opencv 重新编译一份OpenCV的源码再使用 编译过程参考: https

    2024年02月05日
    浏览(51)
  • error: undefined reference to ‘cv::Mat::~Mat()‘解决AndroidStudio集成OpenVC出现的编译报错问题

    本来这种类型的博客不是笔者想写的,不过这个问题,笔者经过网上一番搜索却没有可用的解决方案,因此分享出来帮助大家填坑。 OpenCV官方的Android SDK在这里下载,集成方法就不多介绍了,可以看这两位博主的文章:  小小情意的​ Android 接入 OpenCV库的三种方式 ​  春末

    2024年02月07日
    浏览(33)
  • 自编译支持CUDA硬解的OPENCV和FFMPEG

    查阅opencv的官方文档,可看到有个cudacodec扩展,用他可方便的进行编解码。唯一麻烦的是需要自行编译opencv。 同时,为了考虑后续方便,顺手编译了FFMPEG,并将其与OPENCV绑定。 在之前的博文“鲲鹏主机+昇腾Atlas 300I Pro+龙蜥8.6 全国产化主机使用NPU推理YoloV5环境安装全过程”中

    2024年04月26日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包