If you’ve been following my series of blogs about heterogeneous computing, I’ve explained how emerging applications need it, why processor diversity is so important, and in my most recent blog, I explained how taking a system approach to heterogeneous computing is essential. However, besides great hardware, it takes great software and tools to truly unlock the full potential of heterogeneous computing. The next logical question is: how do developers take advantage of heterogeneous computing?
Qualcomm Technologies, Inc. looked at this issue in a recent webinar, which provided an overview of our software offerings for mobile heterogeneous computing, including different methods to access diverse processing cores. The two most important points that I took from the webinar are:
- Qualcomm Technologies offers comprehensive heterogeneous computing software solutions to satisfy the various needs of developers
- Heterogeneous computing is being used in applications today
Comprehensive heterogeneous computing software solutions
Developers have various needs when it comes to accessing the diverse processing cores within a heterogeneous computing system. At one extreme, some developers with expert knowledge of both programming and processor architecture want the ability to deeply optimize their algorithms to a specific processing core. On the other extreme, some developers prefer that the underlying processor architecture is abstracted away to easier, high-level function calls and APIs.
As shown in the diagram below, Qualcomm Technologies is giving developers access to the diverse heterogeneous cores within the Snapdragon processors at three different levels: domain libraries, emerging industry environments, and native access.
For developers that want the benefits of heterogeneous computing without the complexity of having to program the processing cores explicitly, Qualcomm Technologies optimizes many domain libraries for the diverse processing cores. Domain libraries are designed to provide key functionality that application developers need for common user experiences. For example, FastCV accelerates key functions, such as face detection, needed by real-time computer vision (CV) applications. Qualcomm Technologies has optimized the FastCV functions to run on the appropriate processing core, with some functions running on the CPU, VeNum, GPU, or DSP to deliver the highest performance at the lowest power. In fact, internal measurements have shown up to 51x performance speedup for specific FastCV functions.
For developers seeking a consistent programming environment across the diverse processing cores, Qualcomm Technologies supports emerging industry environments such as RenderScript and OpenCL. In fact, Qualcomm Technologies commercially supports OpenCL on all Adreno 3xx GPUs, which covers the Snapdragon tiers from high-volume through premium.
For expert developers, who understand the underlying processor architecture and want to squeeze every last bit of performance and power efficiency out of the hardware, Qualcomm Technologies provides native access to the processing cores through several tools: such as the Hexagon SDK for the DSP, the Snapdragon LLVM for the CPU, and the Adreno SDK for the GPU. Native access is the programming model that provides the least abstraction from the instruction set architecture of the different processing cores and allows the developer to be closest to the hardware. This level of access is essential for intensive computations that need the full power and specialized features of a specific processing core. Qualcomm Technologies builds the optimized implementations of emerging industry environments and the domain libraries by using native access.
In addition, Qualcomm Technologies is providing developers with comprehensive tools, documentation, and reference code to make heterogeneous compute programming easier.
Heterogeneous computing is happening today
Due to its expertise in system architecture and software, Qualcomm Technologies is generally in a prime position to take advantage of heterogeneous computing through system level programming of key functionalities. OEMs and ISVs also take advantage of heterogeneous computing to offer key differentiation.
In addition, the webinar made a great point that many developers are receiving the benefits of heterogeneous computing even though they don’t know they are using it. For example, FastCV is used by Vuforia. There are over 4000 Vuforia applications available in the market, which take advantage of heterogeneous computing. There are also many more applications out in the market using other domain libraries optimized for heterogeneous compute.
Plus developers have started to take advantage of emerging industry environments and native access. I only expect the adoption of heterogeneous computing in applications to grow due to the great benefits in power and performance.
In summary, Qualcomm Technologies is offering heterogeneous computing at scale in three key areas by providing: comprehensive tools with different levels of software access, diverse processing cores, and a product portfolio that covers high-volume to premium mobile devices.
Want to learn more? Look for future blogs and webinars to learn about Qualcomm’s view on heterogeneous computing.