我正在尝试使用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
答案 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));