SPRUIG6K January   2018  – March 2024

 

  1.   1
  2.   C7000 Host Emulation
  3. About This Document
    1. 1.1 Related Documentation
    2. 1.2 Disclaimer
    3. 1.3 Trademarks
  4. Getting Started with Host Emulation
    1. 2.1 System Requirements
    2. 2.2 Installation Instructions
    3. 2.3 Summary of Differences: Host Emulation Coding vs. Native C7000 Coding
  5. General Coding Requirements
    1. 3.1 Required Header Files
    2. 3.2 Package Dependencies
    3. 3.3 Example Program
  6. Intrinsics
    1. 4.1 OpenCL-Like Intrinsics
    2. 4.2 Streaming Address Generator Intrinsics
    3. 4.3 C6000 Legacy Intrinsics
    4. 4.4 Memory System Intrinsics
  7. TI Vector Types
    1. 5.1 Constructors
    2. 5.2 Accessors
    3. 5.3 Vector Operators
    4. 5.4 Print Debug Function
  8. Streaming Engine and Streaming Address Generator
  9. Lookup Table and Histogram Interface
    1. 7.1 Lookup Table and Histogram Data
  10. C6000 Migration
    1. 8.1 __float2_t Legacy Data Type
  11. Matrix Multiply Accelerator (MMA) Interface
  12. 10Compiler Errors and Warnings
    1. 10.1 Key Terms Found in Compiler Errors and Warnings
    2. 10.2 Host Emulation Specific Syntax
  13. 11Revision History
  14.   35

Matrix Multiply Accelerator (MMA) Interface

The C7000 Host Emulation Matrix Multiply Accelerator (MMA) interface is the same as the interface used with the C7000 compiler on the target hardware with one important difference. All intrinsics and definitions mentioned in c7x_mma.h are also defined and implemented for C7000 Host Emulation and can be used in the same ways. However, programs must explicitly indicate when the MMA state advances by calling the provided __HWAADV() intrinsic. This is because, unlike the target hardware, the MMA that is emulated for the host can't be tied to the notion of a CPU clock.

Programs must keep track of instructions that are intended to execute in parallel and explicitly advance the MMA state by calling __HWAADV() after each set of "parallel" instructions.

To make portability easier between host and target modes, the __HWAADV() intrinsic is defined as an empty macro by the target compiler.