问题标签 [infiniband]
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.
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 中使用?
c - 我可以在不使用 DMA 控制器的情况下通过 Infiniband 数据发送吗?
我可以在不使用 DMA 控制器的情况下通过 Infiniband 发送数据吗?我可以发送的最小包大小是多少?
也就是说,我可以在没有DMA-controller的情况下,通过简单的指针(即仅x86-asm:向Infiniband适配器的PCI-Express BARMOV...
发送数据)直接从当前CPU1-Core访问远程CPU2-RAM的内存吗?
一个例子,我可以从 CPU1 做这样的事情:
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 中的映射是什么?
mpi - MVAPICH2 - 支持的网络类型
MVAPICH2 可以安装在 InfiniBand 或其他 HPC 网络技术以外的普通以太网网络上吗?
pci - Infiniband 动词涉及哪些 PCIe 操作?
这里有一些细节。
当一个进程调用ibv_post_send()
时,HCA 的 PCI 接口会发生什么?WQE 是否封装在 PCIe 门铃内并通过 Programmed IO 写入?还是在 HCA 读取的单独 DMA 中获取 WQE?
当一个进程调用时会发生什么ibv_poll_cq()
?HCA 如何将 CQE 推送到系统内存?或者,如果它是基于拉的,CPU 如何检测 HCA 中的新 CQE?
hadoop - Hadoop:文件...只能复制到 0 个节点,而不是 1 个
我正在尝试在 8 节点 IB (OFED-1.5.3-4.0.42) 集群上部署 Hadoop-RDMA 并遇到以下问题(又名文件 ... 只能复制到 0 个节点,而不是 1 个):
当我开始从本地文件系统复制到 HDFS 时,似乎数据没有传输到 DataNodes。我测试了 DataNodes 的可用性:
并尝试在已成功的 HDFS 文件系统中 mkdir。重启 Hadoop 守护进程没有产生任何积极影响。
你能帮我解决这个问题吗?谢谢你。
最好的,亚历克斯
subnet - Infiniband 连接问题
我得到一个集群,其中节点在胖树 IB 中连接。开关是 Qlogic 12300。
我遇到的问题是某些节点无法相互通信。甚至还有其他节点可以与两个受影响的节点进行通信。
我使用 ibtracert 来诊断问题。令人惊奇的是,如果我在可以与两个节点通信的单独节点上运行该命令,它们就很好并报告了一条可行的路线。
但是,如果我从两个受影响的节点发出 ibtracert 命令,它就会出错。
我能问一下这可能的原因是什么吗?
谢谢。
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 完全被动。
这里的任何人都知道为什么会发生这种行为?
linux - 在 Linux 上等待 infiniband 接收完成的最佳方法是什么?
我们正在移植 Isis2 (isis2.codeplex.com) 以更好地使用 Infiniband 动词并让我们的代码运行。但是,IB 面向异步接收模型,在该模型中您发布一堆接收缓冲区,然后在接收完成时处理接收到的数据。
轮询很慢:如果我使用阻塞等待,比如说 2 毫秒,我可能会延迟 2 毫秒才能看到 IB 数据。所以这是一个解决方案,但很糟糕。我真正想要的是一种等待 IB 完成记录最终确定然后让我的线程立即唤醒的方法(在 Windows 上这很容易......在 Linux 上它不那么自然)。有谁知道如何做到这一点?使用动词时,没有任何 IB 文件描述符,所以显然我不能使用 select()
segmentation-fault - 使用带有 SLURM 的 openMPI 作业的分段错误
我在尝试使用 slurm SBATCH 作业或 SRUN 作业和 MPI over infiniband 时遇到问题。
OpenMPI 已安装,如果我启动以下测试程序(称为hello),mpirun -n 30 ./hello
它就可以工作。
所以 :
当我尝试通过 SLURM 启动它时,会出现如下分段错误:
有谁知道是什么问题?我已经构建了支持 Slurm 的 openMPI,并安装了相同版本的编译器和库,实际上所有库都在一个 NFS 共享中,该共享安装在每个节点上。
评论:
它应该使用 infiniband,因为它已安装。但是当我用mpirun启动 openmpi 时,我注意到
我猜这意味着“不通过 infiniband 运行”。我已经安装了 infiniband 驱动程序,并通过 Infiniband 设置了 IP。Slurm 配置为使用 infiniband IP 运行:这是正确的配置吗?
提前致谢最好的问候
编辑 :
我刚刚尝试用 MPICH2 而不是 openMPI 编译它,它可以与 SLURM 一起使用。所以问题可能与openMPI有关,而不是Slurm配置?
编辑 2:实际上,我已经看到使用带有 SBATCH 命令而不是 SRUN 的 openMPI 1.6.5(而不是 1.8)我的脚本被执行(即它返回线程号、等级和主机。但它显示了与 openfabric 供应商相关的警告和注册内存的分配:
我从中了解到,a)v.1.6.5 具有更好的错误处理能力,b)我必须配置具有更多注册内存大小的 openMPI 和/或 infiniband 驱动程序。我看到这个页面,显然我只需要修改 openMPI 的东西?我必须测试它...