Automatic Translation of Python Instruction Behaviors into C++
Bachelor’s Thesis / Student Research Project
Abstract
The Abstract Computer Architecture Description Language (ACADL) allows for fast modeling and performance evaluation of DNN Hardware Accelerators. Currently, the functional simulation of mapped DNNs is done in Python, which allows for easy use but comes with the drawback of a slow simulation.
This student project’s goal is to automatically translate the behavior of an ACADL instruction in Python into C++ to speed up the functional simulation using the Python abstract syntax tree (AST).
Python behavior description of the ADD
Instruction in add_function
:
class ADD(Instruction):
def __init__(self, id: int, rs1: str, rs2: str, rd: str):
def add_function(architectural_state: ArchitecturalState):
rs1 = self.read_registers[0]
rs2 = self.read_registers[1]
rd = self.write_registers[0]
rs1_value = architectural_state.read_register(rs1)
rs2_value = architectural_state.read_register(rs2)
rd_value = rs1_value + rs2_value
architectural_state.write_register(rd, rd_value)
pc = architectural_state.read_register("pc0")
architectural_state.write_register("pc0", pc + int(self.size / 8))
Translation into C++:
void add_function(std::shared_ptr<Instruction> self, std::shared_ptr<ArchitecturalState> ag) {
auto rs1 = self->read_registers[0];
auto rs1_value = ag->read_register(rs1);
auto rs2 = self->read_registers[1];
auto rs2_value = ag->read_register(rs2);
auto rd = self->write_registers[0];
auto rd_value = rs1_value + rs2_value;
ag->write_register(rd, rd_value);
uint64_t pc = ag->read_register("pc0");
pc += 4;
ag->write_register("pc0", pc);
}
References
- Mika Markus Müller, Alexander Richard Manfred Borst, Konstantin Lübeck, Alexander Louis-Ferdinand Jung, Felix Wedlich, Oliver Bringmann - Using the Abstract Computer Architecture Description Language to Model AI Hardware Accelerators
- Konstantin Lübeck, Alexander Louis-Ferdinand Jung, Felix Wedlich, Oliver Bringmann - Work-in-Progress: Ultra-fast yet Accurate Performance Prediction for Deep Neural Network Accelerators
Requirements
- Python
- C++
- Successfully atteded the lecture “Grundlagen der Rechnerarchitektur” and/or “Parallele Rechnerarchitekturen” (optional)
- Linux (optional)