Energy Consumption of Parallel Patterns

For a very long time, the main goal of parallel computing techniques was to improve performance of parallel applications, delivering better speedups without consideration for possibly massively increased power consumption. However, the energy footprint of high-performance servers has become unacceptably high recently, resulting in demand for greener computing and for exploring tradeoffs between application performance […]

Continue reading

Multilevel Parallel Patterns

Parallel patterns represent an important high-level abstraction for programming complex parallel hardware systems and they have been endorsed by several top IT companies that offer their own pattern libraries (e.g. Intel Thread Building Blocks, Microsoft PPL). However, most of these pattern libraries are tailored to shared- memory multicore processors with the “flat” architecture of cores. […]

Continue reading

Refactorings for Energy Optimisation

Non-functional properties, such as time, energy and security, are becoming critically important in areas ranging from small-scale sensors, through smart cyber-physical systems and mobile devices, to data centres, despite it being treated as a secondary concern. As embedded devices become more commonplace, increasing is the pressing demand for more time and energy optimisation in applications […]

Continue reading

Parallelism Removal in Legacy Code

This project would investigate how to safely remove parallelism from legacy C++ code. In order to improve the design and performance of legacy applications, older low-level parallelism techniques must first be removed. This facilitates the ability to analyse and safely introduce parallelism using novel approaches. The project will look at C++ use cases to investigate […]

Continue reading

Safety Assurances of Refactorings

A refactoring should transform code such that it maintains functional correctness. In languages such as C++ it can be difficult to the refactoring developer to ensure that their refactoring can be applied safely. This is particularly important when the refactoring transforms the internal behaviour of the program, such as the introduction of parallelism. This project […]

Continue reading

Refactoring Heterogeneous Systems

ParaFormance allows C/C++ developers on x86 and ARM to expose, diagnose and introduce multi-core code into their applications. Discover the multi-core opportunities by running our hot spot discovery, refactor your application to introduce openMP and TBB calls automatically, and check the parallelised code for thready safety issues, such as race conditions, deadlocks, variable collisions and […]

Continue reading