cuDNN Release Notes v7.6.0

Key Features and Enhancements

The following features and enhancements have been added to this release:

Fixed Issues

The following issues have been fixed in this release:

  • In cuDNN 7.5.0 and cuDNN 7.5.1, a bug in the cudnnRNNBackwardData() function affected the thread synchronization. This effect is limited to only the first iteration of the loop, and only in some paths. This occurs when using the function with the CUDNN_RNN_ALGO_PERSIST_STATIC method. This is fixed in cuDNN 7.6.0.

Known Issues

The following issues and limitations exist in this release:

  • The cudnnConvolutionBackwardData() function for CUDNN_CONVOLUTION_BWD_DATA_ALGO_0 fails with CUDNN_STATUS_NOT_SUPPORTED when the input size is large.
  • A general known issue for cuDNN library: the Tensor pointers and the filter pointers require at a minimum 4-byte alignment, including for FP16 or INT8 data.
  • On RHEL7 only, the /usr/src/cudnn_samples_v7/samples_common.mk file is missing. This will prevent compiling the cuDNN samples. The workaround is to copy the below contents into “samples_common.mk” text file and place this file in the “/usr/src/cudnn_samples_v7/” directory, so that the /usr/src/cudnn_samples_v7/samples_common.mk file exists.
    # Setting SMS for all samples
    # architecture
    
    ifneq ($(TARGET_ARCH), ppc64le)
    CUDA_VERSION := $(shell cat $(CUDA_PATH)/include/cuda.h |grep "define CUDA_VERSION" |awk '{print $$3}')
    else
    CUDA_VERSION := $(shell cat $(CUDA_PATH)/targets/ppc64le-linux/include/cuda.h |grep "define CUDA_VERSION" |awk '{print $$3}')
    endif
    
    #Link against cublasLt for CUDA 10.1 and up.
    CUBLASLT:=false
    ifeq ($(shell test $(CUDA_VERSION) -ge 10010; echo $$?),0)
    CUBLASLT:=true
    endif
    $(info Linking agains cublasLt = $(CUBLASLT))
    
    ifeq ($(CUDA_VERSION),8000 )
    SMS_VOLTA =
    else
    ifneq ($(TARGET_ARCH), ppc64le)
    ifeq ($(CUDA_VERSION), $(filter $(CUDA_VERSION), 9000 9010 9020))
    SMS_VOLTA ?= 70
    else
    ifeq ($(TARGET_OS), darwin)
    SMS_VOLTA ?= 70
    else
    SMS_VOLTA ?= 70 72 75
    endif #ifneq ($(TARGET_OS), darwin)
    endif #ifeq ($(CUDA_VERSION), $(filter $(CUDA_VERSION), 9000 9010 9020))
    else
    SMS_VOLTA ?= 70
    endif #ifneq ($(TARGET_ARCH), ppc64le)
    endif #ifeq ($(CUDA_VERSION),8000 )
    SMS ?= 30 35 50 53 60 61 62 $(SMS_VOLTA)