I'm designing an application involving multi-node communications using Infiniband (ibv_*). What is the standard way to keep connections between nodes? I'm thinking of O(N^2) connections for all pairs of node as the easiest one, but it's kind of silly and not scalable.
1 に答える
2
質問はちょっとシンプルで短いですが、本当の答えは非常に長いです...
まず第一に、本当に ibv_... を使う必要があるかどうかを確認してください。
Infiniband または ROCE を使用していますか?
次に、アプリケーションの予想される通信パターンを分析します。
スケーラビリティについて話しているのは、おそらく超並列アプリケーションを念頭に置いていることを意味します。独自の通信層を発明する必要が本当にあるのでしょうか? 既存のソリューションを使用できませんか? この種の問題を扱う CS 分野全体があります。それが HPC (ハイ パフォーマンス コンピューティング) です。おそらくMPI / UPC /その他のライブラリが問題を解決しますか?
大量のマシンで独自の ibv_... アプリケーションを作成する必要がある場合は、次のことを考慮する必要があります。
- RC または UD 接続が必要ですか?
- 最新の Mellanox HCA (Connect-IB) をお持ちの場合は、DC のオプションもあります。
- スケーラビリティの要件は何ですか?
- アプリケーションはレイテンシー/帯域幅に対してどの程度敏感ですか?
要約する:
- 大規模な並列 IB 動詞アプリケーションが必要で、RC が必要な場合は、RC 接続をオンデマンドで開いたほうがよいでしょう。
- すべての RC 接続を事前に開いておく必要がある場合は、他に方法はありません - O(n^2) 接続のケースは避けられません
- ニーズに合う場合は、UD の使用を検討してください
- 既存のソリューションが必要なものではないことを確認してください
于 2014-08-25T09:16:19.060 に答える