一种单机多GPU通信的方法及装置制造方法及图纸

技术编号:15541813 阅读:212 留言:0更新日期:2017-06-05 11:02
本发明专利技术公开了单机多GPU通信的方法及装置,该方法包括:确定GPU直连关系数据;根据数据广播确定预定通信数据及需要进行通信的GPU,并将需要进行通信的GPU中包含预定通信数据的GPU划分为第一集合,其他GPU划分为第二集合;第一集合中的GPU根据GPU直连关系数据向第二集合中与其具有直连关系的GPU传输预定通信数据,并将第二集合中具有预定通信数据的GPU移到第一集合中,直到第二集合为空或第二集合中存在与第一集合中GPU不存在直连关系的剩余GPU;当第二集合中存在剩余GPU,CPU向剩余GPU传输预定通信数据;避免了所有GPU间的数据传输都要经过CPU而造成CPU成为瓶颈。

Method and device for single machine multi GPU communication

The invention discloses a method and a device for multi GPU communication, the method includes determining a GPU direct relationship according to the data broadcasting data; determining a predetermined communication data and the need for the communication of GPU, and will need to communicate in GPU contains a predetermined data communication GPU is divided into a first set, a collection of other GPU divided into second GPU; the transmission in the first set GPU set to second according to the GPU direct relationship in the data and has direct relationship between predetermined communication data, and the second set has a predetermined data communication GPU moved to the first set, until the second set is empty or second sets in the first set and the remaining GPU GPU there is no direct relationship. When there is a residual; second GPU collection, CPU GPU transmission to remaining predetermined communication data; avoid all data transfer between the GPU to go through the CPU caused CPU to become Bottleneck.

【技术实现步骤摘要】
一种单机多GPU通信的方法及装置
本专利技术涉及数据处理
,特别涉及一种单机多GPU通信的方法及装置。
技术介绍
自从2006年英伟达(NVIDIA)公司推出图形处理器G80(包含了128个流式多处理器)以来,图形处理器(GPU,GraphicProcessingUnit)在某些大规模并行计算的应用上,相对于CPU来说性能提高可达100倍以上。GPU拥有更多的晶体管,用于数据处理而不是像CPU那样去处理数据cache和指令控制,这意味着GPU具有巨大的并行计算能力。GPU众核处理器计算资源密度更高,具有更高的计算性能,双精性能超过1TFlops。随着高性能计算应用软件的发展,应用对计算性能的需求越来越高,CPU+GPU异构协同计算相对于传统的CPU集群带来了更高的性能、更低的成本等优势,越来越多的高性能计算应用软件采用CPU+GPU异构协同计算的计算模式。CPU+GPU异构协同计算架构如图1所示,在一个计算节点内采用了CPU+GPU异构的计算方式。在某些计算量非常巨大的应用场景中,如深度学习神经网络的训练,多个GPU必须协调工作,因此多GPU间的数据传输速度对整个应用的性能影响非常大。如何在现有的硬件架构基础上完成高效的数据传输是一个难题。
技术实现思路
本专利技术的目的是提供一种单机多GPU通信的方法及装置,利用GPUDirect技术,避免了所有GPU间的数据传输都要经过CPU而造成CPU成为瓶颈,同时根据具体的硬件拓扑进行合理的路径规划,实现多GPU间的高速通信。为解决上述技术问题,本专利技术提供一种单机多GPU通信的方法,所述方法包括:对全部GPU进行检测,确定GPU直连关系数据;根据数据广播确定预定通信数据及需要进行通信的GPU,并将需要进行通信的GPU中包含所述预定通信数据的GPU划分为第一集合,不包含所述预定通信数据的GPU划分为第二集合;所述第一集合中的GPU根据所述GPU直连关系数据向所述第二集合中与其具有直连关系的GPU传输所述预定通信数据,在完成数据传输后,将所述第二集合中具有所述预定通信数据的GPU移动到所述第一集合中,直到所述第二集合为空或者所述第二集合中存在与所述第一集合中GPU不存在直连关系的剩余GPU为止;当所述第二集合中存在所述剩余GPU时,CPU向所述剩余GPU传输所述预定通信数据。可选的,对全部GPU进行检测,确定GPU直连关系数据,包括:利用双重循环遍历所有2块GPU的组合,得到任意2个GPU间是否存在直连关系的数据表。可选的,具有直连关系的两个GPU之间通过GPUDirect技术进行数据传输。可选的,CPU向所述剩余GPU传输所述预定通信数据,包括:在timestep时所述第一集合中的预定GPU将所述预定通信数据传输到CPU的内存,并从所述内存中将所述预定通信数据传输到所述剩余GPU内。本专利技术还提供一种单机多GPU通信的装置,包括:直连关系检测模块,用于对全部GPU进行检测,确定GPU直连关系数据;集合划分模块,用于根据数据广播确定预定通信数据及需要进行通信的GPU,并将需要进行通信的GPU中包含所述预定通信数据的GPU划分为第一集合,不包含所述预定通信数据的GPU划分为第二集合;直连数据传输模块,用于所述第一集合中的GPU根据所述GPU直连关系数据向所述第二集合中与其具有直连关系的GPU传输所述预定通信数据,在完成数据传输后,所述第二集合中具有所述预定通信数据的GPU将移动到所述第一集合中,直到所述第二集合为空或者所述第二集合中存在与所述第一集合中GPU不存在直连关系的剩余GPU为止;CPU数据传输模块,用于当所述第二集合中存在所述剩余GPU时,CPU向所述剩余GPU传输所述预定通信数据。可选的,所述直连关系检测模块具体为利用双重循环遍历所有2块GPU的组合,得到任意2个GPU间是否存在直连关系的数据表的模块。可选的,直连数据传输模块包括:直连数据传输单元,用于所述第一集合中的GPU根据所述GPU直连关系数据向所述第二集合中与其具有直连关系的GPU通过GPUDirect技术传输所述预定通信数据。可选的,CPU数据传输模块具体为当所述第二集合中存在所述剩余GPU且在timestep时,所述第一集合中的预定GPU将所述预定通信数据传输到CPU的内存,并从所述内存中将所述预定通信数据传输到所述剩余GPU内的模块。本专利技术所提供的一种单机多GPU通信的方法,该方法包括:确定GPU直连关系数据;根据数据广播确定预定通信数据及需要进行通信的GPU,并将需要进行通信的GPU中包含预定通信数据的GPU划分为第一集合,其他GPU划分为第二集合;第一集合中的GPU根据GPU直连关系数据向第二集合中与其具有直连关系的GPU传输预定通信数据,并将第二集合中具有预定通信数据的GPU移到第一集合中,直到第二集合为空或第二集合中存在与第一集合中GPU不存在直连关系的剩余GPU;当第二集合中存在剩余GPU,CPU向剩余GPU传输预定通信数据;可见,该方法利用GPUDirect技术,避免了所有GPU间的数据传输都要经过CPU而造成CPU成为瓶颈,同时根据具体的硬件拓扑进行合理的路径规划,实现多GPU间的高速通信;本专利技术还提供一种单机多GPU通信的装置,具有上述有益效果,在此不再赘述。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。图1为本专利技术实施例所提供的CPU+GPU异构协同计算架构示意图;图2为本专利技术实施例所提供的单机多GPU通信的方法的流程图;图3为本专利技术实施例所提供的多GPU通信路径规划示意图;图4为本专利技术实施例所提供的单机多GPU通信的系统的结构框图。具体实施方式本专利技术的核心是提供一种单机多GPU通信的方法及装置,利用GPUDirect技术,避免了所有GPU间的数据传输都要经过CPU而造成CPU成为瓶颈,同时根据具体的硬件拓扑进行合理的路径规划,实现多GPU间的高速通信。为使本专利技术实施例的目的、技术方案和优点更加清楚,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。本实施例利用GPU直连不经过CPU的方法实现一个计算节点上多个GPU之间的高速通信,从而可以避免所有GPU间的数据传输都要经过CPU而造成CPU成为瓶颈;并且根据不同的硬件拓扑结构选择合适的通信路径,达到计算性能的最优化。该方法的控制过程可以在GPU众核处理器中实现。其中,GPU众核处理器拥有超强的计算能力,主要用于核心任务的计算。具体请参考图2,图2为本专利技术实施例所提供的单机多GPU通信的方法的流程图;所述方法可以包括:S100、对全部GPU进行检测,确定GPU直连关系数据;具体的,检测全部GPU的硬件连接,从而确定GPU直连关系数据。即确定具有直连关系的GPU。该GPU直连关系数据可以以表格的形式存储,本文档来自技高网...
一种单机多GPU通信的方法及装置

