- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有几台通过 Infiniband 网络连接的多核计算机。我想在共享内存池上进行一些低延迟计算,并进行远程原子操作。我知道 RDMA 是可行的方法。在每个节点上,我将注册一个内存区域(和保护域)以进行数据共享。
在线 RDMA 示例通常关注单线程服务器和单线程客户端之间的单个连接。现在我想在每个 Infiniband 节点上都有一个多线程进程。我对以下内容感到非常困惑......
对于总共 n 个节点和 m 个线程的集群,我应该在每个节点上准备多少个队列对?更具体地说,同一节点上的多个线程可以共享同一个队列对吗?
我应该在每个节点上准备多少个完成队列?我将有多个线程在每个节点上发出远程读/写/cas 操作。如果它们共享一个公共(public)完成队列,则完成事件将会混合。如果线程有自己独立的完成队列,那么线程数量确实会很多。
您是否建议我使用现有的库而不是编写此软件? (嗯,或者我应该写一个并开源它?:-)
感谢您的善意建议。
最佳答案
至少在 Linux 上,InfiniBand 动词库是完全线程安全的。因此,您可以根据需要在多线程应用程序中使用任意数量的队列对 (QP)——多个线程可以安全地将工作请求发布到单个 QP,尽管您当然必须确保对未完成的任务进行任何跟踪您在自己的应用程序中执行的请求等是线程安全的。
确实,每个发送队列和每个接收队列(请记住,QP 实际上是一对队列:) 都附加到单个完成队列 (CQ)。因此,如果您希望每个线程都有自己的 CQ,那么每个线程都需要自己的 QP 来提交工作。
一般来说,QP 和 CQ 并不是真正的有限资源——您可以轻松地在单个节点上拥有数百或数千个资源,而不会出现任何问题。因此,您可以设计应用程序,而不必过多担心正在使用的队列的绝对数量。这并不是说您不必担心可扩展性 - 例如,如果您有很多接收队列并且每个队列有很多缓冲区,那么您可能会在接收缓冲中占用太多内存,因此您最终会需要使用共享接收队列(SRQ)。
有很多使用IB的中间件库;也许 MPI(例如 http://open-mpi.org/ )是最著名的一个,在您深入重新发明事物之前,可能值得对其进行评估。 MPI 开发人员还发表了大量有关高效使用 IB/RDMA 的研究成果,如果您决定构建自己的系统,这些研究成果可能值得一看。
关于infiniband - RDMA内存共享,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9470512/
我正在阅读一份关于 InfiniBand 的文档,名为《 InfiniBand™ Host Channel Adapter Verb Implementer’s Guide 》--Intel,在第6.
infiniband (RDMA) 的最大电缆长度是多少? 例如。这里已经说过,对于四 channel 铜缆可以达到 10 M 。并使用光纤连接电缆,与标准 InfiniBand 4x 和以太网 10
是否可以在不使用 IPoIB 的情况下通过 native InfiniBand 使用 RDMA(仅使用 guid 或 lit)? 我查过Infiniband addressing - host nam
Linux 命令 ibstat 和 ibv_devinfo 的手册页说 ibstat - query basic status of InfiniBand device(s) ibv_devinfo
我有几台通过 Infiniband 网络连接的多核计算机。我想在共享内存池上进行一些低延迟计算,并进行远程原子操作。我知道 RDMA 是可行的方法。在每个节点上,我将注册一个内存区域(和保护域)以进行
谁能解释一下 InfiniBand 是什么?与以太网相比的主要区别是什么,这些差异如何使其比以太网更快? 在官方description从 mellanox 写到 Introduce InfiniBan
我正在尝试在 Azure 上的 A8 计算机上使用 InfiniBand。实际上,乒乓测试工作正常,但是我无法运行基于 RDMA 的简单程序。我可以通过 ibv_get_device_list(NUL
我正在集群上运行 MPI 应用程序,使用 4 个节点,每个节点有 64 个核心。该应用程序执行所有对所有的通信模式。 通过以下方式执行应用程序运行良好: $: mpirun -npernode 36
我正在尝试在 Azure 上的 A8 计算机上使用 InfiniBand。实际上,乒乓测试工作正常,但是我无法运行基于 RDMA 的简单程序。我可以通过 ibv_get_device_list(NUL
我正在集群上运行 MPI 应用程序,使用 4 个节点,每个节点有 64 个核心。该应用程序执行所有对所有的通信模式。 通过以下方式执行应用程序运行良好: $: mpirun -npernode 36
我正在使用 iperf 测量 InfiniBand 的性能。 它是服务器和客户端之间的一对一连接。 我测量了请求网络 I/O 的线程的带宽变化数。 (集群服务器有: “用于系统 x 的 Mellano
我正在编写一个多线程OpenMPI应用程序,使用来自多个线程的MPI_Isend和MPI_Irecv在InfiniBand RDMA的各个列之间每秒交换数百条消息。 传输量约为400-800KByte
我正在尝试用 C++ 制作一个小型服务器,它可以简单地回显它通过无限带宽连接接收到的任何内容。我还在 Ubuntu 下使用套接字直接协议(protocol)和 POSIX 套接字。 不幸的是,我在互联
在我的应用程序中,我使用无限带宽基础设施将数据流从一台服务器发送到另一台服务器。我习惯于通过 infiniband 轻松开发 ip,因为我更熟悉套接字编程。到目前为止,性能(最大带宽)对我来说已经足够
我正在尝试在具有无限带宽互连的 HPC 集群中使用 Spark。此集群不提供对IPoIB的支持。我在here看到俄亥俄州立大学的Spakr-RDMA项目。我找不到其他人在做这件事,或者 apache
以下是一些具体细节。 当进程调用ibv_post_send()时,HCA 的 PCI 接口(interface)会发生什么? WQE是否封装在PCIe门铃内并通过Programmed IO写入?或者
我有两台机器。每台机器上有多张特斯拉卡。每台机器上还有一张 InfiniBand 卡。我想通过 InfiniBand 在不同机器上的 GPU 卡之间进行通信。只需点对点单播就可以了。我当然想使用 GP
我刚开始使用 Microsoft Azure 进行科学计算,并且在设置时遇到了一些问题。 我有一个跳线盒设置,它充当我想要使用的软件的许可证服务器,还有一个通用驱动器来存储所有软件。还设置了 6 个计
我正在尝试以编程方式查找名称未知的 Infiniband 接口(interface)的 inet 地址先验。 我在 Linux 上,我想避免解析 ifconfig (8) 输出。我已经阅读了关于 th
我可以在不使用 DMA Controller 的情况下通过 Infiniband 发送数据吗?我可以发送的最小包大小是多少? 也就是说,我可以使用简单的指针直接从当前 CPU1-Core 访问远程 C
我是一名优秀的程序员,十分优秀!