CN111124994B - 一种数据传输方法、装置、gpu及可读存储介质 - Google Patents
一种数据传输方法、装置、gpu及可读存储介质 Download PDFInfo
- Publication number
- CN111124994B CN111124994B CN201911204935.0A CN201911204935A CN111124994B CN 111124994 B CN111124994 B CN 111124994B CN 201911204935 A CN201911204935 A CN 201911204935A CN 111124994 B CN111124994 B CN 111124994B
- Authority
- CN
- China
- Prior art keywords
- path
- stream
- stream processor
- gpu
- determining
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 230000005540 biological transmission Effects 0.000 title claims abstract description 56
- 238000000034 method Methods 0.000 title claims abstract description 41
- 230000002452 interceptive effect Effects 0.000 claims abstract description 71
- 230000003993 interaction Effects 0.000 claims description 8
- 238000004590 computer program Methods 0.000 claims description 7
- 238000005516 engineering process Methods 0.000 claims description 7
- 230000006870 function Effects 0.000 description 14
- 238000010586 diagram Methods 0.000 description 13
- 230000015654 memory Effects 0.000 description 7
- 235000008694 Humulus lupulus Nutrition 0.000 description 2
- 238000004891 communication Methods 0.000 description 1
- 238000004883 computer application Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17306—Intercommunication techniques
- G06F15/17312—Routing techniques specific to parallel machines, e.g. wormhole, store and forward, shortest path problem congestion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17306—Intercommunication techniques
- G06F15/17331—Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17356—Indirect interconnection networks
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种数据传输方法、装置、GPU及可读存储介质,该方法中:GPU内流处理器之间通过Noc Router进行互连,在目标block的尺寸大于预设阈值时或具有数据相关性的并行任务需要在多个流处理器上运行时,分配N个流处理器支持目标block或并行任务;N为大于等于2的自然数;利用Noc Router传输各个流处理器之间的交互数据。该方法,可利用GPU内的Noc Router传输各个流处理器之间的交互数据,而无需借助GPU外部的DDR。如此,便可加快各个SM之间的数据传输,可提高GPU的运行速度。
Description
技术领域
本发明涉及计算机应用技术领域,特别是涉及一种数据传输方法、装置、GPU及可读存储介质。
背景技术
图形处理器,即GPU,其英文全称为Graphics Processing Unit,又称显示核心、视觉处理器、显示芯片或绘图芯片,是一种专门在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上运行绘图运算工作的微处理器。其用途是将计算机系统所需要的显示信息进行转换驱动,并向显示器提供行扫描信号,控制显示器的正确显示,是连接显示器和个人电脑主板的重要元件,也是“人机对话”的重要设备之一。
目前,GPU内流处理器(SM,Streaming Multiprocesser)支持的Blcok尺寸是有限制的。在特殊应用中如航天探测,超级计算等领域,需要用尺寸很大的Block,比如100*100的,现市面上的SM无法承受。因此,只能再次细分大尺寸的Block,使其在不同的SM上运行,不同SM之间通过DDR交互数据,DDR传输数据较慢,会影响GPU运行速度,同时还有不同SM之间的并行任务有数据相关性时的应用场景,此时通过外部DDR交互数据速率缓慢。
综上所述,如何有效地解决如何提高GPU运行速度等问题,是目前本领域技术人员急需解决的技术问题。
发明内容
本发明的目的是提供一种数据传输方法、装置、GPU及可读存储介质,以加快GPU内SM之间的数据传输,提高GPU运行速度。
为解决上述技术问题,本发明提供如下技术方案:
一种数据传输方法,应用于GPU,所述GPU内流处理器之间通过Noc Router进行互连,所述方法包括:
在目标block的尺寸大于预设阈值时或具有数据相关性的并行任务需要在多个流处理器上运行时,分配N个流处理器支持所述目标block或所述并行任务;所述N为大于等于2的自然数;
利用所述Noc Router传输各个所述流处理器之间的交互数据。
优选地,利用所述Noc Router传输各个所述流处理器之间的交互数据,包括:
确定第一流处理器需要发送所述交互数据至第二流处理器时,利用X-Y路由算法确定所述第一流处理器至所述第二流处理器的路由路径;
在所述路由路径上传输所述交互数据。
优选地,所述GPU内流处理器之间通过Noc Router进行互连,包括:
所述GPU内的所述流处理器之间通过所述Noc Router实现米字型互连;
相应地,利用所述Noc Router传输各个所述流处理器之间的交互数据,包括:
确定第三流处理器需要发送所述交互数据至第四流处理器时,利用米字型路由算法确定所述第三流处理器至所述第四流处理器的路由路径;
在所述路由路径上传输所述交互数据。
优选地,利用米字型路由算法确定所述第三流处理器至所述第四流处理器的路由路径,包括:
按照所述第三流处理器与所述第四流处理器的位置关系,确定出对角线路径和非对角线路径,所述非对角线路径为横向路径或纵向路径;
利用所述对角线路径和所述非对角线路径,构建所述路由路径;
在所述路由路径上传输所述交互数据。
优选地,按照所述第三流处理器与所述第四流处理器的位置关系,确定出对角线路径和非对角线路径,包括:
判断|a1-a0|≤|b1-b0|是否成立;其中,所述第三流处理器的位置坐标为(a0,b0),所述第四流处理器的位置坐标为(a1,b1);
如果是,将所述(a0,b0)至所述(a1,b1)方向,从所述自所述(a0,b0)开始的|a1-a0|个结点之间的连线确定为所述对角线路径;将沿着X方向((|b1-b0|)-(|a1-a0|))个结点之间的连线确定为所述横向路径;
如果否,将所述(a0,b0)至所述(a1,b1)方向,从所述自所述(a0,b0)开始的|b1-b0|个结点之间的连线确定为所述对角线路径;将沿着Y方向((|a1-a0|)-(|b1-b0|))个结点之间的连线确定为所述横向路径。
优选地,利用所述Noc Router传输各个所述流处理器之间的交互数据,包括:
在确定网络互连功能开启之后,利用所述Noc Router传输各个所述流处理器之间的交互数据;
在确定所述网络互连功能关闭之后,利用DDR传输所述交互数据。
优选地,利用所述Noc Router传输各个所述流处理器之间的交互数据,包括:
利用电路交换技术,在源流处理器内源Cache和目的流处理器内目的Cache之间形成直连通路;
利用所述直连通路,所述目的Cache直接访问所述源Cache,以获得所述交互数据。
一种数据传输装置,应用于GPU,所述GPU内流处理器之间通过Noc Router进行互连,所述装置包括:
流处理器分配模块,用于在目标block的尺寸大于预设阈值时或具有数据相关性的并行任务需要在多个流处理器上运行时,分配N个流处理器支持所述目标block或所述并行任务;所述N为大于等于2的自然数;
交互数据传输模块,用于利用所述Noc Router传输各个所述流处理器之间的交互数据。
一种GPU,包括:所述GPU内流处理器之间通过Noc Router进行互连;所述GPU执行所述计算机程序时实现如上述数据传输方法的步骤。
一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述数据传输方法的步骤。
在GPU中应用本发明实施例所提供的方法,该GPU内流处理器之间通过Noc Router进行互连,在目标block的尺寸大于预设阈值时或具有数据相关性的并行任务需要在多个流处理器上运行时,分配N个流处理器支持目标block或并行任务,N为大于等于2的自然数;利用Noc Router传输各个流处理器之间的交互数据。
在本方法中,GPU内的流处理器之间通过Noc Router互联,如此,各SM见的Cache(即高速缓存器)通过Noc Router连接起来,在逻辑上相当于将整个GPU内的Cache视为同一块Cache,可加快GPU内部各个SM之间的数据传输。具体的,在目标Block的尺寸大于预设阈值时或具有数据相关性的并行任务需要在多个流处理器上运行时,可分配N个流处理器支持目标block或并行任务。并且,在运行目标block或执行并行任务时,利用GPU内的NocRouter传输各个流处理器之间的交互数据,而无需借助GPU外部的DDR。如此,便可加快各个SM之间的数据传输,可提高GPU的运行速度。
相应地,本发明实施例还提供了与上述数据传输方法相对应的数据传输装置、GPU和可读存储介质,具有上述技术效果,在此不再赘述。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例中一种数据传输方法的实施流程图;
图2为本发明实施例中一种十字形连接SM的GPU示意图;
图3为本发明实施例中一种米字形连接SM的GPU示意图;
图4为本发明实施例中X-Y路由算法确定出的路由连接走向示意图;
图5为本发明实施例中一种米字型互联结构的细节示意图;
图6为本发明实施例中采用X-Y路由算法确定的路由路径示意图;
图7为本发明实施例中采用米字型路由算法确定的路由路径示意图;
图8为本发明实施例中Noc Router电路交换技术示意图;
图9为本发明实施例中一种数据传输装置的结构示意图;
图10为本发明实施例中一种GPU的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,在本说明书中诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
实施例一:
请参考图1,图1为本发明实施例中一种数据传输方法的流程图,该方法应用于GPU,GPU内流处理器之间通过Noc Router进行互连。其中,Noc即片上网络,英文全拼Network-on-Chip,Router即路由。需要说明的是,GPU内每两个流处理器可分别通过NocRouter进行互连,也可通过由Noc Router构成的路径进行连接。例如,流处理器a和流处理c之间,可直接利用Noc Router进行直接连接;也可先将流处理a和流处理器b直接连接,将流处理器b和流处理器c直接连接,然后通过流处理器a—流处理b—流处理c,这个路径实现流处理器a与流处理器c之间的间接连接。在本实施例中,对GPU的大小规模并不做限定,例如GPU的规模可为16或者32个SM(参考:目前业界最高性能英伟达V100有84个SM)。
该方法,包括:
S101、在目标block的尺寸大于预设阈值时或具有数据相关性的并行任务需要在多个流处理器上运行时,分配N个流处理器支持目标block或并行任务。
N为大于等于2的自然数。
其中,Block属于软件概念,即将数据相关性很强的线程(threads),划分在一个block内。即数个threads群组成一个block,同一个block中的threads可以同步,也可以通过shared memory通信。一个block只能在一个硬件SM上运行。
Block的尺寸即归属于该block的线程数量。需要说明的是,预设阈值可根据当前GPU内SM所支持的最大Block尺寸而定,例如,若该GPU的单个SM最大支持尺寸为32X32的block,则预设阈值可为32X32。
其中,目标block可具体为航天探测,超级计算等领域内构件的block。
S102、利用Noc Router传输各个流处理器之间的交互数据。
优选地,考虑到在实际应用中,并非所有的场景下block尺寸都较大,也并非所有的场景下不同SM之间的并行任务一定有数据相关性。为了增强GPU的灵活性,还可通过配置模型,确定是否开启网络互连功能。即,步骤S102可具体包括:
情况一:在确定网络互连功能开启之后,利用Noc Router传输各个流处理器之间的交互数据;
情况二、在确定网络互连功能关闭之后,利用DDR传输交互数据。
具体的,网络互连功能是否启动可具体为定义一个寄存器内的目标位来表征网络互连功能是否开启。如,该目标位为1,则开启网络互连功能;该目标位为0,则关闭网络互连功能。
其中,情况一,可对应于应用场景中block的尺寸都偏大,且同一个block内的各个线程需要进行数据交互。
情况二,则可对应于应用场景中block的尺寸都偏小,且对于尺寸偏大的block中的各个线程的数据交互不频繁或几乎不交互。
如情况一对应场景有:典型场景1:Block的实际需求尺寸是否过大(且Block内的线程需要共享数据),需进一步细分Block,用多个SM运行一个大的Block。典型场景2::不同Block之间需要共享数据(有数据相关性)的。此时选择配置CFG模块,选择开启网络互连功能。
如果各SM上运行的Block线程,是不需要共享数据的,或者是对计算速度要求不高的情况下,通过配置CFG模块,选择不开启网络互连功能。
在开启网络互连功能之后,整个GPU中的Cache(高速缓存器)逻辑上为统一编址的,对于每个SM中的Cache控制器而言,需要知道整个GPU中的Cache地址与Cache ID的对应关系。例如,Cache地址:0x000-0x0fff对应的是Cache ID=0,即SM ID=0;Cache地址:0x1000-0x1fff,对应的是Cache ID=1,即SM ID=1;Cache地址:0x2000-0x2fff,对应的是Cache ID=2,即SM ID=2。
从上文可知,GPU内的各个SM可采用直接连接也可采用间接连接,考虑到GPU内的SM的数量较多,若全部SM之间的连接均采用直连,会降低SM内Noc Router的性能。因此,在实际应用中,可设置GPU内的SM部分采用直接连接,部分采用间接连接的方式。具体的连接方式包括但不限于图2和图3所示样式。由于采用了间接连接,因此,在不同的SM之间传输数据时,可先确定出最近路由路径,再基于确定出的路由路径进行数据传输。
在GPU内的各个SM按照图2的十字型互联时,步骤S102可具体包括:
步骤一、确定第一流处理器需要发送交互数据至第二流处理器时,利用X-Y路由算法确定第一流处理器至第二流处理器的路由路径;
步骤二、在路由路径上传输交互数据。
为便于描述,下面将上述步骤结合起来进行说明。
当一个SM内的异构程序运行时,发现目的数据不在当前SM的Cache,则根据目的数据的地址,计算访问目的数据的最近路径,可采用传统的NoC Router常用的X-Y路由算法,即数据包先在X方向上传递,再在Y方向上传递,路由走向如图4所示。计算出路由路径之后,便可在该路由路径上传输交互数据。
优选地,考虑到十字形互联结果以及对应的X-Y路由算法确定出的路由路径较长,提出如图3所示的改进结构以及改进的米字型路由算法,以缩短路由路径。即,在GPU内的各个SM按照图3所示的米字型互联。具体的,请参考图5,图5为米字型互联结构的细节示意图。即,每一个SM与其相邻的(包括对角)的SM均实现直连。
相应地,GPU内的流处理器之间通过Noc Router实现米字型互连,步骤S102可具体为:
步骤一、确定第三流处理器需要发送交互数据至第四流处理器时,利用米字型路由算法确定第三流处理器至第四流处理器的路由路径;
步骤二、在路由路径上传输交互数据。
其中,利用米字型路由算法确定第三流处理器至第四流处理器的路由路径,具体包括:
步骤1、按照第三流处理器与第四流处理器的位置关系,确定出对角线路径和非对角线路径,非对角线路径为横向路径或纵向路径;
步骤2、利用对角线路径和非对角线路径,构建路由路径;
步骤3、在路由路径上传输交互数据。
也就是说,米字型路由算法确定路由路径时,先确定对角线路径,然后再确定非对角线路径。
需要说明的是,若仅存在对角线路径或仅存在非对角线路径时,则可直接将对角线路径或非对角线路径直接作为最终的路由路径。
具体的,在GPU中建立直角坐标系(x-y坐标系,x对应横向,y对应纵向)确定对角线路由路径和非对角线路由路径的过程,包括:
步骤a、判断|a1-a0|≤|b1-b0|是否成立;其中,第三流处理器的位置坐标为(a0,b0),第四流处理器的位置坐标为(a1,b1);
步骤b、如果是,将(a0,b0)至(a1,b1)方向,从自(a0,b0)开始的|a1-a0|个结点之间的连线确定为对角线路径;将沿着X方向((|b1-b0|)-(|a1-a0|))个结点之间的连线确定为横向路径;
步骤c、如果否,将(a0,b0)至(a1,b1)方向,从自(a0,b0)开始的|b1-b0|个结点之间的连线确定为对角线路径;将沿着Y方向((|a1-a0|)-(|b1-b0|))个结点之间的连线确定为横向路径。
为便于描述,下面将上述a、b和c3个步骤结合起来进行说明。
上述结点即指一个SM。
即,在米字型算法中,先走对角线,比如需要确定结点(a0,b0)至(a1,b1)之间的最短路由路径。可分具体的情况而定:
1)、当|a1-a0|<=|b1-b0|时,先沿着对角线方向,走|a1-a0|个结点,再沿着X方向走(|b1-b0|-|a1-a0|)个结点。
2)、当|a1-a0|>|b1-b0|时,先沿着对角线方向,走|b1-b0|个结点,再沿着Y方向走(|a1-a0|-(b1-b0))个结点。
可见,采用该米字型算法,总共需要经过的结点数目为|a1-a0|和|b1-b0|中的最大值。而传统路由X-Y路由算法,需经过的结点是|a1-a0|+|b1-b0|,即当目的Cache ID与本级Cache相隔较远时,米字型路由算法将加大的加快访问速度。
以具体的示例为例,请参考图6和图7,图6为本发明实施例中采用X-Y路由算法确定的路由路径示意图,图7为本发明实施例中采用米字型路由算法确定的路由路径示意图。
其中,路由路径为标粗线条。可见,传统X-Y路由算法,SM0需要5级跳跃才可以访问SM14,而采取改进后的米字型路由算法,SM0只需要3级跳跃即可访问SM14。
确定出路由路径之后,便可通过利用路径传输交互数据,实现不同的SM之间在GPU内部即实现数据传输。
优选地,无论是十字形连接架构还是米字型连接架构,为了进一步降低NocRouter的工作量,提高交互数据传输效率。还可采用电路交换技术。在当前SM的Cache和目的SM的Cache形成直连通路,从而降低Noc Router的工作量。具体的,即利用Noc Router传输各个流处理器之间的交互数据,包括:
步骤一、利用电路交换技术,在源流处理器内源Cache和目的流处理器内目的Cache之间形成直连通路;
步骤二、利用直连通路,目的Cache直接访问源Cache,以获得交互数据。
为便于描述,下面将上述两个步骤结合起来进行说明。
根据确定出的路由路径,采取电路交换技术,在当前SM(第一流处理器或第三流处理)的Cache和目的SM(第二流处理器或第四流处理器)的Cache形成直连通路,从而降低NocRouter的工作量,当前Cache可直接访问目的Cache,从而达到不同SM直接的Cache数据快速互相访问,避免了通过外部DDR进行通信,极大的加快数据处理速度。
具体的,可参照图8,图8为本发明实施例中Noc Router电路交换技术示意图。当计算最优路径完成之后,Noc Router接收CFG模块的配置信息,当前Noc Router的数据方向是从0到1时,Noc Router内部将0和1方向的总线(如图中加黑箭头所示),直连起来,每级NocRouter都采用这样的方式,则可将在原Cache和目的Cache之间形成直连通路,这样的方式降低Noc Router的设计复杂度,保证数据的吞吐量和传输延时。
需要说明的是,上文描述了由同一个目标block分割而得的若干个子block之间如何实现快速数据交互。在实际应用中,即便两个block不是一个较大尺寸分割而得的子block,这两个block若有数据交互需求,也可利用上述步骤S102所描述的交互数据传输方式实现快速数据传输。
在GPU中应用本发明实施例所提供的方法,该GPU内流处理器之间通过Noc Router进行互连,在目标block的尺寸大于预设阈值时或具有数据相关性的并行任务需要在多个流处理器上运行时,分配N个流处理器支持目标block或并行任务;N为大于等于2的自然数;利用Noc Router传输各个流处理器之间的交互数据。
在本方法中,GPU内的流处理器之间通过Noc Router互联,如此,各SM见的Cache(即高速缓存器)通过Noc Router连接起来,在逻辑上相当于将整个GPU内的Cache视为同一块Cache,可加快GPU内部各个SM之间的数据传输。具体的,在目标Block的尺寸大于预设阈值时或具有数据相关性的并行任务需要在多个流处理器上运行时,可分配N个流处理器支持目标block或并行任务。并且,在运行目标block或执行并行任务时,利用GPU内的NocRouter传输各个流处理器之间的交互数据,而无需借助GPU外部的DDR。如此,便可加快各个SM之间的数据传输,可提高GPU的运行速度。
实施例二:
相应于上面的方法实施例,本发明实施例还提供了一种数据传输装置,下文描述的数据传输装置与上文描述的数据传输方法可相互对应参照。
参见图9所示,该装置应用于GPU,GPU内流处理器之间通过Noc Router进行互连,装置包括:
流处理器分配模块101,用于在目标block的尺寸大于预设阈值时或具有数据相关性的并行任务需要在多个流处理器上运行时,分配N个流处理器支持目标block或并行任务;N为大于等于2的自然数;
交互数据传输模块102,用于利用Noc Router传输各个流处理器之间的交互数据。
在GPU中应用本发明实施例所提供的装置,该GPU内流处理器之间通过Noc Router进行互连,在目标block的尺寸大于预设阈值时或具有数据相关性的并行任务需要在多个流处理器上运行时,分配N个流处理器支持目标block或并行任务;N为大于等于2的自然数;利用Noc Router传输各个流处理器之间的交互数据。
在本装置中,GPU内的流处理器之间通过Noc Router互联,如此,各SM见的Cache(即高速缓存器)通过Noc Router连接起来,在逻辑上相当于将整个GPU内的Cache视为同一块Cache,可加快GPU内部各个SM之间的数据传输。具体的,在目标Block的尺寸大于预设阈值时或具有数据相关性的并行任务需要在多个流处理器上运行时,可分配N个流处理器支持目标block或并行任务。并且,在运行目标block或执行并行任务时,利用GPU内的NocRouter传输各个流处理器之间的交互数据,而无需借助GPU外部的DDR。如此,便可加快各个SM之间的数据传输,可提高GPU的运行速度。
在本发明的一种具体实施方式中,交互数据传输模块102,包括:
第一路由路径确定单元,用于确定第一流处理器需要发送交互数据至第二流处理器时,利用X-Y路由算法确定第一流处理器至第二流处理器的路由路径;
第一交互数据传输单元,用于在路由路径上传输交互数据。
在本发明的一种具体实施方式中,GPU内的流处理器之间通过Noc Router实现米字型互连;交互数据传输模块102,包括:
第二路由路径确定单元,用于确定第三流处理器需要发送交互数据至第四流处理器时,利用米字型路由算法确定第三流处理器至第四流处理器的路由路径;
第二交互数据传输单元,用于在路由路径上传输交互数据。
在本发明的一种具体实施方式中,第二路由路径确定单元,具体用于按照第三流处理器与第四流处理器的位置关系,确定出对角线路径和非对角线路径,非对角线路径为横向路径或纵向路径;利用对角线路径和非对角线路径,构建路由路径;在路由路径上传输交互数据。
在本发明的一种具体实施方式中,第二路由路径确定单元,具体用于判断|a1-a0|≤|b1-b0|是否成立;其中,第三流处理器的位置坐标为(a0,b0),第四流处理器的位置坐标为(a1,b1);
如果是,将(a0,b0)至(a1,b1)方向,从自(a0,b0)开始的|a1-a0|个结点之间的连线确定为对角线路径;将沿着X方向((|b1-b0|)-(|a1-a0|))个结点之间的连线确定为横向路径;
如果否,将(a0,b0)至(a1,b1)方向,从自(a0,b0)开始的|b1-b0|个结点之间的连线确定为对角线路径;将沿着Y方向((|a1-a0|)-(|b1-b0|))个结点之间的连线确定为横向路径。
在本发明的一种具体实施方式中,交互数据传输模块102,具体用于在确定网络互连功能开启之后,利用Noc Router传输各个流处理器之间的交互数据;在确定网络互连功能关闭之后,利用DDR传输交互数据。
在本发明的一种具体实施方式中,交互数据传输模块102,具体用于利用电路交换技术,在源流处理器内源Cache和目的流处理器内目的Cache之间形成直连通路;利用直连通路,目的Cache直接访问源Cache,以获得交互数据。
实施例三:
相应于上面的方法实施例,本发明实施例还提供了一种GPU,下文描述的一种GPU与上文描述的一种数据传输方法可相互对应参照。
参见图10所示,该GPU包括:
GPU内流处理器之间通过Noc Router进行互连;GPU执行计算机程序时实现如上述数据传输方法的步骤。
优选地,该GPU还可同时具有与DDR相连接的数据接口。
实施例四:
相应于上面的方法实施例,本发明实施例还提供了一种可读存储介质,下文描述的一种可读存储介质与上文描述的一种数据传输方法可相互对应参照。
一种可读存储介质,可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述方法实施例的数据传输方法的步骤。
该可读存储介质具体可以为U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可存储程序代码的可读存储介质。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
Claims (7)
1.一种数据传输方法,其特征在于,应用于GPU,所述GPU内流处理器之间通过NocRouter进行互连,所述方法包括:
在目标block的尺寸大于预设阈值时或具有数据相关性的并行任务需要在多个流处理器上运行时,分配N个流处理器支持所述目标block或所述并行任务;所述N为大于等于2的自然数;
利用所述Noc Router传输各个所述流处理器之间的交互数据;
其中,所述GPU内流处理器之间通过Noc Router进行互连,包括:
所述GPU内的所述流处理器之间通过所述Noc Router实现米字型互连;
相应地,利用所述Noc Router传输各个所述流处理器之间的交互数据,包括:
确定第三流处理器需要发送所述交互数据至第四流处理器时,利用米字型路由算法确定所述第三流处理器至所述第四流处理器的路由路径;
在所述路由路径上传输所述交互数据;
其中,利用米字型路由算法确定所述第三流处理器至所述第四流处理器的路由路径,包括:
按照所述第三流处理器与所述第四流处理器的位置关系,确定出对角线路径和非对角线路径,所述非对角线路径为横向路径或纵向路径;
利用所述对角线路径和所述非对角线路径,构建所述路由路径;
在所述路由路径上传输所述交互数据;
其中,按照所述第三流处理器与所述第四流处理器的位置关系,确定出对角线路径和非对角线路径,包括:
判断|a1-a0|≤|b1-b0|是否成立;其中,所述第三流处理器的位置坐标为(a0,b0),所述第四流处理器的位置坐标为(a1,b1);
如果是,将所述(a0,b0)至所述(a1,b1)方向,自所述(a0,b0)开始的|a1-a0|个结点之间的连线确定为所述对角线路径;将沿着X方向((|b1-b0|)-(|a1-a0|))个结点之间的连线确定为所述横向路径;
如果否,将所述(a0,b0)至所述(a1,b1)方向,自所述(a0,b0)开始的|b1-b0|个结点之间的连线确定为所述对角线路径;将沿着Y方向((|a1-a0|)-(|b1-b0|))个结点之间的连线确定为所述横向路径。
2.根据权利要求1所述的数据传输方法,其特征在于,利用所述Noc Router传输各个所述流处理器之间的交互数据,包括:
确定第一流处理器需要发送所述交互数据至第二流处理器时,利用X-Y路由算法确定所述第一流处理器至所述第二流处理器的路由路径;
在所述路由路径上传输所述交互数据。
3.根据权利要求1所述的数据传输方法,其特征在于,利用所述Noc Router传输各个所述流处理器之间的交互数据,包括:
在确定网络互连功能开启之后,利用所述Noc Router传输各个所述流处理器之间的交互数据;
在确定所述网络互连功能关闭之后,利用DDR传输所述交互数据。
4.根据权利要求1至3任一项所述的数据传输方法,其特征在于,利用所述Noc Router传输各个所述流处理器之间的交互数据,包括:
利用电路交换技术,在源流处理器内源Cache和目的流处理器内目的Cache之间形成直连通路;
利用所述直连通路,所述目的Cache直接访问所述源Cache,以获得所述交互数据。
5.一种数据传输装置,其特征在于,应用于GPU,所述GPU内流处理器之间通过NocRouter进行互连,所述装置包括:
流处理器分配模块,用于在目标block的尺寸大于预设阈值时或具有数据相关性的并行任务需要在多个流处理器上运行时,分配N个流处理器支持所述目标block或所述并行任务;所述N为大于等于2的自然数;
交互数据传输模块,用于利用所述Noc Router传输各个所述流处理器之间的交互数据;
其中,所述GPU内的所述流处理器之间通过所述Noc Router实现米字型互连;
所述交互数据传输模块,包括:
第二路由路径确定单元,用于确定第三流处理器需要发送所述交互数据至第四流处理器时,利用米字型路由算法确定所述第三流处理器至所述第四流处理器的路由路径;
第二交互数据传输单元,用于在所述路由路径上传输所述交互数据;
其中,第二路由路径确定单元,具体用于按照所述第三流处理器与所述第四流处理器的位置关系,确定出对角线路径和非对角线路径,所述非对角线路径为横向路径或纵向路径;
利用所述对角线路径和所述非对角线路径,构建所述路由路径;
在所述路由路径上传输所述交互数据;
其中,按照所述第三流处理器与所述第四流处理器的位置关系,确定出对角线路径和非对角线路径,包括:
判断|a1-a0|≤|b1-b0|是否成立;其中,所述第三流处理器的位置坐标为(a0,b0),所述第四流处理器的位置坐标为(a1,b1);
如果是,将所述(a0,b0)至所述(a1,b1)方向,自所述(a0,b0)开始的|a1-a0|个结点之间的连线确定为所述对角线路径;将沿着X方向((|b1-b0|)-(|a1-a0|))个结点之间的连线确定为所述横向路径;
如果否,将所述(a0,b0)至所述(a1,b1)方向,自所述(a0,b0)开始的|b1-b0|个结点之间的连线确定为所述对角线路径;将沿着Y方向((|a1-a0|)-(|b1-b0|))个结点之间的连线确定为所述横向路径。
6.一种GPU,其特征在于,包括:所述GPU内流处理器之间通过Noc Router进行互连;所述GPU执行计算机程序时实现如权利要求1至4任一项所述数据传输方法的步骤。
7.一种可读存储介质,其特征在于,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至4任一项所述数据传输方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911204935.0A CN111124994B (zh) | 2019-11-29 | 2019-11-29 | 一种数据传输方法、装置、gpu及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911204935.0A CN111124994B (zh) | 2019-11-29 | 2019-11-29 | 一种数据传输方法、装置、gpu及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111124994A CN111124994A (zh) | 2020-05-08 |
CN111124994B true CN111124994B (zh) | 2022-11-11 |
Family
ID=70496307
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911204935.0A Active CN111124994B (zh) | 2019-11-29 | 2019-11-29 | 一种数据传输方法、装置、gpu及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111124994B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7466701B2 (en) * | 2004-11-12 | 2008-12-16 | Stmicroelectronics S.R.L. | Routing procedure and system, corresponding network, such as a network on chip (NOC), and computer program product therefor |
CN108734623A (zh) * | 2017-04-18 | 2018-11-02 | 三星电子株式会社 | 在低功率结构中维护数据的系统和方法 |
WO2019090032A1 (en) * | 2017-11-03 | 2019-05-09 | Coherent Logix, Inc. | Memory network processor |
-
2019
- 2019-11-29 CN CN201911204935.0A patent/CN111124994B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7466701B2 (en) * | 2004-11-12 | 2008-12-16 | Stmicroelectronics S.R.L. | Routing procedure and system, corresponding network, such as a network on chip (NOC), and computer program product therefor |
CN108734623A (zh) * | 2017-04-18 | 2018-11-02 | 三星电子株式会社 | 在低功率结构中维护数据的系统和方法 |
WO2019090032A1 (en) * | 2017-11-03 | 2019-05-09 | Coherent Logix, Inc. | Memory network processor |
Also Published As
Publication number | Publication date |
---|---|
CN111124994A (zh) | 2020-05-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5224210A (en) | Method and apparatus for graphics pipeline context switching in a multi-tasking windows system | |
CN111062858B (zh) | 高效的提前渲染方法、装置及计算机存储介质 | |
CN106909333B (zh) | 显示屏的配屏方法及装置 | |
EP1894105B1 (en) | Command transfer controlling apparatus and command transfer controlling method | |
AU2008258132B2 (en) | Load balancing in multiple processor rendering systems | |
CN1952918A (zh) | 封包处理系统与方法 | |
US11928493B2 (en) | Sharing of FPGA board by multiple virtual machines | |
CN109902059B (zh) | 一种cpu与gpu之间的数据传输方法 | |
CN111630505A (zh) | 深度学习加速器系统及其方法 | |
GB2494257A (en) | Memory interface with a clock channel, command bus and address bus. | |
US8941669B1 (en) | Split push buffer rendering for scalability | |
EP3846036A1 (en) | Matrix storage method, matrix access method, apparatus and electronic device | |
CN109410117B (zh) | 图形处理器系统 | |
CN113849045B (zh) | 一种背板以及计算机设备 | |
CN111124994B (zh) | 一种数据传输方法、装置、gpu及可读存储介质 | |
CN114840339A (zh) | Gpu服务器、数据计算方法及电子设备 | |
CN112202600B (zh) | 一种多节点单主机与多主机通信自动切换装置及方法 | |
WO2020143794A1 (zh) | 显示控制系统和显示装置 | |
US8751723B2 (en) | Memory access control device, method and recording medium for simultaneously accessing horizontally or vertically consecutive unit data or unit data on vertically alternate lines in different modes | |
CN115994115B (zh) | 芯片控制方法、芯片组及电子设备 | |
CN115883022B (zh) | Dma传输控制方法、装置、电子设备及可读存储介质 | |
CN109976686B (zh) | 分布式显示系统及方法 | |
US11847049B2 (en) | Processing system that increases the memory capacity of a GPGPU | |
CN115048255A (zh) | 一种自动化测试方法、装置,主机及存储介质 | |
CN104580328A (zh) | 虚拟机迁移方法、装置及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |