GTkorvo serves as a repository for software developed by the Korvo group at Georgia Tech. EVPath is the mostly commonly accessed component of the Korvo software stack For a quick build of EVPath and the GTkorvo software components that it depends upon, follow the instructions below.
In an empty directory which will serve as a build directory, do:
wget –q https://gtkorvo.github.io/korvo_bootstrap.pl perl ./korvo_bootstrap.pl perl ./korvo_build.pl
Doing this will build and install EVPath with $HOME as the installation directory. By default, this will build the most current stable release of EVPath, along with FFS (an efficient data marshaling package), ATL (a name/value attribute list library), and DILL (dynamic code generation used by FFS). By default, it also builds one package of external origin, a modified version of ENET (http://enet.bespin.org/index.html, a reliable UDP package written by Lee Salzman). This basic set of packages is sufficient for most casual uses of EVPath.
FFS (Fast Flexible Serialization) relies upon DILL’s dynamic code generation to provide fast translation between wire and native data formats. DILL can generate code for 32- and 64-bit x86 architectures, ia64, PowerPC, Sparc and ARM architectures. FFS can be used on an unsupported processor architecture, but in this case DILL requires the foreign function interface support provided by libffi (https://sourceware.org/libffi/). FFI must be build and installed prior to the korvo_build.pl invocation.
EVPath supports a number of underlying network transports, but does not choose between them automatically. Instead, it provides mechanisms for higher-level tools to choose. However, what choices are available depends upon what software is found by EVPath at build time. The ENET reliable UDP library is one such software package that is simply built by EVPath by default, providing an “enet” network transport for EVPath. Additionally, if EVPath is configured on a machine with an Infiniband Verbs library, it will build a native “ib” transport.
Another possible transport, “nnti”, is built on the NNTI RDMA wrapper library derived Trios in Trilinos https://trilinos.org/packages/trios/). NNTI can only build successfully on hosts with RDMA interfaces, and is largely deprecated, but it is currently one of the few RDMA transports for EVPath on Titan (an ORNL supercomputer). NNTI can be built by editing the “korvo_build_config” file after korvo_bootstrap and removing the comment character (‘%’) in front of the ‘nnti’ entry in the ‘BUILDLIST’ section.
A third possible RDMA transport for EVPath is based upon Libfabric, developed by the OFI Working Group, a subgroup of the OpenFabrics Alliance. If libfabric is built and installed in a visible location prior to building EVPath, the “fabric” transport will be built and installed with EVPath. Libfabric can be downloaded here: https://ofiwg.github.io/libfabric/. Currently the EVPath fabric transport is known to function only over libfabric’s VERBS and SOCKETS providers. As with libffi, libfabric must be built and installed prior to the korvo_build invocation.
IF YOU DON'T WANT EVPATH TO BUILD WITH ANY RDMA TRANSPORTS, edit the build_config (or korvo_build_config) file to add the string "-DEVPATH_NO_RDMA=1" to the cmake arguments.