摘要:
MPI (Message Passing Interface)专为节点密集型大规模计算集群设计, 然而, 随着MPI+CUDA (Compute Unified Device Architecture)应用程序以及计算节点拥有GPU的计算机集群的出现, 类似于MPI的传统通信库已无法满足. 而在机器学习领域, 也面临着同样的挑战, 如Caff以及CNTK (Microsoft CognitiveToolkit)的深度学习框架, 由于训练过程中, GPU会缓存庞大的数据量, 而大部分机器学习训练的优化算法具有迭代性特点, 导致GPU间的通信数据量大, 通信频率高, 这些已成为限制深度学习训练性能提升的主要因素之一, 虽然推出了像NCCL (Nvidia Collective multi-GPU Communication Library)这种解决深度学习通信问题的集合通信库, 但也存在不兼容MPI等问题. 因此, 设计一种更加高效、符合当前新趋势的通信加速机制便显得尤为重要, 为解决上述新形势下的挑战, 本文提出了两种新型通信广播机制: (1)一种基于MPI_Bcast的管道链PC (Pipelined Chain)通信机制: 为GPU缓存提供高效的节点内外通信. (2)一种适用于多GPU集群系统的基于拓扑感知的管道链TA-PC (Topology-Aware Pipelined Chain)通信机制: 充分利用多GPU节点间的可用PCIe链路. 为了验证提出的新型广播设计, 分别在三种配置多样化的GPU集群上进行了实验: GPU密集型集群RX1、节点密集型集群RX2、均衡型集群RX3.实验中, 将新的设计与MPI+NCCL1 MPI_Bcast进行对比实验, 对于节点内通信和节点间的通信, 分别取得了14倍和16.6倍左右的性能提升; 与NCCL2的对比试验中, 小中型消息取得10倍左右的性能提升, 大型消息取得与其相当的性能水平, 同时TA-PC设计相比于PC设计, 在64GPU集群上实现50%左右的性能提升. 实验结果充分说明,提出的解决方案在可移植性以及性能方面有较大的优势.