兼容性#
cuDNN API 兼容性#
cuDNN API 兼容性 指的是 cuDNN 与针对其他 cuDNN 版本构建的应用程序之间的向前和向后兼容性。
从 cuDNN 7 开始,补丁版本和次要版本的二进制兼容性维护如下
任何补丁版本 x.y.z 都与针对另一个 cuDNN 补丁版本 x.y.w 构建的应用程序向前或向后兼容(意味着,具有相同的主版本号和次版本号,但 w!=z)。
cuDNN 次要版本与针对相同或更早次要版本构建的应用程序二进制向后兼容(意味着,cuDNN x.y 与针对 cuDNN x.z 构建的应用程序二进制兼容,其中 z<=y)。
针对 cuDNN 版本 x.z 构建的应用程序不保证可以与 z>y 时的 x.y 版本一起使用。
API 兼容性不能保证跨 cuDNN 的主要版本。换句话说,针对 cuDNN 版本 y.x 构建的应用程序不保证可以与 y != z 时的 cuDNN 版本 z.x 一起使用。
向前兼容性和旧版 API#
如今,大多数旧版 API 都是向前兼容的。例如,以下常用的旧版 API 例程是向前兼容的
张量变换
RNN(循环神经网络)
批量归一化
以下是尚未向前兼容的旧版 API 例程的详尽列表。所有其他旧版 API 用法都是向前兼容的。
融合
cudnnFusedOpsExecute(),对于
cudnnFusedOps_t ops
参数,具有以下值
CUDNN_FUSED_SCALE_BIAS_ACTIVATION_CONV_BNSTATS
CUDNN_FUSED_BN_FINALIZE_STATISTICS_TRAINING
CUDNN_FUSED_BN_FINALIZE_STATISTICS_INFERENCE
CUDNN_FUSED_SCALE_BIAS_ADD_ACTIVATION_GEN_BITMASK
CUDNN_FUSED_DACTIVATION_FORK_DBATCHNORM
还值得注意的是,虽然旧版 API 的某些部分已被弃用,但这不会影响向前兼容性。以上列表是旧版 API 中不向前兼容的内容的真实来源。