Architecturally diverse computers are those in which a variety of distinct computing engines are mutually present in a system. Examples include chip multiprocessors, reconfigurable logic, and graphics engines. While constructing systems of this type is straightforward, actually using the capabilities of the diverse architectural components to effectively deploy an interesting application is quite difficult.
Each of the different computing engines has its own architecture, memory subsystem, language for authoring applications, performance capabilities and limitations, algorithmic strengths and weaknesses, and communities of proponents and detractors. Coordinating a single application across all of this diversity is a daunting task.
Auto-Pipe is an application development environment that is designed to support the exploitation of a wide variety of computing engines in the execution of real-world applications. Auto-Pipe includes a coordination language, compiler, simulator, deployment tool, and performance monitor. Application authors compose algorithm kernels into streaming applications and the development environment eases the tasks of specifying the required data communications, debugging the composed application, mapping the kernels to computational resources, understanding the performance implications of the mapping decisions, and deploying the resulting application on the architecturally diverse computer system. Auto-Pipe is being developed as a community resource to enable the middleware and computational science communities to effectively use architecturally diverse computers.
Architecturally diverse computers are those in which a variety of distinct computing engines are present and can operate cooperatively in a system. Examples include chip multiprocessors, reconfigurable logic, and graphics engines. Auto-Pipe is an application development environment that is designed to support the exploitation of a wide variety of computing engines in the execution of real-world applications. Auto-Pipe is being developed as a community resource to enable the computational science community to effectively use architecturally diverse systems. During the period of the grant, we have accomplished a number of goals. First, we have applied the Auto-Pipe application development environment to the design and implementation of a large, real-world application, the input data processing for a high-energy gamma ray telescope. Second, we have completed our first design of an application that includes graphics engines as one of the computational resources, a Monte Carlo simulation of value at risk for computational finance. We believe this to be a world's first, an application that effectively exploits all three computational resources: multicore processors, reconfigurable logic, and a graphics engine. Third, we have commenced the development of a block library to promote code reuse in the Auto-Pipe environment. Fourth, we have constructed a low-impact performance monitor that measures streaming application performance in reconfigurable logic. Fifth, we have shown necessary and sufficient conditions for deadlock to occur in filtering applications and have proposed three provably correct algorithms for deadlock avoidance. Sixth, we have developed an analytic performance model that describes computation kernels on graphics engines when they are memory bound.