GaspiCxx – Global Adress Space Progamming Interface for C++

The Productive Approach to efficient Parallel Programming

The demand for supercomputers is growing in almost all industries. Therefore we, at Fraunhofer ITWM, rely on asynchronous programming models - i. e. scalable parallel programming in which a program works efficiently on a system with many processors or cores and benefits from the additional computing power. Our tool GaspiCxx also belongs to this category and supports programs in splitting tasks and executing them simultaneously on several parts of a computer in order to work faster and more efficiently.

GaspiCxx for More Productivity

GaspiCxx is a programming interface for the C++ programming language, developed for the GPI-2 communication library. It has been developed to achieve the following goals:

  • Scalability
  • Performance
  • Productivity

Accordingly it enables abstract use of the originally C-based communication interface without compromising performance.

The dynamic management of memory and synchronization mechanisms for segments follows the concept of the allocator. This allows single-sided and passive communications to be built on top of it. Allocations in the global address space and the synchronization mechanisms are simply connected on the source and target side to communicate efficiently with each other.

In addition GaspiCxx provides the Python extension PyGPI, which provides single-sided point-to-point as well as collective communication primitives as an easy-to-use, intuitive Python library.

Our software tool GaspiCxx significantly reduces the effort of developing your communication infrastructure if the application is based on GPI-2.

Advantages of GaspiCxx:

■ High productivity

■ Full performance capability

■ Simple operation

■ Transparent management of GPI-2 communication resources

■ Exclusive use of resources

Technical Data

The design of the interface makes the explicit management of communication resources normally required by the native C interface completely transparent to the application. Instead GaspiCxx implements the following automatically managed resources:

  • Groups
  • Segments
  • Queues
  • Single-sided Point-to-Point communication primitives
    • SourceBuffer/ TargetBuffers
  • Non-blocking collective primitives
    • Allreduce
    • Allgatherv
    • Broadcast
  • Blocking collectives
    • Barrier

Contact us and try out GaspiCxx!

CFD solver FLUCS: parallel efficiency
© Fraunhofer ITWM
CFD solver FLUCS: parallel efficiency