问题标签 [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.
memory - RDMA 内存缓冲区
我知道 RDMA 要求发送者和接收者在数据传输之前都注册他们的内存。我想知道发送方和接收方的注册内存是否应该相同。如果相同,我认为 RDMA 会浪费大量内存,因为双方基本上都在存储相同的数据。有没有办法减少这样的问题?
azure - 如何在 Azure 上的两个 CentOS A8 VM 实例中运行 Intel MPI RDMA 应用程序
我似乎无法弄清楚如何在 Azure 上的两个 CentOS A8 VM 实例中运行 Intel MPI RDMA 应用程序。
我正在尝试在同一专用网络上的两个 Azure A8 虚拟机(VM1、VM2)上测试 RDMA 设置10.1.1.0/24
。请注意,如Azure 文档中所述,每个 VM 在地址空间中都有另一个接口172.16.0.0/16
。我也按照指南设置基本的两节点集群来运行 mpi 应用程序,但我没有 CentOS 上的 pingpong 应用程序进行测试。基本上,我永远无法测试两个节点的 RDMA 设置。因此,我开始按照示例 2创建一个简单的应用程序,并进行一些调整以在我的 VM 上运行它。
上述命令将在6011
VM1 和 VM2 上的套接字上运行 rdma-tutorial 应用程序。应用程序主读取文件(client_file)以了解正在运行的 VM 是服务器还是客户端。该文件存在于 VM2 上(但不在 VM1 上),因此 VM2 是客户端,该文件包含 VM1 的名称作为服务器。在 VM1(服务器)上,它打开 6011 套接字并等待来自 VM2(客户端)的 QP(队列对)信息。在 VM2 上,它将 QP 信息发送到 VM1。共享 QP 信息后,代码挂起并且永远不会完成。查看 pstack 并使用 gdb 我知道应用程序正在等待从另一端接收消息。请注意,VM 使用eth0
on10.1.1.0/24
来共享 QP 信息。
我的理解是,一旦共享了 QP 信息,两个虚拟机将通过 eth1(172.16.0.0/16) 网络进行通信。这个对吗?如果是这样,我想应该显示和ethtool -S eth1
的计数增加。但不幸的是,他们被卡住了:图片:tx_queue_0_packets
tx_queue_0_bytes
ethtool -S eth1
两个 VM 上都启用了RDMA 映像:启用了 RDMA
另请注意,通过 ping on 无法访问 VM 172.16.0.0/16
。我也试过rping
了,但这也挂了。
有什么我想念的吗?VM1 应该能够 ping VM2172.16.0.0/16
吗?接下来我应该尝试什么?
hpc - INFINIBAND 如何从 POSIX 套接字 API 获取消息?
我试图弄清楚 RDMA - INFINIBAND 如何仅使用传统的 POSIX API 来理解和发送消息。
我查看了与 INFNIBAND 相关的所有文件和论文,但未能回答我的问题。
是否有可能知道 INFINIBAND 如何理解并从 POSIX 获取消息?因为我尝试过直接使用动词接口或使用 libvma 库来拦截来自套接字 API 的数据并使用动词接口。
显然,与仅使用带有 INFINIBAND 的 POSIX 套接字 API 相比,这两种方法都具有更高的性能。
我的怀疑是当用户空间应用程序使用套接字 API 发送数据时,该进程进入内核空间以使用 POSIX TCP 堆栈,然后以某种方式 RDMA 从中获取数据,但我真的很想知道具体如何。
熟悉 RDMA 的人可以回答我的问题吗?谢谢
mpi - MVAPICH2 基于 RDMA 的通信没有明确的 PUT/GET 使用?
我的集群在 Infiniband FDR 上使用 MVAPICH2,并且我正在考虑使用 RDMA 进行模拟。我知道 MPI_Put 和 MPI_Get 调用显式调用 RDMA 操作,但是我想知道这是否是在 MPI 中使用 RDMA 的唯一方法。
我当前的实现涉及用于通信的通道语义(发送/接收)MPI_Reduce
以及MPI_Gatherv
. 我知道 MVAPICH2 具有可用于启用 RDMA 的配置参数。如果使用 MPI 的程序具有发送/接收调用并且启用了 RDMA,MPI 是否会自动从通道语义转换为内存语义(put/get),还是在 MVAPICH2 中显式使用MPI_Put
和MPI_Get
唯一实现 RDMA 的方法?
MPI_Send
需要相应的MPI_Receive
,无论它们是阻塞还是非阻塞都无关紧要,因为发送必须满足接收。RDMA 没有此要求,而是仅实现MPI_Put
(写入远程内存)或MPI_Get
(从远程内存读取)。我试图找出在仍然使用发送和接收的同时启用 rdma 是否允许 MVAPICH2 以某种方式自动将发送/接收转换为适当的 rdma 调用。
tensorflow - Tensorflow 的编译错误
我正在尝试构建具有 MPI 支持的 Tensorflow 1.6。我收到以下错误:
错误:/gpfshome01/u/amalik/Tensorflow/tensorflow/tensorflow/contrib/gdr/BUILD:52:1:规则'//tensorflow/contrib/gdr:gdr_memory_manager'的C++编译失败(退出1)tensorflow/contrib/gdr /gdr_memory_manager.cc:28:27:致命错误:rdma/rdma_cma.h:没有这样的文件或目录#include ^ 编译终止。目标 //tensorflow/tools/pip_package:build_pip_package 构建失败使用 --verbose_failures 查看失败构建步骤的命令行。信息:经过时间:556.299 秒,关键路径:183.28 秒失败:构建未成功完成
任何建议和意见
tensorflow - Tensorflow 无法在 Infiniband 网络上使用 RDMA
执行:
失败并显示以下消息:
无限带宽信息:
我的 Tensorflow 是 tensorflow-gpu:1.4.1 版本。Tensorflow 可以在 Infiniband 卡上使用 RDMA 吗?
infiniband - Infiniband 传输层
我无法理解来自http://www.redbooks.ibm.com/redbooks/pdfs/sg247351.pdf的上下文
它描述了传输层是如何实现的,但我读过的每条信息都只解释了特性,而不是传输层是如何实现的。
与以太网等其他技术相比,InfiniBand 架构为传输层提供了显着改进:所有功能都在硬件中实现。
有没有办法找出 Infiniband 传输层的功能是如何在硬件中实现的基本思想?例如,它是否使用逻辑控件和寄存器来运行所有必要的传输层功能?
ubuntu - libibverbs:警告:未找到 /sys/class/infiniband_verbs/uverbs0 的用户空间设备特定驱动程序
当我尝试使用命令 ibv_devices 检查安装设备时收到以下消息。
libibverbs:警告:找不到 /sys/class/infiniband_verbs/uverbs1 的用户空间设备特定驱动程序 libibverbs:警告:找不到 /sys/class/infiniband_verbs/uverbs0 的用户空间设备特定驱动程序
我在 VMWare 中运行 ubuntu 16.4LTS
下面 lsmod 的输出看起来不错:
如果我能得到一些帮助来解决这个问题,我将不胜感激。
infiniband - 使用 Inifiniband 将远程内存映射到主机的地址空间
我最近开始使用 Infiniband 卡,具体来说是两个 Mellanox Technologies MT27700 系列 [ConnectX-4]。最终,我想使用基于 VPI Verbs API/RDMA CM API 的接口扩展现有框架。
关于我已经对 RDMA 编程进行的研究:我首先阅读了Mellanox 的 RDMA Aware Networks Programming User Manual。其次,我阅读了一篇关于 VPI Verbs/RDMA Verbs 功能的相当全面的博客。最后,我阅读了 Tarick Bedeir 发表的三篇关于 RDMA 编程的论文:[1]、[2]、[3]。
为了了解什么最适合我的需求,我创建了一个测试平台来测量延迟、CPU 使用率和吞吐量等。我测试了不同的操作(见下表 1)、不同的发送标志(例如IBV_SEND_INLINE
)以及检索工作完成的不同方式(忙轮询与等待完成通道中的事件)。我的测试台的部分灵感来自这项 RDMA 编程性能研究的结果。
目前,我仍在寻找所有可能性。
我注意到的一件事是,每次我想分别用oribv_post_send
写入远程内存或从远程内存中读取时,我都必须调用它。所以,我的问题是是否可以将远程内存地址映射到主机的虚拟地址空间。IBV_WR_RDMA_WRITE
IBV_WR_RDMA_READ
当然,VPI 组件的所有初始化、内存注册ibv_reg_mr
以及远程密钥和地址的交换都必须完成。Infiniband 是否提供任何使这成为可能的东西?
谢谢!
rdma - /usr/include/rdma/rdma_cma.h:91:2: 错误:未知类型名称 '__be16' __be16 pkey;
当我在 ubuntu16.04 上安装 SOft-iWARP 以在没有昂贵硬件的情况下支持 RDMA 时,我遇到了这个问题。我的电脑上有 linux-headers-4.8.0-39-generic 和 linux-headers-4.4.0-64-generic 。是 linux-core 的问题吗?我该如何解决?