问题标签 [rdma]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
379 浏览

linux - 如果我想实现 RDMA NIC 驱动程序,从哪里开始 - 建议

非常感谢这里的精彩且非常有帮助的社区。需要帮助了解从哪里开始。我的任务是理解和编写 RDMA over Converged Ethernet 的设备驱动程序。

我的问题是我不知道从哪里开始。我可以访问供应商的 PRM 和示例源代码。

这是我第一次参与这样的任务。

在开始使用 RDMA 之前,我是否应该开始阅读和理解以下规范和示例源代码

  1. PCI
  2. PCI Express
  3. 网卡(以太网)

我尝试阅读 RDMA PRM,但似乎我无法清楚地理解。我在想也许是因为我不太了解 PCI(Express)、NIC,我很难过。

你有什么建议?请帮助我提出您的宝贵建议。真的很感谢大家!

0 投票
1 回答
439 浏览

cuda - 我可以通过 Infiniband 加载/存储访问从不同 PCIe 总线中的 GPU2-Core 到 GPU1-RAM 在 RDMA 中使用吗?

如此处所述:https ://developer.nvidia.com/gpudirect 我可以在同一 PCIe 总线上从 GPU0-Core 访问 GPU1-RAM:

  • 加载/存储
  • cudaMemcpy()

它被命名为“NVIDIA GPUDirect v2 Peer-to-Peer (P2P) Communication between GPUs on the Same PCIe Bus (2011)”: 在此处输入图像描述

我可以通过 Infiniband 使用 RDMA 在不同的 PCIe 总线上从 GPU2-RAM 复制到 GPU1-RAM,它被命名为“GPUDirect™ Support for RDMA, Introduced with CUDA 5 (2012)”: 在此处输入图像描述

但是我可以在通过 Infiniband 连接的不同 PCIe 总线上的 RDMA 中使用:

  • 加载/存储(从 GPU2-Core 访问 GPU-RAM)
  • cudaMemcpy()(从 GPU2-RAM 复制到 GPU1-RAM)

还是只能cudaMemcpy()在 RDMA 中使用?

0 投票
1 回答
200 浏览

c - 我可以在不使用 DMA 控制器的情况下通过 Infiniband 数据发送吗?

我可以在不使用 DMA 控制器的情况下通过 Infiniband 发送数据吗?我可以发送的最小包大小是多少?

也就是说,我可以在没有DMA-controller的情况下,通过简单的指针(即仅x86-asm:向Infiniband适配器的PCI-Express BARMOV...发送数据)直接从当前CPU1-Core访问远程CPU2-RAM的内存吗?

一个例子,我可以从 CPU1 做这样的事情:

0 投票
2 回答
1107 浏览

c - 在 Infiniband 中,PCIe-BAR、Infiniband 卡的内部缓冲区或远程计算机的 RAM 中的映射是什么?

众所周知,Infiniband 允许 RDMA - 直接访问远程计算机的内存。

众所周知,PCI-Express(端点)设备,包括 PCIe 卡 Infiniband,能够以两种方式进行通信:

  • IO 端口(输入/输出) 已弃用
  • MMIO(BAR - 内存映射 IO:mov)

但是 BAR (MMIO) 中究竟显示了什么?(使用 PCIe 卡 Infiniband 时):

  • 它自己的内部缓冲存储卡 Infiniband?
  • 远程计算机的 RAM 的一部分(目前正在使用 RDMA 复制数据的 RAM 部分)?

当我使用 Infiniband 时,PCIe-BAR、Infiniband 卡的内部缓冲区或远程计算机的 RAM 中的映射是什么?

0 投票
1 回答
488 浏览

gpu - GPUDirect 如何在共享设备上强制隔离

我一直在这里https://developer.nvidia.com/gpudirect阅读有关 GPUDirect 的信息,在此示例中,有一个网卡连接到 PCIe 以及两个 GPU 和一个 CPU。

如何在尝试访问网络设备的所有客户端之间实施隔离?他们都访问设备的同一个 PCI BAR 吗?

