Personal tools

DaCe on Snitch

From iis-projects

Jump to: navigation, search

Programming a heavily multi-core system such as Manticore is very complex. It requires careful scheduling of data movement due to the program-controlled DMA, and the actual computation. A promising angle to make this more manageable is to leverage a higher-level framework to describe computation with respect to its dataflow, and then to mechanically transform that to meet the target hardware needs. Frameworks like TensorFlow already do this, but very specifically for the Machine Learning domain. We would like to explore ways of leveraging the DaCe framework to generate code for ETH’s Snitch processor system.

DaCe is a framework in Python to enable Data-Centric Parallel Programming where the fundamental view is shifted from computational complexity to data-movement complexity. In DaCe, computations are modeled as parametric (stateful) dataflow graphs with computation elements (tasklets), data containers, and parametric data flow dependencies. This representation allows performance engineers to map the execution graph on spatial architectures at all levels of the hierarchy (ranging from vector units to complex supercomputers)

Further reading
Requirements
  • C/C++, Python programming skills
  • Interest in code generation
  • Ability to endure soul-crunching hardware simulation environments

Composition: 50% Implementation, 30% Arhitecture, 20% Evaluation

Project Supervisors

Co-supervised by Prof. Torsten Hoefler's group

  • Alexandru Calotoiu -- acalotoiu at inf.ethz.ch