Abstract-Recently we proposed occam-pi as a high-level language for programming massively parallel reconfigurable architectures. The design of occam-pi incorporates ideas from CSP and pi-calculus to facilitate expressing parallelism and reconfigurability. The feasability of this approach was illustrated by building three occam-pi implementations of DCT executing on an Ambric. However, because DCT is a simple and wellstudied algorithm it remained uncertain whether occam-pi would also be effective for programming novel, more complex algorithms.In this paper, we demonstrate the applicability of occam-pi for expressing various degrees of parallelism by implementing a significantly large case-study of focus criterion calculation in an autofocus algorithm on the Ambric architecture. Autofocus is a key component of synthetic aperture radar systems. Two implementations of focus criterion calculation were developed and evaluated on the basis of performance. The comparison of the performance results with a single threaded software implementation of the same algorithm show that the throughput of the two implementations are 11x and 23x higher than the sequential implementation despite a much lower (9x) clock frequency. The two designs are, respectively, 29x and 40x more energy efficient.
I. INTRODUCTION AND MOTIVATIONEmbedded signal processing systems are facing the challenges of increased computational demands. Massively parallel reconfigurable architectures, which can be configured to form application-specific hardware, offer high degree of parallelism to meet the application requirements. However, the applicability of reconfigurable processor arrays in embedded and high performance computing is constrained by the need for mastering low-level structural description languages and the lack of support in these languages for expressing dynamic reconfiguration. Clearly, all these challenges need to be taken care of by using an appropriate programming model.We proposed to use a concurrent programming model that allows the programmer to express computations in a productive manner by matching it to the target hardware using highlevel constructs, and the language is further supported by a compiler for providing portability across different hardware resources. Occam [2] is a programming language based on the Communicating Sequential Processes (CSP) [1] concurrent model of computation and was developed by Inmos for their microprocessor chip Transputer. However, CSP can only express a static model of the application, where processes synchronize through communication over fixed channels. In contrast, the pi-calculus [3] allows modeling of dynamic construc-