MIOpen contains several datatypes at different levels of support. The enumerated datatypes are shown below:

typedef enum {
    miopenHalf     = 0,
    miopenFloat    = 1,
    miopenInt32    = 2,
    miopenInt8     = 3,
    miopenInt8x4   = 4,
    miopenBFloat16 = 5,
} miopenDataType_t;

Of these types only miopenFloat and miopenHalf are fully supported across all layers in MIOpen. Please see the individual layers in API reference section for specific datatype support and limitations.

Type descriptions:

  • miopenHalf - 16-bit floating point
  • miopenFloat - 32-bit floating point
  • miopenInt32 - 32-bit integer, used primarily for int8 convolution outputs
  • miopenInt8 - 8-bit integer, currently only supported by int8 convolution forward path, tensor set, tensor copy, tensor cast, tensor transform, tensor transpose, and im2col.
  • miopenInt8x4 - 8-bit 4 element vector type used primarily with int8 convolutions forward path.
  • miopenBFloat16 - brain float fp-16 (8-bit exponent, 7-bit fraction), currently only supported by convolutions, tensor set, and tensor copy.

Note: In addition to the standard datatypes above, pooling contains its own indexing datatypes:

typedef enum {
    miopenIndexUint8  = 0,
    miopenIndexUint16 = 1,
    miopenIndexUint32 = 2,
    miopenIndexUint64 = 3,
} miopenIndexType_t;