Sandia-OpenSHMEM / SOS

Sandia OpenSHMEM is an implementation of the OpenSHMEM specification over multiple Networking APIs, including Portals 4, the Open Fabric Interface (OFI), and UCX. Please click on the Wiki tab for help with building and using SOS.
Other
63 stars 53 forks source link
hpc middleware openshmem parallel-computing pgas

SOS logo Sandia OpenSHMEM SOS logo

SOS release version Build Status Coverity Scan Build Status

About

Sandia OpenSHMEM is an implementation of the OpenSHMEM specification over Portals 4.0, the Open Fabrics Interface (OFI), and XPMEM.

Please refer to the tests-sos repository to download only the unit tests and the performance test suite that are included with Sandia OpenSHMEM.

This README file is formatted with Markdown. The human-readable README file is located here.

The following sections briefly describe how to build Sandia OpenSHMEM and the available configuration parameters and runtime environment variables. More detailed information can be found in the SOS Wiki pages.

Building

The Sandia OpenSHMEM implementation utilizes the GNU Autoconf/Automake/Libtool tools to generate a configure script. If the configure file is not present (e.g. after downloading the repository for the first time), generate it by running:

  $ ./autogen.sh

Once the configure file exists, run:

  $ ./configure <options>
  $ make
  $ make check
  $ make install

The make check step is not strictly necessary, but is a good idea. Make check utilizes the TEST_RUNNER and NPROCS make variables, which can be used to override defaults, e.g. make check NPROCS=4 or make check TEST_RUNNER="mpiexec -n 2 -ppn 1 -hosts compute1,compute2".

Sandia OpenSHMEM must be configured to use either the Portals 4 or OFI network transport, but not both. It can optionally be configured to use XPMEM or CMA to optimize communication between PEs within the same shared memory domain.

Customizing the build

Please refer to the full README file located here to see the available configure options, runtime environment variables, OFI transport options, and debugging options.