【问题标题】:Modifying RNN CuDNN example code to use CUDNN_DATA_INT8修改 RNN CuDNN 示例代码以使用 CUDNN_DATA_INT8
【发布时间】:2018-08-27 18:24:46
【问题描述】:

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) 对于数据类型不正确 - 这是正确的假设吗?如果有,这里需要什么格式?

【问题讨论】:

  • 我建议提供minimal reproducible example。请参阅第 1 项here。除其他要求外,int8 还需要硬件中适当的底层支持。您可能还只想在 developer guide 中搜索 int8 的每个实例。
  • 我根据 CUDNN_STATUS_NOT_SUPPORTED 得出结论,这些 RNN 模型 API 调用不支持 CUDNN_DATA_INT8,尽管 Nvidia 文档没有规定任何此类限制。哦,如果只有 CuDNN 是开源的,那么我可以看看代码并确定。

标签: rnn cudnn


【解决方案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 如果您有任何其他问题,请告诉我们!

【讨论】:

  • @Y_X:不久前,我尝试修改该示例 (RNN_example.cu) 以使用 CUDNN_DATA_HALF,但遇到了很多问题。后来我发现了 CUDNN_TENSOR_OP_MATH 和 CUDNN_TENSOR_OP_MATH_ALLOW_CONVERSION 并尝试使用原始示例代码,但没有看到任何加速。
猜你喜欢
  • 1970-01-01
  • 2012-02-01
  • 1970-01-01
  • 2011-07-04
  • 2022-01-01
  • 2017-10-13
  • 1970-01-01
  • 2011-03-03
  • 1970-01-01
相关资源
最近更新 更多