Alternative Computing Technologies (ACT) Lab

School of Computer Science

Georgia Institute of Technology

Tabla is an accelerator generator framework for geometric machine learning algorithms. It is an open source project under the Apache license.

About Model Compiler

TABLA's model compiler statically generates an execution schedule for the accelerator and significantly simplifies the hardware.

Model compiler uses Data Flow Graph as the intermediate representation

Data flow graph is an effective representation of mathematical operations and its dependencies. Generation of the data flow graph is the first step in compilation process. It consists of nodes and edges that represent mathematical operations and dependencies, respectively. Every data flow graph starts with the Source node and ends with Sink node, designated by "source" and "sink" in the graphical representation on the right. The immediate children nodes of the source node represent inital data used in the learning algorithm, so that users can easily identify the initial values before any operations are performed. Subsequent children nodes represent the operations and functions specified in the input code.

The colored nodes represent the data type. Blue nodes are model_input data, yellow is model, pink is model_output, gray is constant, and green is gradient.


Data Flow Graph is used for scheduling

Using data flow graph as input, Tabla executes ML-RCS (Minimum Latency-Resource Constrained Scheduling) alrogithm to effectively schedule the opertions, given the hardware resource constraints. Also known as Hu's Algorithm, ML-RCS outputs operations to be performed cycle-by-cycle. All of the graphical representations of data flow graphs reflect the scheduled operations; each horizontal layer corresponds to each cycle, excluding the source, sink, and initial data nodes.


Here is an example implementation of the linear regression algorithm and the data flow graph generated by the compiler.

Here are classification and its data flow graph.

Here are recommender systems and its data flow graph.

click on the image for a detailed view.


This source code is published under the terms specified in the Apache license.

Copyright 2016 Hadi Esmaeilzadeh

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.