Available datatypes per routine

So after looking through each of the routines in cuDNN, it’s not clear to me what datatypes are permitted per routine. The cudnnDataType_t type lists several such as float, half, and (u)int8. But are these datatypes supported for each routine?

Say I was trying to use batch normalization with int8 data. The cudnnBatchNormalizationForwardTraining() routine does not make it clear if int8 is supported, and I would rather not have to test it, along with every other routine, for each datatype to determine compatiblity. The ‘Scaling Parameters’ section talks about ‘float’, ‘half’, and ‘double’ - not int8.

It’s very difficult to get a feel for what data works with what routines. Hoping someone here can give me a few pointers to clarify this (not the host kind). Any help very much appreciated.

Hi,

The best bet for a given routine is to look at it’s CUDNN_STATUS_BAD_PARAM or CUDNN_STATUS_NOT_SUPPORTED return values in the docs for insight into what’s not allowed.
​​​​​​​
The cudnnBatchNormalizationForwardTraining routine doesn’t mention anything about datatypes in the description for those return value, but for example cudnnIm2Col() mentions unsupported datatypes in that return value: 
https://docs.nvidia.com/deeplearning/sdk/cudnn-api/index.html#cudnnIm2Col

Other ops contain tables of input type permutations that are allowed, such as cudnnOpTensor()
https://docs.nvidia.com/deeplearning/sdk/cudnn-api/index.html#cudnnOpTensor

Thanks