Presentation: Tweet"Thinking Parallel: Exploiting Advanced Software Refactoring to Produce Structured Parallel Programs"
Despite Moore's "law", uniprocessor clock speeds have now stalled. Dual-, quad- or even hexa-core processors are now common, even in consumer laptops and desktops. While it is possible to use conventional techniques to write parallel programs for such systems, future hardware will not just be slightly parallel, however, but will be massively parallel, with manycore and even "megacore" systems becoming mainstream. It will also be heterogeneous, involving GPUs, FPGAs, and even dedicated specialist processors as part of a single complex system.
The ParaPhrase project aims to help programmers "think parallel" by providing new development tools and methodology. Our approach is based around the use of high-level patterns of parallelism that allow programmers to think in terms of highly parallel abstractions. We combine this with tool-directed software refactoring, which guides the developer through a series of code transformations. The result is a parallel implementation that has been tuned to a specific hardware architecture, but which can easily be transformed for execution on some other platform.
In this talk we will demonstrate how the process of refactoring can lead to a simple and efficient multicore solution, and how high-level offloading code can enable the efficient utilisation of special-purpose hardware such as GPGPUs. Our approach is highly generic - the patterns and transformations that we develop are language-independent, and can be easily retargeted to a variety of languages and parallel implementations, including C, C++ and Java.