Snapdragon Developer Tools
It takes the best tools to get the most out of the best processors, and Qualcomm Technologies, Inc., offers a suite of tools to help optimize your applications to run on Qualcomm® Snapdragon™ mobile platforms.
- Qualcomm® Snapdragon™ Profiler to show how your application is utilizing hardware and software resources.
- Qualcomm® Snapdragon™ Power Optimization SDK for performance and power enhancements on the Snapdragon mobile platform.
- Qualcomm® Snapdragon™ Heterogeneous Compute SDK to best utilize the computational resources of the CPU, GPU, and DSP.
- Qualcomm® Math Library to port your math routines for optimal performance on Snapdragon processors.
Read more about each tool below, and determine how you can best utilize this suite of tools to optimize the performance of your applications on the Snapdragon mobile platform.
1. Analyze with Snapdragon Profiler
Is your app taking full advantage of Snapdragon computing resources? Is it wasting CPU cycles and using more power than necessary? Is it using the network efficiently?
Find out with Snapdragon Profiler, designed to graph how your app uses hardware and software resources on commercial devices powered by the Snapdragon mobile platform. Capture data from your USB-connected test mobile device in three different modes:
Check CPU, GPU, DSP (requires a Snapdragon 820 or later processor), memory, power, thermal and network data metrics on a timeline showing over 150 hardware performance counters.
Use sampling to view a flamegraph that illustrates the relative execution time of functions and modules in your code, helping you find the bottlenecks in your application on the CPU.
View low-level system events across the CPU, GPU, and DSP on a timeline to see where your application is spending its time.
Capture and debug a rendered frame from any OpenGL ES application (requires Snapdragon 805 or later processor and Android 6.0 or later). Step through and replay each draw call in any rendered frame in your app. Preview the results of shaders on your device and debug pixel history. Check the effect of each draw call on the GPU.
The more you discover about resource utilization with Snapdragon Profiler, the easier it is to improve your code and remove bottlenecks from your app.
For additional resources on how you can use Snapdragon Profiler to improve your app's performance, we have some App Notes on specific features you can utilize within Snapdragon Profiler including:
- Identify Application Bottlenecks
- Avoid GMEM Loads
- Remove Unused Render Targets
- Downscale Render Targets (If Possible)
- Anti-Aliasing with Adreno
2. Tune with the Snapdragon Power Optimization SDK
Once you understand how your app uses system resources, you can use the Snapdragon Power Optimization SDK, engineered to help improve performance and battery life.
If your app depends on features like image and data processing, eXtended Reality (VR/AR) and computer vision, you can use the interface in this SDK to enhance user experience. It allows your app to make requests for the Snapdragon processor to assist in decisions about performance and power.
The interface offers two modes:
Static Power Mode
If you know your desired performance/power point – normal, efficient, performance burst, power saver or min-max window – use the Static Power Mode API.
Dynamic Power Mode
If your app follows a predictable pattern and has a known throughput metric, as in the main loop of a video game, then use the feedback loop in the Dynamic Power Mode API to dynamically adjust the number of cores and frequencies and maintain that metric.
The Snapdragon Power Optimization SDK accepts your guidance without overriding the existing power and temperature control mechanisms on the device.
3. Parallel-Program with the Snapdragon Heterogeneous Compute SDK
Next, take advantage of the variety and specialization of computational resources – CPU, GPU and DSP – on the Snapdragon mobile platform. The Snapdragon Heterogeneous Compute SDK (HetCompute) is a user-level library designed to reduce the complexity of hardware programming while still giving you control over performance.
HetCompute allows you to execute specific workloads with the compute cores best suited to them. The Qualcomm Kryo™ CPU is the place for executional logic and general-purpose instructions. The Qualcomm® Adreno™ GPU excels at repeating similar computations on large quantities of data, as in graphics processing and machine learning. The Qualcomm® Hexagon™ DSP is best suited to processing digital signals from the outside world in real time, like those generated by a smartphone camera and microphone.
HetCompute lets your apps execute tasks on those cores using existing standards: POSIX and C++11 for exploiting multicore, OpenCL to dispatch workloads to GPUs, and OpenDSP to dispatch to the Hexagon DSP. It sits on top of a runtime system that acts as a resource manager for threads, address spaces and devices so that you don’t need to manage hardware, data transfers and different execution models.
Parallel programming is ideal for apps that include features like computer vision, speech processing/synthesis, artificial intelligence and image processing. With HetCompute, you can take advantage of the multicore architecture of Snapdragon.
4. Port Math Routines with Qualcomm Math Library
Finally, ensure that the routines you’ve written for machine learning, neural networks, simulations and data analytics get the most out of the compute resources on Snapdragon. The Qualcomm Math Library offers the high performance, numerical correctness and portability across generations of Snapdragon processors.
The library implements almost 2,000 Basic Linear Algebra Subprograms (BLAS) and LAPACK primitives, optimized for all generations of Snapdragon processors. They make it easy to port your applications and favorite frameworks to Qualcomm Technologies silicon. For example, since machine learning frameworks are built on standard math libraries such as BLAS, and since the Qualcomm Math Library supports the same interfaces, you simply link the libraries with the framework.
The Qualcomm Math Library (QML) makes it easy to get jam-packed performance out of the Snapdragon processor without the need to rewrite your routines for each generation. For more details, please read our QML Documentation.