MIOpen precision support#
This topic lists the data type support for the MIOpen library on AMD GPUs.
This page lists the data types supported by the library itself and does not indicate hardware support. A type listed here is only usable if the GPU architecture also supports it; otherwise it is unsupported. For data type support across the other ROCm libraries and by GPU architecture, see the Data types and precision support page.
Supported data types overview#
The following table summarizes the input and output data types supported by
MIOpen. For the full miopenDataType_t enumeration and per-type support
notes, see the section that follows.
Icon |
Definition |
|---|---|
✅ |
Fully supported as both an input and output type. |
⚠️ |
Partially supported as an input or output type. |
Data types not listed in the table below are not supported.
Data type |
Support |
|---|---|
int8 |
⚠️ |
int32 |
⚠️ |
float8 (E4M3) |
⚠️ |
float8 (E5M2) |
⚠️ |
float16 |
✅ |
bfloat16 |
⚠️ |
float32 |
✅ |
float64 |
⚠️ |
Datatype enumeration#
MIOpen contains several datatypes at different levels of support. The enumerated datatypes are:
typedef enum {
miopenHalf = 0,
miopenFloat = 1,
miopenInt32 = 2,
miopenInt8 = 3,
/* Value 4 is reserved. */
miopenBFloat16 = 5,
miopenDouble = 6,
miopenFloat8 = 7,
miopenBFloat8 = 8
} miopenDataType_t;
Of these types only miopenFloat and miopenHalf are fully supported across all layers in MIOpen.
Refer to the individual Modules in the API library for specific
datatype support and limitations.
Type descriptions:
miopenHalf: 16-bit floating pointmiopenFloat: 32-bit floating pointmiopenInt32: 32-bit integer, used primarily forint8convolution outputsmiopenInt8: 8-bit integer; supported byint8convolution forward path, tensor set, tensor copy, tensor cast, tensor transform, tensor transpose, and im2colmiopenBFloat16: brain float fp-16 (8-bit exponent, 7-bit fraction); supported by convolutions, tensor set, and tensor copymiopenDouble: 64-bit floating point; supported by reduction, layerNorm, and batchNormmiopenFloat8: 8-bit floating point (layout 1.4.3, exponent bias 7); supported by convolutionsmiopenBFloat8: 8-bit floating point (layout 1.5.2, exponent bias 15); supported by convolutions
Note
Convolution APIs currently only support uniform input/output datatypes and tensor layouts.
In addition to these standard datatypes, pooling also contains its own indexing datatypes:
typedef enum {
miopenIndexUint8 = 0,
miopenIndexUint16 = 1,
miopenIndexUint32 = 2,
miopenIndexUint64 = 3,
} miopenIndexType_t;