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