当前位置: 首页 > news >正文

PCIe之P2P应用

目录

3.1GPU Direct Storage

3.1.1 单机多卡GPU通信

1.GPUDirect Storage

2.GPUDirect P2P

3.1.2多机多卡GPU通信

1.RDMA

2.GPUDirect RDMA(GDR)

3.2PCIE交换P2P关键配置-ACS选项

3.2.1 使用ACS的原因

1.P2P传输风险

2.解决方案-ACS

测试场景及结果


3.1GPU Direct Storage

参考博客:聊透 GPU 通信技术——GPU Direct、NVLink、RDMA - 知乎

GPU Direct是NVIDIA开发的一项技术,利用PCIE交换实现GPU与其他设备(比如网络接口卡(NIC)和存储设备)之间的直接通信和数据传输,而不涉及CPU,从而减少不必要的内存和CPU开销,从而显著提升性能

该技术主要包括

3.1.1 单机多卡GPU通信

1.GPUDirect Storage

GPUDirect Storage 允许存储设备和 GPU 之间进行直接数据传输,绕过 CPU,减少数据传输的延迟和 CPU 开销。

通过 GPUDirect Storage,GPU 可以直接从存储设备(如固态硬盘(SSD)或非易失性内存扩展(NVMe)驱动器)访问数据,而无需将数据先复制到 CPU 的内存中。这种直接访问能够实现更快的数据传输速度,并更高效地利用 GPU 资源。

GPUDirect Storage 的主要特点和优势包括:

  • 减少 CPU 参与:通过绕过 CPU,实现 GPU 和存储设备之间的直接通信,GPUDirect Storage 减少了 CPU 开销,并释放 CPU 资源用于其他任务,从而改善系统的整体性能。

  • 低延迟数据访问:GPUDirect Storage 消除了数据通过 CPU 的传输路径,从而最小化了数据传输的延迟。这对于实时分析、机器学习和高性能计算等对延迟敏感的应用非常有益。

  • 提高存储性能:通过允许 GPU 直接访问存储设备,GPUDirect Storage 实现了高速数据传输,可以显著提高存储性能,加速数据密集型工作负载的处理速度。

  • 增强的可扩展性:GPUDirect Storage 支持多 GPU 配置,允许多个 GPU 同时访问存储设备。这种可扩展性对于需要大规模并行处理和数据分析的应用至关重要。

  • 兼容性和生态系统支持:GPUDirect Storage 设计用于与各种存储协议兼容,包括 NVMe、NVMe over Fabrics和网络附加存储(NAS)。它得到了主要存储供应商的支持,并集成到流行的软件框架(如NVIDIA CUDA)中,以简化与现有的 GPU 加速应用程序的集成。

2.GPUDirect P2P

某些工作负载需要位于同一服务器中的两个或多个 GPU 之间进行数据交换,在没有 GPUDirect P2P 技术的情况下,来自 GPU 的数据将首先通过 CPU 和 PCIe 总线复制到主机固定的共享内存。然后,数据将通过 CPU 和 PCIe 总线从主机固定的共享内存复制到目标 GPU,数据在到达目的地之前需要被复制两次

有了 GPUDirect P2P 通信技术后,将数据从源 GPU 复制到同一节点中的另一个 GPU 不再需要将数据临时暂存到主机内存中。如果两个 GPU 连接到同一 PCIe 总线,GPUDirect P2P 允许访问其相应的内存,而无需 CPU 参与。前者将执行相同任务所需的复制操作数量减半。

3.1.2多机多卡GPU通信

1.RDMA

AI 计算对算力需求巨大,多机多卡的计算是一个常态,多机间的通信是影响分布式训练的一个重要指标。在传统的 TCP/IP 网络通信中,数据发送方需要将数据进行多次内存拷贝,并经过一系列的网络协议的数据包处理工作;数据接收方在应用程序中处理数据前,也需要经过多次内存拷贝和一系列的网络协议的数据包处理工作。经过这一系列的内存拷贝、数据包处理以及网络传输延时等,服务器间的通信时延往往在毫秒级别,不能够满足多机多卡场景对于网络通信的需求。

RDMA(Remote Direct Memory Access)是一种绕过远程主机而访问其内存中数据的技术,解决网络传输中数据处理延迟而产生的一种远端内存直接访问技术。

目前 RDMA 有三种不同的技术实现方式:

  1. InfiniBand(IB):IB 是一种高性能互连技术,它提供了原生的 RDMA 支持。IB 网络使用专用的 IB 适配器和交换机,通过 RDMA 操作实现节点之间的高速直接内存访问和数据传输。

  2. RoCE(RDMA over Converged Ethernet):RoCE是在以太网上实现 RDMA 的技术。它使用标准的以太网作为底层传输介质,并通过使用 RoCE 适配器和适当的协议栈来实现 RDMA 功能。

  3. iWARP:iWARP 是基于 TCP/IP 协议栈的 RDMA 实现。它使用普通的以太网适配器和标准的网络交换机,并通过在 TCP/IP 协议栈中实现 RDMA 功能来提供高性能的远程内存访问和数据传输。

2.GPUDirect RDMA(GDR)

