[ Ссылка ]
---
The emergence in the market of multi-core processors is radically changing the architecture of massively parallel computers. High-Performance Computing platforms with many thousands of cores are being deployed. In this context, using a hybrid MPI+OpenMP approach is regarded as a suitable programming model for such architecture. But, if some work exhibit performance improvement, some does not. Factors affecting a hybrid MPI and OpenMP application's performance are numerous, complex and interrelated:
MPI communications efficiency: applications related problems such as MPI routine types (point to point, collective), message size and network related problems such as network connection and bandwidth.
OpenMP parallelization efficiency: using critical section primitives, OpenMP threads management overhead and false sharing can reduce the performances.
MPI and OpenMP interaction: problems of load balancing and idle thread inside the MPI communication part reduce the parallel efficiency.
Writing both code may require higher level of expertise than for regular HPC applications.
Therefore, the efficient use of these new systems is an important challenge, and the scientists and engineers responsible for these applications, in general, are seldom experts in HPC, and usually do not want either to introduce new changes in their codes or to learn new programming paradigms. They need solutions in terms of effective automatic parallelization tools and libraries.
In this presentation, we will try to solve these problem on two different yet interrelated level.
First, we'll quickly introduce the Bulk Synchronous Parallelism paradigm and show when and why it can be seen as a suitable programming model for hybrid systems.
Then, we'll present BSP++, a Boost enabled C++ library allowing quick and easy design of parallel applications based on the BSP model. We'll describe BSP++ API, its interaction with commonly used Boost libraries including lambda, phoenix or MPI, some implementation details and present some examples.
Finally, we'll present BSPGen which is a parallel programming framework built on top of BSP++, Boost.Spirit and the Clang/LLVM suit. BSPGen is able to take a small applications descriptions written in XML, a set of sequential C or C++ functions and generate a complete hybrid parallel application based on the a priori evaluation of the application runtime cost and a small exploration of a configuration space to find the near-optimal balance between OpenMP and MPI sections. Implementations details and examples will be provided.
---
Optimized And Managed by Digital Medium Ltd - events.digital-medium.co.uk
events@digital-medium.co.uk
---
*--*
---
![](https://s2.save4k.ru/pic/qz_gryyAe0k/mqdefault.jpg)