尝试使用FFT卷积时不支持cuDNN状态

时间:2018-05-28 18:13:40

标签: cuda fft convolution cudnn

我正在尝试使用cuDNN库进行FFT卷积。当我使用Winograd卷积/选择最快卷积方法的cuDNN方法时,代码运行,但是当我尝试使用FFT卷积方法运行时,它不起作用。

我自己将前向方法设置为FFT卷积。

我检查了文件,我的输入是NCHW格式,这是FFT卷积所需要的。来自文档:

CUDNN_CONVOLUTION_FWD_ALGO_FFT
xDesc Format Support: NCHW HW-packed
yDesc Format Support: NCHW HW-packed

错误" CUDNN_STATUS_NOT_SUPPORTED"在cudnnGetConvolutionForwardWorkspaceSize函数调用期间发生。

当我使用FFT卷积VS best或Winograd时会发生什么导致此错误?

供参考我正在使用cuda 9.1,cuDNN 7.我在Ubuntu 16.04上使用以下命令进行编译:nvcc -arch = sm_35 -std = c ++ 11 -O2 -lcudnn FFT_cuDNN.cu -o conv {{1} }; ./conv TF.png

pkg-config --cflags --libs opencv

1 个答案:

答案 0 :(得分:1)

我从文档中得出结论:xDesc的特征映射高度+ 2 * convDesc的零填充高度必须等于256或更小xDesc的特征映射宽度+ 2 * convDesc的零填充宽度必须等于256或更小。

当我最初阅读时,我认为零填充高度意味着内核H-1,当它指的是总填充图像高度/宽度时。

我的图片太大了。如果我调整大小就行了,即:

cv::Mat inputBlob = blobFromImage(image, 1.0f, cv::Size(100,100), cv::Scalar(0,0,0));