GPUDirect RDMA 结合了 GPU 加速计算和 RDMA(Remote Direct Memory Access)技术,实现了在 GPU 和 RDMA 网络设备之间直接进行数据传输和通信的能力。它允许 GPU 直接访问 RDMA 网络设备中的数据,无需通过主机内存或 CPU 的中介

GPUDirect RDMA 通过绕过主机内存和 CPU,直接在 GPU 和 RDMA 网络设备之间进行数据传输,显著降低传输延迟,加快数据交换速度,并可以减轻 CPU 负载,释放 CPU 的计算能力。另外,GPUDirect RDMA 技术允许 GPU 直接访问 RDMA 网络设备中的数据,避免了数据在主机内存中的复制,提高了数据传输的带宽利用率

3.2PCIE交换P2P关键配置-ACS选项

参考博客:PCIe访问控制服务(ACS)_pcie acs-CSDN博客

3.2.1 使用ACS的原因

1.P2P传输风险

Access Control Services (ACS) 是一种基于信任的服务协议。如果EP端ATC(Address Translation Cache)声称其发出的访问请求是经过转换后的地址,并且该地址刚好落在PCIe交换开关的BAR范围内,则该访问请求不会到达RC,而是被交换开关路由到该地址所对应的EP。也就是说,该访问请求绕过了IOMMU的隔离,进行了P2P(peer to peer)传输

PCIe协议允许P2P传输,这就意味着同一个PCIe交换开关连接下不同EP可以在不流转RC的情况下互相通信。若使用过程中不希望P2P直接通信又不采取相关措施,那么这个漏洞可能被无意或者有意触发,使得某些EP收到无效、非法设置恶意的访问请求,从而引发一系列潜在问题

2.解决方案-ACS

ACS协议提供了一种机制,能够决定一个TLP被正常路由、阻塞或者重定向。在SR-IOV系统中,还能防止属于VI或者不同SI的设备Function之间直接通信。通过在交换节点上开启ACS服务,可以禁止P2P发送,强迫交换节点将所有地址的访问请求送到RC,从而避开P2P访问中的风险。ACS可以用于PCIe桥,交换节点以及带有VF的PF等所有具有调度功能的节点,充当一个看门人的角色。

Access Control Services (ACS) :可以强制点对点PCIe事务经过root port转发,防止未经授权的P2P事务发生。

测试场景及结果

  1. 6500 服务器 - 同交 换下

    • P2P 单向:ACS 开启时带宽为 14.91GB,关闭时为 25.22GB,性能下降比例达 41% 。说明在同交换机环境下,P2P(Peer - to - Peer,点对点)单向传输时,ACS 功能开启对带宽影响明显。

    • P2P 双向:ACS 开启时带宽 14.91GB,关闭时 50.41GB,下降比例高达 70% 。表明此场景下,P2P 双向传输受 ACS 功能开启的影响更大。

  2. 6500 服务器 - 跨 socket

    • P2P 单向:ACS 开启和关闭时带宽均为 21.34GB,下降比例为无变化。意味着在跨 socket(处理器插槽)环境下,P2P 单向传输不受 ACS 功能开启与否的影响。

    • P2P 双向:ACS 开启时带宽 41.26GB,关闭时 41.23GB ,下降比例无变化。说明此场景下,P2P 双向传输也基本不受 ACS 功能开启的影响。

http://www.dtcms.com/a/291650.html

相关文章:

  • 从ZooKeeper到KRaft:Kafka架构演进与无ZooKeeper部署指南
  • Android perfetto 工具使用
  • 【前端】ikun-pptx编辑器前瞻问题二: pptx的压缩包结构,以及xml正文树及对应元素介绍
  • 从重复劳动到自动化:火语言 RPA 的实践与思考
  • python办自动化--读取邮箱中特定的邮件,并下载特定的附件
  • 物联网_TDengine_EMQX_性能测试
  • RabbitMQ-交换机(Exchange)
  • 【无标题】buuctf-re3
  • 解决pip指令超时问题
  • MCU中的总线桥是什么?
  • Windows PE文件内未用空间学习
  • Collection接口的详细介绍以及底层原理——包括数据结构红黑树、二叉树等,从0到彻底掌握Collection只需这篇文章
  • wed前端简单解析
  • wangEditor5添加键盘事件/实现定时保存功能
  • 【文献笔记】ARS: Automatic Routing Solver with Large Language Models
  • SpringMVC快速入门之启动配置流程
  • C语言基础:函数练习题
  • 【洛谷】用两个数组实现静态单链表、静态双向链表,排队顺序
  • C#初学知识点总结
  • 假发行业数字化突围,外贸ERP重构外协管理引擎,助力效率飞跃
  • 智联智造:国内新能源汽车品牌AGV小车无线控制系统创新实践
  • 面试题:sql题一
  • 前端项目启动后,只有localhost地址,没有ip地址
  • vs2017 c++ 使用sqlite3数据库
  • Java 邂逅 WebSocket:解锁实时通信的无限可能​
  • Flutter基础(前端教程①⑦-Column竖直-Row水平-Warp包裹-Stack堆叠)
  • 【计算机网络 篇】TCP基本认识和TCP三次握手相关问题
  • ArKTS: DAL,Model,BLL,Interface,Factory using SQLite
  • docker-desktop启动失败
  • 【电影剖析】千钧一发