cuDNN API 演化 (二)—— Deprecation 策略

本博客第一篇介绍了 cuDNN API 的演化规则。这一篇介绍它的 Deprecation 策略。

按照 cuDNN API 的演化规则,随着 cuDNN 版本的更新,同一个 API 会有越来越多带后缀的版本,会使得 cuDNN 臃肿、维护变得困难。因此,还需要 Deprecation 策略。所谓 Deprecation 策略,即演化过程中,对某些带后缀 API 舍弃的机制。

cuDNN 新版本会确保向后兼容两个版本。上篇以 cuDNN 从 v2 演化到 v4 为例,因此不涉及到 Deprecation 策略。在这一篇,进一步演化到 v5, 介绍 Deprecation 策略。

如上篇所述,从 v2 演化到 v4,某个 API cudnnMyName 在 cuDNN v4 有如下三个版本,分别为

  • _v2 修饰,即 cudnnMyName_v2, 以支持 v2 版本
  • _v3 修饰,即 cudnnMyName_v3, 以支持 v3 版本
  • 不带任何修饰,即 cudnnMyName, 功能与带 _v3 修饰的一样

那么演化到 v5 时,它们各自如何变化呢?记住,v5 版本只向后支持两个版本,即支持到 v3 。所以,该 API 三个版本有如下变化

  • 舍弃 _v2 修饰的版本
  • 由于 _v3 修饰的版本与不带修饰的版本功能相同。因此,舍弃带 _v3 修饰的版本、保留不带修饰的版本

此时,该 API 在 v5 中只有一个版本——不带任何修饰。从 v2 到 v5,该 API 的经过一系列演化,名字又变为原来的样子,但接口已经发生了变化。

最后,用 cuDNN 中一个实际的例子说明它的演化策略:cudnnSetConvolutionNdDescriptor 的演化。

v2 中,它的名字如下

  • cudnnSetConvolutionNdDescriptor

v3 中,它的接口发生变化,导致有如下两个版本

  • cudnnSetConvolutionNdDescriptor,对应 v2 中旧的版本
  • cudnnSetConvolutionNdDescriptor_v3,对应 v3 中新的版本

v4 中,有如下三个版本

  • cudnnSetConvolutionNdDescriptor_v2,对应 v2 中旧的版本
  • cudnnSetConvolutionNdDescriptor_v3,对应 v3 中新的版本
  • cudnnSetConvolutionNdDescriptor对应 v3 中新的版本

v5 中, Deprecation 起作用,只保留一个不带任何后缀修饰的版本

  • cudnnSetConvolutionNdDescriptor对应 v3 中新的版本

你可能感兴趣的:(cudnn)