1

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

应用场景很简单:多台服务器通过InfiniBand(IB)网络连接,一台服务器为Master,另一台为slave。只有 master 读取/写入内存中的数据(数据大小范围从 1KB 到几百 MB)到 slave,而 slave 只是被动地将数据存储在内存中(并在正确的时间将内存中的数据转储到磁盘中)。所有计算都在主设备中执行,在写入数据之前或从从设备读取数据之后。系统的要求是低延迟(小数据区域,比如1KB-16KB)和高吞吐量(大数据区域,几百MB)。

所以,我的问题是

1. 哪种具体方式更适合我们?MPI、原始 IB/RDMA 库或基于 RDMA 的 ULP。

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

2.我应该对操作系统或IB网络进行一些调整以获得更好的性能吗?

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

通过仔细调整和更改操作系统和 NIC 驱动器,我们将性能提高了八倍

就我而言,我会尽量避免这种性能调整。但是,如果调整是不可避免的,我会尽力而为。我们环境的 IB 网络是 Mellanox InfiniBand QDR 40Gb/s,我可以自由选择服务器的 Linux 操作系统。

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

[1] FaRM:快速远程内存

4

1 回答 1

1

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

使用 MPI 还可以让您在将其部署到 infiniband 机器之前在您的(可能超载的)笔记本电脑或工作站上进行调试。

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

于 2015-05-22T15:32:21.063 回答