GDS:存储与GPU内存之间的Direct Path
随着人工智能(AI)和高性能计算(HPC)数据集规模的不断扩大,为特定应用程序加载数据所需的时间开始对应用程序的整体性能产生重大影响。在考虑端到端应用程序性能时,快速GPU的处理能力越来越受限于缓慢的输入/输出(I/O)操作。I/O操作,即从存储设备加载数据到GPU进行处理的过程,历史上一直是由CPU控制的。然而,随着计算任务从较慢的CPU转移到更快的GPU上,I/O操作逐渐成为影响整体应用程序性能的主要瓶颈。为了解决这一问题,业界正在探索多种技术来提高数据加载速度,减少对应用程序性能的负面影响。这些技术包括但不限于:(1)使用更快的存储设备:如NVMe SSD(非易失性存储器快速启动)等新型存储设备,它们提供了比传统HDD(硬盘驱动器)或SATA SSD(串行高级技术附件固态硬盘)更快的读写速度。(2)优化数据加载策略:例如,通过预加载数据、使用缓存机制或数据并行加载等技术,可以减少I/O操作的等待时间。(3)改进I/O架构:一些新的硬件和软件架构,如直接存储访问(DMA)技术的改进,允许数据在存储设备和GPU之间直接传输,而无需经过CPU,从而提高了数据传输效率。(4)数据压缩和解压缩技术:通过压缩存储的数据,可以减少需要传输的数据量,进而加快数据加载速度。同时,高效的解压缩技术也能确保数据在GPU上快速可用。(5)并行I/O:利用多线程或多进程技术同时执行多个I/O操作,可以显著提高数据加载的吞吐量。现代存储系统和网络协议通常支持并行I/O操作。(6)利用GPU的直接存储访问(Direct Storage Access, DSA)技术:一些最新的技术和硬件平台开始支持GPU直接访问存储设备,绕过CPU进行数据传输。这种技术可以显著降低CPU的负载并提高数据传输效率。(7)智能I/O调度:通过智能的I/O调度算法,可以优化数据访问模式,减少不必要的I/O操作。例如,可以预测应用程序的数据访问模式,并提前加载可能用到的数据。随着AI和HPC数据集规模的持续增长,解决I/O瓶颈对于提高应用程序的整体性能至关重要。
为了解决这个问题,业界开发了一种新技术——GPUDirect Storage。正如GPUDirect RDMA(远程直接内存访问)技术通过在网络接口卡(NIC)和GPU内存之间直接移动数据来提高带宽和降低延迟一样,GPUDirect Storage技术实现了本地或远程存储(如NVMe或NVMe over Fabric,简称NVMe-oF)与GPU内存之间的直接数据路径。GPUDirect Storage技术的优势在于:(1)减少CPU开销:通过绕过CPU,GPUDirect Storage减少了CPU在数据加载过程中的参与,从而降低了CPU的开销,使其能够专注于其他任务。(2)提高数据传输效率:直接的数据路径意味着数据可以更快地从存储设备传输到GPU内存,减少了传输过程中的延迟和带宽瓶颈。(3)优化存储性能:结合高性能存储设备(如NVMe SSD),GPUDirect Storage能够充分利用这些设备的潜力,提供更高的数据传输速率和更低的延迟。(4)简化数据管理:通过减少中间步骤和层次结构,GPUDirect Storage简化了数据管理过程,使得数据加载和处理更加高效。
GPUDirect Storage技术为AI和HPC应用程序提供了一种高效的数据加载解决方案,有助于缓解I/O瓶颈,提高整体应用程序性能。GPUDirect RDMA(Remote Direct Memory Access)和GPUDirect Storage这两种技术都旨在避免数据在CPU内存中的额外拷贝(通过bounce buffer),并启用靠近网络接口卡(NIC)或存储设备的直接内存访问(DMA)引擎,以便数据能够沿着Direct Path 进入或离开GPU内存,这一过程中不会给CPU或GPU带来额外负担(如图1所示)。图1 GPU内存与NVMe(Non-Volatile Memory Express)驱动器之间数据传输的两种路径without GPUDirect Storage:
[*]数据从NVMe驱动器读取后,首先通过CPU被加载到系统内存中的一个称为bounce buffer的区域。
[*]bounce buffer是CPU内存中的一部分,用于临时存储从外部设备(如NVMe驱动器)读取的数据,或准备写入到这些设备的数据。
[*]CPU需要参与这一过程,因为它负责将数据从NVMe驱动器传输到反弹缓冲区,然后再从反弹缓冲区传输到GPU内存(或相反方向)。
[*]这种路径会增加CPU的负载,并可能引入额外的延迟和带宽限制。
GPUDirect Storage:
[*]GPUDirect Storage技术允许数据直接从NVMe驱动器传输到GPU内存,而无需经过CPU内存中的bounce buffer。
[*]GDS 路径通过绕过CPU,实现了更高的数据传输带宽和更低的延迟。
[*]CPU不再需要参与数据传输的每一个步骤,从而减轻了其负载,并允许它专注于其他任务。
[*]GDS 提高了整体系统性能,特别是对于需要高速数据传输的高性能计算(HPC)和人工智能(AI)应用来说。
GPUDirect RDMA技术允许GPU之间或GPU与具有RDMA能力的网络设备之间直接传输数据,而无需CPU的介入。这显著减少了CPU的开销,提高了数据传输的效率和速度,特别是在处理大规模并行计算任务时。GPUDirect Storage技术则允许GPU直接从存储设备(如SSD或HDD)读取数据,而无需先将数据通过CPU内存传输到GPU。这同样减少了CPU的负载,并提高了数据加载到GPU的速度,从而加速了整体应用程序的性能。这两种技术的结合使用可以进一步优化数据在系统中的流动,减少不必要的拷贝和延迟,提高整体计算效率。它们对于需要高速数据处理和传输的高性能计算(HPC)和人工智能(AI)应用来说尤为重要。
对于GPUDirect Storage而言,存储位置并不重要;它既可以位于机箱内部、机架内,也可以通过网络连接在机箱外部。在NVIDIA DGX-2中,从CPU系统内存(SysMem)到GPU的带宽被限制在50 GB/s,但从系统内存、多个本地驱动器以及多个网络接口卡(NICs)的带宽可以组合起来,在DGX-2中实现接近200 GB/s的上限带宽。 关于更多关于GPUDirect Storage可以参考文章《GPUDirect Storage: A Direct Path Between Storage and GPU Memory》https://developer.nvidia.com/blog/gpudirect-storage/
在文章中:
[*]证明从存储到GPU的直接内存访问可以缓解CPU的I/O瓶颈,并增加I/O带宽和容量。
[*]提供在GTC19圣何塞大会上展示的初步性能指标,基于RAPIDS项目的GPU加速CSV读取器,该读取器位于cuDF库中。
[*]针对可以利用存储和GPU之间更快和增加的带宽、更低延迟以及更大容量的关键应用提供了建议。
页:
[1]