# AI software overview and architecture

Qualcomm^®^ Linux AI software allows you to optimally deploy pre-trained, deep learning models on Qualcomm hardware
accelerators, such as neural processing unit (NPU), graphic processing unit (GPU), and
central processing unit (CPU). Qualcomm Linux contains software development kits (SDKs), APIs, sample applications,
development tools, and third-party frameworks support, such as GStreamer and TFLite, for application development.

Multimedia AI applications use the Qualcomm IM SDK GStreamer Plugin APIs to take advantage of Qualcomm AI Runtime SDK
APIs that provide lower-level hardware acceleration for AI use cases, as shown in the following figure:

<?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 top_level_ai_hw.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="11.1215in" height="7.16319in" viewbox="0 0 800.75 515.75" xml:space="preserve" color-interpolation-filters="sRGB" class="st26" aria-label="../_images/top_level_ai_hw.svg"><v:documentproperties v:langid="1033" v:viewmarkup="false"></v:documentproperties>
<style>.svg-1 .st1 { fill: #ffffff; stroke: #ffffff; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-1 .st2 { fill: #ffffff; stroke: #d8d8d8; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-1 .st3 { fill: #000000; font-family: Roboto; font-size: 1.33333em }
.svg-1 .st4 { font-size: 1em }
.svg-1 .st5 { fill: #040a40; stroke: #4a5a75; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-1 .st6 { fill: #ffffff; font-family: Roboto; font-size: 1.33333em }
.svg-1 .st7 { fill: #3253dc; stroke: #d8d8d8; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-1 .st8 { baseline-shift: 32.4948%; font-size: 0.649895em }
.svg-1 .st9 { fill: #3253dc; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-1 .st10 { fill: #ffffff; font-family: Roboto; font-size: 1.24999em }
.svg-1 .st11 { baseline-shift: 32.495%; font-size: 0.6499em }
.svg-1 .st12 { fill: #d2d7e1; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-1 .st13 { marker-end: url("#mrkr13-54"); stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2 }
.svg-1 .st14 { fill: #000000; fill-opacity: 1; stroke: #000000; stroke-opacity: 1; stroke-width: 0.44247787610619 }
.svg-1 .st15 { marker-end: url("#mrkr13-65"); stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.75 }
.svg-1 .st16 { fill: #000000; fill-opacity: 1; stroke: #000000; stroke-opacity: 1; stroke-width: 0.40983606557377 }
.svg-1 .st17 { fill: #7ba0ff; stroke: #7ba0ff; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-1 .st18 { fill: #ffffff; font-family: Roboto; font-size: 1.16666em }
.svg-1 .st19 { fill: none; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-1 .st20 { fill: #000000; font-family: Roboto; font-size: 0.833336em }
.svg-1 .st21 { fill: #2a2aea; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.24 }
.svg-1 .st22 { fill: none; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-1 .st23 { fill: #000000; font-family: Roboto; font-size: 0.75em }
.svg-1 .st24 { fill: #d2d7e1; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.24 }
.svg-1 .st25 { fill: #040a40; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.24 }
.svg-1 .st26 { fill: none; fill-rule: evenodd; font-size: 12px; overflow: visible; stroke-linecap: square; stroke-miterlimit: 3 }</style>
<defs id="Markers">	<g id="lend13">		<path d="M 3 1 L 0 0 L 3 -1 L 3 1 " style="stroke:none"></path>	</g>	<marker id="mrkr13-54" class="st14" v:arrowtype="13" v:arrowsize="2" v:setback="6.78" refx="-6.78" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend13" transform="scale(-2.26,-2.26) "></use>	</marker>	<marker id="mrkr13-65" class="st16" v:arrowtype="13" v:arrowsize="2" v:setback="7.32" refx="-7.32" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend13" transform="scale(-2.44,-2.44) "></use>	</marker></defs><g v:mid="0" v:index="1" v:groupcontext="foregroundPage">	<title>Page-1</title>	<v:pageproperties v:drawingscale="0.0138889" v:pagescale="0.0138889" v:drawingunits="29" v:shadowoffsetx="9" v:shadowoffsety="-9"></v:pageproperties>	<v:layer v:name="full" v:index="0"></v:layer>	<g id="shape1313-1" v:mid="1313" v:groupcontext="shape" transform="translate(0.375,-0.375)">		<title>Sheet.1313</title>		<rect x="0" y="0.750002" width="800" height="515" rx="4" ry="4" class="st1"></rect>	</g>	<g id="shape1218-3" v:mid="1218" v:groupcontext="shape" transform="translate(18.584,-39.608)">		<title>Sheet.1218</title>		<desc>Hardware</desc>		<v:textblock v:margins="rect(4,4,4,4)" v:verticalalign="0"></v:textblock>		<v:textrect cx="383.583" cy="458.669" width="767.17" height="114.162"></v:textrect>		<rect x="0" y="401.588" width="767.166" height="114.162" rx="4.5" ry="4.5" class="st2"></rect>		<text x="4" y="419.99" class="st3" v:langid="1041"><v:paragraph></v:paragraph><v:tablist></v:tablist>Hardware</text>		</g>	<g id="shape1219-6" v:mid="1219" v:groupcontext="shape" transform="translate(18.584,-175.967)">		<title>Sheet.1219</title>		<desc>AI SDKs</desc>		<v:textblock v:margins="rect(4,4,4,4)" v:verticalalign="0"></v:textblock>		<v:textrect cx="383.583" cy="458.669" width="767.17" height="114.162"></v:textrect>		<rect x="0" y="401.588" width="767.166" height="114.162" rx="4.5" ry="4.5" class="st2"></rect>		<text x="4" y="419.99" class="st3" v:langid="1041"><v:paragraph></v:paragraph><v:tablist></v:tablist>AI SDKs</text>		</g>	<g id="shape1220-9" v:mid="1220" v:groupcontext="shape" transform="translate(18.584,-311.375)">		<title>Sheet.1220</title>		<desc>Qualcomm IMSDK Gstreamer plugins</desc>		<v:textblock v:margins="rect(4,4,4,4)" v:verticalalign="0"></v:textblock>		<v:textrect cx="383.583" cy="458.669" width="767.17" height="114.162"></v:textrect>		<rect x="0" y="401.588" width="767.166" height="114.162" rx="4.5" ry="4.5" class="st2"></rect>		<text x="4" y="419.99" class="st3" v:langid="1041"><v:paragraph></v:paragraph><v:tablist></v:tablist>Qualcomm <tspan class="st4" v:langid="1033">IMSDK </tspan>Gstreamer <tspan class="st4" v:langid="1033">plugins</tspan></text>		</g>	<g id="shape1221-14" v:mid="1221" v:groupcontext="shape" transform="translate(18.584,-452.637)">		<title>Sheet.1221</title>		<desc>AI applications</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="383.583" cy="491.867" width="767.17" height="47.7652"></v:textrect>		<rect x="0" y="467.985" width="767.166" height="47.7652" rx="4.5" ry="4.5" class="st5"></rect>		<text x="330.8" y="496.67" class="st6" v:langid="1041"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>AI applications</text>		</g>	<g id="shape1222-17" v:mid="1222" v:groupcontext="shape" transform="translate(52.1191,-332.623)">		<title>Sheet.1222</title>		<desc>Qualcomm® Neural Processing Engine plugin (qtimlsnpe)</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="155.26" cy="484.333" width="310.52" height="62.8345"></v:textrect>		<rect x="0" y="452.915" width="310.52" height="62.8345" rx="4.5" ry="4.5" class="st7"></rect>		<text x="19.02" y="479.53" class="st6" v:langid="1041"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Qualcomm<tspan dy="-0.235em" class="st8" v:basefontsize="16">®</tspan><tspan dy="0.153em" class="st4"> </tspan>Neural Processing Engine <tspan x="90.76" dy="1.2em" class="st4">plugin (qtimlsnpe)</tspan></text>		</g>	<g id="shape1223-23" v:mid="1223" v:groupcontext="shape" transform="translate(52.1191,-197.213)">		<title>Sheet.1223</title>		<desc>Qualcomm AI Runtime SDK</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="346.628" cy="484.356" width="693.26" height="62.7889"></v:textrect>		<rect x="0" y="452.961" width="693.256" height="62.7889" rx="4.5" ry="4.5" class="st9"></rect>		<text x="249.75" y="489.16" class="st6" v:langid="1041"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Qualcomm <tspan class="st4" v:langid="1033">AI Runtime SDK</tspan></text>		</g>	<g id="shape1224-27" v:mid="1224" v:groupcontext="shape" transform="translate(421.561,-332.623)">		<title>Sheet.1224</title>		<desc>Qualcomm® AI Engine Direct plugin (qtimlqnn)</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="77.6299" cy="484.333" width="155.26" height="62.8345"></v:textrect>		<rect x="0" y="452.915" width="155.26" height="62.8345" rx="4.5" ry="4.5" class="st7"></rect>		<text x="4.07" y="470.83" class="st10" v:langid="1041"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Qualcomm<tspan dy="-0.235em" class="st11" v:basefontsize="15">®</tspan><tspan dy="0.153em" class="st4"> </tspan>AI Engine <tspan x="35.82" dy="1.2em" class="st4">Direct plugin </tspan><tspan x="42.99" dy="1.2em" class="st4">(qtimlqnn)</tspan></text>		</g>	<g id="shape1225-34" v:mid="1225" v:groupcontext="shape" transform="translate(588.237,-332.623)">		<title>Sheet.1225</title>		<desc>TensorFlow Lite plugin (qtimltflite)</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="77.6299" cy="484.333" width="155.26" height="62.8345"></v:textrect>		<rect x="0" y="452.915" width="155.26" height="62.8345" rx="4.5" ry="4.5" class="st7"></rect>		<text x="24.35" y="470.83" class="st10" v:langid="1041"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>TensorFlow Lite <tspan x="57.3" dy="1.2em" class="st4">plugin<v:lf></v:lf></tspan><tspan x="38.56" dy="1.2em" class="st4"> </tspan>(qtimltflite)</text>		</g>	<g id="shape1226-39" v:mid="1226" v:groupcontext="shape" transform="translate(52.1191,-60.0209)">		<title>Sheet.1226</title>		<desc>NPU (DSP/HMX/HTP)</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="91.3293" cy="484.698" width="182.66" height="62.1039"></v:textrect>		<rect x="0" y="453.646" width="182.659" height="62.1039" rx="4.5" ry="4.5" class="st12"></rect>		<text x="75.39" y="479.9" class="st3" v:langid="1041"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>NPU <v:newlinechar></v:newlinechar><v:paragraph v:horizalign="1"></v:paragraph><tspan x="30.95" dy="1.2em" class="st4">(DSP/HMX/HTP)</tspan></text>		</g>	<g id="shape1227-43" v:mid="1227" v:groupcontext="shape" transform="translate(306.479,-60.0209)">		<title>Sheet.1227</title>		<desc>GPU</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="91.3293" cy="484.698" width="182.66" height="62.1039"></v:textrect>		<rect x="0" y="453.646" width="182.659" height="62.1039" rx="4.5" ry="4.5" class="st12"></rect>		<text x="75.65" y="489.5" class="st3" v:langid="1041"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>GPU</text>		</g>	<g id="shape1228-46" v:mid="1228" v:groupcontext="shape" transform="translate(560.838,-60.0209)">		<title>Sheet.1228</title>		<desc>CPU</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="91.3293" cy="484.698" width="182.66" height="62.1039"></v:textrect>		<rect x="0" y="453.646" width="182.659" height="62.1039" rx="4.5" ry="4.5" class="st12"></rect>		<text x="75.89" y="489.5" class="st3" v:langid="1041"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>CPU</text>		</g>	<g id="shape1229-49" v:mid="1229" v:groupcontext="shape" v:layermember="0" transform="translate(917.917,63.1128) rotate(90)">		<title>Sheet.1229</title>		<path d="M0 515.75 L13.54 515.75" class="st13"></path>	</g>	<g id="shape1230-55" v:mid="1230" v:groupcontext="shape" transform="translate(723.129,183.37) rotate(90)">		<title>Sheet.1230</title>		<path d="M0 515.75 L58.82 515.75" class="st13"></path>	</g>	<g id="shape1231-60" v:mid="1231" v:groupcontext="shape" v:layermember="0" transform="translate(917.917,339.783) rotate(90)">		<title>Sheet.1231</title>		<path d="M0 515.75 L9.84 515.75" class="st15"></path>	</g>	<g id="shape1234-66" v:mid="1234" v:groupcontext="shape" transform="translate(1204.45,182.401) rotate(90)">		<title>Sheet.1234</title>		<path d="M0 515.75 L58.77 515.75" class="st13"></path>	</g>	<g id="shape1235-71" v:mid="1235" v:groupcontext="shape" transform="translate(1014.94,182.49) rotate(90)">		<title>Sheet.1235</title>		<path d="M0 515.75 L58.77 515.75" class="st13"></path>	</g>	<g id="shape1240-76" v:mid="1240" v:groupcontext="shape" transform="translate(630.375,-210.851)">		<title>Sheet.1240</title>		<desc>TFLite Delegate</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="48.5695" cy="495.772" width="97.14" height="39.9566"></v:textrect>		<rect x="0" y="475.793" width="97.139" height="39.9566" rx="4.5" ry="4.5" class="st17"></rect>		<text x="29.06" y="491.57" class="st18" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>TFLite <tspan x="21.13" dy="1.2em" class="st4">Delegate</tspan></text>		</g>	<g id="shape1314-80" v:mid="1314" v:groupcontext="shape" transform="translate(719.183,-5.37486)">		<title>Sheet.1314</title>		<desc>Third-party</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="31.1918" cy="505.75" width="62.39" height="20"></v:textrect>		<rect x="0" y="495.75" width="62.3835" height="20" rx="4" ry="4" class="st19"></rect>		<text x="7.13" y="508.75" class="st20" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Third-party</text>		</g>	<g id="shape1315-83" v:mid="1315" v:groupcontext="shape" transform="translate(642.704,-9.94343)">		<title>Sheet.1315</title>		<desc>Hardware</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="27.6711" cy="510.318" width="55.35" height="10.8629"></v:textrect>		<rect x="0" y="504.887" width="55.3422" height="10.8629" rx="4" ry="4" class="st19"></rect>		<text x="6.06" y="513.32" class="st20" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Hardware</text>		</g>	<g id="shape1319-86" v:mid="1319" v:groupcontext="shape" transform="translate(546.605,-8.6251)">		<title>Rectangle.69</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<rect x="0" y="502.25" width="13.1696" height="13.5" rx="1.44" ry="1.44" class="st21"></rect>	</g>	<g id="shape1320-88" v:mid="1320" v:groupcontext="shape" transform="translate(559.883,-9.97591)">		<title>Sheet.1320</title>		<desc>Qualcomm</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="27.7457" cy="510.351" width="55.5" height="10.7984"></v:textrect>		<rect x="0" y="504.952" width="55.4915" height="10.7984" class="st22"></rect>		<text x="5.82" y="513.05" class="st23" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Qualcomm</text>		</g>	<g id="shape1321-91" v:mid="1321" v:groupcontext="shape" transform="translate(628.375,-8.6251)">		<title>Rectangle.1321</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<rect x="0" y="502.25" width="13.1696" height="13.5" rx="1.44" ry="1.44" class="st24"></rect>	</g>	<g id="shape1322-93" v:mid="1322" v:groupcontext="shape" transform="translate(706.375,-8.6251)">		<title>Rectangle.1322</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<rect x="0" y="502.25" width="13.1696" height="13.5" rx="1.44" ry="1.44" class="st25"></rect>	</g></g>
</svg>

**Top-level AI hardware and software blocks of the Qualcomm Linux AI stack**

The key components of the Qualcomm Linux AI software are as follows:

- [AI applications:](https://docs.qualcomm.com/doc/80-70023-15/topic/sample-apps.html) Sample applications based on Gstreamer that you can
[customize](https://docs.qualcomm.com/doc/80-70023-15B/topic/customize-reference-app.html).
- [GStreamer plugins](https://docs.qualcomm.com/doc/80-70023-50/topic/gst-plugin-architecture.html):
Qualcomm Linux software offers GStreamer-based, machine learning plugins to accelerate AI inference using tools such as,
LiteRT and Qualcomm AI Runtime SDK, along with GStreamer plugins for pre- and postprocessing.
- [Qualcomm AI Runtime SDK (QAIRT)](https://docs.qualcomm.com/doc/80-63442-10/): QAIRT provides tools and libraries to optimally accelerate AI models on multiple
hardware accelerators.
- Qualcomm System-on-Chip (SoC) offer three hardware cores for AI loads.

    - [Neural Processing Unit (NPU):](https://docs.qualcomm.com/doc/80-70023-15B/topic/run-models.html)
The NPU, also referred to as Qualcomm® Hexagon™ Tensor Processor (HTP) or DSP/HMX, is suitable for running AI workloads
with low-power and high-performance.
To get optimized performance, quantize pre-trained models to one of the supported precisions.
    - [Graphics Processing Unit (GPU):](https://docs.qualcomm.com/doc/80-70023-15B/topic/run-models.html)
Qualcomm® Adreno™ GPU is suitable for running AI workloads with medium-power and medium-performance.
AI workloads are accelerated with OpenCL kernels.
You can also use the GPU to accelerate model pre- and postprocessing.
    - [Central Processing Unit (CPU):](https://docs.qualcomm.com/doc/80-70023-15B/topic/run-models.html)
Use AI inferencing on the CPU to benchmark model accuracy or performance against other hardware accelerators.
You can also use the CPU to run model pre- and postprocessing.

## Architecture

The following image shows available AI runtimes, such as ONNX runtime and LiteRT, the available hardware
accelerators, such as the NPU, GPU, and CPU, and the backend libraries for each accelerator.

<?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 ai-arch.svg ai-arch -->
<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.5139in" height="10.8472in" viewbox="0 0 757 781" xml:space="preserve" color-interpolation-filters="sRGB" class="st25" aria-label="Block diagram showing the available runtimes, backend libraries, and hardware accelerators."><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-2 .st1 { fill: #ffffff; stroke: #ffffff; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-2 .st2 { marker-end: url("#mrkr4-8"); stroke: #000000; stroke-width: 2 }
.svg-2 .st3 { fill: #000000; fill-opacity: 1; stroke: #000000; stroke-opacity: 1; stroke-width: 0.44247787610619 }
.svg-2 .st4 { fill: none; stroke: #7f7f7f; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-2 .st5 { fill: #000000; font-family: Roboto; font-size: 1.5em; font-weight: bold }
.svg-2 .st6 { font-size: 1em }
.svg-2 .st7 { fill: #f5f6f7; stroke: #7f7f7f; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-2 .st8 { fill: #3253dc; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-2 .st9 { fill: #ffffff; font-family: Roboto; font-size: 1.33333em }
.svg-2 .st10 { fill: #ffffff; font-family: Roboto; font-size: 1.5em }
.svg-2 .st11 { fill: #dee3ec; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-2 .st12 { fill: #000000; font-family: Roboto; font-size: 1.33333em }
.svg-2 .st13 { fill: #000000; font-family: Roboto; font-size: 1.5em }
.svg-2 .st14 { marker-end: url("#mrkr4-8"); stroke: #000000; stroke-linecap: butt; stroke-width: 2 }
.svg-2 .st15 { fill: #007884; stroke: #007884; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2 }
.svg-2 .st16 { fill: #007884; stroke: #007884; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-2 .st17 { fill: #3253dc; stroke: #3253dc; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-2 .st18 { fill: #ffffff; font-family: Roboto; font-size: 1.16666em }
.svg-2 .st19 { fill: #dee3ec; stroke: #dee3ec; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-2 .st20 { fill: #000000; font-family: Roboto; font-size: 1.16666em }
.svg-2 .st21 { fill: #040a40; stroke: #040a40; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-2 .st22 { fill: #2a2aea; stroke: #2a2aea; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-2 .st23 { fill: #007884; stroke: #007884; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-2 .st24 { fill: #040a40; stroke: #040a40; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-2 .st25 { 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="mrkr4-8" class="st3" v:arrowtype="4" v:arrowsize="2" v:setback="4.52" refx="-4.52" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend4" transform="scale(-2.26,-2.26) "></use>	</marker></defs><g v:mid="16" v:index="5" v:groupcontext="foregroundPage">	<title>ai-arch</title>	<v:pageproperties v:drawingscale="0.0138889" v:pagescale="0.0138889" v:drawingunits="29" v:shadowoffsetx="9" v:shadowoffsety="-9"></v:pageproperties>	<v:layer v:name="interfaces" v:index="0"></v:layer>	<g id="shape61-1" v:mid="61" v:groupcontext="shape" transform="translate(18.5,-18.5)">		<title>Sheet.61</title>		<rect x="0" y="37" width="720" height="744" rx="8" ry="8" class="st1"></rect>	</g>	<g id="shape38-3" v:mid="38" v:groupcontext="shape" transform="translate(1415.2,72.9773) rotate(89.3823)">		<title>Sheet.38</title>		<path d="M0 781 L30.81 781" class="st2"></path>	</g>	<g id="shape1-9" v:mid="1" v:groupcontext="shape" transform="translate(36.2417,-210.85)">		<title>Sheet.1</title>		<desc>Backend libraries</desc>		<v:textblock v:margins="rect(8,8,8,8)" v:verticalalign="0"></v:textblock>		<v:textrect cx="340" cy="667.085" width="680" height="227.83"></v:textrect>		<rect x="0" y="553.17" width="680" height="227.83" rx="4.5" ry="4.5" class="st4"></rect>		<text x="8" y="577.37" class="st5" v:langid="1033"><v:paragraph></v:paragraph><v:tablist></v:tablist>B<tspan class="st6" v:langid="1041">ackend libraries</tspan></text>		</g>	<g id="shape4-13" v:mid="4" v:groupcontext="shape" transform="translate(276.242,-232.631)">		<title>Sheet.4</title>		<rect x="0" y="607.132" width="200" height="173.868" rx="4.5" ry="4.5" class="st7"></rect>	</g>	<g id="shape5-15" v:mid="5" v:groupcontext="shape" transform="translate(282.182,-352.983)">		<title>Sheet.5</title>		<desc>Qualcomm AI Runtime API</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="91.234" cy="758.526" width="182.47" height="44.9487"></v:textrect>		<rect x="0" y="736.051" width="182.468" height="44.9487" rx="4.5" ry="4.5" class="st8"></rect>		<text x="42.88" y="753.73" class="st9" v:langid="1041"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Qualcomm AI<v:lf></v:lf><tspan x="47.26" dy="1.2em" class="st6" v:langid="1033">Runtime </tspan>API</text>		</g>	<g id="shape6-19" v:mid="6" v:groupcontext="shape" transform="translate(284.781,-298.65)">		<title>Sheet.6</title>		<desc>Kernels</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="91.234" cy="758.526" width="182.47" height="44.9487"></v:textrect>		<rect x="0" y="736.051" width="182.468" height="44.9487" rx="4.5" ry="4.5" class="st8"></rect>		<text x="61.22" y="763.93" class="st10" v:langid="1041"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Kernels</text>		</g>	<g id="shape7-22" v:mid="7" v:groupcontext="shape" transform="translate(284.781,-242.834)">		<title>Sheet.7</title>		<desc>OpenCL</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="91.234" cy="758.526" width="182.47" height="44.9487"></v:textrect>		<rect x="0" y="736.051" width="182.468" height="44.9487" rx="4.5" ry="4.5" class="st8"></rect>		<text x="59.56" y="763.93" class="st10" v:langid="1041"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>OpenCL</text>		</g>	<g id="shape9-25" v:mid="9" v:groupcontext="shape" transform="translate(502.242,-232.631)">		<title>Sheet.9</title>		<rect x="0" y="607.132" width="200" height="173.868" rx="4.5" ry="4.5" class="st7"></rect>	</g>	<g id="shape10-27" v:mid="10" v:groupcontext="shape" transform="translate(508.62,-352.983)">		<title>Sheet.10</title>		<desc>Qualcomm AI Runtime API</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="91.234" cy="758.526" width="182.47" height="44.9487"></v:textrect>		<rect x="0" y="736.051" width="182.468" height="44.9487" rx="4.5" ry="4.5" class="st8"></rect>		<text x="42.88" y="753.73" class="st9" v:langid="1041"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Qualcomm AI<v:lf></v:lf><tspan x="47.26" dy="1.2em" class="st6" v:langid="1033">Runtime </tspan>API</text>		</g>	<g id="shape11-31" v:mid="11" v:groupcontext="shape" transform="translate(511.22,-298.65)">		<title>Sheet.11</title>		<desc>QML</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="91.234" cy="758.526" width="182.47" height="44.9487"></v:textrect>		<rect x="0" y="736.051" width="182.468" height="44.9487" rx="4.5" ry="4.5" class="st8"></rect>		<text x="72.35" y="763.93" class="st10" v:langid="1041"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>QML</text>		</g>	<g id="shape12-34" v:mid="12" v:groupcontext="shape" transform="translate(511.22,-242.834)">		<title>Sheet.12</title>		<desc>Neon</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="91.234" cy="758.526" width="182.47" height="44.9487"></v:textrect>		<rect x="0" y="736.051" width="182.468" height="44.9487" rx="4.5" ry="4.5" class="st8"></rect>		<text x="69.95" y="763.93" class="st10" v:langid="1041"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Neon</text>		</g>	<g id="shape14-37" v:mid="14" v:groupcontext="shape" transform="translate(50.2417,-232.631)">		<title>Sheet.14</title>		<rect x="0" y="607.132" width="200" height="173.868" rx="4.5" ry="4.5" class="st7"></rect>	</g>	<g id="shape15-39" v:mid="15" v:groupcontext="shape" transform="translate(57.3057,-352.983)">		<title>Sheet.15</title>		<desc>Qualcomm AI Runtime API</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="91.234" cy="758.526" width="182.47" height="44.9487"></v:textrect>		<rect x="0" y="736.051" width="182.468" height="44.9487" rx="4.5" ry="4.5" class="st8"></rect>		<text x="42.88" y="753.73" class="st9" v:langid="1041"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Qualcomm<tspan class="st6" v:langid="1033"> </tspan>AI<v:lf></v:lf><tspan x="47.26" dy="1.2em" class="st6" v:langid="1033">Runtime </tspan>API</text>		</g>	<g id="shape16-44" v:mid="16" v:groupcontext="shape" transform="translate(59.9052,-298.65)">		<title>Sheet.16</title>		<desc>HTP core</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="91.234" cy="758.526" width="182.47" height="44.9487"></v:textrect>		<rect x="0" y="736.051" width="182.468" height="44.9487" rx="4.5" ry="4.5" class="st8"></rect>		<text x="53.88" y="763.93" class="st10" v:langid="1041"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>HTP core</text>		</g>	<g id="shape17-47" v:mid="17" v:groupcontext="shape" transform="translate(59.9052,-242.834)">		<title>Sheet.17</title>		<desc>HMX/HVX</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="91.234" cy="758.526" width="182.47" height="44.9487"></v:textrect>		<rect x="0" y="736.051" width="182.468" height="44.9487" rx="4.5" ry="4.5" class="st8"></rect>		<text x="49.82" y="763.93" class="st10" v:langid="1041"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>HMX/HVX</text>		</g>	<g id="shape18-50" v:mid="18" v:groupcontext="shape" transform="translate(36.2417,-74.8499)">		<title>Sheet.18</title>		<desc>Hardware IP cores</desc>		<v:textblock v:margins="rect(8,8,8,8)" v:verticalalign="2"></v:textblock>		<v:textrect cx="340" cy="722.039" width="680" height="117.922"></v:textrect>		<rect x="0" y="663.078" width="680" height="117.922" rx="4.5" ry="4.5" class="st4"></rect>		<text x="8" y="767.6" class="st5" v:langid="1041"><v:paragraph></v:paragraph><v:tablist></v:tablist>Hardware IP cores</text>		</g>	<g id="shape19-53" v:mid="19" v:groupcontext="shape" transform="translate(50.2417,-114.868)">		<title>Sheet.19</title>		<desc>NPU (DSP/HMX/HTP)</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="100" cy="758.267" width="200.01" height="45.4664"></v:textrect>		<rect x="0" y="735.534" width="200" height="45.4664" rx="4.5" ry="4.5" class="st11"></rect>		<text x="84.06" y="753.47" class="st12" v:langid="1041"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>NPU <v:newlinechar></v:newlinechar><v:paragraph v:horizalign="1"></v:paragraph><tspan x="39.63" dy="1.2em" class="st6">(DSP/HMX/HTP)</tspan></text>		</g>	<g id="shape20-57" v:mid="20" v:groupcontext="shape" transform="translate(276.242,-114.868)">		<title>Sheet.20</title>		<desc>GPU</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="100" cy="758.267" width="200.01" height="45.4664"></v:textrect>		<rect x="0" y="735.534" width="200" height="45.4664" rx="4.5" ry="4.5" class="st11"></rect>		<text x="82.36" y="763.67" class="st13" v:langid="1041"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>GPU</text>		</g>	<g id="shape21-60" v:mid="21" v:groupcontext="shape" transform="translate(502.242,-114.868)">		<title>Sheet.21</title>		<desc>CPU</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="100" cy="758.267" width="200.01" height="45.4664"></v:textrect>		<rect x="0" y="735.534" width="200" height="45.4664" rx="4.5" ry="4.5" class="st11"></rect>		<text x="82.63" y="763.67" class="st13" v:langid="1041"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>CPU</text>		</g>	<g id="shape35-63" v:mid="35" v:groupcontext="shape" transform="translate(897.242,81.3964) rotate(90)">		<title>Sheet.35</title>		<path d="M0 781 L30.8 781" class="st14"></path>	</g>	<g id="shape27-68" v:mid="27" v:groupcontext="shape" transform="translate(53.7417,-699.604)">		<title>Sheet.27</title>		<desc>TensorFlow</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="62.5" cy="756.852" width="125" height="48.2966"></v:textrect>		<rect x="0" y="732.703" width="125" height="48.2966" rx="4.5" ry="4.5" class="st15"></rect>		<text x="15.52" y="762.25" class="st10" v:langid="1041"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>TensorFlow</text>		</g>	<g id="shape28-71" v:mid="28" v:groupcontext="shape" transform="translate(221.742,-699.604)">		<title>Sheet.28</title>		<desc>LiteRT</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="62.5" cy="756.852" width="125" height="48.2966"></v:textrect>		<rect x="0" y="732.703" width="125" height="48.2966" rx="4.5" ry="4.5" class="st16"></rect>		<text x="36.85" y="762.25" class="st10" v:langid="1041"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Lite<tspan class="st6" v:langid="1033">RT</tspan></text>		</g>	<g id="shape29-75" v:mid="29" v:groupcontext="shape" transform="translate(397.742,-699.604)">		<title>Sheet.29</title>		<desc>ONNX</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="62.5" cy="756.852" width="125" height="48.2966"></v:textrect>		<rect x="0" y="732.703" width="125" height="48.2966" rx="4.5" ry="4.5" class="st16"></rect>		<text x="37.84" y="762.25" class="st10" v:langid="1041"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>ONNX</text>		</g>	<g id="shape30-78" v:mid="30" v:groupcontext="shape" transform="translate(573.742,-699.604)">		<title>Sheet.30</title>		<desc>PyTorch</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="62.5" cy="756.852" width="125" height="48.2966"></v:textrect>		<rect x="0" y="732.703" width="125" height="48.2966" rx="4.5" ry="4.5" class="st16"></rect>		<text x="29.35" y="762.25" class="st10" v:langid="1041"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>PyTorch</text>		</g>	<g id="shape31-81" v:mid="31" v:groupcontext="shape" transform="translate(53.7417,-635.611)">		<title>Sheet.31</title>		<desc>.pb</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="62.5" cy="768.926" width="125" height="24.1483"></v:textrect>		<rect x="0" y="756.852" width="125" height="24.1483" rx="4.5" ry="4.5" class="st16"></rect>		<text x="50.03" y="774.33" class="st10" v:langid="1041"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>.pb</text>		</g>	<g id="shape32-84" v:mid="32" v:groupcontext="shape" transform="translate(221.742,-635.611)">		<title>Sheet.32</title>		<desc>.tflite</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="62.5" cy="768.926" width="125" height="24.1483"></v:textrect>		<rect x="0" y="756.852" width="125" height="24.1483" rx="4.5" ry="4.5" class="st16"></rect>		<text x="41.99" y="774.33" class="st10" v:langid="1041"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>.tflite</text>		</g>	<g id="shape33-87" v:mid="33" v:groupcontext="shape" transform="translate(397.742,-633.8)">		<title>Sheet.33</title>		<desc>.onnx</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="62.5" cy="767.417" width="125" height="27.1668"></v:textrect>		<rect x="0" y="753.833" width="125" height="27.1668" rx="4.5" ry="4.5" class="st16"></rect>		<text x="40.61" y="772.82" class="st10" v:langid="1041"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>.onnx</text>		</g>	<g id="shape34-90" v:mid="34" v:groupcontext="shape" transform="translate(573.742,-635.611)">		<title>Sheet.34</title>		<desc>.ts</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="62.5" cy="768.926" width="125" height="24.1483"></v:textrect>		<rect x="0" y="756.852" width="125" height="24.1483" rx="4.5" ry="4.5" class="st16"></rect>		<text x="52.55" y="774.33" class="st10" v:langid="1041"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>.<tspan class="st6" v:langid="1033">ts</tspan></text>		</g>	<g id="shape36-94" v:mid="36" v:groupcontext="shape" transform="translate(1066.82,81.3964) rotate(90)">		<title>Sheet.36</title>		<path d="M0 781 L29.6 781" class="st14"></path>	</g>	<g id="shape37-99" v:mid="37" v:groupcontext="shape" transform="translate(1241.24,81.3964) rotate(90)">		<title>Sheet.37</title>		<path d="M0 781 L29.6 781" class="st14"></path>	</g>	<g id="shape39-104" v:mid="39" v:groupcontext="shape" v:layermember="0" transform="translate(1157.24,548.037) rotate(90)">		<title>Sheet.39</title>		<path d="M0 781 L63.59 781" class="st14"></path>	</g>	<g id="shape40-109" v:mid="40" v:groupcontext="shape" v:layermember="0" transform="translate(1382.92,548.603) rotate(90)">		<title>Sheet.40</title>		<path d="M0 781 L63.02 781" class="st14"></path>	</g>	<g id="shape47-114" v:mid="47" v:groupcontext="shape" transform="translate(36.2417,-36.875)">		<title>Sheet.47</title>		<desc>QTI</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="52" cy="770.013" width="104" height="21.9749"></v:textrect>		<rect x="0" y="759.025" width="104" height="21.9749" rx="4.5" ry="4.5" class="st17"></rect>		<text x="41.11" y="774.21" class="st18" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>QTI</text>		</g>	<g id="shape48-117" v:mid="48" v:groupcontext="shape" transform="translate(156.242,-36.875)">		<title>Sheet.48</title>		<desc>Hardware</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="52" cy="770.013" width="104" height="21.9749"></v:textrect>		<rect x="0" y="759.025" width="104" height="21.9749" rx="4.5" ry="4.5" class="st19"></rect>		<text x="21.74" y="774.21" class="st20" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Hardware</text>		</g>	<g id="shape49-120" v:mid="49" v:groupcontext="shape" transform="translate(276.242,-36.875)">		<title>Sheet.49</title>		<desc>OSS</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="52" cy="770.013" width="104" height="21.9749"></v:textrect>		<rect x="0" y="759.025" width="104" height="21.9749" rx="4.5" ry="4.5" class="st16"></rect>		<text x="38.88" y="774.21" class="st18" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>OSS</text>		</g>	<g id="shape56-123" v:mid="56" v:groupcontext="shape" transform="translate(396.242,-36.875)">		<title>Sheet.56</title>		<desc>Third-party</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="52" cy="770.013" width="104" height="21.9749"></v:textrect>		<rect x="0" y="759.025" width="104" height="21.9749" rx="4.5" ry="4.5" class="st21"></rect>		<text x="18.32" y="774.21" class="st18" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Third-party</text>		</g>	<g id="shape22-126" v:mid="22" v:groupcontext="shape" transform="translate(36.2417,-458.85)">		<title>Sheet.22</title>		<desc>ML runtime frameworks, applications</desc>		<v:textblock v:margins="rect(8,8,8,8)" v:verticalalign="0"></v:textblock>		<v:textrect cx="340" cy="701.84" width="680" height="158.321"></v:textrect>		<rect x="0" y="622.679" width="680" height="158.321" rx="4.5" ry="4.5" class="st4"></rect>		<text x="8" y="646.88" class="st5" v:langid="1033"><v:paragraph></v:paragraph><v:tablist></v:tablist>ML runtime frameworks, applications</text>		</g>	<g id="shape52-129" v:mid="52" v:groupcontext="shape" transform="translate(53.3008,-473.85)">		<title>Sheet.52</title>		<desc>Qualcomm AI Runtime SDK</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="62.9409" cy="728.5" width="125.89" height="105"></v:textrect>		<rect x="0" y="676" width="125.882" height="105" rx="8" ry="8" class="st22"></rect>		<text x="8.55" y="708.25" class="st10" v:langid="1033"><v:paragraph v:spline="-1.5" v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Qualcomm AI <tspan x="29.69" dy="1.5em" class="st6">Runtime<v:lf></v:lf></tspan><tspan x="46.06" dy="1.5em" class="st6">SDK</tspan></text>		</g>	<g id="shape53-134" v:mid="53" v:groupcontext="shape" transform="translate(221.36,-473.85)">		<title>Sheet.53</title>		<desc>LiteRT</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="62.9409" cy="728.5" width="125.89" height="105"></v:textrect>		<rect x="0" y="676" width="125.882" height="105" rx="8" ry="8" class="st23"></rect>		<text x="37.29" y="735.25" class="st10" v:langid="1033"><v:paragraph v:spline="-1.5" v:horizalign="1"></v:paragraph><v:tablist></v:tablist>LiteRT</text>		</g>	<g id="shape54-137" v:mid="54" v:groupcontext="shape" transform="translate(397.301,-473.85)">		<title>Sheet.54</title>		<desc>ONNX RT</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="62.9409" cy="728.5" width="125.89" height="105"></v:textrect>		<rect x="0" y="676" width="125.882" height="105" rx="8" ry="8" class="st23"></rect>		<text x="38.28" y="721.75" class="st10" v:langid="1033"><v:paragraph v:spline="-1.5" v:horizalign="1"></v:paragraph><v:tablist></v:tablist>ONNX <v:lf></v:lf><tspan x="52.03" dy="1.5em" class="st6">RT</tspan></text>		</g>	<g id="shape55-141" v:mid="55" v:groupcontext="shape" transform="translate(573.301,-473.85)">		<title>Sheet.55</title>		<desc>Other ML frameworks</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="62.9409" cy="728.5" width="125.89" height="105"></v:textrect>		<rect x="0" y="676" width="125.882" height="105" rx="8" ry="8" class="st24"></rect>		<text x="41.04" y="708.25" class="st10" v:langid="1033"><v:paragraph v:spline="-1.5" v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Other<v:lf></v:lf><tspan x="50.24" dy="1.5em" class="st6">ML<v:lf></v:lf></tspan><tspan x="15.08" dy="1.5em" class="st6">frameworks</tspan></text>		</g>	<g id="shape59-146" v:mid="59" v:groupcontext="shape" v:layermember="0" transform="translate(930.916,548.436) rotate(90)">		<title>Sheet.59</title>		<path d="M0 781 L63.19 781" class="st14"></path>	</g></g>
</svg>

### AI hardware accelerators

You can accelerate AI workflows using the following hardware cores:

- Qualcomm^®^ Hexagon™ Tensor Processor (HTP): The HTP, also known as NPU, DSP, or HMX, is suitable to run AI workloads with low-power and high-performance.
To get optimized performance, quantize pre-trained models to one of the supported precisions.
- Qualcomm^®^ Adreno™ GPU: Suitable to run AI workloads with medium-power and medium-performance.
AI workloads are accelerated with OpenCL kernels.
You can also use the GPU to accelerate model pre- and postprocessing.
- Qualcomm^®^ Kryo™ CPU: Use AI inferencing on the CPU to benchmark model accuracy and performance against other hardware accelerators.
You can also use the CPU to run model pre- and postprocessing.

### AI software

Choose from the following software to deploy AI workloads.
You must convert pre-trained models into an executable format with the SDK before running them, except for TFLite models.
Pre-trained models (with the exception of LiteRT models) need to be converted to an executable format with the selected AI Stack SDK before running them.
The TFLite Delegate allows you to directly run LiteRT models.

- [Qualcomm AI Runtime SDK (QAIRT)](https://docs.qualcomm.com/doc/80-63442-10/):
QAIRT SDK is a unified software package that integrates Qualcomm AI tools, including AI Engine Direct
and Neural Processing SDK. It enables developers to port and deploy AI models on Qualcomm hardware
accelerators (CPU, GPU, NPU) and supports popular frameworks such as TensorFlow, PyTorch, LiteRT, and
ONNX for efficient model execution across Qualcomm platforms.
- [AI Model Efficiency Toolkit (AIMET)](https://quic.github.io/aimet-pages/releases/latest/index.html):
Open-source library to optimize (compressing and quantizing) trained neural network models.
This is a complex SDK designed to generate optimized quantized models.

## Next steps

- [AI Hub](https://aihub.qualcomm.com/get-started)
- [Qualcomm AI Model Efficiency Toolkit](https://quic.github.io/aimet-pages/releases/latest/index.html)
- [Qualcomm AI Runtime SDK](https://docs.qualcomm.com/doc/80-63442-10/)
- [Qualcomm Intelligent Multimedia SDK](https://docs.qualcomm.com/doc/80-70023-50/topic/example-applications.html)

Last Published: Dec 22, 2025

[Previous Topic
AI/ML documentation](https://docs.qualcomm.com/bundle/publicresource/80-70023-15/topics/home.md) [Next Topic
GStreamer ML plugin and AI SDK APIs](https://docs.qualcomm.com/bundle/publicresource/80-70023-15/topics/interfaces.md)