This paper presents a model and its associated tools that facilitate the use of massively data-parallel coprocessors. In this model, application developers use profiling tools to identify parts of the application for data-parallel execution, determine the application data structures to be hosted by the coprocessor, prototype coprocessor execution of these parts, and debug correctness of partitioned execution of the application using emulation.
We have built hardware support into a CPU/FPGA prototyping platform, which runs a fully functional operating system (Linux), to demonstrate our infrastructure and tool flow. To guide the development of our work and to evaluate its utility, we have instrumented SPECint2006 applications to utilize coprocessors emulated by softcore processors embedded in our prototyping platform. The emulated coprocessors illustrate our model and tool flow while allowing us to evaluate our approach.