Loading...
Please wait, while we are loading the content...
Similar Documents
How to efficiently map apps onto multi-core platforms MULTICORE
| Content Provider | Semantic Scholar |
|---|---|
| Author | Stahl, Richard |
| Abstract | The first multi-core platforms have found their way into embedded systems for entertainment and communication, thanks to their greater computational power, flexibility and energy efficiency. However, this article shows, mapping applications onto these systems remains a challenge that is costly, slow and error-prone. Although the multi-core pro-grammable architectures have a huge potential to tackle present and future applications, a key issue is still open: How can developers map an application onto such a multi-core platform fast and efficiently, while profiting from the potential benefits of parallel processing? This question can be refor-mulated as: What programming model should they use? In a broad sense, a programming model is a set of software technologies and abstractions that provides the designer with means to express the algorithm in a way that matches the target architecture. These software technologies exist at different levels of abstraction and encompass programming languages, libraries, compilers, runtime mapping components etc. Programming model Obviously, programming a multi-core system requires a sort of parallel programming model. A number of parallel program-researched in the last decades, yet their main problem has been either their low acceptance among developers or their poor performance. How are multi-core systems programmed today? Embedded software developers still prefer C/C++ programming. If absolutely necessary, they augment the sequential programs with a parallel library and/or optimised parallel components to achieve the required performance. This seems to work for now, but as the number of cores grows beyond (let's say) 10, the sequential programming model will likely become a considerable burden. Being embedded software developers, we often dream of an auto-parallelizing compiler that analyses sequential C/C++ and/or Java programs, takes into account the target architecture , and, given the application performance requirements, maps the program onto the multi-core platform. Unfortunately, such a super-compiler doesn't exist and chances are rather low that it ever will, especially due to the vastness and complexity of the design space. How could/should multi-cores be programmed in the future? Dividing the parallel programming challenge into a number of sub-challenges is definitely part of the answer. Current solutions (discussed here in more detail) rely on providing the developers with solid software-tool support (OpenMP, MPA). In the many-core future, the true parallel programming (and thinking) will still be hard, so the developers will most probably like to keep thinking sequentially, while creating highly parallel programs (Maestro/Axum). Contemporary approaches Many solutions to parallel programming have been proposed over the … |
| File Format | PDF HTM / HTML |
| Alternate Webpage(s) | https://static.aminer.org/pdf/PDF/000/253/717/summarising_an_experiment_in_parallel_programming_language_design.pdf |
| Language | English |
| Access Restriction | Open |
| Content Type | Text |
| Resource Type | Article |