修改RNN CuDNN示例代码以使用CUDNN_DATA_INT8

时间:2018-08-27 18:24:46

标签: rnn cudnn

cudnn_samples_v7中的RNN示例(RNN_example.cu)设置为使用CUDNN_DATA_FLOAT。我想将其修改为使用CUDNN_DATA_INT8。当我全局进行此更改,编译并运行时,出现以下运行时错误:

$ ./RNN_int8 20 2 512 64 0
cuDNN Error: CUDNN_STATUS_NOT_SUPPORTED RNN_example_int8.cu 285
cuDNN Error: CUDNN_STATUS_NOT_SUPPORTED RNN_example_int8.cu 302
cuDNN Error: CUDNN_STATUS_BAD_PARAM RNN_example_int8.cu 309
cuDNN Error: CUDNN_STATUS_BAD_PARAM RNN_example_int8.cu 310
cuDNN Error: CUDNN_STATUS_NOT_SUPPORTED RNN_example_int8.cu 326
cuDNN Error: CUDNN_STATUS_NOT_SUPPORTED RNN_example_int8.cu 328
CUDA Error: out of memory RNN_example_int8.cu 330
cuDNN Error: CUDNN_STATUS_BAD_PARAM RNN_example_int8.cu 373
cuDNN Error: CUDNN_STATUS_BAD_PARAM RNN_example_int8.cu 402
cuDNN Error: CUDNN_STATUS_BAD_PARAM RNN_example_int8.cu 373
cuDNN Error: CUDNN_STATUS_BAD_PARAM RNN_example_int8.cu 402
cuDNN Error: CUDNN_STATUS_BAD_PARAM RNN_example_int8.cu 373
cuDNN Error: CUDNN_STATUS_BAD_PARAM RNN_example_int8.cu 402
cuDNN Error: CUDNN_STATUS_BAD_PARAM RNN_example_int8.cu 373
cuDNN Error: CUDNN_STATUS_BAD_PARAM RNN_example_int8.cu 402
cuDNN Error: CUDNN_STATUS_BAD_PARAM RNN_example_int8.cu 482
cuDNN Error: CUDNN_STATUS_BAD_PARAM RNN_example_int8.cu 516
cuDNN Error: CUDNN_STATUS_BAD_PARAM RNN_example_int8.cu 541

例如,第309行的错误正在运行以下代码:

cudnnErrCheck(cudnnSetFilterNdDescriptor(wDesc, CUDNN_DATA_INT8, CUDNN_TENSOR_NCHW, 3, dimW)); 

我怀疑格式类型(CUDNN_TENSOR_HCHW)对数据类型不正确-这是正确的假设吗?如果是这样,这里需要什么格式?

1 个答案:

答案 0 :(得分:1)

CuDNN当前不支持INT8 RNN,我们建议您使用FP16输入输出来获得比float更好的性能。如果您使用Volta,请确保打开CUDNN_TENSOR_OP_MATH以获得硬件加速。

所有受支持的cuDNN RNN的配置组合都可以在此处找到 https://docs.nvidia.com/deeplearning/sdk/cudnn-developer-guide/index.html#features-of-rnn-functions 让我们知道您是否还有其他问题!