我是高性能计算(HPC)方面的新人,但我将拥有一个HPC项目,因此我需要一些帮助来解决一些基本问题。通过RDMA选择共享内存系统,MPI库,原始RDMA还是ULP?
应用场景很简单:通过InfiniBand(IB)网络连接的几台服务器,主服务器的一台服务器和从服务器的其他服务器。只有主机读写内存中的数据(数据的大小范围从1KB到几百MB)到从机中,而从机只是被动地将数据存储在它们的存储器中(并在正确的时间将内存数据转储到磁盘中)。所有的计算都是在主设备上执行,在写入之前或从/从从设备读取数据之后执行。该系统的要求是低延迟(数据的小区域,例如1KB-16KB)和高吞吐量(大数据区域,几百MB)。
所以,我的问题是
1.哪些具体的方式是更适合我们呢? MPI,原始IB/RDMA库或RDMA上的ULP。
据我所知,现有的消息传递接口(MPI)库,原始IB/RDMA库如libverbs
和librdmacm
和用户级Protocal(ULPS)在RDMA可能是可行的选择,但我不是很确定的适用范围。
2.我应该为操作系统还是IB网络进行调整以获得更好的性能?
存在纸张[1]微软宣布
我们提高了性能 多达八个仔细调整的一个因素, 更改操作系统和NIC驱动
就我而言,我会尽力避免这种性能调整。但是,如果调整是不可避免的,我会尽我所能。我们环境的IB网络是Mellanox InfiniBand QDR 40Gb/s,我可以自由选择适用于服务器的Linux操作系统。
如果您有任何想法,意见和答案,欢迎! 在此先感谢!
我投票结束这个问题主要是基于意见的。列出的每项技术都可以用于实现特定目标中的一个或另一个,尽管在易用性和代码可维护性方面价格不同。没有错综复杂的应用程序网络配置知识,我怀疑任何人都可以回答第二个问题。 –
@HristoIliev感谢您的评论。我想澄清我的问题:首先,哪种方法可以实现我的应用程序的要求?其次,我怎样才能通过选择一个适合我需求的成熟库来避免调优工作(就像快速远程'memcpy')。 – foool