- Infos im HLRS Wiki sind nicht rechtsverbindlich und ohne Gewähr -
- Information contained in the HLRS Wiki is not legally binding and HLRS is not responsible for any damages that might result from its use -

GPI-2: Difference between revisions

From HLRS Platforms
Jump to navigationJump to search
No edit summary
No edit summary
Line 6: Line 6:
| developer              = Fraunhofer ITWM
| developer              = Fraunhofer ITWM
| available on      = [[Hornet (Cray XC30)]]
| available on      = [[Hornet (Cray XC30)]]
| category          = [[:Category:MPI | MPI]]
| category          = [[:Category:Communication Libraries | Communication Libraries]]
| license            = commercial
| license            = commercial
| website            = [http://www.gpi-site.com/gpi2/  GPI homepage]  
| website            = [http://www.gpi-site.com/gpi2/  GPI homepage]  

Revision as of 07:44, 11 July 2014

GPI-2 (Global address space Programming Interface) is a threadsafe PGAS API for Infiniband,ROCE,ETHERNET,GEMINI and ARIES networks.

GPI-2 aims at high performance, delivering wire-speed from the interconnect. It relies on one-sided and asynchronous communication that allow a perfect overlap between computation and communication. All GPI2 methods provide a timeout functionality for fault tolerant operation. With that in place, GPI-2 offers mechanisms that allow applications to react to failures and continue its execution.

Copy-logo-fraunhofer-itwm.gif
Developer: Fraunhofer ITWM
Platforms: Hornet (Cray XC30)
Category: Communication Libraries
License: commercial
Website: GPI homepage


Using GPI-2 on Cray XC30

Load the necessary module. For example:

module swap PrgEnv-cray PrgEnv-gnu
module load gpi/gpi2

Example

File: hello_gpi2.c
#include <stdio.h>
#include <stdlib.h>
#include <GASPI.h>

int main(int argc,char *argv[]){

gaspi_rank_t rank,tnc;
gaspi_float vers,vers_gni;
char mtype[16];

  if( gaspi_proc_init(GASPI_BLOCK) != GASPI_SUCCESS ){
    gaspi_printf("gaspi_init failed !\n");
    exit(-1);
  }

  gaspi_version(&vers);
  gaspi_version_gni(&vers_gni);
  gaspi_proc_rank(&rank);
  gaspi_proc_num(&tnc);
  gaspi_machine_type(mtype);

  gaspi_printf("rank: %d tnc: %d (gpi2: %.2f ugni: %.2f)\n",rank,tnc,vers,vers_gni);

  if( gaspi_barrier(GASPI_GROUP_ALL,GASPI_BLOCK) != GASPI_SUCCESS ){
    gaspi_printf("gaspi_barrier failed !\n");
    exit(-1);
  }

  gaspi_proc_term(GASPI_BLOCK);
  return 0;
}


Compilation example

cc -O2 hello_gpi2.c -D_GNU_SOURCE -lpmi -lugni -lrca -lGPI2 -o hello_gpi2.bin

Example to run the program in interactive batch job

# 2 nodes, 16 cores (ht is enabled), interactive
qsub -I -l nodes=2:ppn=16
# 4 procs on 2 nodes,socket affinity mask, ht on
aprun -q -n 4 -N 2 -cc numa_node -d 16 -ss -j 2 hello_gpi2.bin

See also

External links