无论如何,opencv使用cuda内存
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无论如何,opencv使用cuda内存相关的知识,希望对你有一定的参考价值。
我想用CUDA
知道我的代码有多快,所以我用下面的开关编译OpenCV
(包括cuda)
cmake CMAKE_BUILD_TYPE=RELEASE
CMAKE_INSTALL_PREFIX=/usr/local
WITH_CUDA=ON
ENABLE_FAST_MATH=1
CUDA_FAST_MATH=1
WITH_CUBLAS=1
INSTALL_PYTHON_EXAMPLES=OFF
OPENCV_EXTRA_MODULES_PATH=/home/saeed/opencv_contrib/modules
BUILD_EXAMPLES=OFF ..
我正在研究基于Linux的机器和我系统上的专用GPU,以便我如何测量opencv代码的gpu使用情况?我用它做了那个
$ nvidia-smi
命令,它给出了关于gpu使用等的一般信息(在bash
中)。
跟踪我使用的输出
$ watch -n 0.1 nvidia-smi
命令,每0.1秒更新一次信息(最少0.1秒)
所以我在opencv中有如下代码(你可以看到我不使用任何cuda函数)
#include "opencv2/core.hpp"
#include "opencv2/imgproc/imgproc.hpp"
using namespace cv;
int main()
{
cv::Mat src(1500,1500,CV_8UC3),res;
for (int var = 0; var < 70; ++var)
{
Canny(src,res,50,150,5);
}
}
因此,当我运行上面的代码时,我在nvidia-smi
页面中拍摄了一个屏幕截图(知道有多少gpu ram正在使用中)
正如你所看到的,有23架MiB正在使用中!所以为什么会发生这种情况!!如果我们能够阻止这种情况是正常的!如何阻止GPU解决这个问题
答案
您可以使CUDA运行时指示没有可用的GPU以及以下environment variable:
CUDA_VISIBLE_DEVICES="" ./my_opencv_code_that_wont_use_gpu
如果你希望OpenCV实际上不对GPU做任何事情,我最好的猜测就是在没有CUDA支持的情况下编译它:
cmake CMAKE_BUILD_TYPE=RELEASE
CMAKE_INSTALL_PREFIX=/usr/local
WITH_CUDA=ON ********MODIFY
ENABLE_FAST_MATH=1
CUDA_FAST_MATH=1 ********MODIFY
WITH_CUBLAS=1 ********MODIFY
INSTALL_PYTHON_EXAMPLES=OFF
OPENCV_EXTRA_MODULES_PATH=/home/saeed/opencv_contrib/modules
BUILD_EXAMPLES=OFF ..
以上是关于无论如何,opencv使用cuda内存的主要内容,如果未能解决你的问题,请参考以下文章