Highly Efficient Alltoall and Alltoallv Communication Algorithms for GPU Systems
来源
本文章为NVIDIA GTC2023中的Posters Spotlight: High Performance Computing [S52408]
的会议技术分享总结。
文章为Highly Efficient Alltoall and Alltoallv Communication Algorithms for GPU Systems
研究动机
涉及MPI的高性能计算应用中,由于进程之间经常需要多对多的交换信息, 所以使用最多的两个MPI
通信操作是MPI_Alltoall
和MPI_Alltoallv
.
MPI_Alltoall用于给通信区域中的所有进程发送相同信息,类似广播
MPI_Alltoallv用于给通信区域中的所有进程依据进程号的不同从同一个buffer中取不同数据发送(如一个数组,按进程号取不同数据)
同时,通信模式往往是是大规模密集GPU系统的性能瓶颈,其主要原因是当前的但是目前的MPI算法没有考虑到现代GPU系统的一些特性。以DGXA100
为例子,
上图中简要描述了DGXA100
系统的架构。单节点有8个使用NVLINK
和NVSWITCH
互联的A100
GPU
。但是,没有为这种新型的以GPU
为主导的集群设计相关的MPI
通信算法,大多数现有的实现只是简单使用基于send-recv
方法来进行自动(应该是说MPI+CPU的通信算法)的通信。
因此,现代的密集GPU系统迫切需要新设计一种通信模式。
挑战
如何使用混合IPC-Advance
技术给现代密集GPU
系统创建一种高效的基于GPU
的自动通信算法是主要挑战.
能否利用密集GPU
系统的特性,例如:NVLink
,来激发对MPI算法的优化需求,从而充分利用这种高效连接(指的是高效的NVLink
)?
如何利用IPC
的零拷贝load-store
机制来设计GPU感知的IPC-Advance
所有集合操作?
能否优化依赖alltoall
实现FFT
和矩阵转置的高性能计算和深度学习的工作负载性能来提供良好的拓展性?
创新点
提出了混合 IPC-Advanced
的Alltoall
和Alltoallv
通信算法,以优化GPU
感知的mpi
Alltoallv
和Alltoallv
在不同密集GPU
平台上的性能。
提出了一种基于Kernel
和基于Memcpy
的IPC-Advanced
算法。
提出的IPC-Advanced
设计通过使用零拷贝load-store
IPC
机制提供了重叠节点内部和节点间通信的潜力
性能表现
micro-benchmark表现
在ThetaGPU@ALCF
系统上使用OSU-micro-benchmark suite
中的osu_alltoall
时,我们提出的设计与当前的设计相比:
在16个节点(128个GPU
)上,使用(16字节大小的)小消息时,我们提出的Alltoall
设计的可以获得12倍的加速。
在16个节点(128个GPU
)上,使用(1MB大小的)大消息时,我们提出的Alltoall
设计可以获得为20%的加速。
heFFTe
在ThetaGPU@ALCF
系统上,在heFFTe
中,与最先进的CUDA-aware
通信库相比,我们的设计的的性能为:
alltoall
通信的吞吐量为16倍alltoallv
通信的的吞吐量为28倍
DeepSpeed PSDNS
- 在
ThetaGPU@ALCF
系统中,使用8个节点(64个GPU
)上,在DeepSpeed
中我们提出的设计为OpenMPl
的吞吐量的59倍。
- 在
Lassen@LLNL
系统中,使用64个Lassen
节点(256个GPU
),在PSDNS
中,使用我们的设计可获得3.5倍的加速。
主要贡献
- 基于
OSU-micro-benchmark suite
的密集GPU系统MPI_Alltoall
和MPI_Alltoallv
的综合表征与评价,并于当前使用的先进库作比较。 - 提出一种高性能和可扩展的
Alltoallv
通信设计 - 在最多128GPU上的
FFT
应用heFFT
的Alltoall
Alltoallv
, 最多64GPU
上的的深度学习应用DeepSpeed
的Alltoall
, 最多256GPU
上的高性能计算应用PSDNS
的Alltoall
这些项目上,将我们的设计与现在主流库进行对比分析
个人总结
文章主要针对当前使用大量GPU
的异构系统中的MPI
通信做优化,当前的算法没有考虑到类似使用NVLINK
之类的GPU
通信技术来加速使用MPI
的进程间信息交换。通过提出针对GPU
系统特别优化后的信息交换算法,可以极大加速异构应用进程间的信息交换速度,而目前异构应用(高性能计算、深度学习等)的瓶颈往往就是通信。打破这样的瓶颈就可以获得极大的应用性能提升,这也是工作的主要创新点。而实验结果也验证了这一点,可以获得超高的通信加速比。可以用于通信瓶颈的异构应用。