Session

Compilers and Linkers for network optimization

Speakers

Felipe Magno de Almeida
Tom Herbert

Label

Moonshot

Session Type

Talk

Contents

Description

We will show how compilers are able to help with network code optimization and abstraction and the techniques we used throughout to achieve these.

One such technique is how we integrate Domain Specific Accelerators with the compiler stack in order to configure dsa instructions during the linking process or application load-time, and how we expanded this technique to general purpose instructions. This feature, tentatively called dynamic constant instantiation, gives performance of actual constants with data that is configurable at load time.

We will also demonstrate how we use pattern matching to turn network code written in a general purpose language (C) into highly optimized code, or even code for a domain specific architecture. To do this we created a custom C++ extension for pattern matching, that we use to analyze the Abstract Syntax Tree and LLVM Intermediate Representation generated by Clang. This data is then used by our LLVM and MLIR pipeline to create the final program for the desired architecture.