【问题标题】:Infiniband addressing - host names to IB address without IBoIPInfiniband 寻址 - 没有 IBoIP 的 IB 地址的主机名
【发布时间】:2012-11-25 01:20:01
【问题描述】:

我刚刚开始熟悉 infiniband,我想了解可用于处理 infiniband 节点的方法。

基于代码的示例来自:RDMA read and write with IB verbs 我可以使用 IPoIB 按 IP 或主机名寻址单个节点。

另一种方法是直接使用端口 GUID 地址。但看起来你必须查找这些,并且更类似于以太网 MAC 寻址。

然后是称为 LID 地址的东西,由结构管理器分配的 16 位本地地址。如何在运行时使用和确定 LID 地址?例如,我运行 ibaddr 并获取 GID fe80::1a:4bff:ff0c:34e5 LID start 0x6 end 0x6

基本上,如果您不使用 IPoIB,如何将主机名转换为地址或类似名称?是否有主机文件或类似文件?

【问题讨论】:

    标签: c++ linux infiniband


    【解决方案1】:

    您列出的各种寻址方法之间存在基本区别:

    1. 用纯 IB 动词寻址
    2. 使用某种抽象级别进行寻址

    当一个数据包被“注入”到 IB 结构中时,它仅由 LID 路由,这是数据包的本地路由标头的一部分。 LID 是 Local ID,16 位,由 OpenSM 分配(还有 GID 和 Global Routing Header 的情况,但让我们把这个情况放在一边——它不会使解释变得更容易,你显然不需要这个点)。

    这意味着,如果您使用纯 IB 动词编写应用程序,则需要通过 LID 寻址端点。 您可以使用 ibv_query_port() 获取本地端口的 LID - 它是端口属性字段的一部分。

    但您不必自己完成所有繁琐的工作 - 您可以使用 librdmacm(RDMA 连接管理器)等抽象库来创建端点之间的连接(“端点”是指 RC QP),然后使用用于实际发送/接收数据的纯动词。

    基本上,如果您不使用 IPoIB,如何将主机名转换为 地址或类似的?是否有主机文件或类似文件?

    你不能,也没有:( 如果您浏览链接到的那个博客上的earlier post,您会发现您需要:

    • 确定队列对的地址。
    • 将地址传送给另一个节点(通过一些带外机制)。

    这里的关键是“带外”。 例如,MPI 通过 SSH 交换所有这些地址(顺便说一句,它也可以在 IPoIB 之上运行),一旦交换了这些信息并连接了所有 QP,数据就会开始通过这些 RC QP 流动。

    【讨论】:

    • 感谢您的信息。似乎运行 IPoIB 是可行的方法。
    • 甚至像qperf 这样的工具似乎也使用一些带外机制来交换此类信息
    猜你喜欢
    • 1970-01-01
    • 2022-10-04
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 2017-12-04
    • 2018-12-04
    • 2021-10-02
    相关资源
    最近更新 更多