从不推荐使用的 cudnn 函数转换为工作函数
converting from deprecated cudnn functions to working ones
我需要 运行 一个包含已弃用的 cudnn 函数(cudnnGetConvolutionForwardAlgorithm'、cudnnGetConvolutionBackwardFilterAlgorithm'、'cudnnGetConvolutionBackwardDataAlgorithm')的存储库。我现在在cudnn8.0.
我知道这些函数有工作版本:cudnnGetConvolutionForwardAlgorithm_v7、cudnnGetConvolutionBackwardFilterAlgorithm_v7 等,但它们的参数 + return 类型发生了变化。
关于如何从弃用版本转换为工作版本,您有什么建议吗?
我不会转换为 _v7 函数,因为在 CUDNN 库的未来版本中完全删除对它的支持时,您将不得不再次转换它。我倾向于使用 cudnnFind... 函数,其详细信息在 cuDNN API Reference 中。由于他们实际测试了可能使用的算法并告诉您最快的算法,因此与启发式算法(用于 cudnnGet...)相比,它们可能会给您的网络带来更好的性能,后者只会 可能 [=14= 】 给你最快的。创建网络时调用 cudnnFind... 会产生额外的计算成本,但不会 运行 它。我还没有完成测试,看看它需要多少额外的时间,但我无法想象它有什么值得注意的。
我需要 运行 一个包含已弃用的 cudnn 函数(cudnnGetConvolutionForwardAlgorithm'、cudnnGetConvolutionBackwardFilterAlgorithm'、'cudnnGetConvolutionBackwardDataAlgorithm')的存储库。我现在在cudnn8.0.
我知道这些函数有工作版本:cudnnGetConvolutionForwardAlgorithm_v7、cudnnGetConvolutionBackwardFilterAlgorithm_v7 等,但它们的参数 + return 类型发生了变化。
关于如何从弃用版本转换为工作版本,您有什么建议吗?
我不会转换为 _v7 函数,因为在 CUDNN 库的未来版本中完全删除对它的支持时,您将不得不再次转换它。我倾向于使用 cudnnFind... 函数,其详细信息在 cuDNN API Reference 中。由于他们实际测试了可能使用的算法并告诉您最快的算法,因此与启发式算法(用于 cudnnGet...)相比,它们可能会给您的网络带来更好的性能,后者只会 可能 [=14= 】 给你最快的。创建网络时调用 cudnnFind... 会产生额外的计算成本,但不会 运行 它。我还没有完成测试,看看它需要多少额外的时间,但我无法想象它有什么值得注意的。