Why is it the that the that cudnnSetTensor4dDescriptor (no stride, tensor format) and cudnnSetTensor4dDescriptorEx(stride, no tensor format) and the nd versions are the opposite cudnnSetTensorNdDescriptor(stride, no tensor format) and cudnnSetTensorNdDescriptorEx(no stride, tensor format)?
cudnnStatus_t CUDNNWINAPI cudnnSetTensor4dDescriptor(
cudnnTensorDescriptor_t tensorDesc,
cudnnTensorFormat_t format,
cudnnDataType_t dataType, /* image data type */
int n, /* number of inputs (batchsize)/
int c, /* number of input feature maps*/
int h, /* height of input section */
int w ); /* width of input section */
cudnnStatus_t CUDNNWINAPI cudnnSetTensor4dDescriptorEx(
cudnnTensorDescriptor_t tensorDesc,
cudnnDataType_t dataType, /* image data type */
int n, /* number of inputs (batch size)*/
int c, /* number of input feature maps*/
int h, /* height of input section */
int w, /* width of input section */
int nStride,
int cStride,
int hStride,
int wStride );
cudnnStatus_t CUDNNWINAPI cudnnSetTensorNdDescriptor(
cudnnTensorDescriptor_t tensorDesc,
cudnnDataType_t dataType,
int nbDims,
const int dimA[],
const int strideA[] );
cudnnStatus_t CUDNNWINAPI cudnnSetTensorNdDescriptorEx(
cudnnTensorDescriptor_t tensorDesc,
cudnnTensorFormat_t format,
cudnnDataType_t dataType,
int nbDims,
const int dimA[] );