Parallel Software Products
Please select sample OpenMP parallelisations of C code performed by ParaWise from the menu below:




"Kernel_E benchmark parallelisation using OpenMP achieved in a few hours using ParaWise"


Kernel_E OpenMP
                                            timings





            Prace/Kernel_E
Kernel_E is a C code from the Prace Unified European Applications Benchmark Suite consisting of over 8700 lines in 83 routines stored in 107 files. It solves Quantum Chromodynamics simulations using a full conjugate gradient solution using Wilson fermions.

The initial parallelisation was performed using ParaWise with minimal user interaction in a few minutes. Although sufficient parallelism is exploited in this ParaWise parallelisation, to achieve scalability to larger numbers of processors use of the "first touch" technique was required. This is required as parallel loops in the code access large volumes of data causing a significant overhead as data is read and written. The "first touch" technique encourages the operating system to place data in a location that is "near" the thread that "touched" it. It is implemented as a simple dummy parallel loop either at the start of the application code or immediately after a memory allocation so that the first access to that data is by a thread that will access that data in the time consuming parallel loops of the application code.

Once this technique was implemented, the Kernel_E code exhibits reasonable speedup and scalability, as shown by the graph on the left on a dual quad-core processor system at PSP.