# Run an ONNX model on NPU using ORT

Note

This section is not supported on the current QLI release.

## Overview: Qualcomm AI Engine Direct (QNN) EP

The QNN execution provider for ONNX runtime (ORT) enables hardware accelerated inference on
Qualcomm chipsets using the Qualcomm AI Engine Direct SDK. The ONNX runtime QNN execution
provider is commonly used on IOT devices with Qualcomm Snapdragon SoCs.

You can create quantized ONNX models using ORT QDQ quantization tools or Qualcomm workflows
that apply hardware-aware optimizations for deployment.

For more information, see [ONNX Runtime (ORT) with QNN](https://onnxruntime.ai/docs/execution-providers/QNN-ExecutionProvider.html#qnn-execution-provider)

## Model preparation options

### Use a QDQ model

Running a model with the QNN EP requires a quantize-dequantize (QDQ) ONNX model.

This documentation uses prebuilt QDQ models from AI Hub, which are validated for
QNN compatibility. You can also generate your own QDQ model using open source tools,
such as the ONNX runtime quantization tool.

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by Microsoft Visio, SVG Export onnx-aimet-preparation.svg Page-1 -->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" width="10.0139in" height="2.98264in" viewbox="0 0 721 214.75" xml:space="preserve" color-interpolation-filters="sRGB" class="st15" aria-label="../_images/onnx-aimet-preparation.svg" svgdefaultwidth="50%"><v:documentproperties v:langid="1033" v:viewmarkup="false">	<v:userdefs>		<v:ud v:nameu="msvNoAutoConnect" v:val="VT0(1):26"></v:ud>	</v:userdefs></v:documentproperties>
<style>.svg-1 .st1 { fill: #ffffff; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-1 .st2 { fill: #fafafa; stroke: #d2d7e1; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-1 .st3 { fill: #000000; font-family: Roboto; font-size: 0.833336em }
.svg-1 .st4 { fill: none; stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.24 }
.svg-1 .st5 { font-size: 1em }
.svg-1 .st6 { fill: none; stroke: #d2d7e1; stroke-dasharray: 10.5, 7.5; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.5 }
.svg-1 .st7 { fill: #ffffff; stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.24 }
.svg-1 .st8 { fill: none; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-1 .st9 { fill: #000000; font-family: Roboto; font-size: 0.666664em }
.svg-1 .st10 { marker-start: url("#1-mrkr4-51"); stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-1 .st11 { fill: #000000; fill-opacity: 1; stroke: #000000; stroke-opacity: 1; stroke-width: 0.29411764705882 }
.svg-1 .st12 { marker-end: url("#1-mrkr4-62"); stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-1 .st13 { marker-end: url("#1-mrkr4-62"); stroke: #000000; stroke-dasharray: 5.25, 3.75; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-1 .st14 { stroke: #000000; stroke-dasharray: 5.25, 3.75; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-1 .st15 { fill: none; fill-rule: evenodd; font-size: 12px; overflow: visible; stroke-linecap: square; stroke-miterlimit: 3 }</style>
<defs id="Markers">	<g id="lend4">		<path d="M 2 1 L 0 0 L 2 -1 L 2 1 " style="stroke:none"></path>	</g>	<marker id="1-mrkr4-51" class="st11" v:arrowtype="4" v:arrowsize="1" v:setback="6.32" refx="6.32" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend4" transform="scale(3.4) "></use>	</marker>	<marker id="1-mrkr4-62" class="st11" v:arrowtype="4" v:arrowsize="1" v:setback="6.8" refx="-6.8" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend4" transform="scale(-3.4,-3.4) "></use>	</marker></defs><g v:mid="4" v:index="1" v:groupcontext="backgroundPage">	<v:userdefs>		<v:ud v:nameu="msvVisioCreated" v:prompt="" v:val="VT0(0):26"></v:ud>	</v:userdefs>	<title>VBackground-1</title>	<v:pageproperties width="10.0139" height="2.98264" v:drawingscale="1" v:pagescale="1" v:drawingunits="19" v:shadowoffsetx="9" v:shadowoffsety="-9"></v:pageproperties>	<g id="shape1-1" v:mid="1" v:groupcontext="shape">		<title>Solid</title>		<v:userdefs>			<v:ud v:nameu="Background" v:val="VT0(0):26"></v:ud>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>			<v:ud v:nameu="msvShapeCategories" v:prompt="" v:val="VT4(DoNotContain)"></v:ud>			<v:ud v:nameu="msvVisioCreated" v:prompt="" v:val="VT0(0):26"></v:ud>		</v:userdefs>		<rect x="0" y="0" width="721" height="214.75" class="st1"></rect>	</g></g><g v:mid="0" v:index="2" v:groupcontext="foregroundPage">	<title>Page-1</title>	<v:pageproperties v:drawingscale="1" v:pagescale="1" v:drawingunits="19" v:shadowoffsetx="9" v:shadowoffsety="-9"></v:pageproperties>	<v:layer v:name="Connector" v:index="0"></v:layer>	<g id="shape1003-3" v:mid="1003" v:groupcontext="shape" transform="translate(18.5,-18.5)">		<title>Rectangle.10</title>		<desc>Host (Windows x86)</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(8,8,4,4)" v:verticalalign="0"></v:textblock>		<v:textrect cx="342" cy="125.875" width="684" height="177.75"></v:textrect>		<rect x="0" y="37" width="684" height="177.75" rx="3.6" ry="3.6" class="st2"></rect>		<text x="585.88" y="54" class="st3" v:langid="1033"><v:paragraph v:horizalign="2"></v:paragraph><v:tablist></v:tablist>Host (Windows x86)</text>		</g>	<g id="shape1004-6" v:mid="1004" v:groupcontext="shape" transform="translate(324.38,-53.8131)">		<title>Rectangle.15</title>		<desc>ORT</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="31.6202" cy="192.145" width="63.25" height="45.2094"></v:textrect>		<rect x="0" y="169.541" width="63.2404" height="45.2094" rx="2.88" ry="2.88" class="st4"></rect>		<text x="22.12" y="195.15" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>ORT</text>		</g>	<g id="shape1005-9" v:mid="1005" v:groupcontext="shape" transform="translate(211.76,-53.8131)">		<title>Rectangle.16</title>		<desc>Q-DQ ONNX</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="31.6202" cy="192.145" width="63.25" height="45.2094"></v:textrect>		<rect x="0" y="169.541" width="63.2404" height="45.2094" rx="2.88" ry="2.88" class="st4"></rect>		<text x="20.09" y="189.15" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Q-DQ<v:newlinechar></v:newlinechar><tspan x="17.92" dy="1.2em" class="st5">ONNX</tspan></text>		</g>	<g id="shape1006-13" v:mid="1006" v:groupcontext="shape" transform="translate(118.543,-53.8131)">		<title>Rectangle.17</title>		<desc>AIMET / ORT / GPTQ</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="31.6202" cy="192.145" width="63.25" height="45.2094"></v:textrect>		<rect x="0" y="169.541" width="63.2404" height="45.2094" rx="2.88" ry="2.88" class="st4"></rect>		<text x="13.51" y="183.15" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>AIMET / <tspan x="18.82" dy="1.2em" class="st5">ORT / <v:newlinechar></v:newlinechar></tspan><tspan x="18.64" dy="1.2em" class="st5">GPTQ</tspan></text>		</g>	<g id="shape1007-18" v:mid="1007" v:groupcontext="shape" transform="translate(311,-36.0475)">		<title>Rectangle.18</title>		<desc>ORT session</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(6,6,4,4)" v:verticalalign="0"></v:textblock>		<v:textrect cx="131.745" cy="145.782" width="263.5" height="137.937"></v:textrect>		<rect x="0" y="76.8131" width="263.49" height="137.937" rx="2.88" ry="2.88" class="st6"></rect>		<text x="201.6" y="91.81" class="st3" v:langid="1033"><v:paragraph v:horizalign="2"></v:paragraph><v:tablist></v:tablist>ORT session</text>		</g>	<g id="shape1008-21" v:mid="1008" v:groupcontext="shape" transform="translate(485.375,-116.375)">		<title>Rectangle.19</title>		<desc>libQnnHtp.so</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="38.25" cy="197.762" width="76.5" height="33.9758"></v:textrect>		<rect x="0" y="180.774" width="76.5" height="33.9758" rx="2.88" ry="2.88" class="st4"></rect>		<text x="9.31" y="200.76" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>libQnnHtp.so</text>		</g>	<g id="shape1009-24" v:mid="1009" v:groupcontext="shape" transform="translate(376.611,-116.375)">		<title>Rectangle.20</title>		<desc>QNN EP</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="38.25" cy="197.762" width="76.5" height="33.9758"></v:textrect>		<rect x="0" y="180.774" width="76.5" height="33.9758" rx="2.88" ry="2.88" class="st4"></rect>		<text x="20.45" y="200.76" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>QNN EP</text>		</g>	<g id="group1010-27" transform="translate(37.4231,-88.25)" v:mid="1010" v:groupcontext="group">		<v:userdefs>			<v:ud v:nameu="visVersion" v:prompt="" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<title>Can</title>		<desc>ONNX</desc>		<g id="shape1011-28" v:mid="1011" v:groupcontext="shape">			<title>Sheet.1011</title>			<v:userdefs>				<v:ud v:nameu="ControlHalfHeight" v:prompt="" v:val="VT0(0.125):1"></v:ud>				<v:ud v:nameu="FillForegnd" v:prompt="" v:val="VT5(1)"></v:ud>				<v:ud v:nameu="ControlHalfHeight" v:prompt="" v:val="VT0(0.078124997671694):1"></v:ud>			</v:userdefs>			<path d="M0 209.13 A22.5 5.625 -180 0 0 45 209.13 L45 164.13 L0 164.13 L0 209.13 Z" class="st7"></path>		</g>		<g id="shape1010-30" v:mid="1010" v:groupcontext="groupContent">			<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>			<v:textrect cx="22.5" cy="186.625" width="45" height="56.25"></v:textrect>			<ellipse cx="22.5" cy="164.125" rx="22.5" ry="5.625" class="st7"></ellipse>			<text x="8.8" y="189.63" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>ONNX</text>			</g>	</g>	<g id="shape1012-33" v:mid="1012" v:groupcontext="shape" transform="translate(28.3029,-53.8131)">		<title>Rectangle.1010</title>		<desc>Input</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="31.6202" cy="205.75" width="63.25" height="18"></v:textrect>		<rect x="0" y="196.75" width="63.2404" height="18" rx="2.88" ry="2.88" class="st4"></rect>		<text x="20.31" y="208.75" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Input</text>		</g>	<g id="group1013-36" transform="translate(617,-33.125)" v:mid="1013" v:groupcontext="group">		<v:userdefs>			<v:ud v:nameu="visVersion" v:prompt="" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<title>Can.1011</title>		<desc>ctx</desc>		<g id="shape1014-37" v:mid="1014" v:groupcontext="shape">			<title>Sheet.1014</title>			<v:userdefs>				<v:ud v:nameu="ControlHalfHeight" v:prompt="" v:val="VT0(0.125):1"></v:ud>				<v:ud v:nameu="FillForegnd" v:prompt="" v:val="VT5(1)"></v:ud>				<v:ud v:nameu="ControlHalfHeight" v:prompt="" v:val="VT0(0.078124997671694):1"></v:ud>			</v:userdefs>			<path d="M0 209.13 A22.5 5.625 -180 0 0 45 209.13 L45 164.13 L0 164.13 L0 209.13 Z" class="st7"></path>		</g>		<g id="shape1013-39" v:mid="1013" v:groupcontext="groupContent">			<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>			<v:textrect cx="22.5" cy="186.625" width="45" height="56.25"></v:textrect>			<ellipse cx="22.5" cy="164.125" rx="22.5" ry="5.625" class="st7"></ellipse>			<text x="15.77" y="189.63" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>ctx</text>			</g>	</g>	<g id="shape1015-42" v:mid="1015" v:groupcontext="shape" transform="translate(601.25,-88.25)">		<title>Sheet.1015</title>		<desc>model.onnx with context.bin</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="38.25" cy="196.75" width="76.5" height="36"></v:textrect>		<rect x="0" y="178.75" width="76.5" height="36" class="st8"></rect>		<text x="8.91" y="194.35" class="st9" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>model.onnx with <tspan x="18.48" dy="1.2em" class="st5">context.bin</tspan></text>		</g>	<g id="shape1016-46" v:mid="1016" v:groupcontext="shape" transform="translate(453.111,-142.25)">		<title>Sheet.1016</title>		<path d="M4.74 214.75 L5.1 214.75 L32.26 214.75" class="st10"></path>	</g>	<g id="shape1017-52" v:mid="1017" v:groupcontext="shape" transform="translate(485.375,305.25) rotate(180)">		<title>Sheet.1017</title>		<path d="M4.74 214.75 L5.1 214.75 L32.26 214.75" class="st10"></path>	</g>	<g id="shape1018-57" v:mid="1018" v:groupcontext="shape" transform="translate(91.5433,-62.8131)">		<title>Sheet.1018</title>		<path d="M0 214.75 L21.9 214.75" class="st12"></path>	</g>	<g id="shape1019-63" v:mid="1019" v:groupcontext="shape" transform="translate(181.784,-76.4178)">		<title>Sheet.1019</title>		<path d="M0 214.75 L24.88 214.75" class="st13"></path>	</g>	<g id="shape1020-68" v:mid="1020" v:groupcontext="shape" v:layermember="0" transform="translate(82.4231,-116.699)">		<title>Dynamic connector</title>		<path d="M0 215.07 L67.74 215.07 L67.74 232.43" class="st14"></path>	</g>	<g id="shape1021-71" v:mid="1021" v:groupcontext="shape" transform="translate(284,313.125) rotate(180)">		<title>Sheet.1021</title>		<path d="M0 214.75 L133.84 214.75" class="st14"></path>	</g>	<g id="shape1022-74" v:mid="1022" v:groupcontext="shape" v:layermember="0" transform="translate(414.861,-116.375)">		<title>Dynamic connector.1022</title>		<path d="M0 214.75 L0 254.71 L-22.14 254.71" class="st12"></path>	</g>	<g id="shape1023-79" v:mid="1023" v:groupcontext="shape" v:layermember="0" transform="translate(356,-99.0225)">		<title>Dynamic connector.1023</title>		<path d="M0 214.75 L0 180.41 L15.51 180.41" class="st12"></path>	</g>	<g id="shape1024-84" v:mid="1024" v:groupcontext="shape" transform="translate(324.38,353.082) rotate(180)">		<title>Sheet.1024</title>		<path d="M4.74 214.75 L5.1 214.75 L24.63 214.75" class="st10"></path>	</g>	<g id="shape1025-89" v:mid="1025" v:groupcontext="shape" transform="translate(275,-76.4178)">		<title>Sheet.1025</title>		<path d="M0 214.75 L24.75 214.75" class="st14"></path>	</g>	<g id="shape1026-92" v:mid="1026" v:groupcontext="shape" transform="translate(498.75,98.375) rotate(90)">		<title>Sheet.1026</title>		<path d="M0 214.75 L39.96 214.75" class="st14"></path>	</g>	<g id="shape1027-95" v:mid="1027" v:groupcontext="shape" transform="translate(387.62,-61.25)">		<title>Sheet.1027</title>		<path d="M0 214.75 L224.28 214.75" class="st12"></path>	</g></g>
</svg>

### Use a Qualcomm AI Runtime SDK model

Use the Qualcomm AI Runtime SDK (QAIRT) for hardware-specific optimization by
converting and quantizing models into a QNN representation.

QAIRT generates a SoC-optimized context and packages it as an ONNX file,
commonly known as a `ctx.onnx` model. This model is tailored for a specific
Qualcomm SoC and can be directly executed using the QNN EP in the ONNX runtime.

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by Microsoft Visio, SVG Export onnx-qairt-preparation.svg Page-1 -->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" width="12.7014in" height="3.70139in" viewbox="0 0 914.5 266.5" xml:space="preserve" color-interpolation-filters="sRGB" class="st22" aria-label="../_images/onnx-qairt-preparation.svg" svgdefaultwidth="50%"><v:documentproperties v:langid="1033" v:viewmarkup="false"></v:documentproperties>
<style>.svg-2 .st1 { fill: #fafafa; stroke: #d2d7e1; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-2 .st2 { fill: #000000; font-family: Roboto; font-size: 1.00001em }
.svg-2 .st3 { fill: #202aea; stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.24 }
.svg-2 .st4 { fill: #ffffff; font-family: Roboto; font-size: 0.833336em }
.svg-2 .st5 { fill: none; stroke: #d2d7e1; stroke-dasharray: 10.5, 7.5; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.5 }
.svg-2 .st6 { fill: none; stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.24 }
.svg-2 .st7 { fill: #000000; font-family: Roboto; font-size: 0.833336em }
.svg-2 .st8 { fill: #2a2aea; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.24 }
.svg-2 .st9 { fill: none; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-2 .st10 { fill: #000000; font-family: Roboto; font-size: 0.666664em }
.svg-2 .st11 { fill: #007884; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.24 }
.svg-2 .st12 { fill: #202aea; stroke: #202aea; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.24 }
.svg-2 .st13 { fill: #007884; stroke: #007884; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.24 }
.svg-2 .st14 { fill: none; stroke: #d2d7e1; stroke-dasharray: 5.25, 3.75; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-2 .st15 { fill: none; stroke: #202aea; stroke-dasharray: 5.25, 3.75; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-2 .st16 { marker-end: url("#2-mrkr4-70"); stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-2 .st17 { fill: #000000; fill-opacity: 1; stroke: #000000; stroke-opacity: 1; stroke-width: 0.29411764705882 }
.svg-2 .st18 { stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-2 .st19 { fill: #202aea; font-family: Roboto; font-size: 0.75em }
.svg-2 .st20 { font-size: 1em }
.svg-2 .st21 { fill: #007884; font-family: Roboto; font-size: 0.75em }
.svg-2 .st22 { fill: none; fill-rule: evenodd; font-size: 12px; overflow: visible; stroke-linecap: square; stroke-miterlimit: 3 }</style>
<defs id="Markers">	<g id="lend4">		<path d="M 2 1 L 0 0 L 2 -1 L 2 1 " style="stroke:none"></path>	</g>	<marker id="2-mrkr4-70" class="st17" v:arrowtype="4" v:arrowsize="1" v:setback="6.8" refx="-6.8" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend4" transform="scale(-3.4,-3.4) "></use>	</marker></defs><g v:mid="0" v:index="1" v:groupcontext="foregroundPage">	<title>Page-1</title>	<v:pageproperties v:drawingscale="1" v:pagescale="1" v:drawingunits="19" v:shadowoffsetx="9" v:shadowoffsety="-9"></v:pageproperties>	<v:layer v:name="Connector" v:index="0"></v:layer>	<g id="shape1008-1" v:mid="1008" v:groupcontext="shape" transform="translate(0.5,-0.5)">		<title>Rectangle.10</title>		<desc>Host (Linux Ubuntu 22.04)</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(8,8,4,4)" v:verticalalign="0"></v:textblock>		<v:textrect cx="456.75" cy="133.75" width="913.5" height="265.5"></v:textrect>		<rect x="0" y="1.00001" width="913.5" height="265.5" rx="3.6" ry="3.6" class="st1"></rect>		<text x="765.86" y="19.8" class="st2" v:langid="1033"><v:paragraph v:horizalign="2"></v:paragraph><v:tablist></v:tablist>Host (Linux Ubuntu 22.04)</text>		</g>	<g id="shape1010-4" v:mid="1010" v:groupcontext="shape" transform="translate(113,-126.739)">		<title>Rectangle.16</title>		<desc>Conversion</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="36" cy="253" width="72" height="27"></v:textrect>		<rect x="0" y="239.5" width="72" height="27" rx="2.88" ry="2.88" class="st3"></rect>		<text x="10.97" y="256" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Conversion</text>		</g>	<g id="shape1011-7" v:mid="1011" v:groupcontext="shape" transform="translate(113,-90.2613)">		<title>Rectangle.17</title>		<desc>Quantization</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="36" cy="253" width="72" height="27"></v:textrect>		<rect x="0" y="239.5" width="72" height="27" rx="2.88" ry="2.88" class="st3"></rect>		<text x="7.83" y="256" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Quantization</text>		</g>	<g id="shape1012-10" v:mid="1012" v:groupcontext="shape" transform="translate(9.5,-50)">		<title>Rectangle.18</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<rect x="0" y="127" width="891" height="139.5" rx="2.88" ry="2.88" class="st5"></rect>	</g>	<g id="shape1017-12" v:mid="1017" v:groupcontext="shape" transform="translate(18.5,-11.75)">		<title>Rectangle.1010</title>		<desc>Input</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="36" cy="253" width="72" height="27"></v:textrect>		<rect x="0" y="239.5" width="72" height="27" rx="2.88" ry="2.88" class="st6"></rect>		<text x="24.69" y="256" class="st7" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Input</text>		</g>	<g id="shape1033-15" v:mid="1033" v:groupcontext="shape" transform="translate(853.35,-6.7984)">		<title>Rectangle.1033</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<rect x="0" y="253" width="13.1696" height="13.5" rx="1.44" ry="1.44" class="st8"></rect>	</g>	<g id="shape1034-17" v:mid="1034" v:groupcontext="shape" transform="translate(859.317,-8.1492)">		<title>Sheet.1034</title>		<desc>QAIRT</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="23.9664" cy="261.101" width="47.94" height="10.7984"></v:textrect>		<rect x="0" y="255.702" width="47.9327" height="10.7984" class="st9"></rect>		<text x="12.67" y="263.5" class="st10" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>QAIRT</text>		</g>	<g id="shape1035-20" v:mid="1035" v:groupcontext="shape" transform="translate(796.769,-7.25001)">		<title>Rectangle.1035</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<rect x="0" y="253" width="13.1696" height="13.5" rx="1.44" ry="1.44" class="st11"></rect>	</g>	<g id="shape1036-22" v:mid="1036" v:groupcontext="shape" transform="translate(802.957,-7.4758)">		<title>Sheet.1036</title>		<desc>ONNX</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="21.6562" cy="261.101" width="43.32" height="10.7984"></v:textrect>		<rect x="0" y="255.702" width="43.3125" height="10.7984" class="st9"></rect>		<text x="10.7" y="263.5" class="st10" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>ONNX</text>		</g>	<g id="shape1039-25" v:mid="1039" v:groupcontext="shape" transform="translate(18.5,-115.011)">		<title>Rectangle.1039</title>		<desc>model.onnx</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="36" cy="253" width="72" height="27"></v:textrect>		<rect x="0" y="239.5" width="72" height="27" rx="2.88" ry="2.88" class="st6"></rect>		<text x="9.92" y="256" class="st7" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>model.onnx</text>		</g>	<g id="shape1040-28" v:mid="1040" v:groupcontext="shape" transform="translate(216.5,-126.739)">		<title>Rectangle.1040</title>		<desc>model.bin</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="36" cy="253" width="72" height="27"></v:textrect>		<rect x="0" y="239.5" width="72" height="27" rx="2.88" ry="2.88" class="st6"></rect>		<text x="13.99" y="256" class="st7" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>model.bin</text>		</g>	<g id="shape1041-31" v:mid="1041" v:groupcontext="shape" transform="translate(216.5,-95.2388)">		<title>Rectangle.1041</title>		<desc>model.cpp</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="36" cy="253" width="72" height="27"></v:textrect>		<rect x="0" y="239.5" width="72" height="27" rx="2.88" ry="2.88" class="st6"></rect>		<text x="12.54" y="256" class="st7" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>model.cpp</text>		</g>	<g id="shape1042-34" v:mid="1042" v:groupcontext="shape" transform="translate(315.38,-106.011)">		<title>Rectangle.1042</title>		<desc>Compilation</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="36" cy="253" width="72" height="27"></v:textrect>		<rect x="0" y="239.5" width="72" height="27" rx="2.88" ry="2.88" class="st12"></rect>		<text x="9.1" y="256" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Compilation</text>		</g>	<g id="shape1043-37" v:mid="1043" v:groupcontext="shape" transform="translate(414.26,-106.011)">		<title>Rectangle.1043</title>		<desc>model.so</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="36" cy="253" width="72" height="27"></v:textrect>		<rect x="0" y="239.5" width="72" height="27" rx="2.88" ry="2.88" class="st6"></rect>		<text x="15.34" y="256" class="st7" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>model.so</text>		</g>	<g id="shape1044-40" v:mid="1044" v:groupcontext="shape" transform="translate(513.139,-106.011)">		<title>Rectangle.1044</title>		<desc>conversion</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="36" cy="253" width="72" height="27"></v:textrect>		<rect x="0" y="239.5" width="72" height="27" rx="2.88" ry="2.88" class="st12"></rect>		<text x="11.61" y="256" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>conversion</text>		</g>	<g id="shape1045-43" v:mid="1045" v:groupcontext="shape" transform="translate(612.019,-106.011)">		<title>Rectangle.1045</title>		<desc>model.bin</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="36" cy="253" width="72" height="27"></v:textrect>		<rect x="0" y="239.5" width="72" height="27" rx="2.88" ry="2.88" class="st6"></rect>		<text x="13.99" y="256" class="st7" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>model.bin</text>		</g>	<g id="shape1046-46" v:mid="1046" v:groupcontext="shape" transform="translate(710.899,-106.011)">		<title>Rectangle.1046</title>		<desc>conversion</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="36" cy="253" width="72" height="27"></v:textrect>		<rect x="0" y="239.5" width="72" height="27" rx="2.88" ry="2.88" class="st13"></rect>		<text x="11.61" y="256" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>conversion</text>		</g>	<g id="shape1047-49" v:mid="1047" v:groupcontext="shape" transform="translate(809.779,-106.011)">		<title>Rectangle.1047</title>		<desc>model.onnx</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="36" cy="253" width="72" height="27"></v:textrect>		<rect x="0" y="239.5" width="72" height="27" rx="2.88" ry="2.88" class="st6"></rect>		<text x="9.92" y="256" class="st7" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>model.onnx</text>		</g>	<g id="shape1048-52" v:mid="1048" v:groupcontext="shape" transform="translate(212,-90.7387)">		<title>Sheet.1048</title>		<path d="M0 266.5 L81 266.5 L81 199 L0 199 L0 266.5 Z" class="st14"></path>	</g>	<g id="shape1049-54" v:mid="1049" v:groupcontext="shape" transform="translate(108.5,-81.5)">		<title>Sheet.1049</title>		<path d="M0 266.5 L81 266.5 L81 185.5 L0 185.5 L0 266.5 Z" class="st15"></path>	</g>	<g id="shape1050-56" v:mid="1050" v:groupcontext="shape" transform="translate(702.577,-64.625)">		<title>Rectangle.1050</title>		<desc>model_net.json</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="44.3221" cy="253" width="88.65" height="27"></v:textrect>		<rect x="0" y="239.5" width="88.6442" height="27" rx="2.88" ry="2.88" class="st12"></rect>		<text x="10.41" y="256" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>model_net.json</text>		</g>	<g id="shape1051-59" v:mid="1051" v:groupcontext="shape" transform="translate(432.5,-11.75)">		<title>Rectangle.1051</title>		<desc>backend_extension.json</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="67.5" cy="253" width="135" height="27"></v:textrect>		<rect x="0" y="239.5" width="135" height="27" rx="2.88" ry="2.88" class="st12"></rect>		<text x="14.07" y="256" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>backend_extension.json</text>		</g>	<g id="shape1052-62" v:mid="1052" v:groupcontext="shape" transform="translate(432.5,-205.25)">		<title>Rectangle.1052</title>		<desc>libQNNHtp.so</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="67.5" cy="253" width="135" height="27"></v:textrect>		<rect x="0" y="239.5" width="135" height="27" rx="2.88" ry="2.88" class="st12"></rect>		<text x="36.95" y="256" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>libQNNHtp.so</text>		</g>	<g id="shape1053-65" v:mid="1053" v:groupcontext="shape" transform="translate(86.9656,-128.488) rotate(-0.759906)">		<title>Sheet.1053</title>		<path d="M0 266.5 L12.9 266.5" class="st16"></path>	</g>	<g id="shape1054-71" v:mid="1054" v:groupcontext="shape" transform="translate(189.5,-126.5)">		<title>Sheet.1054</title>		<path d="M0 266.5 L17.4 266.5" class="st16"></path>	</g>	<g id="shape1056-76" v:mid="1056" v:groupcontext="shape" transform="translate(292.625,-119.511)">		<title>Sheet.1056</title>		<path d="M0 266.5 L17.65 266.5" class="st16"></path>	</g>	<g id="shape1057-81" v:mid="1057" v:groupcontext="shape" transform="translate(387.38,-119.511)">		<title>Sheet.1057</title>		<path d="M0 266.5 L21.78 266.5" class="st16"></path>	</g>	<g id="shape1058-86" v:mid="1058" v:groupcontext="shape" transform="translate(486.26,-119.511)">		<title>Sheet.1058</title>		<path d="M0 266.5 L21.78 266.5" class="st16"></path>	</g>	<g id="shape1059-91" v:mid="1059" v:groupcontext="shape" transform="translate(585.139,-119.511)">		<title>Sheet.1059</title>		<path d="M0 266.5 L21.78 266.5" class="st16"></path>	</g>	<g id="shape1060-96" v:mid="1060" v:groupcontext="shape" transform="translate(684.019,-119.511)">		<title>Sheet.1060</title>		<path d="M0 266.5 L21.78 266.5" class="st16"></path>	</g>	<g id="shape1061-101" v:mid="1061" v:groupcontext="shape" transform="translate(782.899,-119.511)">		<title>Sheet.1061</title>		<path d="M0 266.5 L21.78 266.5" class="st16"></path>	</g>	<g id="shape1062-106" v:mid="1062" v:groupcontext="shape" transform="translate(480.399,174.875) rotate(-90)">		<title>Sheet.1062</title>		<path d="M0 266.5 L9.29 266.5" class="st16"></path>	</g>	<g id="shape1063-111" v:mid="1063" v:groupcontext="shape" transform="translate(766.5,61.25) rotate(90)">		<title>Sheet.1063</title>		<path d="M0 266.5 L166.5 266.5" class="st18"></path>	</g>	<g id="shape1064-114" v:mid="1064" v:groupcontext="shape" v:layermember="0" transform="translate(90.5,-25.25)">		<title>Dynamic connector</title>		<path d="M0 266.5 L58.5 266.5 L58.5 206.59" class="st16"></path>	</g>	<g id="shape1065-119" v:mid="1065" v:groupcontext="shape" transform="translate(81.7813,-160.25)">		<title>Sheet.1065</title>		<desc>qnn-onnx-converter.py</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="67.2187" cy="253" width="134.44" height="27"></v:textrect>		<rect x="0" y="239.5" width="134.437" height="27" class="st9"></rect>		<text x="22.74" y="255.7" class="st19" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>qnn-onnx-converter.py</text>		</g>	<g id="shape1066-122" v:mid="1066" v:groupcontext="shape" transform="translate(315.5,-133.25)">		<title>Sheet.1066</title>		<desc>qnn-model-lib-generator.py</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="36" cy="253" width="72" height="27"></v:textrect>		<rect x="0" y="239.5" width="72" height="27" class="st9"></rect>		<text x="7.52" y="250.3" class="st19" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>qnn-model-lib-<tspan x="10.86" dy="1.2em" class="st20">generator.py</tspan></text>		</g>	<g id="shape1067-126" v:mid="1067" v:groupcontext="shape" transform="translate(497.75,-133.25)">		<title>Sheet.1067</title>		<desc>qnn-context-binary-generator.py</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="52.875" cy="253" width="105.75" height="27"></v:textrect>		<rect x="0" y="239.5" width="105.75" height="27" class="st9"></rect>		<text x="14.47" y="250.3" class="st19" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>qnn-context-binary-<tspan x="27.73" dy="1.2em" class="st20">generator.py</tspan></text>		</g>	<g id="shape1068-130" v:mid="1068" v:groupcontext="shape" transform="translate(702.5,-133.25)">		<title>Sheet.1068</title>		<desc>gen_qnn_ctx_onnx_model.py</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="44.3221" cy="253" width="88.65" height="27"></v:textrect>		<rect x="0" y="239.5" width="88.6442" height="27" class="st9"></rect>		<text x="5.47" y="250.3" class="st21" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>gen_qnn_ctx_onnx_<tspan x="25.96" dy="1.2em" class="st20">model.py</tspan></text>		</g></g>
</svg>

### Deployment workflow

Use this workflow to build ORT with the QNN EP, validate the build, and deploy the
model and runtime artifacts to the target device for NPU inference.

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by Microsoft Visio, SVG Export onnx-deployment-workflow.svg Page-1 -->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" width="12.2639in" height="5.32639in" viewbox="0 0 883 383.5" xml:space="preserve" color-interpolation-filters="sRGB" class="st15" aria-label="../_images/onnx-deployment-workflow.svg" svgdefaultwidth="50%"><v:documentproperties v:langid="1033" v:viewmarkup="false"></v:documentproperties>
<style>.svg-3 .st1 { fill: #fafafa; stroke: #d2d7e1; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-3 .st2 { fill: none; stroke: #d2d7e1; stroke-dasharray: 10.5, 7.5; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.5 }
.svg-3 .st3 { fill: #000000; font-family: Roboto; font-size: 0.833336em }
.svg-3 .st4 { fill: none; stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.24 }
.svg-3 .st5 { font-size: 1em }
.svg-3 .st6 { fill: none; stroke: #d2d7e1; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.5 }
.svg-3 .st7 { fill: #000000; font-family: Roboto; font-size: 1.00001em }
.svg-3 .st8 { fill: #fafafa; stroke: #d2d7e1; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-3 .st9 { fill: none; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-3 .st10 { fill: #d2d7e1; stroke: #d2d7e1; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.24 }
.svg-3 .st11 { marker-end: url("#3-mrkr4-62"); stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-3 .st12 { fill: #000000; fill-opacity: 1; stroke: #000000; stroke-opacity: 1; stroke-width: 0.29411764705882 }
.svg-3 .st13 { stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-3 .st14 { marker-end: url("#3-mrkr4-62"); marker-start: url("#3-mrkr4-77"); stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-3 .st15 { fill: none; fill-rule: evenodd; font-size: 12px; overflow: visible; stroke-linecap: square; stroke-miterlimit: 3 }</style>
<defs id="Markers">	<g id="lend4">		<path d="M 2 1 L 0 0 L 2 -1 L 2 1 " style="stroke:none"></path>	</g>	<marker id="3-mrkr4-62" class="st12" v:arrowtype="4" v:arrowsize="1" v:setback="6.8" refx="-6.8" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend4" transform="scale(-3.4,-3.4) "></use>	</marker>	<marker id="3-mrkr4-77" class="st12" v:arrowtype="4" v:arrowsize="1" v:setback="6.32" refx="6.32" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend4" transform="scale(3.4) "></use>	</marker></defs><g v:mid="0" v:index="1" v:groupcontext="foregroundPage">	<title>Page-1</title>	<v:pageproperties v:drawingscale="1" v:pagescale="1" v:drawingunits="19" v:shadowoffsetx="9" v:shadowoffsety="-9"></v:pageproperties>	<g id="shape10-1" v:mid="10" v:groupcontext="shape" transform="translate(0.5,-0.5)">		<title>Rectangle.10</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<rect x="0" y="0.999988" width="882" height="382.5" rx="3.6" ry="3.6" class="st1"></rect>	</g>	<g id="shape18-3" v:mid="18" v:groupcontext="shape" transform="translate(93.7548,-81.5)">		<title>Rectangle.18</title>		<desc>Yocto Linux</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(6,6,4,4)" v:verticalalign="0"></v:textblock>		<v:textrect cx="151.373" cy="283.032" width="302.75" height="200.937"></v:textrect>		<rect x="0" y="182.563" width="302.745" height="200.937" rx="2.88" ry="2.88" class="st2"></rect>		<text x="244.56" y="197.56" class="st3" v:langid="1033"><v:paragraph v:horizalign="2"></v:paragraph><v:tablist></v:tablist>Yocto Linux</text>		</g>	<g id="shape19-6" v:mid="19" v:groupcontext="shape" transform="translate(425.75,-229.774)">		<title>Rectangle.19</title>		<desc>libQnnHtp.so</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="38.25" cy="366.512" width="76.5" height="33.9758"></v:textrect>		<rect x="0" y="349.524" width="76.5" height="33.9758" rx="2.88" ry="2.88" class="st4"></rect>		<text x="9.31" y="369.51" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>libQnnHtp.so</text>		</g>	<g id="shape20-9" v:mid="20" v:groupcontext="shape" transform="translate(396.5,-338)">		<title>Rectangle.20</title>		<desc>model.onnx (qdq / qnn_ctx)</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="67.5" cy="365.5" width="135" height="36"></v:textrect>		<rect x="0" y="347.5" width="135" height="36" rx="2.88" ry="2.88" class="st4"></rect>		<text x="41.42" y="362.5" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>model.onnx <v:lf></v:lf><tspan x="33.67" dy="1.2em" class="st5">(qdq / qnn_ctx)</tspan></text>		</g>	<g id="shape1010-13" v:mid="1010" v:groupcontext="shape" transform="translate(22.7596,-164.981)">		<title>Rectangle.1010</title>		<desc>Input</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="31.6202" cy="366.512" width="63.25" height="33.9758"></v:textrect>		<rect x="0" y="349.524" width="63.2404" height="33.9758" rx="2.88" ry="2.88" class="st4"></rect>		<text x="20.31" y="369.51" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Input</text>		</g>	<g id="shape1031-16" v:mid="1031" v:groupcontext="shape" transform="translate(214.01,-29.5242)">		<title>Rectangle.1031</title>		<desc>Output</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="31.6202" cy="366.512" width="63.25" height="33.9758"></v:textrect>		<rect x="0" y="349.524" width="63.2404" height="33.9758" rx="2.88" ry="2.88" class="st4"></rect>		<text x="16.6" y="369.51" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Output</text>		</g>	<g id="shape1032-19" v:mid="1032" v:groupcontext="shape" transform="translate(533.127,-81.5)">		<title>Rectangle.1032</title>		<desc>Ubuntu</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(6,6,4,4)" v:verticalalign="0"></v:textblock>		<v:textrect cx="151.373" cy="283.032" width="302.75" height="200.937"></v:textrect>		<rect x="0" y="182.563" width="302.745" height="200.937" rx="2.88" ry="2.88" class="st2"></rect>		<text x="264.84" y="197.56" class="st3" v:langid="1033"><v:paragraph v:horizalign="2"></v:paragraph><v:tablist></v:tablist>Ubuntu</text>		</g>	<g id="shape1033-22" v:mid="1033" v:groupcontext="shape" transform="translate(650.75,-29.5242)">		<title>Rectangle.1033</title>		<desc>Output</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="31.6202" cy="366.512" width="63.25" height="33.9758"></v:textrect>		<rect x="0" y="349.524" width="63.2404" height="33.9758" rx="2.88" ry="2.88" class="st4"></rect>		<text x="16.6" y="369.51" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Output</text>		</g>	<g id="shape1039-25" v:mid="1039" v:groupcontext="shape" transform="translate(14.5625,-18.5)">		<title>Sheet.1039</title>		<desc>IQ-9 / RB3 Gen 2 HTP</desc>		<v:textblock v:margins="rect(6,6,4,4)" v:verticalalign="0"></v:textblock>		<v:textrect cx="415.969" cy="232.75" width="831.94" height="301.5"></v:textrect>		<rect x="0" y="82" width="831.937" height="301.5" rx="4.5" ry="4.5" class="st6"></rect>		<text x="711.8" y="98.8" class="st7" v:langid="1033"><v:paragraph v:horizalign="2"></v:paragraph><v:tablist></v:tablist>IQ-9 / RB3 Gen 2 HTP</text>		</g>	<g id="shape1040-28" v:mid="1040" v:groupcontext="shape" transform="translate(108.5,-99.5)">		<title>Sheet.1040</title>		<desc>Qualcomm IM SDK docker container</desc>		<v:textblock v:margins="rect(6,6,4,4)" v:verticalalign="0"></v:textblock>		<v:textrect cx="60.1875" cy="308.125" width="120.38" height="150.75"></v:textrect>		<rect x="0" y="232.75" width="120.375" height="150.75" class="st8"></rect>		<text x="30.49" y="247.75" class="st3" v:langid="1033"><v:paragraph v:horizalign="2"></v:paragraph><v:tablist></v:tablist>Qualcomm IM SDK <tspan x="39.78" dy="1.2em" class="st5">docker container</tspan></text>		</g>	<g id="shape1041-32" v:mid="1041" v:groupcontext="shape" transform="translate(109.062,-99.5)">		<title>Sheet.1041</title>		<desc>run_qnn_ctx.py / run_qdq_model.py</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="60.1875" cy="358.75" width="120.38" height="49.5"></v:textrect>		<rect x="0" y="334" width="120.375" height="49.5" class="st9"></rect>		<text x="23.6" y="355.75" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>run_qnn_ctx.py /<v:lf></v:lf><tspan x="19.56" dy="1.2em" class="st5">run_qdq_model.py</tspan></text>		</g>	<g id="shape1042-36" v:mid="1042" v:groupcontext="shape" transform="translate(262.062,-99.5)">		<title>Sheet.1042</title>		<desc>Native</desc>		<v:textblock v:margins="rect(6,6,4,4)" v:verticalalign="0"></v:textblock>		<v:textrect cx="60.1875" cy="308.125" width="120.38" height="150.75"></v:textrect>		<rect x="0" y="232.75" width="120.375" height="150.75" class="st8"></rect>		<text x="85.97" y="247.75" class="st3" v:langid="1033"><v:paragraph v:horizalign="2"></v:paragraph><v:tablist></v:tablist>Native</text>		</g>	<g id="shape1043-39" v:mid="1043" v:groupcontext="shape" transform="translate(262.625,-99.5)">		<title>Sheet.1043</title>		<desc>Run C++ sample application</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="60.1875" cy="358.75" width="120.38" height="49.5"></v:textrect>		<rect x="0" y="334" width="120.375" height="49.5" class="st9"></rect>		<text x="23.85" y="355.75" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Run C++ sample <tspan x="35.64" dy="1.2em" class="st5">application</tspan></text>		</g>	<g id="shape1045-43" v:mid="1045" v:groupcontext="shape" transform="translate(545,-96.125)">		<title>Sheet.1045</title>		<desc>Native</desc>		<v:textblock v:margins="rect(6,6,4,4)" v:verticalalign="0"></v:textblock>		<v:textrect cx="138.937" cy="308.125" width="277.88" height="150.75"></v:textrect>		<rect x="0" y="232.75" width="277.875" height="150.75" class="st8"></rect>		<text x="243.47" y="247.75" class="st3" v:langid="1033"><v:paragraph v:horizalign="2"></v:paragraph><v:tablist></v:tablist>Native</text>		</g>	<g id="shape1038-46" v:mid="1038" v:groupcontext="shape" transform="translate(122,-163.968)">		<title>Rectangle.1038</title>		<desc>Deployment</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="342" cy="365.5" width="684" height="36"></v:textrect>		<rect x="0" y="347.5" width="684" height="36" rx="2.88" ry="2.88" class="st10"></rect>		<text x="310.1" y="369.1" class="st7" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Deployment</text>		</g>	<g id="shape1044-49" v:mid="1044" v:groupcontext="shape" transform="translate(549.5,-96.125)">		<title>Sheet.1044</title>		<desc>run_qnn_ctx.py / run_qdq_model.py</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="60.1875" cy="358.75" width="120.38" height="49.5"></v:textrect>		<rect x="0" y="334" width="120.375" height="49.5" class="st9"></rect>		<text x="23.6" y="355.75" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>run_qnn_ctx.py /<v:lf></v:lf><tspan x="19.56" dy="1.2em" class="st5">run_qdq_model.py</tspan></text>		</g>	<g id="shape1046-53" v:mid="1046" v:groupcontext="shape" transform="translate(703.062,-96.125)">		<title>Sheet.1046</title>		<desc>Run C++ sample application</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="60.1875" cy="358.75" width="120.38" height="49.5"></v:textrect>		<rect x="0" y="334" width="120.375" height="49.5" class="st9"></rect>		<text x="23.85" y="355.75" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Run C++ sample <tspan x="35.64" dy="1.2em" class="st5">application</tspan></text>		</g>	<g id="shape1048-57" v:mid="1048" v:groupcontext="shape" transform="translate(1065.75,285.962) rotate(89.7889)">		<title>Sheet.1048</title>		<path d="M0 383.5 L27.53 383.5" class="st11"></path>	</g>	<g id="shape1049-63" v:mid="1049" v:groupcontext="shape" transform="translate(629.13,220.1) rotate(90)">		<title>Sheet.1049</title>		<path d="M0 383.5 L94.8 383.5" class="st11"></path>	</g>	<g id="shape1050-68" v:mid="1050" v:groupcontext="shape" transform="translate(847.5,45.5) rotate(90)">		<title>Sheet.1050</title>		<path d="M0 383.5 L40.5 383.5" class="st13"></path>	</g>	<g id="shape1051-71" v:mid="1051" v:groupcontext="shape" transform="translate(243.5,-199.968)">		<title>Sheet.1051</title>		<path d="M0 378.76 L0 378.4 L0 285.97 L220.5 285.97 L441 285.97 L441 378.4" class="st14"></path>	</g>	<g id="shape1052-79" v:mid="1052" v:groupcontext="shape" transform="translate(847.5,153.726) rotate(90)">		<title>Sheet.1052</title>		<path d="M0 383.5 L24.71 383.5" class="st11"></path>	</g>	<g id="shape1053-84" v:mid="1053" v:groupcontext="shape" transform="translate(86,-181.968)">		<title>Sheet.1053</title>		<path d="M0 383.5 L30.9 383.5" class="st11"></path>	</g></g>
</svg>

Last Published: May 14, 2026

[Previous Topic
Customize LiteRT](https://docs.qualcomm.com/bundle/publicresource/80-80022-15B/topics/customize-litert.md) [Next Topic
Prepare ONNX models](https://docs.qualcomm.com/bundle/publicresource/80-80022-15B/topics/onnx-prepare-model.md)