Infiniband
The infiniband node-type implements node communication over the Infiniband standard.
Prerequisites
This node-type requires libibverbs (>= 16.2) and librdmacm (>= 16.2).
Implementation
The source code of the node-type is available here: https://github.com/VILLASframework/node/blob/master/lib/nodes/infiniband.cpp
Configuration
Every infiniband node can be configured to only read or write or to do both at the same time. The node configuration is divided into two sub-groups: in and out.
| rdma_port_space | string Default: "RC" Enum: "RC" "UC" "UD" This specifies the type of connection the node will set up.
More information on these two modes can be found on the manual page for |
object (Input configuration (received by VILLASnode)) | |
object (Output configuration (sent out by VILLASnode)) | |
| vectorize | integer Default: 1 This setting allows to send multiple samples in a single message to the destination nodes. The value of this setting determines how many samples will be combined into one packet. |
Array of Hook Object (object) or Hook Name (string) (hook_list) | |
| builtin | boolean (Builtin hook functions) Default: true By default, each node and paths has a couple of default hooks attached to them. With this setting the attachment of built-in hooks can be disabled. |
{- "rdma_port_space": "RC",
- "in": {
- "address": "string",
- "max_wrs": 128,
- "cq_size": 128,
- "buffer_subtraction": 16,
- "signals": [
- {
- "name": "tap_position",
- "type": "integer",
- "init": 0
}, - {
- "name": "voltage",
- "type": "float",
- "unit": "V",
- "init": 230
}
], - "vectorize": 1,
- "hooks": [
- "print",
- {
- "type": "limit_rate",
- "rate": 1000
}
]
}, - "out": {
- "address": "string",
- "timeout": 1000,
- "max_wrs": 128,
- "cq_size": 128,
- "send_inline": true,
- "max_inline_data": 0,
- "use_fallback": true,
- "periodic_signaling": "<out.max_wrs / 2>",
- "vectorize": 0,
- "hooks": [
- "print",
- {
- "type": "limit_rate",
- "rate": 1000
}
]
}, - "vectorize": 1,
- "hooks": [
- "print",
- {
- "type": "limit_rate",
- "rate": 1000
}
], - "builtin": true
}Example
nodes = {
results = {
type = "file"
uri = "logs/ib_results-%Y%m%d_%H-%M-%S.log"
}
siggen = {
type = "signal"
signal = "mixed"
values = 3
frequency = 3.0
rate = 100000.0
limit = 100000
}
ib_node_source = {
type = "infiniband"
rdma_port_space = "RC"
in = {
address = "10.0.0.2:1337"
max_wrs = 8192
cq_size = 8192
vectorize = 1
buffer_subtraction = 128
}
out = {
address = "10.0.0.1:1337"
resolution_timeout = 1000
max_wrs = 8192
cq_size = 256
vectorize = 1
send_inline = true
max_inline_data = 60
use_fallback = true
}
}
ib_node_target = {
type = "infiniband"
rdma_port_space = "RC"
in = {
address = "10.0.0.1:1337"
max_wrs = 8192
cq_size = 8192
vectorize = 1
buffer_subtraction = 128
hooks = (
{ type = "stats", verbose = true }
)
}
}
}