CUDA与OpenCV关于CUDA_nppi_LIBRARY问题

ros-melodic默认需要OpenCV3.2,下载OpenCV3.2源码后,编译支持CUDA,会报错缺少CUDA_nppi_LIBRARY定义,系统CUDA是10.0。

这是由于CUDA9以后就去掉了nppi。在CUDA的lib目录下查找nppi,没有nppi.so。CUDA10中的nppi库为:

find_cuda_helper_libs(nppial)

find_cuda_helper_libs(nppicc)

find_cuda_helper_libs(nppicom)

find_cuda_helper_libs(nppidei)

find_cuda_helper_libs(nppif)

find_cuda_helper_libs(nppig)

find_cuda_helper_libs(nppim)

find_cuda_helper_libs(nppist)

find_cuda_helper_libs(nppisu)

find_cuda_helper_libs(nppitc)

1,在OpenCV3.2源码目录下的cmake文件夹中有FindCUDA.cmake文件,修改其中的内容,将所有设置nppi的地方替换成下面的:

nppial

nppicc

nppicom

nppidei

nppif

nppig

nppim

nppist

nppisu

nppitc

如:

unset(CUDA_nppial_LIBRARY CACHE)
unset(CUDA_nppicc_LIBRARY CACHE)
unset(CUDA_nppicom_LIBRARY CACHE)
unset(CUDA_nppidei_LIBRARY CACHE)
unset(CUDA_nppif_LIBRARY CACHE)
unset(CUDA_nppig_LIBRARY CACHE)
unset(CUDA_nppim_LIBRARY CACHE)
unset(CUDA_nppist_LIBRARY CACHE)
unset(CUDA_nppisu_LIBRARY CACHE)
unset(CUDA_nppitc_LIBRARY CACHE)

找到

if(CUDA_GENERATION STREQUAL "Fermi")

set(__cuda_arch_bin "2.0")
去掉这两行,并且找到
if(${CUDA_VERSION} VERSION_LESS "8.0")
    set(__cuda_arch_bin "2.0 3.0 3.5 3.7 5.0 5.2")
else()
    set(__cuda_arch_bin "2.0 3.0 3.5 3.7 5.0 5.2 6.0 6.1")
endif()
去掉2.0

set(__cuda_arch_bin "3.0 3.5 3.7 5.0 5.2 6.0 6.1")

2,opencv\modules\cudev\include\opencv2\cudev\common.hpp

加入#include <cuda_fp16.h>

3,在cmake编译参数中加上

-D CUDA_GENERATION=Kepler

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值