首页 文章

无论如何,opencv使用cuda内存

提问于
浏览
0

我想用 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正在使用中!所以为什么会发生这种情况!!如果我们能够阻止这种情况是正常的! How to stop GPU for this problem

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   ..
    

相关问题