1

我正在设计一个涉及使用 Infiniband (ibv_*) 的多节点通信的应用程序。保持节点之间连接的标准方法是什么?我认为所有节点对的 O(N^2) 连接是最简单的连接,但它有点愚蠢且不可扩展。

4

1 回答 1

2

这个问题有点简单和简短,但真正的答案很长......

首先,请确保您确实需要使用 ibv_... 东西。

您使用的是 Infiniband 还是 ROCE?

接下来,分析您的应用程序的预期通信模式。

您在谈论可伸缩性,这可能意味着您有一个大规模并行应用程序。你真的需要发明自己的通信层吗?你不能使用现有的解决方案吗?有一个完整的 CS 领域来处理这类问题——HPC(高性能计算)。也许MPI / UPC / 其他一些库会解决你的问题?

如果您仍然需要使用大量机器编写自己的 ibv_... 应用程序,那么您需要考虑:

  • 您需要 RC 或 UD 连接吗?
  • 如果您有最新的 Mellanox HCA (Connect-IB),那么还有 DC 选项
  • 可扩展性要求是什么?
  • 应用程序对延迟/BW 有多敏感?

总结一下:

  • 如果你需要一个大规模并行的 IB 动词应用程序,并且你需要 RC,你最好按需打开 RC 连接
  • 如果您必须提前打开所有 RC 连接,那么没有其他办法 - O(n^2) 连接情况不可避免
  • 如果它符合您的需求,请考虑使用 UD
  • 检查现有解决方案是否不是您需要的
于 2014-08-25T09:16:19.060 回答