OpenCV(4.8.0) Error: Gpu API call (cuDNN did not return a suitable algorithm for convolution.)

1、现象描述

dnn::Net mNet;
vector<string> names = mNet.getUnconnectedOutLayersNames();
vector<cv::Mat> outMatVec;

try
{
mNet.forward(outMatVec, names);
}
catch (cv::Exception &e)
{
std::cout << "throw exception: " << e.what() << std::endl;
return -1;
}

使用ai推断,结果出现异常:

OpenCV(4.8.0) Error: Gpu API call (cuDNN did not return a suitable algorithm for convolution.) in cv::dnn::cuda4dnn::csl::cudnn::ConvolutionAlgorithm<struct __half>::ConvolutionAlgorithm, file D:\opencv_cmake\opencv-4.8.0\modules\dnn\src\cuda4dnn\csl\cudnn/convolution.hpp, line 303
doDetect fail: OpenCV(4.8.0) D:\opencv_cmake\opencv-4.8.0\modules\dnn\src\cuda4dnn\csl\cudnn/convolution.hpp:303: error: (-217:Gpu API call) cuDNN did not return a suitable algorithm for convolution. in function 'cv::dnn::cuda4dnn::csl::cudnn::ConvolutionAlgorithm<struct __half>::ConvolutionAlgorithm'
 

2、原因分析

在windows任务管理器可以查看,发现是专用GPU内存占满了。即显卡的内存耗尽了。

3、解决办法

减少线程数目,减少ai并行调用函数forward的频次。

猜你喜欢

转载自blog.csdn.net/libaineu2004/article/details/132248798
今日推荐