HCC: Heterogeneous Compute Compiler

Tools

HCC Is an Open Source, Optimizing C++ Compiler for Heterogeneous Compute

HCC supports heterogeneous offload to AMD APUs and discrete GPUs via HSA enabled runtimes and drivers.  It is an ISO compliant C++ 11/14 compiler that supports the following two programming workflows:

    • Single source via a single compiler frontend  with code generation to both HSAIL and X86  and
    • Dual source via dual compiler such as using ICC or GCC for X86 code generation and HCC CLANG with just HSAIL code generation to HSAIL.

LLVM Logo

It is based on Clang, the LLVM Compiler Infrastructure and the “libc++” C++ standard library.

Accelerator Modes Supported

HC (Heterogeneous Compute) C++ API

Inspired by C++ AMP and C++14, this is the default C++ compute API for the HCC compiler.  HC has some important differences from C++ AMP including removing the “restrict” keyword, supporting additional data types in kernels, providing more control over synchronization and data movement, and providing pointer-based memory allocation.  It is designed to expose cutting edge compute capabilities on Boltzmann and HSA devices to developers while offering the productivity and usability of C++.

C++ AMP

Microsoft C++ AMP is a C++ accelerator API with support for GPU offload. This mode is compatible with Version 1.2 of the C++ AMP specification.

C++ Parallel STL

HCC provides an initial implementation of the parallel algorithms described in the ISO C++ Extensions for Parallelism, which enables parallel acceleration for certain STL algorithms.

OpenMP

HCC supports OpenMP 3.1 on CPU. The support for OpenMP 4.x accelerator offloading is currently in development.

Target Platform Supported

X86-64 Linux based systems (Ubuntu 14.04 or Fedora21 recommended) with support for

  • Radeon Open Compute Kernel Driver and Runtime for discrete  GPU
  • HSA driver and runtime for APU

Discrete GPU system support

  • CPU: Intel Haswell or Newer, Core™ i5, Core™ i7; Xeon® E3 v4 & v5; Xeon® E5 v3
GPU Family Chipset Name
Sea Islands KAVERI: A10-7870K,  A10-7850K,  A10-7800,  A10-7700K
Volcanic Islands CARRIZO: FX-8800P,  Pro A12-8800B,  Pro A10-8700B,  A10-8700P
Volcanic Islands FIJI: Radeon R9 Nano, Radeon Fury X, Radeon Fury

Related Blogs

Technical blogs about HCC

Core™ and Xeon® are registered trademarks of Intel Corporation

Resources