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

### From iis-projects

(Created page with "Category:Digital Category:High Performance SoCs Category:Computer Architecture Category:2020 Category:Master Thesis Category:Semester Thesis Category...") |
|||

Line 9: | Line 9: | ||

[[Category:Zarubaf]] | [[Category:Zarubaf]] | ||

[[Category:Fschuiki]] | [[Category:Fschuiki]] | ||

− | [[Category: | + | [[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

- Fabian Schuiki: fschuiki@iis.ee.ethz.ch
- Florian Zaruba: zarubaf@iis.ee.ethz.ch
- Paul Scheffler: paulsc@iis.ee.ethz.ch
- Thomas Benz: tbenz@iis.ee.ethz.ch

Co-supervised by Prof. Torsten Hoefler's group

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