Multiprocessor System-on-Chip

pp 89-113


PALLAS: Mapping Applications onto Manycore

  • Michael Anderson
  • , Bryan Catanzaro
  • , Jike Chong
  • , Ekaterina Gonina
  • , Kurt KeutzerAffiliated withUniversity of California Email author 
  • , Chao-Yue Lai
  • , Mark Murphy
  • , Bor-Yiing Su
  • , Narayanan Sundaram


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.


PALLAS SoftwareArchitecture ApplicationFramework Programming Framework Design Pattern Pattern Language