- 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:Communication | | 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:56, 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. |
|
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