【技术保护点】
一种单机多GPU通信的方法,其特征在于,所述方法包括:对全部GPU进行检测,确定GPU直连关系数据;根据数据广播确定预定通信数据及需要进行通信的GPU,并将需要进行通信的GPU中包含所述预定通信数据的GPU划分为第一集合,不包含所述预定通信数据的GPU划分为第二集合;所述第一集合中的GPU根据所述GPU直连关系数据向所述第二集合中与其具有直连关系的GPU传输所述预定通信数据,在完成数据传输后,将所述第二集合中具有所述预定通信数据的GPU移动到所述第一集合中,直到所述第二集合为空或者所述第二集合中存在与所述第一集合中GPU不存在直连关系的剩余GPU为止;当所述第二集合中存在所述剩余GPU时,CPU向所述剩余GPU传输所述预定通信数据。

【技术特征摘要】
1.一种单机多GPU通信的方法,其特征在于,所述方法包括:对全部GPU进行检测,确定GPU直连关系数据;根据数据广播确定预定通信数据及需要进行通信的GPU,并将需要进行通信的GPU中包含所述预定通信数据的GPU划分为第一集合,不包含所述预定通信数据的GPU划分为第二集合;所述第一集合中的GPU根据所述GPU直连关系数据向所述第二集合中与其具有直连关系的GPU传输所述预定通信数据,在完成数据传输后,将所述第二集合中具有所述预定通信数据的GPU移动到所述第一集合中,直到所述第二集合为空或者所述第二集合中存在与所述第一集合中GPU不存在直连关系的剩余GPU为止;当所述第二集合中存在所述剩余GPU时,CPU向所述剩余GPU传输所述预定通信数据。2.根据权利要求1所述的方法,其特征在于,对全部GPU进行检测,确定GPU直连关系数据,包括:利用双重循环遍历所有2块GPU的组合,得到任意2个GPU间是否存在直连关系的数据表。3.根据权利要求2所述的方法,其特征在于,具有直连关系的两个GPU之间通过GPUDirect技术进行数据传输。4.根据权利要求3所述的方法,其特征在于,CPU向所述剩余GPU传输所述预定通信数据,包括:在timestep时所述第一集合中的预定GPU将所述预定通信数据传输到CPU的内存,并从所述内存中将所述预定通信数据传输到所述剩余GPU内。5.一种单机多GPU通信的装置,其特征在于,包括:直连关系检测模块,用于对全部GPU进行检测,...

【专利技术属性】
技术研发人员:张清龚湛宋书涛
申请(专利权)人:郑州云海信息技术有限公司
类型:发明
国别省市:河南,41

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1