https://github.com/sandialabs/fbmpi
A fallback implementation of MPI, supports one process only but is portable (incl Windows)
https://github.com/sandialabs/fbmpi
c mpi mpi-communications mpi-io mpi-library scr-2756 snl-os-sys-software
Last synced: 8 months ago
JSON representation
A fallback implementation of MPI, supports one process only but is portable (incl Windows)
- Host: GitHub
- URL: https://github.com/sandialabs/fbmpi
- Owner: sandialabs
- License: bsd-2-clause
- Created: 2022-04-04T17:54:38.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2023-05-15T19:51:52.000Z (about 3 years ago)
- Last Synced: 2025-01-11T15:32:41.784Z (over 1 year ago)
- Topics: c, mpi, mpi-communications, mpi-io, mpi-library, scr-2756, snl-os-sys-software
- Language: C
- Homepage:
- Size: 104 KB
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
FBMPI
=====
FallBack MPI (FBMPI) is a partial implementation of the MPI standard that only supports a single rank.
The purpose of FBMPI is to act as a fallback MPI implementation in situations where
a full-fledged MPI implementation is not desired.
One important situation like this is on Windows, where OpenMPI has dropped support and
the alternative (before FBMPI) was to compile Microsoft MPI, which is costly.
By ensuring that there can always be an MPI implementation, FBMPI alleviates the need
for downstream libraries and applications to have "no MPI" build options and associated
preprocessor logic in their own code, including many custom implementations
of single-rank communication functionality.
FBMPI is written in standard C and compiles with modern CMake, ensuring portability across systems.
Downstream packages should use CMake to find their MPI implementation like this:
```cmake
find_package(MPI)
```
To use FBMPI with downstream packages, those packages can be configured using the following
CMake variable definitions:
```
-DMPI_HOME=$INTALL_LOCATION"
-DMPI_C_LIB_NAMES=mpi
-DMPI_CXX_LIB_NAMES=mpi
-DMPI_mpi_LIBRARY=$INSTALL_LOCATION/lib/libfbmpi.a
-DMPI_C_HEADER_DIR=$INSTALL_LOCATION/include
-DMPI_CXX_HEADER_DIR=$INSTALL_LOCATION/include
```
Where `$INSTALL_LOCATION` is the directory where FBMPI was installed.
FBMPI defines the majority of MPI functions used in popular software
such as [HDF5](https://www.hdfgroup.org/solutions/hdf5/), although many functions are not implemented yet.
Sufficient functionality exists to run many applications successfully
including point-to-point communication and reductions.
FBMPI supports the `PMPI` profiling interface and works with profiling
tools such as [Caliper](https://software.llnl.gov/Caliper/).
FBMPI also supports CUDA-aware MPI through its CMake option:
```
-Dfbmpi_ENABLE_CUDA=ON
```
At Sandia, FBMPI is SCR# 2756