Personal tools

Difference between revisions of "DaCe on Snitch (M/1-3S)"

From iis-projects

Jump to: navigation, search
 
 
Line 9: Line 9:
 
[[Category:Zarubaf]]
 
[[Category:Zarubaf]]
 
[[Category:Fschuiki]]
 
[[Category:Fschuiki]]
[[Category:Available]]
+
[[Category:Reserved]]
 +
 
 
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.
 
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.
  

Latest revision as of 18:13, 19 November 2020


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