The MTCL library aims to provide a common (and simple enough) interface for several back-end communication libraries. Currently we support TCP/IP, MPI, MPIP2P (i.e., dynamic MPI), UCX, MQTT. The Shared Memory (SHM) support is still experimental.
-
** MPI ** (OPTIONAL) :
OpenMPI is required for using the MPI library as transport protocol. By default, it is disabled. It can be enabled by defining the environmental variable TPROTOCOL=MPI and by properly setting MPI_HOME to point to the OpenMPI install dir.
-
** MQTT ** (OPTIONAL) :
For using the MQTT protocol as transport layer, Paho MQTT Cpp and a MQTT broker/server are needed. By default, MQTT is disabled. It can be enabled by defining the environmental variable
TPROTOCOL=MQTT
and by properly settingMQTT_HOME
to point to the Paho MQTT Cpp install dir. As MQTT broker/server Mosquitto is one of the options. Under Linux Ubuntu it can be installed using 'sudo apt install mosquitto'.--- How to compile and install Paho MQTT Cpp ----
Download Paho MQTT C from github: https://github.com/eclipse/paho.mqtt.c
export MQTT_HOME=<where-you-want-to-install-paho> cd paho.mqtt.c prefix=${MQTT_HOME} make install
Download Paho MQTT Cpp from github: https://github.com/eclipse/paho.mqtt.cpp
cd paho.mqtt.cpp cmake -Bbuild -H. -DCMAKE_INSTALL_PREFIX=${MQTT_HOME} \ -DCMAKE_PREFIX_PATH=${MQTT_HOME} cd build make install
-
** UCX ** (OPTIONAL) :
Download UCX from github: https://github.com/openucx/ucx
--- How to compile and install UCX ---
$ export UCX_HOME=<ucx-install-path> $ ./autogen.sh $ ./contrib/configure-release --prefix=${UCX_HOME} --enable-mt $ make -j8 $ make install
-
** UCC ** (OPTIONAL, requires UCX):
Download UCC from github: https://github.com/openucx/ucc
--- How to compile and install UCC ---
$ export UCC_HOME=<ucc-install-path> $ ./autogen.sh $ ./configure --prefix=${UCC_HOME} --with-ucx=<ucx-install-path> [--with-rocm=no --with-ibverbs=no --with-cuda=no] $ make
-
** RapidJSON **
We use RapidJSON to parse configuration files. If you do not want to use the config file you don't need to install it.