How Not to Sweat the Processor Details: Q&A with HSA Foundation President Dr. John Glossner
Easing the programming of heterogeneous parallel devices.
Editor’s Note: The HSA Foundation is a non-profit consortium of SoC IP vendors, OEMs, academia, SoC vendors, Operating System Vendors (OSVs) and Independent Software Vendors (ISVs). More than 40 technology companies and 17 universities worldwide support the consortium. HSA Foundation president Dr. John Glossner recently responded to questions from EECatalog to catch us up on the organization’s purpose and next-gen products from consortium members.
EECatalog: What are some of the key objectives of the HSA Foundation?
Dr. John Glossner, HSA Foundation: To handle compute-intensive tasks, heterogeneous computing is already established across a wide range of products. With heterogeneous compute the best processor—whether it be a DSP, CPU, GPU, FPGA, etc.—can be used to handle a specific task. You can see heterogeneous computing everywhere from IoT to smartphones and PCs to cloud data centers. Applications range from machine learning, data mining, and environmental cognition to enabling a better user experience at lower power points.
The challenge today is that a great deal of specialized knowledge and tools are needed to use heterogeneous compute in these applications. In addition, developers must maintain different implementations using APIs, custom vendor libraries, and proprietary languages like CUDA, with little to no portability in programming model and between accelerators and vendors.
The Heterogeneous System Architecture (HSA) Foundation is a group of leading companies who are together helping developers more easily and efficiently apply the hardware resources in today’s complex systems-on-chips (SoCs).
The open and royalty-free HSA specifications provide a consistent heterogeneous platform architecture that makes it dramatically easier to program heterogeneous parallel devices. Ultimately, with HSA, applications will be able to run faster and at lower power across a wide range of computing platforms.
EECatalog: Could you tell us more about the HSA specifications?
Glossner, HSA Foundation: Yes. The HSA specifications comprise the key elements needed to improve the programmability of heterogeneous processors, the portability of programming code, and interoperability across different vendor devices.
The specs define hardware and software infrastructure that allows applications to interact with HSA platforms. With the HSA Programmers Reference Manual (PRM), we’ve created clear guidelines for tool and compiler developers. And HSA offers open source tools for LLVM and GNU gcc.
Open source implementations of the HSA runtime and system architecture specifications allow anyone to experiment with HSA systems and execute applications on heterogeneous systems.
Following the release of the v1.0 spec, members can now test their platforms through a suite of conformance tests—ensuring they will pass HSA certification. HSA Foundation Following the release of the v1.0 spec, members can now test their platforms through a suite of conformance tests—ensuring they will pass HSA certification. HSA Foundation working groups are also standardizing tools and APIs for debug and profiling, and creating guidelines for incorporating IP from multiple vendors into the same SoC.
EECatalog: What are some examples of the resources that exist as a result of HSA and as a result of HSA member efforts?
Glossner, HSA Foundation: The HSA Foundation and member companies provide open source and/or freely available compilers for OpenCL, C++, and Python. Support for additional languages such as Java is anticipated. All compilers support the concept of single-source without the need for a separate tool-chain to compile compute components.
Software support for core HSA platform features like Shared Virtual Memory is available on popular Operating Systems like Linux & Windows 10; many open source compiler toolchains and languages have native support for HSA & HSAIL now, from GNU toolchain (GCC, etc), LLVM (CLANG), Python, native C++AMP & C++17 compilers (HCC) and many more. An efficient, vendor-neutral implementation of OpenCL 2.x runtime on top of HSA is available through pocl; several other open source software frameworks popular in the embedded ecosystem like Docker have been adapted or are in the process to be optimized to take advantage of HSA features.
HSA vendors also provide HSA-enabled debug and profiling tools for their products. One example is AMD’s CodeXL 2.0 debug and profiling application suite ,which has been released now as an open source project http://gpuopen.com/codexl-2-0-is-here-and-open-source/
EECatalog: What kind of next gen products that support HSA are either already out in the marketplace or will be soon?
Glossner, HSA Foundation: It’s very exciting to see how this has now gone from concept to implementation. Some examples that were shared recently include:
- AMD launched the world’s first processors designed to support the full set of HSA features with its SoC products targeting the desktop and laptop PC markets.
- ARM is actively developing CPU, GPU and interconnect IP with energy efficiency and full system coherency as guiding design principles while extending the system capabilities aligned with HSA coherency standards.
- General Processor Technologies (GPT) recently sponsored an open source project to expand HSA tools support to the GNU Compiler Collection (GCC) by enabling HSA Intermediate Language (HSAIL) binary format (BRIG) translation for GCC.
- Imagination is staging a rollout of HSA this year across its processors. This includes MIPS I-class and P-class CPUs, PowerVR GPUs and HSA compliant fabric solutions.
- MediaTek is working with partners in developing HSA features on mobile SoCs. The company is already receiving interest in HSA from customers, and is on track to deliver HSA features in mobile SoC products in phases.
EECatalog: Any final thoughts?
Glossner, HSA Foundation: Both academic and industry results have shown that HSA systems have equivalent or better performance versus processor-specific implementations. This frees programmers from worrying about the details of any particular processor in a heterogeneous system.