Parallel computing emerged during the 1980s and, although multiprocessor and multicomputer architectures offered the potential of dramatic increases in processing power, the potential was rarely realized due to lack of programming tool support. Fast-forward 25 years, and we see multiprocessor architectures based on multicore processors, combining system-on-a-chip (SoC) and network-on-a-chip (NoC). Such architectures have tremendous computational capabilities, but--as you will learn from this paper--the key to unleash these capabilities lies in the programming abstractions and tool support.
This paper essentially describes the Multiflex programming environment, which is aimed at multiprocessor SoC platforms. It is an enlightening read for anyone interested in the current state-of-the-art developments in parallel programming applications. The application area considered is that of video processing; some knowledge of this area is required for a full understanding of the paper.
The Multiflex native programming model is described to include reactive task management (RTM), which provides a programming abstraction to achieve fine-grained task parallelism, and parallel programming patterns (PPP), which provide a library for fine-tuning the mapping of components onto physical resources using patterns.
The rest of the paper then considers two realistic video processing applications to illustrate the use of Multiflex on the Platform P2012 computing fabric. According to the authors, “the first application is a high-quality rescaling (HQR) application [that is] used in most TV appliances.” The second application is a VC-1 video decoder, which is a proprietary video format developed by Microsoft. The RTM and PPP programming abstractions are used to implement different instances of each of the video processing applications. The pros and cons of using each abstraction are discussed in relation to performance and tuning with the aid of optimization and trace tool support provided through Multiflex.
Overall, this is a very good paper that is thorough and complete in every way. It is a must-read for anyone interested in parallel programming tools. It certainly rekindled my interest in parallel programming tool support.