GPI-2  1.0.0


GPI-2 is the second generation of GPI ( GPI-2 implements the GASPI specification (, an API specification which originates from the ideas and concepts GPI.

GPI-2 is an API for asynchronous communication. It provides a flexible, scalable and fault tolerant interface for parallel applications.



The easiest way to install GPI-2 is by using the script. The default settings install GPI-2 under /opt/GPI2/. This location can be easily modified by passing the location with the -p option to the install script.

For example,

./ -p /prog/GPI2

installs GPI-2 under /prog/GPI2 instead of under the default location.


The current version of GPI-2 has the following requirements.


  • libibverbs (Verbs library from OFED).


  • Infiniband or RoCE devices.

Building GPI-2

You can build GPI2 on your own. There are the following make targets:

  • all - Build everything
  • gpi - Build the GPI-2 library (including debug version)
  • tests - Build provided tests
  • examples - Build provided examples
  • docs - Generate documentation (requires doxygen)
  • clean - Clean-up

GPI-2 applications

GPI-2 provides two libraries: libGPI2.a and libGPI2-dbg.a.

The libGPI2.a aims at high-performance and is to be used in production whereas the libGPI2-dbg.a provides a debug version, with extra parameter checking and debug messages and is to be used to debug and during development.

GPI-2 applications

The gaspi_run utility is used to start and run GPI-2 applications. A machine file with the hostnames of nodes where the application will run, must be provided. For example, to start 1 process per node (on 4 nodes), the machine file looks like:


Similarly, to start 2 processes per node (on 4 nodes):


The gaspi_run utility is invoked as follows:

 gaspi_run -m <machinefile> [OPTIONS] <path GASPI program>

IMPORTANT: The path to the program must be the full path and that same path must exist on all nodes where the program should be started.

The gaspi_run utility has the following further options [OPTIONS]:

   -b <binary file> Use a different binary for first node (master).
                   The master (first entry in the machine file) is
                   started with a different application than the rest
                   of the nodes (workers).
   -N              Enable NUMA for processes on same node. With this
                   option it is only possible to start the same number
                   of processes as NUMA nodes present on the system.
                   The processes running on same node will be set with
                   affinity to the proper NUMA node.
   -n <procs>      Start as many <procs> from machine file.
                   This option is used to start less processes than
                   those listed in the machine file.
   -d              Run with GDB (debugger) on master node. With this
                   option, GDB is started in the master node, to allow
                   debugging the application.
   -h               Show help.

The gaspi_logger

The gaspi_logger utility is used to view the output from all nodes except the master node (rank 0). The gaspi_logger is started, on another session, on the master node. The output of the application, when called with gaspi_printf, will be redirected to the gaspi_logger. Other I/O routines (e.g. printf) will not.

More Information

For more information, check the GPI-2 website: