# External Delegate Options

Since the setup:External Delegate Interface dynamically loads the Qualcomm® AI Engine Direct
Delegate, it has no static knowledge of the Qualcomm® AI Engine Direct Delegate options. Instead,
the External Delegate passes key value pairs of strings down to the Qualcomm® AI Engine Direct Delegate
to be parsed as the options. As a result, the application using the External
Delegate Interface requires previous knowledge of the accepted key and value
options strings. The following table lists the key value option strings that
are available in Qualcomm® AI Engine Direct Delegate.

| Option Key | Option Value | Default Value | Mandatory | Description |
| --- | --- | --- | --- | --- |
| backend\_type | gpu, htp, dsp | N/A | Yes | The backend Qualcomm® AI Engine Direct library to open and execute the graph with.<br>See [Acceleration Support](https://docs.qualcomm.com/doc/80-63442-50/topic/support.html) for the supported backends. |
| gpu\_precision | 0, 1, 2, 3 | 2 = Float16 for best performance | No | Precision for GPU backend that defines the optimization levels of the<br>graph tensors that are not input nor output tensors.<br><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p>0 = Obey precisions specified in TFLite graph</p></li><br>> <li><p>1 = Float32</p></li><br>> <li><p>2 = Float16</p></li><br>> <li><p>3 = Hybrid</p></li><br>> </ul> |
| gpu\_performance\_mode | 0, 1, 2, 3 | 0 = Default | No | Flag to provide precision modes supported by the GPU backend.<br><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p>0 = Default</p></li><br>> <li><p>1 = High</p></li><br>> <li><p>2 = Normal</p></li><br>> <li><p>3 = Low</p></li><br>> </ul> |
| dsp\_performance\_mode | 0, 1, 2, 3, 4, 5, 6, 7, 8 | 0 = Default | No | When performance\_mode is used, the delegate will<br>vote for the provided performance level during inference and<br>will return back to relaxed vote after the inference has completed.<br><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p>0 = Default</p></li><br>> <li><p>1 = Sustained High Performance</p></li><br>> <li><p>2 = Burst</p></li><br>> <li><p>3 = High Performance</p></li><br>> <li><p>4 = Power Saver</p></li><br>> <li><p>5 = Low Power Saver</p></li><br>> <li><p>6 = High Power Saver</p></li><br>> <li><p>7 = Low Balance</p></li><br>> <li><p>8 = Balance</p></li><br>> </ul> |
| dsp\_pd\_session | unsigned, signed, adaptive | unsigned | No | Flag defines the pd session of DSP backend.<br>Unsigned is used for unsigned pd while signed is for signed pd.<br>For those without knowledge about pd, adaptive is a good option to<br>automatically choose the pd session from unsigned and signed pd. |
| dsp\_perf\_ctrl\_strategy | 0, 1 | 0 = Manual | No | Flag to select DSP perforamnce control strategy. Manual vote the<br>performance while the backend is initialized, and release the performance<br>at the moment of the backend is destroyed.<br><br><ul class="simple"><br><li><p>0 = Manual</p></li><br><li><p>1 = Auto</p></li><br></ul> |
| dsp\_encoding\_mode | 0, 1 | 0 = Static | No | Flag to select DSP encoding mode, only support DSP backend. Dynamic encoding is more precise but<br>sacrifices a bit of performance.<br><br><ul class="simple"><br><li><p>0 = Static</p></li><br><li><p>1 = Dynamic</p></li><br></ul> |
| htp\_performance\_mode | 0, 1, 2, 3, 4, 5, 6, 7, 8 | 0 = Default | No | When performance\_mode is used, the delegate will<br>vote for the provided performance level during inference and<br>will return back to relaxed vote after the inference has completed.<br><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p>0 = Default</p></li><br>> <li><p>1 = Sustained High Performance</p></li><br>> <li><p>2 = Burst</p></li><br>> <li><p>3 = High Performance</p></li><br>> <li><p>4 = Power Saver</p></li><br>> <li><p>5 = Low Power Saver</p></li><br>> <li><p>6 = High Power Saver</p></li><br>> <li><p>7 = Low Balance</p></li><br>> <li><p>8 = Balance</p></li><br>> </ul> |
| htp\_pd\_session | unsigned, signed | unsigned | No | Flag defines the pd session of HTP backend. |
| htp\_optimization\_strategy | 0, 1, 2 | 0 = Optimize for Inference | No | Flag to select optimization strategy used by the HTP backend. The<br>default optimization strategy will optimize the graph for inference.<br><br><ul class="simple"><br><li><p>0 = Optimize for Inference</p></li><br><li><p>1 = Optimize for Prepare</p></li><br><li><p>2 = Optimize for InferenceO3</p></li><br></ul> |
| htp\_perf\_ctrl\_strategy | 0, 1 | 0 = Manual | No | Flag to select HTP perforamnce control strategy. Manual vote the<br>performance while the backend is initialized, and release the performance<br>at the moment of the backend is destroyed.<br><br><ul class="simple"><br><li><p>0 = Manual</p></li><br><li><p>1 = Auto</p></li><br></ul> |
| htp\_use\_conv\_hmx | 0, 1 | 1 = enable HMX for short depth conv2d. | No | Flag to enable HMX for short depth conv2d. Please see C interface or <cite>qnn_delegate.h</cite> for details.<br><br><ul class="simple"><br><li><p>0 = Don’t enable HMX for short depth conv2d.</p></li><br><li><p>1 = enable HMX for short depth conv2d.</p></li><br></ul> |
| htp\_use\_fold\_relu | 0, 1 | 0 = don’t fuse Relu into conv2d. | No | Flag to enable fusion of Relu into conv2d. Please see C interface or <cite>qnn_delegate.h</cite> for details.<br><br><ul class="simple"><br><li><p>0 = Don’t enable fusion Relu into conv2d.</p></li><br><li><p>1 = enable fusion Relu into conv2d.</p></li><br></ul> |
| htp\_device\_id | 0 or positive integer | 0 = Default | No | If the SoC has more than 1 HTP device, you can choose a device by the device id. |
| library\_path | &lt;Path to backend library file&gt; | Default library associated with chosen Qualcomm® AI Engine Direct backend | No | Optional parameter to override the Qualcomm® AI Engine Direct backend library. |
| log\_level | 0, 1, 2, 3, 4, 5 | 0 = Off | No | Logging level of the delegate and the backend between 0-5, higher is<br>more verbose.<br><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p>0 = Off</p></li><br>> <li><p>1 = Error</p></li><br>> <li><p>2 = Warn</p></li><br>> <li><p>3 = Info</p></li><br>> <li><p>4 = Debug</p></li><br>> <li><p>5 = Verbose</p></li><br>> </ul> |
| cache\_dir | &lt;Full path to a directory&gt; | N/A | No | Specifies the directory of a compiled model.  Signals intent to either:<br><br><ul class="simple"><br><li><p>Save the model if the file doesn’t exist, or</p></li><br><li><p>Restore model from the file.</p></li><br></ul><br><br>Model Cache specific options. Only used when setting<br>`model_token`, else will be ignored. |
| model\_token | &lt;model token name&gt; | N/A | No | The unique null-terminated token string that acts as a ‘namespace’ for<br>all serialization entries.<br>Should be unique to a particular model (graph & constants).<br>For an example of how to generate this from a TFLite model, see<br>StrFingerprint() in lite/delegates/serialization.h.<br>Model Cache specific options. Only used when setting<br>`cache_dir`, else will be ignored. |
| profiling | 0, 1, 2 | 0 = Off | No | How to profile the delegate execution. Use to add profiling level to<br>TFLite/QNN Profiler object. Qnn Profiler will be used unless Tensorflow Lite benchmark\_model is used.<br>However, note that the behavior of profiling is subjected to change in the future.<br><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p>0 = Profiling Off</p></li><br>> <li><p>1 = Basic Profiling</p></li><br>> <li><p>2 = Per Op Profiling</p></li><br>> </ul> |
| skel\_library\_dir | &lt;Path to dir&gt; | N/A | No | Directory of Qualcomm® AI Engine Direct Skel Library. Optional parameter to directory of the<br>Qualcomm® AI Engine Direct Skel library. Only useful for backends which have a Skel library. |

Last Published: Oct 10, 2025

[Previous Topic
External Delegate Interface](https://docs.qualcomm.com/bundle/publicresource/80-63442-50/topics/TfLite-Delegate_api.md) [Next Topic
Qualcomm® AI Engine Direct Backend Library](https://docs.qualcomm.com/bundle/publicresource/80-63442-50/topics/qnn_libs.md)