I think I solved this issue. It popped up when I updated to CUDA11. I had to patch up
three functions dnn_fwd.c, dnn_gi.c, dnn_gw.c. I added the config option gcc.cxxflags=-DCUDAVERSION=11, then added checks in the
code. It's can use cleaning up. If someone wants, they can take this fix and check it in to the repo.
cheers, Paul
In dnn_fwd.c, I put in this check:
#if CUDAVERSION > 10
// PMB
#define CUDNN_CONVOLUTION_FWD_SPECIFY_WORKSPACE_LIMIT 2
int ret_alg_cnt;
cudnnConvolutionFwdAlgoPerf_t ta;
err = cudnnGetConvolutionForwardAlgorithm_v7(
params->handle, APPLY_SPECIFIC(input), APPLY_SPECIFIC(kerns),
desc, APPLY_SPECIFIC(output),
CUDNN_CONVOLUTION_FWD_SPECIFY_WORKSPACE_LIMIT, &ret_alg_cnt, &ta);
algo=ta.algo;
#else
err = cudnnGetConvolutionForwardAlgorithm(
params->handle, APPLY_SPECIFIC(input), APPLY_SPECIFIC(kerns),
desc, APPLY_SPECIFIC(output),
CUDNN_CONVOLUTION_FWD_SPECIFY_WORKSPACE_LIMIT, maxfree, &algo);
#endif
In dnn_gi.c, I put in this check:
#if CUDAVERSION > 10
int ret_alg_cnt;
cudnnConvolutionBwdDataAlgoPerf_t at;
#define CUDNN_CONVOLUTION_BWD_DATA_SPECIFY_WORKSPACE_LIMIT 2
err = cudnnGetConvolutionBackwardDataAlgorithm_v7(
params->handle, APPLY_SPECIFIC(kerns), APPLY_SPECIFIC(output),
desc, APPLY_SPECIFIC(input),
CUDNN_CONVOLUTION_BWD_DATA_SPECIFY_WORKSPACE_LIMIT,&ret_alg_cnt, &at);
algo=at.algo;
#else
err = cudnnGetConvolutionBackwardDataAlgorithm(
params->handle, APPLY_SPECIFIC(kerns), APPLY_SPECIFIC(output),
desc, APPLY_SPECIFIC(input),
CUDNN_CONVOLUTION_BWD_DATA_SPECIFY_WORKSPACE_LIMIT, maxfree, &algo);
#endif
In dnn_gw.c, I put in this check:
#if CUDAVERSION > 10
// PMB
#define CUDNN_CONVOLUTION_BWD_FILTER_SPECIFY_WORKSPACE_LIMIT 2
cudnnConvolutionBwdFilterAlgoPerf_t ta;
int alg_cnt;
err = cudnnGetConvolutionBackwardFilterAlgorithm_v7(
params->handle, APPLY_SPECIFIC(input), APPLY_SPECIFIC(output),
desc, APPLY_SPECIFIC(kerns),
CUDNN_CONVOLUTION_BWD_FILTER_SPECIFY_WORKSPACE_LIMIT, &alg_cnt, &ta);
algo=ta.algo;
#else
err = cudnnGetConvolutionBackwardFilterAlgorithm(
params->handle, APPLY_SPECIFIC(input), APPLY_SPECIFIC(output),
desc, APPLY_SPECIFIC(kerns),
CUDNN_CONVOLUTION_BWD_FILTER_SPECIFY_WORKSPACE_LIMIT, maxfree, &algo);
#endif