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:
Tensor Transformations
RNN (Recurrent Neural Network)
Batch Normalization
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.