- Shared virtual memory between CPU and GPU
- Memory based signaling and Synchronization
- multiple user level command queues
- preemptive GPU context switching
- concurrent execution of CPU threads and GPU threads
With such features, HSA has Intermediate language as HSAIL GPUs are fast and power efficient. They are basically a high compute density per mm and per watt. But they are hard to program.
- New languages required for compute kernel
- Bring GPU computing to existing, popular, programming models.
HASIL is the intermediate language for parallel compute in HSA.
- Generated by a high level compiler (LLVM, gcc, Java VM, etc)
- Low-level IR, close to machine ISA level
- Compiled down to target ISA by an IHV “Finalizer”
- Finalizer may execute at run time, install time, or build time
HSAIL KEY FEATURES
- Shared virtual memory
- Portable across vendors in HSA Foundation
- Stable across multiple product generations
- Consistent numerical results (IEEE-754 with defined min accuracy)
- Fast, robust, simple finalization step (no monthly updates)
- Good performance (little need to write in ISA)
- Supports all of OpenCL and C++ AMP
- Support Java, C++, and other languages as well
HSAIL compiler can take advantage of Heterogeneous computing in APU processors. They share the workloads between CPU cores and GPU cores using hUMA. These cores are integrated in a single silicon die. GPU cores can calculate the graphics power from the Integrated graphics which is DirectX 11 and higher version. It also support for parallel processing. The supports for C++ and OpenCL is really useful for programmers who can easily play with pointers.