Compatibility#

cuDNN API Compatibility#

cuDNN API compatibility refers to forward and backward compatibility of cuDNN with applications built against other versions of cuDNN.

Beginning in cuDNN 7, the binary compatibility of a patch and minor releases is maintained as follows:

  • Any patch release x.y.z is forward or backward-compatible with applications built against another cuDNN patch release x.y.w (meaning, of the same major and minor version number, but having w!=z).

  • cuDNN minor releases are binary backward-compatible with applications built against the same or earlier minor release (meaning, cuDNN x.y is binary compatible with an app built against cuDNN x.z, where z<=y).

  • Applications built against cuDNN version x.z are not guaranteed to work with x.y release when z>y.

API compatibility is not guaranteed across major versions of cuDNN. In other words, applications built against cuDNN version y.x are not guaranteed to work with cuDNN version z.x if y != z.

Forward-Compatibility and the Legacy API#

Most of the legacy API is forward compatible today. For example, the following commonly used legacy API routines are forward compatible:

The following is an exhaustive list of legacy API routines that are not yet forward compatible. All other legacy API usage is forward compatible.

  • Fusions

    • cudnnFusedOpsExecute() with the following values for the cudnnFusedOps_t ops parameter:

      • 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

It is also worth noting that while portions of the legacy API are deprecated, this does not impact forward compatibility. The above list is the source of truth for what isn’t forward compatible within the legacy API.