infiniband - 启用 RDMA 的 NIC 会进行字节序转换吗?
问题描述
是否可以让 RDMA 适配器(例如 Mellanox NIC)在数据传输期间进行字节序转换?具体来说,我们正在执行从大端到小端系统的 RDMA 传输,反之亦然。一旦数据到达目标,我们就需要执行 bswap32() 或 bswap64() 来进行字节序转换,这将占用处理器周期。我想知道我们是否可以从 NIC 获得免费的 bswap。
解决方案
交换字节顺序不是 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 上的“实验动词”获得 - 请继续关注即将到来的更新。
推荐阅读
- javascript - 访问“最终”模式并提取它的规则
- list - 鉴于字符串列表表示 Scala 中映射的键,如何将 List[String] 转换为 List[Map[String,String]]?
- node.js - 如何在 nodejs 中查看通过 axios 发送的地址?
- c# - C# .net tfs 工作区操作
- amazon-web-services - 从 EC2 读取 EKS 集群的权限
- entity-framework - 在 Entity Framework Core 3.1.8 中删除全局过滤器
- c# - 将 API 方法从 .NET WebForms 转换为 .NET Web API 时出现“无法创建抽象类”错误
- python - 带有 pathlib 路径过滤的熊猫数据框
- ios - 从提供 SIGBART 的服务器加载数据
- javascript - php上的警报Javascript未显示