OpenSHMEM is a standardized interface to enable portable applications for partitioned global address space (PGAS) architectures. This repository includes the BDT OpenSHMEM implementation for optimized one-sided communication, atomic, and collective operations for multicore and manycore processors (see ./src) and test codes (see ./test).
The OpenSHMEM implementation is based on the OpenSHMEM 1.4 Specification
This software was developed by the US Army Research Laboratory, Computational Sciences Division, Computing Architectures Branch, and Brown Deer Technology.
This version of the software was developed by Brown Deer Technology and released under the open-source 2-Clause BSD License.
Presently, a POSIX-compliant development environment is needed, including GCC, GNU Make, M4, Bash (Unix shell), and Perl tools. No external support libraries are required (i.e. no network interfaces) as the target platforms are multi-core processors.
From the top level directory, type
make to build, or
make check to build
In ./test, executing
make run will execute most test codes with a
default number of PEs and
make check will run all of the test codes with
various parameters while checking for correctness. There is no installation,
but you should link to the libshmem.a static library and use the appropriate
include path for shmem.h found within ./src or subdirectories.
This software was originally developed for the Adapteva Epiphany Coprocessor and described in the following paper:
J. Ross and D. Richie, "An OpenSHMEM Implementation for the Adapteva Epiphany Coprocessor," OpenSHMEM and Related Technologies. Enhancing OpenSHMEM for Hybrid Environments, vol. 10007, pp. 146-159, Dec. 2016, doi:10.1007/978-3-319-50995-2_10