# Overview

Qualcomm^®^ Linux AI stack allows developers 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 AI software offering contains software development kits (SDKs), APIs, sample applications, development tools, and third-party frameworks support such as GStreamer and TFLite, to ease application development.

<?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="8.28453in" viewbox="0 0 800.75 596.486" xml:space="preserve" color-interpolation-filters="sRGB" class="st24" aria-label="../_images/top_level_ai_hw.svg"><v:documentproperties v:langid="1033" v:viewmarkup="false"></v:documentproperties>
<style>.svg-1 .st1 { fill: #fafafa; stroke: #d2d7e1; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-1 .st2 { fill: #000000; font-family: Roboto; font-size: 1.33333em }
.svg-1 .st3 { font-size: 1em }
.svg-1 .st4 { fill: #040a40; stroke: #4a5a75; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-1 .st5 { fill: #ffffff; font-family: Roboto; font-size: 1.33333em }
.svg-1 .st6 { fill: #3253dc; stroke: #d8d8d8; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-1 .st7 { baseline-shift: 32.4948%; font-size: 0.649895em }
.svg-1 .st8 { fill: #3253dc; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-1 .st9 { fill: #ffffff; font-family: Roboto; font-size: 1.24999em }
.svg-1 .st10 { baseline-shift: 32.495%; font-size: 0.6499em }
.svg-1 .st11 { fill: #7c8aa3; stroke: #7c8aa3; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-1 .st12 { fill: #fafafa; font-family: Roboto; font-size: 1.33333em }
.svg-1 .st13 { marker-end: url("#mrkr4-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("#mrkr4-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: #6280cc; stroke: #6280cc; 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: #3253dc; stroke: #f5f6f7; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-1 .st20 { fill: #7c8aa3; stroke: #7c8aa3; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-1 .st21 { fill: #040a40; stroke: #f5f6f7; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-1 .st22 { fill: none; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-1 .st23 { fill: #000000; font-family: Roboto; font-size: 1.16666em }
.svg-1 .st24 { 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-54" class="st14" 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>	<marker id="mrkr4-65" class="st16" v:arrowtype="4" v:arrowsize="2" v:setback="4.88" refx="-4.88" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend4" 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.750005" width="800" height="595.736" rx="4" ry="4" class="st1"></rect>	</g>	<g id="shape1218-3" v:mid="1218" v:groupcontext="shape" transform="translate(18.584,-54.6081)">		<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="539.405" width="767.17" height="114.162"></v:textrect>		<rect x="0" y="482.325" width="767.166" height="114.162" rx="4.5" ry="4.5" class="st1"></rect>		<text x="4" y="500.73" class="st2" 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,-190.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="539.405" width="767.17" height="114.162"></v:textrect>		<rect x="0" y="482.325" width="767.166" height="114.162" rx="4.5" ry="4.5" class="st1"></rect>		<text x="4" y="500.73" class="st2" 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,-326.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="519.118" width="767.17" height="154.736"></v:textrect>		<rect x="0" y="441.75" width="767.166" height="154.736" rx="4.5" ry="4.5" class="st1"></rect>		<text x="4" y="460.15" class="st2" v:langid="1041"><v:paragraph></v:paragraph><v:tablist></v:tablist>Qualcomm <tspan class="st3" v:langid="1033">IMSDK </tspan>Gstreamer <tspan class="st3" v:langid="1033">plugins</tspan></text>		</g>	<g id="shape1221-14" v:mid="1221" v:groupcontext="shape" transform="translate(18.584,-510.779)">		<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="572.604" width="767.17" height="47.7652"></v:textrect>		<rect x="0" y="548.721" width="767.166" height="47.7652" rx="4.5" ry="4.5" class="st4"></rect>		<text x="330.8" y="577.4" class="st5" 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,-336.111)">		<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="541.236" width="310.52" height="110.5"></v:textrect>		<rect x="0" y="485.986" width="310.52" height="110.5" rx="4.5" ry="4.5" class="st6"></rect>		<text x="19.02" y="536.44" class="st5" v:langid="1041"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Qualcomm<tspan dy="-0.235em" class="st7" v:basefontsize="16">®</tspan><tspan dy="0.153em" class="st3"> </tspan>Neural Processing Engine <tspan x="90.76" dy="1.2em" class="st3">plugin (qtimlsnpe)</tspan></text>		</g>	<g id="shape1223-23" v:mid="1223" v:groupcontext="shape" transform="translate(52.1191,-212.213)">		<title>Sheet.1223</title>		<desc>Qualcomm Neural Processing Engine</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="155.26" cy="565.092" width="310.52" height="62.7889"></v:textrect>		<rect x="0" y="533.697" width="310.52" height="62.7889" rx="4.5" ry="4.5" class="st8"></rect>		<text x="23.11" y="569.89" class="st5" v:langid="1041"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Qualcomm Neural Processing Engine</text>		</g>	<g id="shape1224-26" v:mid="1224" v:groupcontext="shape" transform="translate(421.561,-336.111)">		<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="538.986" width="155.26" height="115"></v:textrect>		<rect x="0" y="481.486" width="155.26" height="115" rx="4.5" ry="4.5" class="st6"></rect>		<text x="37.26" y="525.49" class="st9" v:langid="1041"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Qualcomm<tspan dy="-0.235em" class="st10" v:basefontsize="15">®</tspan><tspan dy="0.153em" class="st3"> </tspan><tspan x="24.82" dy="1.2em" class="st3">AI </tspan><tspan class="st3" v:langid="1033">E</tspan>ngine Direct <tspan x="20.81" dy="1.2em" class="st3">plugin (qtimlqnn)</tspan></text>		</g>	<g id="shape1225-34" v:mid="1225" v:groupcontext="shape" transform="translate(588.237,-336.111)">		<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="538.986" width="155.26" height="115"></v:textrect>		<rect x="0" y="481.486" width="155.26" height="115" rx="4.5" ry="4.5" class="st6"></rect>		<text x="24.35" y="525.49" class="st9" v:langid="1041"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>TensorFlow Lite <tspan x="57.3" dy="1.2em" class="st3">plugin<v:lf></v:lf></tspan><tspan x="38.56" dy="1.2em" class="st3"> </tspan>(qtimltflite)</text>		</g>	<g id="shape1226-39" v:mid="1226" v:groupcontext="shape" transform="translate(52.1191,-75.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="565.434" width="182.66" height="62.1039"></v:textrect>		<rect x="0" y="534.382" width="182.659" height="62.1039" rx="4.5" ry="4.5" class="st11"></rect>		<text x="75.39" y="560.63" 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="30.95" dy="1.2em" class="st3">(DSP/HMX/HTP)</tspan></text>		</g>	<g id="shape1227-43" v:mid="1227" v:groupcontext="shape" transform="translate(306.479,-75.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="565.434" width="182.66" height="62.1039"></v:textrect>		<rect x="0" y="534.382" width="182.659" height="62.1039" rx="4.5" ry="4.5" class="st11"></rect>		<text x="75.65" y="570.23" class="st12" 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,-75.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="565.434" width="182.66" height="62.1039"></v:textrect>		<rect x="0" y="534.382" width="182.659" height="62.1039" rx="4.5" ry="4.5" class="st11"></rect>		<text x="75.89" y="570.23" class="st12" 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(998.653,85.7072) rotate(90)">		<title>Sheet.1229</title>		<path d="M0 596.49 L18.06 596.49" class="st13"></path>	</g>	<g id="shape1230-55" v:mid="1230" v:groupcontext="shape" transform="translate(803.865,259.76) rotate(90)">		<title>Sheet.1230</title>		<path d="M0 596.49 L52.68 596.49" class="st13"></path>	</g>	<g id="shape1231-60" v:mid="1231" v:groupcontext="shape" v:layermember="0" transform="translate(998.653,405.519) rotate(90)">		<title>Sheet.1231</title>		<path d="M0 596.49 L14.11 596.49" class="st15"></path>	</g>	<g id="shape1233-66" v:mid="1233" v:groupcontext="shape" transform="translate(421.561,-214.434)">		<title>Sheet.1233</title>		<desc>Qualcomm AI Engine Direct</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="160.968" cy="565.092" width="321.94" height="62.7889"></v:textrect>		<rect x="0" y="533.697" width="321.936" height="62.7889" rx="4.5" ry="4.5" class="st8"></rect>		<text x="38" y="559.09" class="st5" v:langid="1033"><v:paragraph v:indentleft="34" v:spline="-1.5"></v:paragraph><v:tablist></v:tablist>Q<tspan class="st3" v:langid="1041">ualcomm AI <v:lf></v:lf></tspan><tspan x="38" dy="1.5em" class="st3" v:langid="1041">Engine Direct</tspan></text>		</g>	<g id="shape1234-71" v:mid="1234" v:groupcontext="shape" transform="translate(1285.19,260.486) rotate(90)">		<title>Sheet.1234</title>		<path d="M0 596.49 L50.94 596.49" class="st13"></path>	</g>	<g id="shape1235-76" v:mid="1235" v:groupcontext="shape" transform="translate(1095.68,260.875) rotate(90)">		<title>Sheet.1235</title>		<path d="M0 596.49 L50.64 596.49" class="st13"></path>	</g>	<g id="shape1240-81" v:mid="1240" v:groupcontext="shape" transform="translate(630.375,-225.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="576.508" width="97.14" height="39.9566"></v:textrect>		<rect x="0" y="556.53" width="97.139" height="39.9566" rx="4.5" ry="4.5" class="st17"></rect>		<text x="29.06" y="572.31" 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="st3">Delegate</tspan></text>		</g>	<g id="shape1244-85" v:mid="1244" v:groupcontext="shape" transform="translate(361.541,-237.266) rotate(-0.105469)">		<title>Sheet.1244</title>		<path d="M0 596.49 L49.88 596.49" class="st13"></path>	</g>	<g id="shape1310-90" v:mid="1310" v:groupcontext="shape" transform="translate(453.28,-14.2835)">		<title>Sheet.1310</title>		<rect x="0" y="571.486" width="25" height="25" rx="4" ry="4" class="st19"></rect>	</g>	<g id="shape1311-92" v:mid="1311" v:groupcontext="shape" transform="translate(559.102,-14.2835)">		<title>Sheet.1311</title>		<rect x="0" y="571.486" width="25" height="25" rx="4" ry="4" class="st20"></rect>	</g>	<g id="shape1312-94" v:mid="1312" v:groupcontext="shape" transform="translate(661.081,-14.2835)">		<title>Sheet.1312</title>		<rect x="0" y="571.486" width="25" height="25" rx="4" ry="4" class="st21"></rect>	</g>	<g id="shape1314-96" v:mid="1314" v:groupcontext="shape" transform="translate(454.692,-13.6112)">		<title>Sheet.1314</title>		<desc>Qualcomm</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="63.1944" cy="583.986" width="126.39" height="25"></v:textrect>		<rect x="0" y="571.486" width="126.389" height="25" rx="4" ry="4" class="st22"></rect>		<text x="29.09" y="588.19" class="st23" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Qualcomm</text>		</g>	<g id="shape1315-99" v:mid="1315" v:groupcontext="shape" transform="translate(559.692,-13.6112)">		<title>Sheet.1315</title>		<desc>Hardware</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="63.1944" cy="583.986" width="126.39" height="25"></v:textrect>		<rect x="0" y="571.486" width="126.389" height="25" rx="4" ry="4" class="st22"></rect>		<text x="32.94" y="588.19" class="st23" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Hardware</text>		</g>	<g id="shape1316-102" v:mid="1316" v:groupcontext="shape" transform="translate(661.081,-13.6112)">		<title>Sheet.1316</title>		<desc>Third-party</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="63.1944" cy="583.986" width="126.39" height="25"></v:textrect>		<rect x="0" y="571.486" width="126.389" height="25" rx="4" ry="4" class="st22"></rect>		<text x="29.51" y="588.19" class="st23" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Third-party</text>		</g></g>
</svg>

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

The key components of the Qualcomm Linux AI stack are:

- **AI applications** - Sample applications based on Gstreamer that can be used or customized as needed.
- **GStreamer plugins** - Qualcomm Linux software offers GStreamer-based, machine learning plugins for accelerating AI inference using TFLite, Qualcomm^®^ Neural Processing Engine SDK, etc., along with GStreamer plugins for pre- and postprocessing.
- **Qualcomm AI Stack** consists of two SDKs to accelerate AI workloads.
The **Qualcomm Neural Processing Engine SDK** and **Qualcomm AI Engine Direct** provide tools, libraries, etc., to optimally accelerate AI models on multiple hardware accelerators.
- Qualcomm SoCs offer three **hardware cores** for AI loads.

    - **Neural Processing Unit (NPU)** - Also referred to as Qualcomm® Hexagon™ Tensor Processor (HTP) or DSP/HMX, is suitable for executing AI workloads with low-power and high-performance.
To get optimized performance, pre-trained models need be quantized to one of the supported precisions.
    - **Graphics Processing Unit (GPU)** - Qualcomm® Adreno™ GPU is suitable for executing AI workloads with medium-power, and medium-performance. AI workloads are accelerated with OpenCL kernels. The GPU can also be used to accelerate model pre/post processing.
    - **Central Processing Unit (CPU)** - AI inferencing on the CPU can be used to benchmark model accuracy/performance against other hardware accelerators. The CPU can also be used to run model pre/post processing.

## Architecture

The Qualcomm AI offering consists of hardware accelerators and AI SDKs to harness the power of hardware.

<?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 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.6458in" height="10.3472in" viewbox="0 0 910.5 745" xml:space="preserve" color-interpolation-filters="sRGB" class="st23" aria-label="../_images/ai_arch.svg"><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 { 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: #000000; font-family: Roboto; font-size: 1.5em; font-weight: bold }
.svg-2 .st5 { font-size: 1em }
.svg-2 .st6 { fill: #f5f6f7; stroke: #d2d7e1; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-2 .st7 { fill: #3253dc; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-2 .st8 { fill: #ffffff; font-family: Roboto; font-size: 1.33333em }
.svg-2 .st9 { fill: #ffffff; font-family: Roboto; font-size: 1.5em }
.svg-2 .st10 { fill: #7c8aa3; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-2 .st11 { marker-end: url("#mrkr4-8"); stroke: #000000; stroke-linecap: butt; stroke-width: 2 }
.svg-2 .st12 { fill: #007884; stroke: #007884; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2 }
.svg-2 .st13 { fill: #007884; stroke: #007884; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-2 .st14 { fill: #2a2aea; stroke: #2a2aea; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-2 .st15 { fill: #007884; stroke: #007884; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-2 .st16 { fill: #040a40; stroke: #040a40; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-2 .st17 { fill: #3253dc; stroke: #f5f6f7; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-2 .st18 { fill: #7c8aa3; stroke: #7c8aa3; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-2 .st19 { fill: #040a40; stroke: #f5f6f7; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-2 .st20 { fill: none; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-2 .st21 { fill: #000000; font-family: Roboto; font-size: 1.00001em }
.svg-2 .st22 { fill: #007884; stroke: #f5f6f7; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-2 .st23 { 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="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="interfaces" v:index="0"></v:layer>	<g id="shape61-1" v:mid="61" v:groupcontext="shape" transform="translate(0.5,-0.5)">		<title>Sheet.61</title>		<rect x="0" y="0.999977" width="909.5" height="744" rx="4.5" ry="4.5" class="st1"></rect>	</g>	<g id="shape38-3" v:mid="38" v:groupcontext="shape" transform="translate(1523.23,53.252) rotate(89.2198)">		<title>Sheet.38</title>		<path d="M0 745 L30.81 745" class="st2"></path>	</g>	<g id="shape1-9" v:mid="1" v:groupcontext="shape" transform="translate(22.9112,-192.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="429.486" cy="631.085" width="858.98" height="227.83"></v:textrect>		<rect x="0" y="517.17" width="858.972" height="227.83" rx="4.5" ry="4.5" class="st1"></rect>		<text x="8" y="541.37" class="st4" v:langid="1033"><v:paragraph></v:paragraph><v:tablist></v:tablist>B<tspan class="st5" v:langid="1041">ackend libraries</tspan></text>		</g>	<g id="shape4-13" v:mid="4" v:groupcontext="shape" transform="translate(326.078,-208.132)">		<title>Sheet.4</title>		<rect x="0" y="571.132" width="252.639" height="173.868" rx="4.5" ry="4.5" class="st6"></rect>	</g>	<g id="shape5-15" v:mid="5" v:groupcontext="shape" transform="translate(333.581,-328.485)">		<title>Sheet.5</title>		<desc>Qualcomm AI Engine Direct API</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="115.246" cy="722.526" width="230.5" height="44.9487"></v:textrect>		<rect x="0" y="700.051" width="230.493" height="44.9487" rx="4.5" ry="4.5" class="st7"></rect>		<text x="66.89" y="717.73" class="st8" v:langid="1041"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Qualcomm AI<v:lf></v:lf><tspan x="53.87" dy="1.2em" class="st5">Engine Direct API</tspan></text>		</g>	<g id="shape6-19" v:mid="6" v:groupcontext="shape" transform="translate(336.865,-274.151)">		<title>Sheet.6</title>		<desc>Kernels</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="115.246" cy="722.526" width="230.5" height="44.9487"></v:textrect>		<rect x="0" y="700.051" width="230.493" height="44.9487" rx="4.5" ry="4.5" class="st7"></rect>		<text x="85.23" y="727.93" class="st9" 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(336.865,-218.335)">		<title>Sheet.7</title>		<desc>OpenCL</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="115.246" cy="722.526" width="230.5" height="44.9487"></v:textrect>		<rect x="0" y="700.051" width="230.493" height="44.9487" rx="4.5" ry="4.5" class="st7"></rect>		<text x="83.57" y="727.93" class="st9" 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(611.56,-207.066)">		<title>Sheet.9</title>		<rect x="0" y="571.132" width="252.639" height="173.868" rx="4.5" ry="4.5" class="st6"></rect>	</g>	<g id="shape10-27" v:mid="10" v:groupcontext="shape" transform="translate(619.617,-327.418)">		<title>Sheet.10</title>		<desc>Qualcomm AI Engine Direct API</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="115.246" cy="722.526" width="230.5" height="44.9487"></v:textrect>		<rect x="0" y="700.051" width="230.493" height="44.9487" rx="4.5" ry="4.5" class="st7"></rect>		<text x="66.89" y="717.73" class="st8" v:langid="1041"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Qualcomm AI<v:lf></v:lf><tspan x="53.87" dy="1.2em" class="st5">Engine Direct API</tspan></text>		</g>	<g id="shape11-31" v:mid="11" v:groupcontext="shape" transform="translate(622.901,-273.085)">		<title>Sheet.11</title>		<desc>QML</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="115.246" cy="722.526" width="230.5" height="44.9487"></v:textrect>		<rect x="0" y="700.051" width="230.493" height="44.9487" rx="4.5" ry="4.5" class="st7"></rect>		<text x="96.36" y="727.93" class="st9" 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(622.901,-217.269)">		<title>Sheet.12</title>		<desc>Neon</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="115.246" cy="722.526" width="230.5" height="44.9487"></v:textrect>		<rect x="0" y="700.051" width="230.493" height="44.9487" rx="4.5" ry="4.5" class="st7"></rect>		<text x="93.96" y="727.93" class="st9" 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(40.5959,-207.066)">		<title>Sheet.14</title>		<rect x="0" y="571.132" width="252.639" height="173.868" rx="4.5" ry="4.5" class="st6"></rect>	</g>	<g id="shape15-39" v:mid="15" v:groupcontext="shape" transform="translate(49.5191,-327.418)">		<title>Sheet.15</title>		<desc>Qualcomm AI Engine Direct API</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="115.246" cy="722.526" width="230.5" height="44.9487"></v:textrect>		<rect x="0" y="700.051" width="230.493" height="44.9487" rx="4.5" ry="4.5" class="st7"></rect>		<text x="66.89" y="717.73" class="st8" v:langid="1041"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Qualcomm<tspan class="st5" v:langid="1033"> </tspan>AI<v:lf></v:lf><tspan x="53.87" dy="1.2em" class="st5">Engine Direct API</tspan></text>		</g>	<g id="shape16-44" v:mid="16" v:groupcontext="shape" transform="translate(52.8029,-273.085)">		<title>Sheet.16</title>		<desc>HTP core</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="115.246" cy="722.526" width="230.5" height="44.9487"></v:textrect>		<rect x="0" y="700.051" width="230.493" height="44.9487" rx="4.5" ry="4.5" class="st7"></rect>		<text x="77.9" y="727.93" class="st9" 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(52.8029,-217.269)">		<title>Sheet.17</title>		<desc>HMX/HVX</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="115.246" cy="722.526" width="230.5" height="44.9487"></v:textrect>		<rect x="0" y="700.051" width="230.493" height="44.9487" rx="4.5" ry="4.5" class="st7"></rect>		<text x="73.84" y="727.93" class="st9" 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(22.9112,-56.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="429.486" cy="686.039" width="858.98" height="117.922"></v:textrect>		<rect x="0" y="627.078" width="858.972" height="117.922" rx="4.5" ry="4.5" class="st1"></rect>		<text x="8" y="731.6" class="st4" 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(40.5959,-96.8682)">		<title>Sheet.19</title>		<desc>NPU (DSP/HMX/HTP)</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="126.319" cy="722.267" width="252.64" height="45.4664"></v:textrect>		<rect x="0" y="699.534" width="252.639" height="45.4664" rx="4.5" ry="4.5" class="st10"></rect>		<text x="110.38" y="717.47" class="st8" 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="65.94" dy="1.2em" class="st5">(DSP/HMX/HTP)</tspan></text>		</g>	<g id="shape20-57" v:mid="20" v:groupcontext="shape" transform="translate(326.078,-96.8682)">		<title>Sheet.20</title>		<desc>GPU</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="126.319" cy="722.267" width="252.64" height="45.4664"></v:textrect>		<rect x="0" y="699.534" width="252.639" height="45.4664" rx="4.5" ry="4.5" class="st10"></rect>		<text x="108.68" y="727.67" class="st9" 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(611.56,-96.8682)">		<title>Sheet.21</title>		<desc>CPU</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="126.319" cy="722.267" width="252.64" height="45.4664"></v:textrect>		<rect x="0" y="699.534" width="252.639" height="45.4664" rx="4.5" ry="4.5" class="st10"></rect>		<text x="108.95" y="727.67" class="st9" 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(868.967,63.3964) rotate(90)">		<title>Sheet.35</title>		<path d="M0 745 L30.8 745" class="st11"></path>	</g>	<g id="shape27-68" v:mid="27" v:groupcontext="shape" transform="translate(45.0171,-681.604)">		<title>Sheet.27</title>		<desc>TensorFlow</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="78.9497" cy="720.852" width="157.9" height="48.2966"></v:textrect>		<rect x="0" y="696.703" width="157.899" height="48.2966" rx="4.5" ry="4.5" class="st12"></rect>		<text x="31.97" y="726.25" class="st9" 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(257.234,-681.604)">		<title>Sheet.28</title>		<desc>LiteRT</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="78.9497" cy="720.852" width="157.9" height="48.2966"></v:textrect>		<rect x="0" y="696.703" width="157.899" height="48.2966" rx="4.5" ry="4.5" class="st13"></rect>		<text x="53.3" y="726.25" class="st9" v:langid="1041"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Lite<tspan class="st5" v:langid="1033">RT</tspan></text>		</g>	<g id="shape29-75" v:mid="29" v:groupcontext="shape" transform="translate(479.556,-681.604)">		<title>Sheet.29</title>		<desc>ONNX</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="78.9497" cy="720.852" width="157.9" height="48.2966"></v:textrect>		<rect x="0" y="696.703" width="157.899" height="48.2966" rx="4.5" ry="4.5" class="st13"></rect>		<text x="54.29" y="726.25" class="st9" 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(701.878,-681.604)">		<title>Sheet.30</title>		<desc>PyTorch</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="78.9497" cy="720.852" width="157.9" height="48.2966"></v:textrect>		<rect x="0" y="696.703" width="157.899" height="48.2966" rx="4.5" ry="4.5" class="st13"></rect>		<text x="45.8" y="726.25" class="st9" 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(45.0171,-617.611)">		<title>Sheet.31</title>		<desc>.pb</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="78.9497" cy="732.926" width="157.9" height="24.1483"></v:textrect>		<rect x="0" y="720.852" width="157.899" height="24.1483" rx="4.5" ry="4.5" class="st13"></rect>		<text x="66.48" y="738.33" class="st9" 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(257.234,-617.611)">		<title>Sheet.32</title>		<desc>.tflite</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="78.9497" cy="732.926" width="157.9" height="24.1483"></v:textrect>		<rect x="0" y="720.852" width="157.899" height="24.1483" rx="4.5" ry="4.5" class="st13"></rect>		<text x="58.44" y="738.33" class="st9" 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(479.556,-615.8)">		<title>Sheet.33</title>		<desc>.onnx</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="78.9497" cy="731.417" width="157.9" height="27.1668"></v:textrect>		<rect x="0" y="717.833" width="157.899" height="27.1668" rx="4.5" ry="4.5" class="st13"></rect>		<text x="57.06" y="736.82" class="st9" 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(701.878,-617.611)">		<title>Sheet.34</title>		<desc>.ts</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="78.9497" cy="732.926" width="157.9" height="24.1483"></v:textrect>		<rect x="0" y="720.852" width="157.899" height="24.1483" rx="4.5" ry="4.5" class="st13"></rect>		<text x="69" y="738.33" class="st9" v:langid="1041"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>.<tspan class="st5" v:langid="1033">ts</tspan></text>		</g>	<g id="shape36-94" v:mid="36" v:groupcontext="shape" transform="translate(1083.18,63.3964) rotate(90)">		<title>Sheet.36</title>		<path d="M0 745 L29.6 745" class="st11"></path>	</g>	<g id="shape37-99" v:mid="37" v:groupcontext="shape" transform="translate(1303.51,63.3964) rotate(90)">		<title>Sheet.37</title>		<path d="M0 745 L29.6 745" class="st11"></path>	</g>	<g id="shape39-104" v:mid="39" v:groupcontext="shape" v:layermember="0" transform="translate(1197.4,539) rotate(90)">		<title>Sheet.39</title>		<path d="M0 745 L54.63 745" class="st11"></path>	</g>	<g id="shape40-109" v:mid="40" v:groupcontext="shape" v:layermember="0" transform="translate(1482.47,537.286) rotate(90)">		<title>Sheet.40</title>		<path d="M0 745 L56.34 745" class="st11"></path>	</g>	<g id="shape22-114" v:mid="22" v:groupcontext="shape" transform="translate(22.9112,-440.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="429.486" cy="665.839" width="858.98" height="158.321"></v:textrect>		<rect x="0" y="586.679" width="858.972" height="158.321" rx="4.5" ry="4.5" class="st1"></rect>		<text x="8" y="610.88" class="st4" v:langid="1033"><v:paragraph></v:paragraph><v:tablist></v:tablist>ML runtime frameworks, applications</text>		</g>	<g id="shape52-117" v:mid="52" v:groupcontext="shape" transform="translate(44.4602,-455.85)">		<title>Sheet.52</title>		<desc>Qualcomm Neural Processing SDK</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="88.7699" cy="692.5" width="177.54" height="105"></v:textrect>		<rect x="0" y="640" width="177.54" height="105" rx="8" ry="8" class="st14"></rect>		<text x="16.42" y="685.75" class="st9" v:langid="1033"><v:paragraph v:spline="-1.5" v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Qualcomm Neural <tspan x="24.84" dy="1.5em" class="st5">Processing SDK</tspan></text>		</g>	<g id="shape53-121" v:mid="53" v:groupcontext="shape" transform="translate(269.569,-454)">		<title>Sheet.53</title>		<desc>LiteRT</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="88.8" cy="691.65" width="177.6" height="106.7"></v:textrect>		<rect x="0" y="638.3" width="177.6" height="106.7" rx="8" ry="8" class="st15"></rect>		<text x="63.15" y="698.4" class="st9" v:langid="1033"><v:paragraph v:spline="-1.5" v:horizalign="1"></v:paragraph><v:tablist></v:tablist>LiteRT</text>		</g>	<g id="shape54-124" v:mid="54" v:groupcontext="shape" transform="translate(494.739,-455.8)">		<title>Sheet.54</title>		<desc>ONNX RT</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="79.5066" cy="692.5" width="159.02" height="105"></v:textrect>		<rect x="0" y="640" width="159.013" height="105" rx="8" ry="8" class="st15"></rect>		<text x="54.84" y="685.75" class="st9" 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="68.6" dy="1.5em" class="st5">RT</tspan></text>		</g>	<g id="shape55-128" v:mid="55" v:groupcontext="shape" transform="translate(701.321,-455.75)">		<title>Sheet.55</title>		<desc>Other ML frameworks</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="79.5066" cy="692.5" width="159.02" height="105"></v:textrect>		<rect x="0" y="640" width="159.013" height="105" rx="8" ry="8" class="st16"></rect>		<text x="57.61" y="672.25" class="st9" 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="66.81" dy="1.5em" class="st5">ML<v:lf></v:lf></tspan><tspan x="31.64" dy="1.5em" class="st5">frameworks</tspan></text>		</g>	<g id="shape59-133" v:mid="59" v:groupcontext="shape" v:layermember="0" transform="translate(911.503,539.571) rotate(90)">		<title>Sheet.59</title>		<path d="M0 745 L54.05 745" class="st11"></path>	</g>	<g id="shape62-138" v:mid="62" v:groupcontext="shape" transform="translate(442.405,-17.8361)">		<title>Sheet.62</title>		<rect x="0" y="720" width="25" height="25" rx="4" ry="4" class="st17"></rect>	</g>	<g id="shape63-140" v:mid="63" v:groupcontext="shape" transform="translate(548.227,-17.8361)">		<title>Sheet.63</title>		<rect x="0" y="720" width="25" height="25" rx="4" ry="4" class="st18"></rect>	</g>	<g id="shape64-142" v:mid="64" v:groupcontext="shape" transform="translate(650.206,-17.8361)">		<title>Sheet.64</title>		<rect x="0" y="720" width="25" height="25" rx="4" ry="4" class="st19"></rect>	</g>	<g id="shape65-144" v:mid="65" v:groupcontext="shape" transform="translate(443.611,-17.1639)">		<title>Sheet.65</title>		<desc>Qualcomm</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="58.6944" cy="732.5" width="117.39" height="25"></v:textrect>		<rect x="0" y="720" width="117.389" height="25" rx="4" ry="4" class="st20"></rect>		<text x="29.46" y="736.1" class="st21" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Qualcomm</text>		</g>	<g id="shape66-147" v:mid="66" v:groupcontext="shape" transform="translate(548.817,-17.1639)">		<title>Sheet.66</title>		<desc>Hardware</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="56.5913" cy="732.5" width="113.19" height="25"></v:textrect>		<rect x="0" y="720" width="113.183" height="25" rx="4" ry="4" class="st20"></rect>		<text x="30.65" y="736.1" class="st21" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Hardware</text>		</g>	<g id="shape67-150" v:mid="67" v:groupcontext="shape" transform="translate(650.206,-17.1639)">		<title>Sheet.67</title>		<desc>Third-party</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="57.8969" cy="732.5" width="115.8" height="25"></v:textrect>		<rect x="0" y="720" width="115.794" height="25" rx="4" ry="4" class="st20"></rect>		<text x="29.03" y="736.1" class="st21" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Third-party</text>		</g>	<g id="shape68-153" v:mid="68" v:groupcontext="shape" transform="translate(752.595,-17.8361)">		<title>Sheet.68</title>		<rect x="0" y="720" width="25" height="25" rx="4" ry="4" class="st22"></rect>	</g>	<g id="shape69-155" v:mid="69" v:groupcontext="shape" transform="translate(755.206,-17.1639)">		<title>Sheet.69</title>		<desc>Open source</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="61.3969" cy="732.5" width="122.8" height="25"></v:textrect>		<rect x="0" y="720" width="122.794" height="25" rx="4" ry="4" class="st20"></rect>		<text x="27.76" y="736.1" class="st21" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Open source</text>		</g></g>
</svg>

### AI hardware accelerators

AI workloads can be accelerated on multiple hardware cores:

- Qualcomm^®^ Hexagon™ Tensor Processor (HTP) - Also known as NPU/DSP/HMX, suitable to execute AI workloads with low-power and high-performance. For optimized performance, pre-trained models need be quantized to one of the supported precisions.
- Qualcomm^®^ Adreno™ GPU - Suitable to execute AI workloads with medium-power, and medium-performance. AI workloads are accelerated with OpenCL kernels. The GPU can also be used to accelerate model pre/post-processing.
- Qualcomm^®^ Kryo™ CPU - AI inferencing on CPU can be used to benchmark model accuracy/performance against other hardware accelerators. The CPU can also be used to run model pre/post processing.

### AI software stack

AI stack contains SDKs to harness the power of AI hardware accelerators. Developers can use the stack of their choice to deploy AI workloads.
Pre-trained models (with the exception of TFLite models) need to be converted to an executable format with the selected AI Stack SDK before running them. Note that TFLite Delegate allows developers to directly run TFLite models.

- [Qualcomm Neural Processing Engine (SNPE)](https://docs.qualcomm.com/bundle/publicresource/topics/80-63442-2)

    An all-in-one SDK that provides C, C++, and Java APIs to support heterogenous computing, system-level configurations, and direct AI workloads to all accelerator cores.
Provides developers with flexibility, including inter-core collaboration support and other advanced features.
- [Qualcomm AI Engine Direct (QNN)](https://docs.qualcomm.com/bundle/publicresource/topics/80-63442-50)

    Lower-level, highly customizable unified APIs that speed up AI models on all AI accelerator cores with individual libraries.
Can be used directly to target a specific accelerator core or delegate workloads from popular runtimes including Qualcomm Neural Processing Engine SDK, TensorFlow Lite, and ONNX runtime.
Low-level SDK provides more functionality and debugging abilities.
- [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. It is intended only for advanced developers.

References

| Title | Number |
| --- | --- |
| [AI Hub](https://aihub.qualcomm.com/get-started) | — |
| [Qualcomm AI Model Efficiency Toolkit](https://quic.github.io/aimet-pages/releases/latest/index.html) | — |
| [Qualcomm Neural Processing Engine](https://docs.qualcomm.com/bundle/publicresource/topics/80-63442-2/) | 80-63442-2 |
| [Qualcomm AI Engine Direct](https://docs.qualcomm.com/bundle/publicresource/topics/80-63442-50/) | 80-63442-50 |
| [AI Engine Direct: TFLite Delegate](https://docs.qualcomm.com/bundle/publicresource/topics/80-63442-50/tflite_delegate.html) | 80-63442-50 |
| [Qualcomm Intelligent Multimedia SDK](https://docs.qualcomm.com/bundle/publicresource/topics/80-70020-50/example-applications.html) | 80-70020-50 |

Last Published: Jul 07, 2025

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