libgetput
libgetput
library¶
libgetput
helps the user to write PGAS SPMD programs by offering different types of communication routines such as one-sided PUT/GET, remote atomics, barriers, and collectives. The library has two backends (UPC and OpenSHMEM) and the user can chose a backend when building bale.
Many of libgetput
routines are influenced by UPC. For example, THREADS
refers to the number of PEs (= shmem_n_pes()
) and MYTHREAD
refers to the current PE number (= shmem_my_pe()
). Also, lgp_all_alloc(N, sizeof(T))
distributes N elements across all the PEs in a cyclic way, which is the same as upc_all_alloc(N, sizeof(T))
. This would require SHMEM programmers to carefully use the routine because shmem_malloc(N*sizeof(T))
allocates N elements per PE. A list of libgetput
routines can be found here.
Further Readings¶
- README.md for libgetput https://github.com/jdevinney/bale/blob/master/src/bale_classic/libgetput/README.md