#define S_DOCUMENTATION #define S_DOCUMENTATION_DEVELOPER #define PAGE Documentation #define SUBPAGE Developer #define TITLE InfiniBand #include "header.shtml"
Author: eilemann@gmail.com
State: Implemented in 0.3
InfiniBand (IB) is supported using the SDP layer. This layer is transparent to socket-based applications, such as the Equalizer network layer. This document describes the setup to use IB hardware with Equalizer applications.
The usage of InfiniBand requires a Mellanox card, since Mellanox is the only vendor providing a SDP implementation. Often cards from other vendors are Mellanox cards with a different firmware and can be 'converted' by flashing a Mellanox firmware. The Mellanox Windows SDP implementation is described in great detail in the Architecture and Implementation of Sockets Direct Protocol in Windows paper.
The Mellanox Win32 implementation allows currently no mixing between SDP sockets and TCP/IP sockets. That means that all machines have to be connected using InfiniBand, and need to have the full installation as decribed below. Furthermore, only SDP IP addresses are to be used for all connections.
The following steps are necessary to use SDP on Windows:
net start sdp.SdpApplications. For eqPly it has to be
set to eqServer.exe;eqPly.exe.netPerf. Set
SdpApplications to netPerf.exe, run one server (netPerf.exe -s
IB_ADDR) on one machine a client (netPerf.exe -c
SERVER_IB_ADDR) on another machine. On SDR IB hardware, the
performance is around 700-800 MB/s using SDP, as compared to 100-200 MB/s
using IPoIB.eqServer.exe config.eqc --eq-listen 10.1.1.x.eqPly.exe -- --eq-server 10.1.1.x --eq-listen
10.1.1.x.definesWin32.h
by EQ_USE_COMPRESSION.Mellanox is working on providing a patch to allow applications to explicitly specify the socket type, which allows mixing of TCP and SDP sockets. If you have access to this patch, you can use TCP and SDP concurrently. Revisions 1001 to 1010 implement support for multiple node connections, which means that if a node (or the server) has multiple connections specified in the configuration file, they now listen to all of them, allowing to use mixed connection types. When a node connects to another node, the connections are tried in the order they are specified. Therefore connections should be configured in the fastest-to-slowest order.
Transparent SDP support, as described above, still works the same way. Explicit SDP support is used by not setting the variable SdpApplications, and explicitly configure SDP socket connections:
--eq-listen
parameter. The server will create one default connection (SDP), unless
connections are specified explicetely in the configuration file.eqPly.exe -- --eq-server 10.1.1.x:SDP
--eq-listen 10.1.1.x:SDP. Note the :SDP qualifier, which is
needed for the client to use SDP (it is unaware of the configuration file
during startup!).The current (1.3.0) Mellanox Windows SDP implementation only supports a subset of the Windows socket interface. Most notably, the eq::net socket connection was rewritten to use overlapped (asynchronous) IO with svn revision 951. TCP/IP connections also exhibit a performance increase due to the use of overlapped IO.
The --eq-listen parsing was extended to support a simplified
connection description in the form hostname(:port)(:type). Port
is an unsigned short value, type is either SDP
or TCPIP.
The interpretation of the node configuration has changed. When multiple connections are described, they are all set up as a listening connection during Node::initLocal(). Therefore, nodes can now listen on multiple sockets for incoming connections.
The connection setup code between two nodes has been improved.
The config file now accepts connection descriptions for the server section.
Related SVN changes: 951 952 953 1001 1002 1006 1007 1009 1010
When using SDP, the client process hangs upon exit. We are investigating this issue. Defining EQ_WIN32_SDP_JOIN_WAR in definesWin32.h enables a workaround.
The Linux usage of SDP is very similar to the Windows usage described above. For the implicit, transparent mode just LD_PRELOAD the SDP library (typically libsdp.so) instead of setting SdpApplications. For explicit support, follow the same configuration as for Windows.
#include "footer.shtml"