# Acceleration Support Qualcomm® AI Engine Direct Delegate provides acceleration on Qualcomm platforms using the Qualcomm® AI Engine Direct SDK. The following sections describe the operators and features Qualcomm® AI Engine Direct Delegate supports. ## GPU In general, Qualcomm® AI Engine Direct GPU backend supports float32 and float16 operators and activations. There is an option to set the activation and operator compute precisions used by the accelerator core, see the `TfLiteQnnDelegateGpuBackendOptions` structure. For TFLite operator support, see [Supported Operators](https://docs.qualcomm.com/doc/80-63442-50/topic/support.html#supported-operators). The library for this backend is *libQnnGpu.so*. There is one option to set the accelerator’s performance mode, see `TfLiteQnnDelegateGpuBackendOptions` for all the options enums. The order of performance level of each mode is (from high to low): High > Normal > Low, and Default mode is aligned with GPU backend default setting. ## HTP In general, Qualcomm® AI Engine Direct HTP backend supports quantized 8 bits fixed-points activations and operators. For TFLite operator support, see [Supported Operators](https://docs.qualcomm.com/doc/80-63442-50/topic/support.html#supported-operators), in addition to that, the following table lists op restrictions. The libraries for this backend are *libQnnHtp.so*, *libQnnHtpPrepare.so*, *libQnnHtp\*Stub.so* and *libQnnHtp\*Skel.so*. There is one option to set the accelerator’s performance mode, see `TfLiteQnnDelegateHtpBackendOptions` for all the options enums. When performance\_mode is used, the delegate will vote for the provided performance level at initialization. Users can change that on-the-fly by C-APIs. See [C Interface](https://docs.qualcomm.com/doc/80-63442-50/topic/c_interface.html). Or, Delegate also support another strategy called `kHtpPerfCtrlAuto`, which vote automatically during inference and then return back to relaxed vote after the inference has completed. The order of performance level of each mode is (from high to low): Burst > Sustained High Performance > High Performance > Balanced > Low Balanced > High Power Saver > Power Saver > Low Power Saver. In case of power consumption, it’s of the opposite order. One exception from this order is Default mode, it basically means no input vote from client and HTP will vote for the optimal modes itself automatically. | Performance mode | Corner on up vote | | --- | --- | | Default |
Doesn’t perform any specific voting.
Sustained the TURBO corner vote.
Vote for TURBO Plus corner vote.
Vote for TURBO corner vote.
Vote for SVS corner vote.
Vote for SVS2 corner vote.
Vote for SVS Plus corner vote.
Vote for NORMINAL corner vote.
Vote for NORMINAL Plus corner vote.
Inputs can only be float32 or int32
axis tensor must be constant
axis tensor must be constant
block shape tensor must be constant
crops tensor must be constant
in[0]: only can be supported by HTPFP16 backend currently
only can be supported by HTPFP16 backend currently
input, in[0]: float32
filter, in[1]: float32
bias, in[2]: same as input type
only can be supported by HTPFP16 backend currently
filter, in[1]: must be constant
bias, in[2]: must be given
in[0]: supports float32
only supported by HTP backend currently
alpha=1, in[0]: only float32 and int8 supported
axis tensor must be constant
only supported by HTP/DSP backends currently
params, in[0]: int32/uint8/int8
indices, in[1]: int32
in[0] only float32 supported
alpha range must be in [0, 1]
axis tensor must be constant
Only supported by HTP/HTPFP16 backend currently
in[0]: int32, must be in range [0, depth-1]
out[0], on_value, off_value: float32, uint8/int8 must be quantized
depth, on_value, off_value must be static tensor
paddings tensor must be constant
constant values tensor must be constant
paddings tensor must be constant
constant values tensor must be constant
in[0]: supports uint8, int8
in[0]: supports uint8, int8, and float32
axis must be INT32 constant tensor with only 1 element.
input, in[0]: float32(limited by tflite op model), support by gpu/gpu16
only supported by HTP/HTPFP16 currently
indices, in[0]: int32
updates, in[1]: Float32/uint32
shape, in[2]: int32, must be static(constant)
only supported by HTP/HTPFP16 currently
input, in[0]: float32/int32, must be static(constant)
segment id, in[1]: int32, must be an 1D tensor and static(constant)
begin and size tensors must be constant
block shape tensor must be constant
paddings tensor must be constant
axis tensor must be constant
begin, end, and strides tensors must be constant
ellipsis is not supported
axis tensor must be constant
axis tensor must be constant
axis tensor must be constant