我怎样才能复制的内存块从一个服务器到另一个使用RDMA windows下? 我们没有InfiniBand的,但我们确实有10GB的网络交换机。 所有我需要的是一个例子,但是我并没有与谷歌多少运气。
编辑:
那么没有人迄今已回答我的问题。 我只是需要的一些功能链接到一个例子,或名称。 我已阅读一切到目前为止似乎是在驾驶者SDK或插座。 我想使用RDMA在我们的软件从主服务器更新数据的本地副本。 该数据高达10GB的大小。 大部分时间更新大约1GB,但是如果服务器没有重新启动,整个压缩数据集为10GB。 我想几乎不断更新的一些数据和RDMA似乎是路线可走。
您需要API NetworkDirect的。 有任何关于如何使用NetworkDirect的,只有接口描述写的东西没有文档。 最接近的文档,我能找到是从这里开始 ,然后深入到每一个环节。 但你可以检查ND测试的源代码的应用实例。
该OpenFabrics企业分布为Windows提供了一个libibverbs类似于Linux上的常用接口。 主要的区别似乎是在处理完成渠道:在Linux上,你会轮询的文件描述符,但在Windows上,有一个( 稀疏文件 )I /基于端口的O完成助手库。 视窗OFED(WinOF)libibverbs是winverbs,基于COM的API,它反映libibverbs和相关的驱动程序的一种包装。 当然,根据这一线索 ,是NetworkDirect的微软需要硬件厂商支持的唯一API。
Isis2(isis2.codeplex.com)现在支持在Linux和Windows RDMA和MPI确实太少。 我建议你与各种现有的库的工作。 RDMA是非常难以直接使用(我花了很多过去的一年中增加了Isis2 RDMA的支持)。 文档是可怕的,只有少数的设备实际上提供RDMA(虽然集增加),一旦你了解你需要做什么,实际上做就很难了。 检查出的InfiniBand的Isis2代码,如果你是好奇 - 我的东西是开源的。
我没有与Windows I / O完成机制特雷弗提到任何经验,但只是为了指出明显:如果你不限制自己到Linux和Windows共同的方面,你最终不可移植的代码。 因此,这也是一个问题 - 只有一些在两个平台上RDMA工作的各个方面,以及一个通过试验和错误发现了这一点!