EmitC testing

NOTE: This is a developer's guide on how to test EmitC as a feature. For usage of EmitC, please refer to ttnn-standalone docs.

Prerequisites

  • Built ttmlir

  • Built ttrt

  • Activated virtual environment:

    source env/activate
    
  • Saved system descriptor file:

    ttrt query --save-artifacts
    

Table of Contents

  1. Generate all EmitC tests and run them
  2. Generate a single EmitC test and run it

Generate all EmitC tests and run them

  1. Generate flatbuffers and .cpp files for EmitC tests

    If you don't have SYSTEM_DESC_PATH environment variable exported, you can run:

    SYSTEM_DESC_PATH=/path/to/system_desc.ttsys llvm-lit -sv test/ttmlir/EmitC/TTNN
    

    Or if you have SYSTEM_DESC_PATH exported, you can omit it:

    llvm-lit -sv test/ttmlir/EmitC/TTNN
    
  2. Compile generated .cpp files to shared objects

    tools/ttnn-standalone/ci_compile_dylib.py
    
  3. Run flatbuffers + shared objects and compare results

    ttrt run --emitc build/test/ttmlir/EmitC/TTNN
    

Generate a single EmitC test and run it

  1. Generate flatbuffers and .cpp files for EmitC test

    SYSTEM_DESC_PATH=/path/to/system_desc.ttsys llvm-lit -sv test/ttmlir/EmitC/TTNN/eltwise_binary/add.mlir
    
  2. Compile generated .cpp files to shared objects

    Assuming default build directory path:

    tools/ttnn-standalone/ci_compile_dylib.py --file build/test/ttmlir/EmitC/TTNN/eltwise_binary/add.mlir.cpp
    
  3. Run the flatbuffer + shared object and compare results

    ttrt run --emitc build/test/ttmlir/EmitC/TTNN/eltwise_binary/add.mlir.ttnn