Unverified Commit c40be81b authored by Tommaso Tocci's avatar Tommaso Tocci
Browse files

use mercury automatic SM routing

Mercury now support shared memory autorouting.

A single margo instance can be initialized and it will handle both
shared memory communication and remote ones.

If the endpoint of the RPC is local mercury will automatically use
shared memory.

Since there is only one margo instance all the duplicated code for
rpc/ipc have been unified and simplified considerably.

------

The way in which client contact the server has changed.

 - Server initializes its own margo instance and generate the endpoint
communication string using `HG_Addr_self`.
 - This endpoint description string is written on the pid file
 - When the client library loads it will fetch the server endpoint
description from the pid file and will use that to contact the server.
parent d6c76b2d
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -29,8 +29,8 @@ compile dependencies:
   # If the download and compile script have been modified the cache gets invalidated and dependencies will be built again.
   - ( [ -f "${DEPS_COMMIT}" ] && git diff --quiet "`cat ${DEPS_COMMIT}`" -- ifs/scripts/dl_dep.sh ifs/scripts/compile_dep.sh ) || (
           rm -f ${DEPS_COMMIT} &&
           ifs/scripts/dl_dep.sh ${DEPS_SRC_PATH} -n bmi &&
           ifs/scripts/compile_dep.sh -n bmi ${DEPS_SRC_PATH} ${DEPS_INSTALL_PATH} &&
           ifs/scripts/dl_dep.sh ${DEPS_SRC_PATH} -n ofi &&
           ifs/scripts/compile_dep.sh -n ofi ${DEPS_SRC_PATH} ${DEPS_INSTALL_PATH} &&
           echo "${CI_COMMIT_SHA}" > "${DEPS_COMMIT}"
     )
  artifacts:
+2 −0
Original line number Diff line number Diff line
@@ -39,6 +39,7 @@ RUN yum -y -q update && yum -y -q install \
	# ada-fs requires C++ 14
	devtoolset-7-gcc \
	devtoolset-7-gcc-c++ \
	libuuid-devel \
&& yum -y -q clean all

# Enable gcc/g++ 7.x
@@ -92,6 +93,7 @@ RUN yum -y -q update && yum -y -q install \
	# ada-fs requires C++ 14
	devtoolset-7-gcc \
	devtoolset-7-gcc-c++ \
	libuuid-devel \
&& yum -y -q clean all


+2 −1
Original line number Diff line number Diff line
@@ -52,9 +52,10 @@ find_package(Boost 1.53 REQUIRED

find_package(Threads REQUIRED)

set(RPC_PROTOCOL "bmi+tcp" CACHE STRING "Communication plugin used for RPCs")
set(RPC_PROTOCOL "ofi+tcp" CACHE STRING "Communication plugin used for RPCs")
set_property(CACHE RPC_PROTOCOL PROPERTY STRINGS
   "bmi+tcp"
   "ofi+tcp"
   "ofi+verbs"
   "ofi+psm2"
   "cci+verbs"
+2 −1
Original line number Diff line number Diff line
@@ -104,10 +104,11 @@ optional arguments:

## Compile ADA-FS
You need to decide what Mercury NA plugin you want to use. The following NA plugins are available, although only BMI is considered stable at the moment.
 - `bmi+tcp` for using the bmi plugin with the tcp protocol 
 - `ofi+tcp` for using the libfabric plugin with TCP
 - `ofi+verbs` for using the libfabric plugin with Infiniband verbs (not threadsafe. Do not use.)
 - `ofi+psm2` for using the libfabric plugin with Intel Omni-Path
 - `cci+verbs` for using the cci plugin with Infiniband verbs
 - `bmi+tcp` for using the bmi plugin with the tcp protocol 

In addition you can add a specific directory where all dependencies are located, i.e., headers and libraries. This can
be done by using `-DADAFS_DEPS_INSTALL=<path>`. If the variable is not set this path points to `/usr/local`.
+0 −3
Original line number Diff line number Diff line
@@ -27,7 +27,6 @@ bool init_environment();
void destroy_enviroment();

bool init_io_tasklet_pool();
bool init_ipc_server();
bool init_rpc_server();

void register_server_rpcs(margo_instance_id mid);
@@ -36,6 +35,4 @@ bool register_daemon_proc();

bool deregister_daemon_proc();

std::string get_my_hostname(bool short_hostname);

#endif //IFS_ADAFS_DAEMON_HPP
Loading