Mar 5, 2020
Qualcomm products mentioned within this post are offered by Qualcomm Technologies, Inc. and/or its subsidiaries.
Today’s apps demand a lot from our mobile devices. From games to VR, and signal processing to AI, modern apps are truly multifaceted, placing all sorts of demands on our devices. For mobile developers this creates a major challenge: how to optimize for performance while meeting the demand for power efficiency and long battery life. And how can we deliver on both needs when the growing requirement for computing power seems to always outpace advances in battery technology?
The key lies in heterogeneous computing, which has been at the heart of mobile processor designs from the beginning. Our flagship Qualcomm Snapdragon 8xx mobile platform offers developers a number of specialized processors, which continue to evolve with each generation. In this blog we’ll review the processors found inside Snapdragon and look at some of our tools aimed at supporting developers with heterogeneous and power efficient computing.
The three specialized processors found in our Snapdragon series around which heterogeneous and power efficient computing optimizations can be made are:
Of the three processors, our Hexagon DSP is one of the most interesting because it has evolved from a DSP for image and audio processing, into a vector-processing powerhouse for neural networks, virtual reality, and other process-intensive applications. Developers effectively upload functions to our Hexagon processor where it performs operations using its multiple hardware threads, very long instruction word (VLIW) instruction set, and RTOS (for scheduling). Most notably, the Hexagon DSP features both a 64-bit wide scalar unit, and its two 128-bit wide hexagon vector extensions (HVX) for vector processing.
Out of our rich set of tools, developers can implement and optimize for heterogeneous computing and power efficiency through the following:
While the Heterogeneous Compute SDK is primarily focused on heterogeneous computing (e.g., processor and core selection), it’s often paired with the Power Optimization SDK to fulfill power efficiency requirements which typically go hand in hand with heterogeneous compute requirements. On top of this, developers should also use the Snapdragon profiler to monitor performance, power, and heat while integrating these SDKs.
The following diagram summarizes these tools and their dependencies, and outlines the processors that each of these tool/SDKs interacts with:
The Heterogeneous Compute SDK provides the following constructs that abstract away low-level system calls and device interactions for heterogeneous computing, making it easy to allocate work across the Snapdragon CPU, GPU, and DSP (click the links for more detailed App Notes for each):
The Power Optimization SDK allows developers to programmatically optimize power efficiency at runtime using reactive and proactive models. In the reactive model, the system adjusts power based on thermal constraints, while the proactive model involves the use of the SDK’s static and dynamic mode APIs to dynamically optimize for power efficiency. The static mode APIs allow developers to select a power efficiency profile, while the dynamic mode APIs provide much more granular control, such as the ability to adjust the number of CPU cores and their frequencies.
To see how all of this comes together, we recommend you check out this four-part Getting Started guide. It provides an excellent introduction on how to use the Heterogeneous Compute SDK and Power Optimization SDK in conjunction with the Snapdragon Profiler for heterogeneous and power efficient computing.
The first part of the guide shows how to use the Snapdragon profiler to profile CPU usage and frequency for iterating over 10 million values. The second part shows how the APIs of the Heterogeneous Compute SDK can be used to optimize the loop via parallel processing, and discusses the trade-off between performance and power consumption. The third part shows how the loop can then be optimized for power consumption using the Power optimization SDK. The fourth part of the guide summarizes the optimizations, and just how easy it can be to achieve results using the SDKs.
Today’s multi-faceted applications require developers to balance performance and power efficiency in their mobile apps. Our flagship Snapdragon 8xx series mobile platform provides three processors backed by a rich set of SDKs that developers can use to meet these demands. So be sure to check out the Getting Started guide mentioned above.