Clang UPC Libfabric Runtime
Libfabric is a high-performance fabric software library designed to provide low-latency interfaces to fabric hardware.
Clang UPC Libfabric Runtime is an implementation of Clang UPC that uses Libfabric API for message passing between UPC threads running on separate nodes in a system area network.
Getting Clang UPC with Libfabric prerequisites
Beside the regular Clang UPC prerequisites, the following is also required in order to build libfabric support:
Working libfabric implementation
SLURM job manager
Add the location of the Libfabric library to the LD_LIBRARY_PATH environment variable. For example,
LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/libfabric/lib" export LD_LIBRARY_PATH
Getting Clang UPC with Libfabric runtime support
Libfabric development is currently on the branch libfabric. Follow the this steps to build Clang UPC with the libfabric support:
Follow the instructions on getting the Clang UPC sources.
Checkout the libfabric branch of clang-upc
cd llvm/tools/clang; git checkout libfabric
- Follow the instructions on configuring the Clang UPC.
The following configuration options were added for Libfabric:
Chose libfabric for the runtime support.
Select directory where libfabric is installed.
Select networking device to use. Default is ‘ib0’.
Select fabric provider to use. Default is ‘sockets’.
Enable fabric check for shared endpoints. Default is disabled.
Specify directory where PMI include file is. Default is ‘/usr/include/slurm’.
Alignment for local/target buffers. Default is 4.
11/13/2015 First RMA test passes on Cray GNI
07/01/2015 Added all remaining UPC functionality
01/01/2015 Added support for upc_global_exit()
12/26/2014 Added UPC barrier (no trigger funcs)
12/26/2014 Added broadcast capabilities
12/24/2014 Added UPC locks
10/28/2014 Upgrade to the latest libfabric API
10/17/2014 Added support for remote put/get
9/01/2014 Add libfabric configuration