是否可以让 RDMA 适配器(例如 Mellanox NIC)在数据传输期间进行字节序转换?具体来说,我们正在执行从大端到小端系统的 RDMA 传输,反之亦然。一旦数据到达目标,我们就需要执行 bswap32() 或 bswap64() 来进行字节序转换,这将占用处理器周期。我想知道我们是否可以从 NIC 获得免费的 bswap。
1 回答
2
交换字节顺序不是 InfiniBand 规范中定义的操作/属性。但是,Mellanox 设备(ConnectX-4 及更高版本)确实提供了后备向量计算原语,并将字节顺序交换作为支持的操作之一。这实质上意味着人们可以在发送数据之前或接收数据之后对数据执行这种后备硬件交换。
这种向量计算能力在接触更高级别的 API 方面仍处于早期阶段。您将能够在这些 Linux 内核提交中找到一些参考资料:
- https://patchwork.kernel.org/patch/8365791/([rdma-next,3/8 ] net/mlx5_core:介绍卸载算术硬件能力)
- https://patchwork.kernel.org/patch/8388951/([rdma-next,V1,7/8 ] IB/core:宣传支持的向量 CALC 功能)
部分支持也可通过 Mellanox OFED 上的“实验动词”获得 - 请继续关注即将到来的更新。
于 2018-10-18T20:46:59.343 回答