The focus of the RePhrase project is on producing new software engineering tools, techniques and methodologies for developing data-intensive applications in C++, targeting heterogeneous multicore/manycore systems that combine CPUs and GPUs into a coherent parallel platform. Data-intensive applications are one of the most important and commonly encountered classes of industrial application. Such applications are often potentially highly parallel and are a clear match to emerging heterogeneous parallel architectures. However, exploiting this potential effectively can be difficult: it is even harder to obtain good performance for parallel data-intensive applications than for compute- intensive applications, since many additional issues related to data management need to be taken into account. These include structuring the data to make it efficient to access and to process, placement/migration/replication of the data to allow fast parallel access, ensuring data consistency etc. The RePhrase project tackles these issues directly.
Start-ups & microfirms, Small & medium enterprises, Open Source developers, Large companies, Technology providers, Research institutions.
The RePhrase project aims to produce new software engineering tools, techniques and methodologies for developing data-intensive applications in C++, targeting heterogeneous multicore/manycore systems that combine CPUs and GPUs into a coherent parallel platform.
(Near-)future data-intensive applications will need to consider large-scale parallelism as an essential part of their design and development process. RePhrase aims to dramatically simplify this process over the state-of-the-art using a flexible semi-automated development approach that will be built around emerging pattern-based parallel programming technology. Pattern-based programming enables abstraction over low-level parallelism details, including thread creation, communication, synchronisation, and scheduling; and also over data placement, access, migration and replication. This makes it ideal to address the intrinsic complexity of data-intensive applications with respect to parallelism and data management. It will be supplemented by advanced refactoring, program analysis, testing, verification, dynamic adaptivity mechanisms and performance monitoring/measurement tools as part of a coherent development methodology. We will evaluate our work using applications taken from a number of domains, to demonstrate improvements in productivity, reliability, robustness and resilience.