TPC Programming Language

The TPC core can be programmed using a derivative of C language called TPC-C.


TPC-C programming language is used to author TPC programs (AKA kernels) that are executed on TPC device(s). The TPC programming language is based on the ISO/IEC 9899:1999 C language specification with TPC specific extensions and restrictions. Please refer to the ISO/IEC 9899:1999 specification for a detailed description of the language grammar. TPC-C is a derivative of C99 with added vector data types to enable easy utilization of processor-unique SIMD capabilities.

It has many dedicated features to accelerate DNN ops such as:

  • Tensor-based memory accesses

  • Accelerations for special functions

  • Random number generation

  • Multiple data types similar to the MME

TPC Program Components

A TPC program consists of two parts:

  • TPC code

  • Host glue code

TPC Code

TPC code is the ISA that the TPC processor executes. It contains the kernel implementation.

Host Glue Code

Host glue code is executed on the host machine serviced by the Habana DNN SoC, and holds specifications regarding how the program input/outputs can be dynamically partitioned between the numerous TPC processors in the Habana device.