Difference between revisions of "DaCe on Snitch (M/1-3S)"
From iis-projects
(Redirected page to LLVM and DaCe for Snitch (1-2S)) |
|||
Line 1: | Line 1: | ||
− | [[Category:Digital]] | + | #Redirect [[LLVM and DaCe for Snitch (1-2S)]] |
+ | |||
+ | <!--[[Category:Digital]] | ||
[[Category:High Performance SoCs]] | [[Category:High Performance SoCs]] | ||
[[Category:Computer Architecture]] | [[Category:Computer Architecture]] | ||
Line 8: | Line 10: | ||
[[Category:Tbenz]] | [[Category:Tbenz]] | ||
[[Category:Zarubaf]] | [[Category:Zarubaf]] | ||
− | [[Category:Fschuiki]] | + | [[Category:Fschuiki]]--> |
− | [[Category: | + | [[Category:Outdated pitches]] |
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 19:05, 15 February 2021
Redirect to:
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