6.1 KiB
MIOpen Provider Plugin - Operation Support
This document provides detailed information about the operations supported by the MIOpen Provider Plugin for hipDNN.
For general information about hipDNN's operation support, please see the hipDNN Operation Support documentation.
Current Operation Support
The following table lists all operations currently supported in hipDNN:
| Operation | Datatypes | Layouts | Notes |
|---|---|---|---|
| Batchnorm Inference | FP16, BFP16, FP32 | NCL, NLC, NCHW, NHWC, NCDHW, NDHWC | Spatial mode only1,6 |
| Batchnorm Inference + Activation | FP16, BFP16, FP32 | NCL, NLC, NCHW, NHWC, NCDHW, NDHWC | Fused graph3,6 |
| Batchnorm Inference with Variance | FP16, BFP16, FP32 | NCL, NLC, NCHW, NHWC, NCDHW, NDHWC | Spatial mode only1,6 |
| Batchnorm Inference with Variance + Activation | FP16, BFP16, FP32 | NCL, NLC, NCHW, NHWC, NCDHW, NDHWC | Fused graph3,6 |
| Batchnorm Inference + DRelu + Backward | FP16, BFP16, FP32 | NCL, NLC, NCHW, NHWC, NCDHW, NDHWC | Fused graph3,6 |
| Batchnorm Training | FP16, BFP16, FP32 | NCL, NLC, NCHW, NHWC, NCDHW, NDHWC | Spatial mode only1,6 |
| Batchnorm Training + Activation | FP16, BFP16, FP32 | NCL, NLC, NCHW, NHWC, NCDHW, NDHWC | Fused graph3,6 |
| Batchnorm Backward | FP16, BFP16, FP32 | NCL, NLC, NCHW, NHWC, NCDHW, NDHWC | Spatial mode only1,6 |
| Convolution Dgrad | FP16, BFP16, FP32 | NCHW, NHWC, NCDHW, NDHWC | Cross-correlation only2, Deterministic5 |
| Convolution Forward | FP16, BFP16, FP32 | NCHW, NHWC, NCDHW, NDHWC | Cross-correlation only2, Deterministic5 |
| Convolution Forward + (Bias) + Activation4 | FP16, BFP16, FP32 | NCHW, NHWC, NCDHW, NDHWC | Fused graph2,3, Deterministic5 |
| Convolution Wgrad | FP16, BFP16, FP32 | NCHW, NHWC, NCDHW, NDHWC | Cross-correlation only2, Deterministic5 |
¹ See Batchnorm Operations note below ² See Convolution Operations note below ³ See Fused Operations note below ⁴ See Detailed Requirements below ⁵ See Deterministic Engine Support section ⁶ 3D tensors are internally padded to 4D for MIOpen compatibility
Detailed Requirements
Convolution Forward + (Bias) + Activation
Convolution forward node
- Compute data type: FP32
- Y tensor
- Virtual
- Data type: FP32 or the input data type (the latter only if bias is used)
Bias node (optional)
- Compute data type: input data type
- Output tensor
- Virtual
- Data type: FP32 or the input data type
Activation node
- Compute data type: FP32
- Activation mode: RELU_FORWARD
- Supports
- no clipping
- relu_lower_clip set
- relu_lower_clip and relu_upper_clip set
Operation Notes
Note
Batchnorm Operations: Currently, only spatial batchnorm mode is supported. Spatial mode computes statistics over the batch (N) and spatial dimensions (H, W, or D, H, W) for each channel.
Note
Convolution Operations: Currently, only cross-correlation convolutions are supported. True mathematical convolution (with kernel flipping) is not yet implemented. In practice, cross-correlation is the standard operation used in modern deep learning frameworks.
Note
Fused Operations:
- Fused batchnorm operations require F32 data type for the virtual/intermediate tensors. This can be set either explicitly on the tensor or by setting the default intermediate data type for the graph (recommended).
- The fused graph patterns combine multiple operations:
- Batchnorm Inference + Activation: Combines batchnorm inference (using invVariance) with forward activation (ReLU)
- Batchnorm Inference with Variance + Activation: Combines batchnorm inference (using variance) with forward activation (ReLU)
- Batchnorm Inference + DReLU + Backward: Combines batchnorm inference, activation backward (DReLU), and batchnorm backward
- Batchnorm Training + Activation: Combines batchnorm training with forward activation
- Convolution Forward + (Bias) + Activation: Combines convolution forward, optional bias addition, and forward activation
Note
Activation Functions: Supports ReLU, Clipped ReLU (with configurable upper clip), and CLAMP (with configurable lower/upper clips).
Note
Sparse Support: All operations currently work with dense tensors only.
Note
Batchnorm Training Running Statistics: Batchnorm training supports updating running statistics using separate read and write buffers. The previous running statistics (
prev_running_mean,prev_running_variance) are read-only inputs, while the next running statistics (next_running_mean,next_running_variance) are write-only outputs. The exponential moving average is computed as:next_running = (1 - momentum) * prev_running + momentum * batch_statistic.
Deterministic Engine Support
The MIOpen provider offers a deterministic execution engine (MIOPEN_ENGINE_DETERMINISTIC) for convolution operations. This engine guarantees bit-reproducible results across multiple executions with the same inputs.
To use the deterministic engine, set it as the preferred engine on your graph before building:
#include <hipdnn_data_sdk/utilities/EngineNames.hpp>
graph.set_preferred_engine_id_ext(MIOPEN_ENGINE_DETERMINISTIC_NAME);
Note
Batchnorm Operations: Batchnorm operations do not support deterministic execution in MIOpen and are only available through the default (non-deterministic) engine.
Legend
Datatypes
- FP16: Half-precision floating point (16-bit)
- BFP16: Brain floating point (16-bit)
- FP32: Single-precision floating point (32-bit)
Layouts
- NCL: Batch, Channels, Length (1D, channel-first)
- NLC: Batch, Length, Channels (1D, channel-last)
- NCHW: Batch, Channels, Height, Width (2D, channel-first)
- NHWC: Batch, Height, Width, Channels (2D, channel-last)
- NCDHW: Batch, Channels, Depth, Height, Width (3D, channel-first)
- NDHWC: Batch, Depth, Height, Width, Channels (3D, channel-last)