无法使用 opencv cuda 调用
Unable to use opencv cuda calls
在我的tk1板上全新安装jetpack后,我发现自己无法使用opencv的GPU调用。我正在使用 opencv 2.4.12
OpenCV Error: Gpu API call (CUDA driver version is insufficient for CUDA runtime version) in copy, file /hdd/buildbot/slave_jetson_tx_2/35-O4T-L4T-Jetson-L/opencv/modules/dynamicuda/include/opencv2/dynamicuda/dynamicuda.hpp, line 877
Error: /hdd/buildbot/slave_jetson_tx_2/35-O4T-L4T-Jetson-L/opencv/modules/dynamicuda/include/opencv2/dynamicuda/dynamicuda.hpp:877: error: (-217) CUDA driver version is insufficient for CUDA runtime version in function copy
这是 nvcc -V 的输出
ubuntu@tegra-ubuntu:~$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2014 NVIDIA Corporation
Built on Wed_Nov_12_15:57:57_CST_2014
Cuda compilation tools, release 6.5, V6.5.30
.巴什尔克
# Add CUDA bin & library paths:
export PATH=/usr/local/cuda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
# Add CUDA bin & library paths:
export PATH=/usr/local/cuda/bin:/usr/local/cuda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
export LD_LIBRARY_PATH=/usr/local/cuda/lib:
注意:我在安装之前安装了 cuda 7.0,没有安装它,我只是用 6.5 安装了 deb 文件。nvcc -V 显示我使用的是 6.5,但它可能仍在使用 7.0 吗?
这是我正在尝试编译的内容和我使用的编译命令
g++ `pkg-config --cflags opencv` Fix.cpp -o Saliency `pkg-config --libs opencv`
#include <iostream>
#include "opencv2/opencv.hpp"
#include "opencv2/gpu/gpu.hpp"
int main (int argc, char* argv[])
{
try
{
cv::Mat src_host = cv::imread("file.png", CV_LOAD_IMAGE_GRAYSCALE);
cv::gpu::GpuMat dst, src;
src.upload(src_host);
cv::gpu::threshold(src, dst, 128.0, 255.0, CV_THRESH_BINARY);
cv::Mat result_host(dst);
cv::imshow("Result", result_host);
cv::waitKey();
}
catch(const cv::Exception& ex)
{
std::cout << "Error: " << ex.what() << std::endl;
}
return 0;
}
添加 CW 答案以将其从未回答列表中删除。 根据OP的评论,这个建议似乎导致了一个解决方案:
"CUDA 驱动程序版本不足以满足 CUDA 运行时版本"的意思就是它所说的。您的环境不匹配。
我的猜测是,当你安装了更新的 CUDA 工具包版本(比如 7.0)时,你构建了你的 OpenCV,然后当你安装了喷气背包时,事情恢复了(CUDA 驱动程序、CUDA 运行时、CUDA 工具包)到有效的 6.5 版本。这意味着任何针对 CUDA 7.0 构建的库(例如 OpenCV 库)都不再可用。
我的猜测是,您需要针对当前环境重建OpenCV。
相关文章:
- 如何用g++从OpenACC C++代码中调用cuda库
- 编译为 cuda 内核调用提供了"expression must have integral or unscoped enum type"
- 从结构启动 Cuda 调用
- CudaError未知代码= 30在任何cuda调用上
- 是否可以从 CUDA 10.1 内核调用 cuBLAS 或 cuBLASLt 函数?
- 推力(cuda)错误:无法使用给定参数列表调用函数
- 验证调用 cuda 内核的次数
- cuda 内核调用/传递参数中的编译错误
- 在 CUDA 中,Nsight 不会在时间轴中显示 cuInit(0) 调用
- CUDA OPENCV CVTCOLOR调用不会将图像转换为不同的格式
- 通过复制将对象传递给 CUDA 内核会调用其析构函数并过早释放内存
- 调用 Cuda/推力中所有组合的函子
- CUDA 未知错误后 cuBLAS 调用
- 为什么调用 CUDA 内核函数时这个类成员变量没有改变
- 运行并发的CUDA内核,从C 包装器功能调用
- 用嵌套调用CUDA :: thrust functors作为zip_iterator操作的函数
- CUDA 调用在析构函数中失败
- 无法使用 opencv cuda 调用
- OpenCL或CUDA调用的开销
- CUDA调用设备功能从单独的文件(名称混淆?)