我有几台通过 Infiniband 网络连接的多核计算机。我想在共享内存池上进行一些低延迟计算,并使用远程原子操作。我知道 RDMA 是要走的路。在每个节点上,我都会注册一个内存区域(和保护域)以进行数据共享。
在线 RDMA 示例通常关注单线程服务器和单线程客户端之间的单个连接。现在我想在每个 Infiniband 节点上都有一个多线程进程。我对以下内容感到非常困惑......
对于总共有 n 个节点和 m 个线程的集群,我应该在每个节点上准备多少个队列对?更具体地说,同一个节点上的多个线程可以共享同一个队列对吗?
我应该在每个节点上准备多少个完成队列?我将有多个线程在每个节点上发出远程读/写/cas 操作。如果他们要共享一个共同的完成队列,完成事件将被混淆。如果线程有自己独立的完成队列,那么它们真的很多。
您是否建议我拥有任何现有的库而不是编写此软件?(嗯,或者我应该写一个并开源它?:-)
感谢您的善意建议。