网络设备是否使用某种 SR-IOV 机制来强制隔离?

0 投票
1 回答
953 浏览

pci - Infiniband 动词涉及哪些 PCIe 操作?

这里有一些细节。

当一个进程调用ibv_post_send()时,HCA 的 PCI 接口会发生什么?WQE 是否封装在 PCIe 门铃内并通过 Programmed IO 写入?还是在 HCA 读取的单独 DMA 中获取 WQE?

当一个进程调用时会发生什么ibv_poll_cq()?HCA 如何将 CQE 推送到系统内存?或者,如果它是基于拉的,CPU 如何检测 HCA 中的新 CQE?

0 投票
1 回答
290 浏览

linux - linux rdma mellanox 澄清

我正在通过 linux/drivers/net/ethernet/mellanox/mlx4/qp.c

有几个问题。如果有人能澄清一下,我将不胜感激:

在函数 mlx4_qp_alloc_icm 中,

要分配 QP,有 2 条路径:

  1. 使用 ALLOC_RES 虚拟命令

  2. 使用 MAP_ICM

这些路径是根据 mlx4_is_func(dev) 的返回值获取的。这对于我认为是物理功能驱动程序/虚拟功能驱动程序的 MASTER 或 SLAVE 是正确的。因此,对于 SRIOV,它涵盖了所有情况。

作为 __mlx4_qp_alloc_icm 的一部分执行的 MAP_ICM 部分永远不会被调用?

我理解正确吗?因为根据我的理解,ICM 需要为所有 QP 分配。

请帮助我理解这一点。

编辑:

添加相关代码:

http://lxr.free-electrons.com/source/drivers/net/ethernet/mellanox/mlx4/icm.c#L226

非常感谢。

最好的问候,马克

0 投票
1 回答
442 浏览

multithreading - InfiniBand:传输速率取决于 MPI_Test* 频率

我正在编写一个多线程 OpenMPI 应用程序,使用来自多个线程的 MPI_Isend 和 MPI_Irecv 在 InfiniBand RDMA 的等级之间每秒交换数百条消息。

传输量为 400 - 800KByte,每个 rank 产生大约 9 Gbps 的输入和输出,完全在 FDR 的容量范围内。简单的 MPI 基准测试也显示出良好的性能。

通过在专用线程中使用 MPI_Testsome 轮询所有活动传输来检查传输是否完成。

我实现的传输速率取决于消息速率,但更重要的是还取决于 MPI_Testsome 的轮询频率。也就是说,如果我每 10 毫秒轮询一次,则请求完成的时间比我每 1 毫秒轮询一次的时间要晚。

我希望如果我每 10 毫秒而不是每 1 毫秒轮询一次,我最多会在 9 毫秒后收到完成请求的通知。我不希望传输本身会通过减少对 MPI_Testsome 的调用来延迟完成,从而降低总传输速率。我希望 MPI_Testsome 完全被动。

这里的任何人都知道为什么会发生这种行为?

0 投票
4 回答
1073 浏览

java - Java 中的 InfiniBand

众所周知,OFED 的 Socket Direct 协议已被弃用,并且 OFED 的 3.x 版本根本不附带 SDP。因此,Java 的SDP也无法正常工作。我想知道用 Java 编写 infiniband 的正确方法是什么?除了编写 JNI 代码之外,还有其他可移植的解决方案吗?

我的要求是在 infiniband 驱动的机器集合中实现RDMA 。

0 投票
3 回答
1489 浏览

c - 用于开发的“本地”RDMA

我正在尝试在此处构建和运行 RDMA 示例。但是因为我只是在探索,我没有任何能够管理 RDMA 的硬件。当我尝试运行示例代码时出现这样的错误。

是否有任何 RDMA 功能的“本地”实现可用于开发?我知道 RDMA 中的“R”表示远程,但我认为这可能存在用于测试/开发目的。

作为参考,我在安装了软件包的 Ubuntu 14.04 机器上进行了尝试libibverbs-devlibrdmacm-dev以便编译代码。