无论如何,opencv使用cuda内存

问题描述 投票:0回答:1

我想用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正在使用中)

enter image description here

正如你所看到的,有23架MiB正在使用中!所以为什么会发生这种情况!!如果我们能够阻止这种情况是正常的!如何阻止GPU解决这个问题

c++ opencv cuda
1个回答
2
投票

您可以使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   ..
© www.soinside.com 2019 - 2024. All rights reserved.