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.


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: 

Other ops contain tables of input type permutations that are allowed, such as cudnnOpTensor()