共享内存系统、MPI库、原始RDMA或基于RDMA的ULP的选择



我是高性能计算(HPC)的新手,但我将有一个HPC项目,所以我需要一些帮助来解决一些基本问题。

应用场景很简单:多台服务器通过IB (InfiniBand)网络连接,一台作为主服务器,其他作为从服务器。只有主服务器读取/写入内存中的数据(数据大小从1KB到几百mb不等)到从服务器,而从服务器只是被动地将数据存储在它们的内存中(并在适当的时候将内存中的数据转储到磁盘中)。所有的计算都在主服务器上执行,在写入数据之前或从服务器读取数据之后。系统的要求是低时延(数据区域小,如1KB-16KB)和高吞吐量(数据区域大,几百mb)。

我的问题是

1。哪一种具体方式更适合我们?MPI,原始IB/RDMA库或RDMA上的ulp

据我所知,现有的消息传递接口(MPI)库,原始IB/RDMA库,如libverbslibrdmacm以及RDMA上的用户级协议(ulp)可能是可行的选择,但我不太确定它们的适用范围。

2。我是否应该对操作系统或IB网络进行一些调优以获得更好的性能?

有一篇来自微软的论文[1]宣布

我们提高了性能经过精心的调音,可以达到8倍操作系统和网卡驱动器的更改

对于我来说,我将尽可能避免这种性能调优。然而,如果调整是不可避免的,我会尽我最大的努力。我们环境的IB网络是Mellanox InfiniBand QDR 40Gb/s,我可以自由选择服务器的Linux操作系统

如果你有任何想法,欢迎评论和回答!提前感谢!

[1] FaRM: Fast Remote Memory

如果您使用MPI,您将受益于独立于互连的解决方案。这听起来不像是你会用20年的东西,但软件的寿命比你想象的要长。

使用MPI还使您能够在将笔记本电脑或工作站(可能是过度使用的)上进行调试,然后再将其推广到infiniband机器上。

关于优化网络的第二个问题,我相信您可以做的优化没有尽头,但是在您有一些实际的工作负载和硬数字之前,您是在浪费时间。先把事情做好,然后再考虑如何优化网络。也许您需要针对许多小包进行调优。也许你需要担心一些大额转账。

最新更新