HSAIL Compiler Heterogeneous computing

HSAIL

HSAIL is the PORTABLE COMPILER IR FOR HSA. Heterogeneous system architecture is an open industry standard designed to support a large variety of data-parallel and task-parallel programming models. Many application processor vendors, including AMD, ARM, Imagination, MediaTek, Texas Instrument, Samsung and Qualcomm are members of the HSA Foundation. HSA Defined features such as

  1. Shared virtual memory between CPU and GPU
  2. Memory based signaling and Synchronization
  3. multiple user level command queues
  4. preemptive GPU context switching
  5. 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.

HSAIL

HSAIL

  • New languages required for compute kernel

HSAIL

  • 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

  • Parallel
  • 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.

Share with your friendsShare on FacebookShare on Google+Tweet about this on TwitterShare on LinkedInPin on PinterestShare on RedditShare on StumbleUpon

Leave a Comment