拥有支持InfiniBand的Windows Azure A8节点,如何在其中一个节点发送N字节并在另一个节点上接收?

34
我喜欢InfiniBand承诺的40Gbit/s网络。我的需求不适用于具有一个核心节点+从节点的MPI模型,如果可能的话,我宁愿根本不使用MPI。我需要简单的connect/send/receive/close(或其异步版本)API。然而,阅读MS Azure文档或Microsoft HPC Pack文档,我找不到任何C/C++或.Net的API,可以允许我将InfiniBand用作应用程序的传输。所以我的问题很简单,如何使用InfiniBand连接到其他节点并向它们发送数据包,并在另一端接收? (类似于某些Socket API或类似的东西)
Azure上的ND-SPI或DAPL-ND教程是我正在寻找的。

这个回答是否解决了你的问题:https://dev59.com/JHHYa4cB1Zd3GeqPQM8H#16434782? - kliteyn
@kliteyn:我希望有更多的WinOF uDAPL方法(对于Windows Server 12来说,这是一种更现代的方法),就像这里演示的一样here,但需要在Windows上进行测试。不过我会查看cyber.sibsutis.ru,谢谢!=) - DuckQueen
@kliteyn:看起来他们的FTP服务器和HTTP镜像无法流式传输项目文件=(有Git镜像吗? - DuckQueen
而且,不能简单地安装MS HPC API(即使在Azure上的WS2012R2上用于HPC,预安装的也不提供任何样例=()。 - DuckQueen
5
这就是MPI被开发的原因,它可以隐藏编程各种底层网络设备的复杂细节,并提供一个清晰简单的API。无论如何,你是否真的需要InfiniBand非常低的延迟和最高带宽?如果不需要,那么你可能可以选择IP-over-InfiniBand(IPoIB)。通过多个流,它通常可以以较高的延迟为代价实现低级协议可能实现的80%以上带宽。 - Hristo Iliev
2个回答

1
我同意Hristo的评论,使用MPI提供的更高级别的API比使用“本地”的IB库要容易得多。
而且需要澄清的是,MPI并不强制使用Master-Slave模式。一旦所有进程都启动并具有通信器,您就拥有了世界上所有的灵活性。任何人都可以向任何人发送数据。而且通过MPI 2.0,您可以进行单边通信,其中一个工作进程实际上可以访问另一个工作进程的内存。

0
...我找不到任何适用于C/C++或.Net的API,可以允许我使用InfiniBand作为我的应用程序的传输。所以我的问题很简单,如何使用InfiniBand连接到其他节点并向它们发送数据包,并在另一端接收?
直接访问InfiniBand的C API称为“verbs”。
在众多介绍此主题的在线资源中,我发现http://blog.zhaw.ch/icclab/infiniband-an-introduction-simple-ib-verbs-program-with-rdma-write/相对易于理解。
InfiniBand软件的最终权威是OpenFabrics。 OFED网站链接文档和下载。

我注意到在“Windows下的OFS”中有一个链接网络直接内核提供程序接口(NDKPI)概述,这可能符合您的需求,但我从未使用过它,因为我不使用Windows。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接