Каковы причины ошибки CUDNN_STATUS_BAD_PARAM при использовании cudnnSetConvolution2dDescriptor? - PullRequest
0 голосов
/ 20 апреля 2019

У меня cuda 10.1 , cudnn 7.5.0 , gpu равно nvidia 940mx .

    CHECK_CUDNN_ERROR(cudnnCreateConvolutionDescriptor(&convolutionDescriptor_));
    CHECK_CUDNN_ERROR(cudnnSetConvolution2dDescriptor(convolutionDescriptor_,
                                                      benchmarkInput.pad_h,
                                                      benchmarkInput.pad_w,
                                                      benchmarkInput.stride_h,
                                                      benchmarkInput.stride_w,
                                                      1,
                                                      1,
                                                      CUDNN_CONVOLUTION,
                                                      dataType));

cudnnSetConvolution2dDescriptor не работает с форматами данных int8, uint8, int32, int8x4, int8x32, uint8x4 и выбрасывает CUDNN_STATUS_BAD_PARAM .Но с float , half float , double работает правильно.

Я посмотрел документацию и там говорится о недопустимых значениях заполнения, шага, расширение и режим.Но это не источник проблемы.

Может быть, cudnn 7.5.0 не поддерживает форматы int8 и т.д.?

Полный код здесь

Входные значения сверток:

//W H   C   N   K   S(filter_W) R(filter_H) pad_w   pad_h   stride_w    stride_h    out_w   out_h   input_stride_w  input_stride_h  filter_stride_w filter_stride_h
56  56  256 16  64  1   1   0   0   1   1   56  56  1   1   1   1
56  56  256 32  64  1   1   0   0   1   1   56  56  1   1   1   1
56  56  256 64  64  1   1   0   0   1   1   56  56  1   1   1   1
56  56  256 16  128 1   1   0   0   1   1   56  56  1   1   1   1
56  56  256 32  128 1   1   0   0   1   1   56  56  1   1   1   1
56  56  256 64  128 1   1   0   0   1   1   56  56  1   1   1   1
...