Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
HSA Runtime, Compiler, and Tools Project
Heterogeneous System Architecture Foundation is a not-for-profit industry standards body focused on making it dramatically easier to program heterogeneous computing devices. The consortium comprises various software vendors, IP providers, and academic institutions and develops royalty-free standards and open-source software.
The HSA Foundation recently ratified and released 3 specifications:
- HSA Platform System Architecture Specification: Defines the requirements for shared virtual memory, platform coherency, signaling, queuing mechanics and packet formats, context switching, and the HSA memory model.
- HSA Programmer’s Reference Manual: Contains the HSAIL Virtual ISA and Programming Model, Compiler Writer’s Guide, and BRIG (the "HSAIL" compiler intermediate language) object format.
- HSA Runtime Programmer’s Reference Manual: Defines the APIs in the HSA Runtime used for tasks such as initialization and device discovery, queue creation, and memory management. These specifications are at the "1.0 Provisional" Level and are available from the HSA Foundation web site here (http://www.hsafoundation.com/standards/).
The project provides an initial implementation of the HSA specifications on the AMD "Kaveri" silicon. The implementation includes:
- A Linux kernel and associated kernel-level drivers
- HSA runtime
- HSAIL finalizer
The project includes:
- A reference LLVM-based compiler that generates HSAIL*
- Tools for assembling and disassembling HSAIL
- Tools for compiling OpenCL kernels into HSAIL.
- An approachable runtime layer("OKRA") that minimizes the time required to get started with HSA.
*Compiler can extended to add additional languages that support HSAIL-based compute.
Who should use this project?
The project is aimed at:
- Compiler and language developers who want to add parallel acceleration to a high-level language.
- Programmers who want to leverage features of HSA such as shared-virtual-memory, platform atomics, user-level queues, and signals.
For an overall view of the different components of the project, see the list [here] (https://github.com/HSAFoundation/HSA-Docs-AMD/wiki/List-of-Specifications,-Presentations,-Drivers,-Compilers,-Tools,-Libraries).
For information regarding target platforms and installation instructions for the HSA drivers and user-mode libraries, see "HSA Platforms & Installation".
Compiler and programming language developers should investigate the [HSAIL Compiler Writers SDK] (https://github.com/HSAFoundation/HSA-Docs-AMD/wiki/Compiler-Writer-SDK).
Programmers interested in developing code that uses HSA features should investigate these projects:
- [C++ and C++AMP Project] (https://bitbucket.org/multicoreware/cppamp-driver-ng/wiki/Home)
- CL Offline Compiler (CLOC) Project and examples
- [OKRA Runtime] (https://github.com/HSAFoundation/Okra-Interface-to-HSA-Device)
- [HSAIL Assembler and Disassembler] (https://github.com/HSAFoundation/HSAIL-Tools)