Infiniband寻址 - 没有IBoIP的IB地址的主机名

Mat*_*att 6 c++ linux infiniband

我刚刚开始熟悉infiniband,我想了解可用于解决infiniband节点的方法.

基于代码的例子来自:RDMA使用IB谓词进行读写 我可以使用IPoIB通过IP或主机名来寻址各个节点.

另一种方法是直接使用端口GUID地址.但看起来你必须要查看它们,并且更类似于以太网mac寻址.

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

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

kli*_*eyn 8

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

  1. 解决纯IB动词
  2. 用一定程度的抽象来解决

当数据包"注入"IB结构时,它仅由LID路由,这是数据包的本地路由头的一部分.LID是本地ID,16位,由OpenSM分配(也有GID和全局路由标题的情况,但让我们把这个案例放在一边 - 它不会使解释更容易,你显然不需要这个点).

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

但是您不必自己完成所有脏工作 - 您可以使用抽象库(如librdmacm(RDMA Connection Manager))在端点之间创建连接(以及"端点",我指的是RC Q​​P),然后使用纯动词来实现实际上发送/接收您的数据.

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

你不能,也没有:(如果你浏览了你链接到的博客上的早期帖子,你会发现你需要:

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

这里的关键项目是"带外".例如,MPI通过SSH(BTW,也可以在IPoIB之上运行)交换所有这些地址,并且一旦交换此信息并且所有QP连接,数据就开始通过这些RC QP流动.