Parallel programming using the current state-of-the-art in software engineering techniques is hard. Expertise in parallel programming is necessary to deliver good performance in applications; however, it is very common that domain experts lack the requisite expertise in parallel programming. In order to drive the computer science research toward effectively using the available parallel hardware platforms, it is very important to make parallel programming systematical and productive. We believe that the key to designing parallel programs in a systematical way is software architecture, and the key to improve the productivity of developing parallel programs is software frameworks. The basis of both is design patterns and a pattern language. We illustrate how we can use design patterns to architect a wide variety of real applications, including image recognition, speech recognition, optical ?ow computation, video background subtraction, compressed sensing MRI, computational finance, video games, and machine translation. By exploring software architectures of our applications, we achieved 10x-140x speedups in each of the applications. We illustrate how we can develop parallel programs productively using application frameworks and programming frameworks. We achieve 50%-100% of the performance while using four times fewer lines of code compared to hand-optimized code. © 2011 Springer Science+Business Media, LLC.
CITATION STYLE
Anderson, M., Catanzaro, B., Chong, J., Gonina, E., Keutzer, K., Lai, C. Y., … Sundaram, N. (2011). PALLAS: Mapping applications onto manycore. In Multiprocessor System-on-Chip: Hardware Design and Tool Integration (pp. 89–113). Springer New York. https://doi.org/10.1007/978-1-4419-6460-1_4
Mendeley helps you to discover research relevant for your work.