CN116302504A - 线程块的处理系统、方法及相关设备 - Google Patents
线程块的处理系统、方法及相关设备 Download PDFInfo
- Publication number
- CN116302504A CN116302504A CN202310165825.8A CN202310165825A CN116302504A CN 116302504 A CN116302504 A CN 116302504A CN 202310165825 A CN202310165825 A CN 202310165825A CN 116302504 A CN116302504 A CN 116302504A
- Authority
- CN
- China
- Prior art keywords
- computing unit
- data
- thread block
- thread
- processed
- 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.)
- Pending
Links
- 238000012545 processing Methods 0.000 title claims abstract description 56
- 238000000034 method Methods 0.000 title claims description 21
- 230000015654 memory Effects 0.000 claims description 123
- 238000003780 insertion Methods 0.000 claims description 7
- 230000037431 insertion Effects 0.000 claims description 7
- 230000004044 response Effects 0.000 claims description 3
- 238000003672 processing method Methods 0.000 abstract description 8
- 238000004364 calculation method Methods 0.000 description 9
- 230000005540 biological transmission Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000012546 transfer Methods 0.000 description 3
- 230000001934 delay Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Multi Processors (AREA)
Abstract
本申请实施例提供一种线程块的处理系统、方法及相关设备,所述处理系统包括:用于运行所述第一子线程块的第一计算单元,用于运行所述第二子线程块的第二计算单元;所述第一计算单元用于获取所述线程块的待处理数据,所述第二计算单元用于根据所述第一计算单元获取的所述待处理数据执行所述线程块的处理任务。本申请实施例提供的线程块的处理系统可以有效的减小加载待处理数据的时间延迟,尤其是减小从外部存储空间加载待处理数据的时间延迟,提高线程块的处理效率。
Description
技术领域
本发明实施例涉及数据计算领域,具体涉及一种线程块的处理系统、方法及相关设备。
背景技术
图形处理器(Graphics Processor Unit,GPU)是一种专门进行图像和图形相关运算任务的微处理器,由于其高并行处理能力,在进行数据块并行处理算法上具有较大的优势。
图形处理器在进行并行的数据处理之前,通常需要将大量的数据从外部存储空间加载到本地存储空间,例如,将数据从位于图形处理器外部的主存储器(global memory)加载到图形处理器内部的流多处理器(Streaming MultiProcessor,SM)的数据共享空间。
然而,从外部存储空间加载数据的时间延迟是非常大的,会严重影响图形处理器的执行效率。因此,如何提供一种任务处理系统,以提高图形处理器的执行效率,成为了本领域技术人员亟需解决的技术问题。
发明内容
有鉴于此,本申请实施例提供一种线程块的处理系统、方法及相关设备,能够减少加载待处理数据的时间延迟,尤其是减小从外部存储空间加载待处理数据的时间延迟,提高线程块的处理效率。
为实现上述目的,本申请实施例提供如下技术方案。
第一方面,本发明实施例提供一种线程块的处理系统,所述线程块包括分解的第一子线程块与第二子线程块,所述处理系统包括:
用于运行所述第一子线程块的第一计算单元,用于运行所述第二子线程块的第二计算单元;
所述第一计算单元用于获取所述线程块的待处理数据,所述第二计算单元用于根据所述第一计算单元获取的所述待处理数据执行所述线程块的处理任务。
可选的,所述第一计算单元还用于将获取的所述待处理数据加载到所述第二计算单元。
可选的,所述第一计算单元包括:
第一线程束调度模块,用于接收所述第二计算单元发出的指令调度请求,所述指令调度请求用于指示在所述第一线程束调度模块的指令队列中插入远程加载指令;
第一本地共享内存,用于根据所述远程加载指令的指令信息,将预先存储在所述第一本地共享内存的所述待处理数据发送至所述第二计算单元。
可选的,所述第二计算单元包括:
第二线程束调度模块,用于向所述第一计算单元发送指令调度请求,以及向第二本地共享内存发送远程写入请求指令;
第二本地共享内存,用于根据所述远程写入请求指令的指令信息,等待来自所述第一计算单元的数据写入。
可选的,所述第一计算单元与所述第二计算单元分别为位于同一并行处理器的独立运行的计算单元。
可选的,所述待处理数据存储于位于所述并行处理器外部的存储空间。
可选的,所述并行处理器为图形处理器。
第二方面,本申请实施例还提供一种线程块的处理方法,应用于并行处理器,所述方法包括:
将所述线程块至少分解为第一子线程块与第二子线程块,其中,所述第一子线程块用于获取所述线程块的待处理数据,所述第二子线程块用于根据所述第一子线程块获取的所述待处理数据执行所述线程块的任务;
将所述第一子线程块分配给第一计算单元,将所述第二子线程块分配给第二计算单元。
可选的,所述第一计算单元与所述第二计算单元分别为位于同一并行处理器的独立运行的计算单元,所述待处理数据存储于位于所述并行处理器外部的存储空间。
可选的,还包括:所述第一计算单元获取所述线程块的待处理数据,以及将所述待处理数据加载到所述第二计算单元。
可选的,所述第一计算单元将所述待处理数据加载到所述第二计算单元的步骤包括:
响应于所述第二计算单元发出的指令调度请求,在所述第一计算单元的线程束调度模块的指令队列中插入远程加载指令;
根据所述远程加载指令的指令信息,所述第一计算单元的线程束调度模块通知所述第一计算单元的本地共享内存向所述第二计算单元的本地共享内存发送所述待处理数据。
第三方面,本申请实施例还提供一种处理器,包括所述线程块的处理系统。
第四方面,本申请实施例还提供一种电子设备,包括所述处理器。
本发明实施例提供了一种线程块的处理系统、方法及相关设备,所述系统中,将待处理线程块至少分解为两个子线程块,其中第一子线程块用于获取所述线程块的待处理数据,所述第二子线程块用于根据所述第一子线程块获取的所述待处理数据执行所述线程块的任务。可以看出,本实施例提供的线程块的处理系统可以有效的减小加载待处理数据的时间延迟,尤其是减小从外部存储空间加载待处理数据的时间延迟,提高线程块的处理效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为一种计算任务的分解方式示意图;
图2为一种包含有多个计算单元的图形处理器结构示意图;
图3为本申请实施例提供的线程块处理系统的结构示意图;
图4为本申请实施例提供的线程块处理方法的流程图;
图5为本申请实施例提供的线程块处理方法的流程图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
可以理解的是,并行处理器(例如图形处理器)在并行处理一个计算任务时,可以将计算任务分解为相应的任务项,进而使得并行处理器中用于进行数据处理的各部件基于各个任务项执行相应的计算。
图1示例性的示出了一种计算任务的分解方式。来自于上层软件驱动(softwaredriver)下发的任务包(task packet)经过任务分发单元(task dispatch unit)的分发后,以线程块(thread block)的形式分配到并行处理器的各个可以独立运行的计算单元,例如分配到图形处理器内部的各个流多处理器(streaming multiprocessor,SM)。其中,图形处理器可以为通用图形处理器(general purpose graphics processing unit,GPGPU),通用图形处理器是一种特殊的图形处理器,更加倾向于通用而非图形的渲染,通用图形处理器内部拥有大量的流多处理器硬件单元,流多处理器是通用图形处理器中执行任务的硬件单元。具体的,在流多处理器的内部,线程块被拆分为多个线程束(thread warp),以供调度执行。线程束是图形处理器中可供调度的最小单元,线程束包括多个捆绑在一起的线程(thread),线程是图形处理器中最小的执行对象,该多个捆绑在一起的线程共同执行相同的指令,区别在于每个线程操作的数据会有所不同。上述模式也被称作单指令多线程(Single Instruction Multiple Thread,SIMT)架构,即线程束中的线程都是执行相同的指令,进一步的,线程块中的所有的线程也执行相同的指令,区别在于每个线程操作的数据会有不同。同一个线程块中的每一个线程束完成整个任务的一部分,线程块内所有线程束共同合作完成整个任务。
图2示例性的示出了一种包含有多个计算单元的图形处理器100的结构示意图,如图所示,所述图形处理器100包括:流多处理器110、第二级缓存(L2 cache)120以及全局共享内存(global share memory)130。具体在一个流多处理器110中进一步包括:线程束调度模块(warp scheduler)111、寄存器(register)113、计算资源(compute resource)114、本地共享内存(local share memory)115以及第一级缓存(L1 cache)116。
线程束在进行数据计算之前通常需要执行大量的加载外部数据的操作,以将线程束后续可能会用到的数据从位于图形处理器100外部的存储空间加载到位于图形处理器100内部的存储空间。具体的,后续可能会用到的数据先被从外部内存(global memory)200加载到线程束所在的本地共享内存115中,线程束后续可以从本地共享内存115将需要的数据搬运到线程束所对应的寄存器113中,以供线程束进行数据计算。并且在上述数据被从外部内存200加载到线程束所在的本地共享内存115的过程中,被加载的数据并不是直接从外部内存200加载到本地共享内存115,而是需要先从外部内存200加载到第二级缓存120,然后由第二级缓存120加载到第一级缓存116,最后由第一级缓存116加载到本地共享内存115。上述每一步加载过程都将会产生时间延迟,数据被从外部内存200加载到线程束所对应的寄存器113的过程所产生的时间延迟是上述各个加载步骤的时间延迟的总和。
可以看出,线程束从外部存储空间加载数据的操作将会导致较大的时间延迟,并且由于线程束中指令的执行是串行的,即线程束在进行数据计算的时候,如果后续有从外部内存加载数据的操作,那么该加载数据的操作无法与数据计算操作同时进行,只能等前面的数据计算操作做完后再进行数据加载操作。线程束的这种指令串行执行特征使得线程束中数据计算操作和外部数据加载操作之间不能很好的隐藏各自的时间延迟,这将进一步影响线程束的执行效率。
针对上述问题,本发明实施例提供了一种线程块的处理系统、方法及相关设备,本发明实施例将一个线程块分解为第一子线程块和第二子线程块,第一子线程被加载到第一计算单元,用于获取所述线程块的待处理数据,第二子线程块被加载到第二计算单元,用于从所述第一计算单元中加载所述待处理数据,并执行所述线程块的处理任务。
可以看出,本发明实施例提供的线程块的处理系统可以减小线程块内线程束从外部存储空间加载数据的时间延迟,提高线程束的执行效率。
下面将对本发明实施例提供的线程块的处理系统进行详细介绍。
在可选实现中,图3示出了本发明实施例提供的线程块的处理系统的结构示意图,所述线程块包括分解的第一子线程块与第二子线程块,所述处理系统包括:第一计算单元110a和第二计算单元110b。其中,所述第一计算单元110a用于运行所述第一子线程块,所述第二计算单元110b用于运行所述第二子线程块。所述第一计算单元110a用于获取所述线程块的待处理数据,所述第二计算单元110b用于根据所述第一计算单元110a获取的所述待处理数据执行所述线程块的处理任务。
在本实施例中,为了提高任务的执行效率,一个线程块被分解为两个子线程块,第一子线程块和第二子线程块,每个子线程块完成整个线程块任务中的部分任务。具体在本实施例中,第一子线程块用于实现从外部内存获取所述线程块的待处理数据的任务,第二子线程块用于实现处理所述第一子线程块获取的待处理数据的任务。可以理解,在其他的一些示例中,一个线程块还可以被分解为更多的子线程块,各个子线程块相互协作完成整个线程块所对应的任务。
所述第一计算单元110a和第二计算单元110b可以为并行处理器中的可以独立运行的计算单元,作为一种示例,本实施例中所述第一计算单元110a和第二计算单元110b分别为位于同一个图形处理器内的流多处理器。流多处理器为图形处理器内可以独立运行的计算单元,图形处理器内的流多处理器的数量可以从几十个到几万个不等。
所述第一计算单元110a用于获取所述线程块的待处理数据。所述线程块内的各个线程束在进行数据计算之前通常需要执行大量的加载数据的操作,线程束所加载的数据也被称之为待处理数据。待处理数据通常存储在图形处理器的外部,所述第一计算单元110a需要从外部存储空间获取待处理数据。作为一种可选的示例,参见图2和图3,所述待处理数据存储在外部内存200中,外部内存200位于图形处理器100的外部,可以使多个图形处理器100之间共享数据,或者可以使图形处理器100与CPU之间共享数据。所述第一计算单元110a从外部内存200获取待处理数据可能需要经过多次数据加载过程,例如在一个示例中,待处理数据由外部内存200加载到第二级缓存120,然后由第二级缓存120加载到第一级缓存116,最后由第一级缓存116加载到第一计算单元110a的本地共享内存115a。
所述第一计算单元110a还用于将获取的所述待处理数据加载到所述第二计算单元110b。在一个可选的示例中,存储于外部内存200的待处理数据被所述第一计算单元110a取得后,可以先暂时存储在第一计算单元110a的本地共享内存115a,第一计算单元110a可以根据第二计算单元110b的请求将预先存储在本地共享内存115a中的待处理数据加载到所述第二计算单元110b。
在一个可选的示例中,所述第一计算单元110a进一步包括:线程束调度模块111a、寄存器113a、计算资源114a、本地共享内存115a以及第一级缓存116a。
所述线程束调度模块111a用于接收指令调度请求,所述指令调度请求用于指示在所述线程束调度模块111a的指令队列中插入远程加载指令。
所述指令调度请求由第二计算单元110b发出,具体的,可以由第二计算单元110b的线程束调度模块111b发出,即第二计算单元110b的线程束调度模块111b向第一计算单元110a的线程束调度模块111a发出指令调度请求。
所述远程加载指令用于指示所述第一计算单元110a的本地共享内存115a读取预先存储在本地共享内存115a的待处理数据,并将所述待处理数据发送至第二计算单元110b,即将预先存储在所述本地共享内存115a的所述待处理数据加载到所述第二计算单元110b,具体的,可以发送至所述第二计算单元110b的本地共享内存115b的指定地址。
所述本地共享内存115a为第一计算单元110a的数据共享空间,所述第一计算单元110a中的各个线程束之间可以通过本地共享内存115a共享数据。所述本地共享内存115a根据所述远程加载指令的指令信息,读取预先存储在所述本地共享内存115a的待处理数据,并将所述待处理数据发送至所述第二计算单元110b,即将预先存储在所述本地共享内存115a的所述待处理数据发送至所述第二计算单元110b,具体的,可以发送至所述第二计算单元110b的本地共享内存115b的指定地址。
所述寄存器113a用于存放线程束执行任务所需的各类数据以及计算的结果。寄存器113a按照线程束进行分配,每一个线程束都有其对应的寄存器113a。在一些示例中,寄存器113a之间数据不能直接共享,需要通过本地共享内存115a进行传递。例如,有两个线程束,分别为线程束a与线程束b,线程束a与线程束b位于同一个计算单元,则线程束a对应的寄存器与线程束b对应的寄存器之间数据不能共享。线程束a与线程束b之间如果需要共享数据,则需通过本地共享内存115a实现。线程束a和线程束b均可以读取和写入本地共享内存115a。若线程束b需要加载线程束a的对应的寄存器的数据,需要线程束a将其寄存器内的数据写入本地共享内存115a,然后线程束b从本地共享内存115a中对应的地址将由线程束a寄存器写入的数据加载到线程束b对应的寄存器。
所述计算资源114a包括乘法、加法等一系列数学运算的单元。
所述第二计算单元110b用于根据所述第一计算单元110a获取的所述待处理数据执行所述线程块的处理任务。在一个可选的示例中,所述第二计算单元110b进一步包括:线程束调度模块111b、寄存器113b、计算资源114b、本地共享内存115b以及第一级缓存116b。
所述线程束调度模块111b用于向所述第一计算单元110a发送指令调度请求,所述指令调度请求用于指示在线程束调度模块111a的指令队列中插入远程加载指令。具体的,所述线程束调度模块111b向所述第一计算单元110a的线程束调度模块111a发送指令调度请求,所述指令调度请求用于指示在所述第一计算单元110a的线程束调度模块111a的指令队列中插入远程加载指令。
所述线程束调度模块111b还用于向本地共享内存115b发送远程写入请求(ST)指令。所述远程写入请求指令用于指示所述本地共享内存115b等待来自第一计算单元的110a的数据写入,具体的,可以为来自第一计算单元的110a的本地共享内存115a的数据写入。
所述本地共享内存115b为第二计算单元110b的数据共享空间,所述第二计算单元110b中的各个线程束之间可以通过本地共享内存115b共享数据。所述本地共享内存115b根据所述远程写入请求指令的指令信息,等待来自第一计算单元的110a的数据写入,具体的,可以为来自第一计算单元的110a的本地共享内存115a的数据写入。
所述寄存器113b用于存放线程束执行任务所需的各类数据以及计算的结果。寄存器113b按照线程束进行分配,每一个线程束都有其对应的寄存器113b。类似于寄存器113a,寄存器113b之间数据也不能直接共享,需要通过本地共享内存115b进行传递。
所述计算资源114b包括乘法、加法等一系列数学运算的单元。
本实施例提供的线程块的处理系统包括两个独立的计算单元,其中第一计算单元用于获取线程块的待处理数据,第二计算单元用于根据所述第一计算单元获取的所述待处理数据执行所述线程块的处理任务。具体的,当第二计算单元上的线程束在执行密集的数据计算时,第一计算单元上的线程束可以为第二计算单元的正在执行数据计算的线程束提前加载一些后续需要的共享数据,上述提前加载的共享数据被存储在第一计算单元的本地共享内存,当第二计算单元上的线程束执行完密集的数据计算后,可以将上述共享数据拷贝到第二计算单元的本地共享内存对应的地址上,以供第二计算单元调用。计算单元中本地共享内存间的数据传输时间延迟要比从外部存储空间加载数据的时间延迟低很多。本实施中第一计算单元加载外部数据,第二计算单元可以利用第一计算单元预先加载的数据进行计算,两个计算单元协同工作,共同完成线程块的处理任务,可以有效的减小加载待处理数据的时间延迟,尤其是减小从外部存储空间加载待处理数据的时间延迟,提高线程块的处理效率。
可以理解的是,本申请实施例中仅以一个线程块被分解为两个子线程块为例进行说明,在其他的一些情况中,一个线程块还可以根据实际的需求被分解为更多的子线程块。可以理解,本申请实施例中仅以两个流多处理器之间的数据传输流程为例进行说明,即一个流多处理器对另外一个流多处理器的本地共享内存进行访问,在其他的一些情况中,也可以扩展为多个流多处理器之间的数据传输流程,即一个流多处理器对另外多个流多处理器的本地共享内存进行访问。
本公开实施例还提供一种线程块的处理方法,该处理方法例如用于并行处理器,该并行处理器例如为通用图形处理器,本公开的实施例对此不作限制。
在可选实现中,图4示出了本发明实施例提供的线程块处理方法的可选流程图,如图所示,所述方法包括:
步骤S310,将所述线程块至少分解为第一子线程块与第二子线程块,其中,所述第一子线程块用于获取所述线程块的待处理数据,所述第二子线程块用于根据所述第一子线程块获取的所述待处理数据执行所述线程块的任务。
在本实施例中,为了提高任务的执行效率,待处理线程块被分解为至少两个子线程块,第一子线程块和第二子线程块,每个子线程块完成整个线程块任务中的部分任务。具体在本实施例中,第一子线程块用于实现从外部内存获取所述线程块的待处理数据的任务,第二子线程块用于实现处理所述第一子线程块获取的待处理数据的任务。可以理解,在其他的一些示例中,一个线程块还可以被分解为更多的子线程块,各个子线程块相互协作完成整个线程块所对应的任务。
步骤S330,将所述第一子线程块分配给第一计算单元,将所述第二子线程块分配给第二计算单元。
所述第一计算单元110a和第二计算单元110b可以为并行处理器中的可以独立运行的计算单元,作为一种示例,本实施例中所述第一计算单元110a和第二计算单元110b分别为位于同一个图形处理器内的流多处理器。流多处理器为图形处理器内可以独立运行的计算单元,图形处理器内的流多处理器的数量可以从几十个到几万个不等。
在一个可选的示例中,所述第一计算单元110a进一步包括:线程束调度模块111a、寄存器113a、计算资源114a、本地共享内存115a以及第一级缓存116a。
所述线程束调度模块111a用于接收指令调度请求,所述指令调度请求用于指示在所述线程束调度模块111a的指令队列中插入远程加载指令。
所述指令调度请求由第二计算单元110b发出,具体的,可以由第二计算单元110b的线程束调度模块111b发出,即第二计算单元110b的线程束调度模块111b向第一计算单元110a的线程束调度模块111a发出指令调度请求。
所述远程加载指令用于指示所述第一计算单元110a的本地共享内存115a读取预先存储在本地共享内存115a的待处理数据,并将所述待处理数据发送至第二计算单元110b,即将预先存储在所述本地共享内存115a的所述待处理数据加载到所述第二计算单元110b,具体的,可以发送至所述第二计算单元110b的本地共享内存115b的指定地址。
所述本地共享内存115a为第一计算单元110a的数据共享空间,所述第一计算单元110a中的各个线程束之间可以通过本地共享内存115a共享数据。所述本地共享内存115a根据所述远程加载指令的指令信息,读取预先存储在所述本地共享内存115a的待处理数据,并将所述待处理数据发送至所述第二计算单元110b,即将预先存储在所述本地共享内存115a的所述待处理数据发送至所述第二计算单元110b,具体的,可以发送至所述第二计算单元110b的本地共享内存115b的指定地址。
所述寄存器113a用于存放线程束执行任务所需的各类数据以及计算的结果。寄存器113a按照线程束进行分配,每一个线程束都有其对应的寄存器113a。在一些示例中,寄存器113a之间数据不能直接共享,需要通过本地共享内存115a进行传递。例如,有两个线程束,分别为线程束a与线程束b,线程束a与线程束b位于同一个计算单元,则线程束a对应的寄存器与线程束b对应的寄存器之间数据不能共享。线程束a与线程束b之间如果需要共享数据,则需通过本地共享内存115a实现。线程束a和线程束b均可以读取和写入本地共享内存115a。若线程束b需要加载线程束a的对应的寄存器的数据,需要线程束a将其寄存器内的数据写入本地共享内存115a,然后线程束b从本地共享内存115a中对应的地址将由线程束a寄存器写入的数据加载到线程束b对应的寄存器。
所述计算资源114a包括乘法、加法等一系列数学运算的单元。
所述第二计算单元110b用于根据所述第一计算单元110a获取的所述待处理数据执行所述线程块的处理任务。在一个可选的示例中,所述第二计算单元110b进一步包括:线程束调度模块111b、寄存器113b、计算资源114b、本地共享内存115b以及第一级缓存116b。
所述线程束调度模块111b用于向所述第一计算单元110a发送指令调度请求,所述指令调度请求用于指示在线程束调度模块111a的指令队列中插入远程加载指令。具体的,所述线程束调度模块111b向所述第一计算单元110a的线程束调度模块111a发送指令调度请求,所述指令调度请求用于指示在所述第一计算单元110a的线程束调度模块111a的指令队列中插入远程加载指令。
所述线程束调度模块111b还用于向本地共享内存115b发送远程写入请求指令。所述远程写入请求指令用于指示所述本地共享内存115b等待来自第一计算单元的110a的数据写入,具体的,可以为来自第一计算单元的110a的本地共享内存115a的数据写入。
所述本地共享内存115b为第二计算单元110b的数据共享空间,所述第二计算单元110b中的各个线程束之间可以通过本地共享内存115b共享数据。所述本地共享内存115b根据所述远程写入请求指令的指令信息,等待来自第一计算单元的110a的数据写入,具体的,可以为来自第一计算单元的110a的本地共享内存115a的数据写入。
所述寄存器113b用于存放线程束执行任务所需的各类数据以及计算的结果。寄存器113b按照线程束进行分配,每一个线程束都有其对应的寄存器113b。类似于寄存器113a,寄存器113b之间数据也不能直接共享,需要通过本地共享内存115b进行传递。
所述计算资源114b包括乘法、加法等一系列数学运算的单元。
步骤S350,所述第一计算单元获取所述线程块的待处理数据,以及将所述待处理数据加载到所述第二计算单元。
所述第一计算单元110a获取所述线程块的待处理数据。所述线程块内的各个线程束在进行数据计算之前通常需要执行大量的加载数据的操作,线程束所加载的数据也被称之为待处理数据。待处理数据通常存储在图形处理器的外部,所述第一计算单元110a需要从外部存储空间获取待处理数据。作为一种可选的示例,参见图2和图3,所述待处理数据存储在外部内存200中,外部内存200位于图形处理器100的外部,可以使多个图形处理器100之间共享数据,或者可以使图形处理器100与CPU之间共享数据。所述第一计算单元110a从外部内存200获取待处理数据可能需要经过多次数据加载过程,例如在一个示例中,待处理数据由外部内存200加载到第二级缓存120,然后由第二级缓存120加载到第一级缓存116,最后由第一级缓存116加载到第一计算单元110a的本地共享内存115a。
所述待处理数据为所述第二计算单元110b执行线程块任务所需的数据,如第二计算单元110b在执行数据计算的过程中可能会用到的各种数据。第一计算单元110a预先从外部存储空间读取待处理数据,并将这些待处理数据存储到第一计算单元110a的内部存储空间,如第一计算单元110a的本地共享内存115a。
所述第一计算单元110a还将获取的所述待处理数据加载到所述第二计算单元110b。在一个可选的示例中,存储于外部内存200的待处理数据被所述第一计算单元110a取得后,可以先暂时存储在第一计算单元110a的本地共享内存115a,第一计算单元110a可以根据第二计算单元110b的请求将预先存储在本地共享内存115a中的待处理数据发送至所述第二计算单元110b。
具体的,参考图5,步骤S350所述第一计算单元获取所述线程块的待处理数据,以及将所述待处理数据加载到所述第二计算单元,可以进一步包括:
步骤S351,响应于所述第二计算单元发出的指令调度请求,在所述第一计算单元的线程束调度模块的指令队列中插入远程加载指令。
所述指令调度请求用于指示在所述第一计算单元110a的指令队列中插入远程数据传输指令。所述远程加载指令用于指示所述第一计算单元110a的本地共享内存115a向第二计算单元110b的本地共享内存115b发送所述待处理数据。
所述远程加载指令至少包括待处理数据的当前地址以及目标地址。其中,待处理数据的当前地址位于第一计算单元110a的内部存储空间,如第一计算单元110a的本地共享内存115a,所述待处理数据的目标地址位于第二计算单元110b的内部存储空间,如第二计算单元110b的本地共享内存115b。
作为一个示例,参考图3,作为接收端的第二计算单元110b的一个线程束(warp)在被第二计算单元110b的线程束调度模块111b调度要执行远程加载(Remote LD)指令时,向第一计算单元110a的线程束调度模块111a发送指令调度请求,通知第一计算单元110a的线程束调度模块111a有一条远程加载指令需要临时插入被调度。线程束调度模块主要负责调度图形处理器中的线程束,以及负责线程束中指令的取指、译码、发射等。第一计算单元110a的线程束调度模块111a在接收到所述指令调度请求后,在所述指令队列中插入远程加载指令。
步骤S353,根据所述远程加载指令的指令信息,所述第一计算单元的线程束调度模块通知所述第一计算单元的本地共享内存向所述第二计算单元的本地共享内存发送所述待处理数据。
作为一个示例,第一计算单元110a的线程束调度模块111a通知第一计算单元110a的本地共享内存115a需要从指定地址读出一笔数据并发送至第二计算单元110b的本地共享内存115b的指定位置。
步骤S355,所述第一计算单元的本地共享内存向所述第二计算单元的本地共享内存发送所述待处理数据。
本实施例提供的线程块处理方法将待处理线程块至少分解为两个子线程块,其中第一子线程块用于获取所述线程块的待处理数据,所述第二子线程块用于根据所述第一子线程块获取的所述待处理数据执行所述线程块的任务。可以看出,本实施例提供的线程块处理方法可以有效的减小加载待处理数据的时间延迟,尤其是减小从外部存储空间加载待处理数据的时间延迟,提高线程块的处理效率。
可以理解的是,本申请实施例中仅以一个线程块被分解为两个子线程块为例进行说明,在其他的一些情况中,一个线程块还可以根据实际的需求被分解为更多的子线程块。可以理解,本申请实施例中仅以两个流多处理器之间的数据传输流程为例进行说明,即一个流多处理器对另外一个流多处理器的本地共享内存进行访问,在其他的一些情况中,也可以扩展为多个流多处理器之间的数据传输流程,即一个流多处理器对另外多个流多处理器的本地共享内存进行访问。
本公开一些实施例还提供一种处理器,所述处理器包括本发明实施例提供的所述线程块的处理系统。
本公开一些实施例还提供一种电子设备,包括本发明实施例提供的所述处理器。
本公开一些实施例还提供一种存储介质,所述存储介质存储一条或多条可执行指令,所述一条或多条可执行指令用于执行本发明实施例提供的线程块的处理方法。
上文描述了本发明实施例提供的多个实施例方案,各实施例方案介绍的各可选方式可在不冲突的情况下相互结合、交叉引用,从而延伸出多种可能的实施例方案,这些均可认为是本发明实施例披露、公开的实施例方案。
虽然本申请实施例披露如上,但本申请并非限定于此。任何本领域技术人员,在不脱离本申请的精神和范围内,均可作各种更动与修改,因此本申请的保护范围应当以权利要求所限定的范围为准。
Claims (13)
1.一种线程块的处理系统,其特征在于,所述线程块包括分解的第一子线程块与第二子线程块,所述处理系统包括:
用于运行所述第一子线程块的第一计算单元,用于运行所述第二子线程块的第二计算单元;
所述第一计算单元用于获取所述线程块的待处理数据,所述第二计算单元用于根据所述第一计算单元获取的所述待处理数据执行所述线程块的处理任务。
2.根据权利要求1所述的线程块的处理系统,其特征在于,所述第一计算单元还用于将获取的所述待处理数据加载到所述第二计算单元。
3.根据权利要求2所述的线程块的处理系统,其特征在于,所述第一计算单元包括:
第一线程束调度模块,用于接收所述第二计算单元发出的指令调度请求,所述指令调度请求用于指示在所述第一线程束调度模块的指令队列中插入远程加载指令;
第一本地共享内存,用于根据所述远程加载指令的指令信息,将预先存储在所述第一本地共享内存的所述待处理数据发送至所述第二计算单元。
4.根据权利要求2或3所述的线程块的处理系统,其特征在于,所述第二计算单元包括:
第二线程束调度模块,用于向所述第一计算单元发送指令调度请求,以及向第二本地共享内存发送远程写入请求指令;
第二本地共享内存,用于根据所述远程写入请求指令的指令信息,等待来自所述第一计算单元的数据写入。
5.根据权利要求1所述的线程块的处理系统,其特征在于,所述第一计算单元与所述第二计算单元分别为位于同一并行处理器的独立运行的计算单元。
6.根据权利要求5所述的线程块的处理系统,其特征在于,所述待处理数据存储于位于所述并行处理器外部的存储空间。
7.根据权利要求5所述的线程块的处理系统,其特征在于,所述并行处理器为图形处理器。
8.一种线程块的处理方法,其特征在于,应用于并行处理器,所述方法包括:
将所述线程块至少分解为第一子线程块与第二子线程块,其中,所述第一子线程块用于获取所述线程块的待处理数据,所述第二子线程块用于根据所述第一子线程块获取的所述待处理数据执行所述线程块的任务;
将所述第一子线程块分配给第一计算单元,将所述第二子线程块分配给第二计算单元。
9.根据权利要求8所述的线程块的处理方法,其特征在于,所述第一计算单元与所述第二计算单元分别为位于同一并行处理器的独立运行的计算单元,所述待处理数据存储于位于所述并行处理器外部的存储空间。
10.根据权利要求8所述的线程块的处理方法,其特征在于,还包括:
所述第一计算单元获取所述线程块的待处理数据,以及将所述待处理数据加载到所述第二计算单元。
11.根据权利要求10所述的线程块的处理方法,其特征在于,所述第一计算单元将所述待处理数据加载到所述第二计算单元的步骤包括:
响应于所述第二计算单元发出的指令调度请求,在所述第一计算单元的线程束调度模块的指令队列中插入远程加载指令;
根据所述远程加载指令的指令信息,所述第一计算单元的线程束调度模块通知所述第一计算单元的本地共享内存向所述第二计算单元的本地共享内存发送所述待处理数据。
12.一种处理器,其特征在于,包括如权利要求1-7任一权利要求所述的线程块的处理系统。
13.一种电子设备,其特征在于,包括如权利要求12所述的处理器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310165825.8A CN116302504A (zh) | 2023-02-23 | 2023-02-23 | 线程块的处理系统、方法及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310165825.8A CN116302504A (zh) | 2023-02-23 | 2023-02-23 | 线程块的处理系统、方法及相关设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116302504A true CN116302504A (zh) | 2023-06-23 |
Family
ID=86835357
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310165825.8A Pending CN116302504A (zh) | 2023-02-23 | 2023-02-23 | 线程块的处理系统、方法及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116302504A (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109840877A (zh) * | 2017-11-24 | 2019-06-04 | 华为技术有限公司 | 一种图形处理器及其资源调度方法、装置 |
WO2020181670A1 (en) * | 2019-03-11 | 2020-09-17 | Huawei Technologies Co., Ltd. | Control flow optimization in graphics processing unit |
CN111833233A (zh) * | 2019-04-19 | 2020-10-27 | 辉达公司 | 深度学习线程通信 |
CN112783554A (zh) * | 2019-11-07 | 2021-05-11 | 辉达公司 | 用于程序间数据交换的持久便签内存 |
CN113490917A (zh) * | 2019-03-15 | 2021-10-08 | 英特尔公司 | 内核间的本地存储器共享 |
CN114003359A (zh) * | 2021-10-20 | 2022-02-01 | 上海交通大学 | 基于弹性持久的线程块的任务调度方法、系统及gpu |
US20220283790A1 (en) * | 2021-03-05 | 2022-09-08 | Shanghai Biren Technology Co.,Ltd | Method for executing computation, computing device, computing system, and storage medium |
-
2023
- 2023-02-23 CN CN202310165825.8A patent/CN116302504A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109840877A (zh) * | 2017-11-24 | 2019-06-04 | 华为技术有限公司 | 一种图形处理器及其资源调度方法、装置 |
WO2020181670A1 (en) * | 2019-03-11 | 2020-09-17 | Huawei Technologies Co., Ltd. | Control flow optimization in graphics processing unit |
CN113490917A (zh) * | 2019-03-15 | 2021-10-08 | 英特尔公司 | 内核间的本地存储器共享 |
CN111833233A (zh) * | 2019-04-19 | 2020-10-27 | 辉达公司 | 深度学习线程通信 |
CN112783554A (zh) * | 2019-11-07 | 2021-05-11 | 辉达公司 | 用于程序间数据交换的持久便签内存 |
US20220283790A1 (en) * | 2021-03-05 | 2022-09-08 | Shanghai Biren Technology Co.,Ltd | Method for executing computation, computing device, computing system, and storage medium |
CN114003359A (zh) * | 2021-10-20 | 2022-02-01 | 上海交通大学 | 基于弹性持久的线程块的任务调度方法、系统及gpu |
Non-Patent Citations (2)
Title |
---|
张鹏博;郭兵;黄义纯;曹亚波;: "通用图形处理器GPGPU的并行计算研究", 单片机与嵌入式系统应用, no. 08, 1 August 2017 (2017-08-01) * |
李涛;董前琨;张帅;孔令晏;康宏;杨愚鲁;: "基于线程池的GPU任务并行计算模式研究", 计算机学报, no. 10, 29 December 2017 (2017-12-29) * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10768989B2 (en) | Virtual vector processing | |
CN106991011B (zh) | 基于cpu多线程与gpu多粒度并行及协同优化的方法 | |
US20200142701A1 (en) | Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines | |
US9990200B2 (en) | Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines | |
US9529632B2 (en) | Interlocked increment memory allocation and access | |
CN108376097B (zh) | 用于通过使用由可分割引擎实例化的虚拟核来支持代码块执行的寄存器文件段 | |
US9477465B2 (en) | Arithmetic processing apparatus, control method of arithmetic processing apparatus, and a computer-readable storage medium storing a control program for controlling an arithmetic processing apparatus | |
WO2017131187A1 (ja) | アクセラレータ制御装置、アクセラレータ制御方法およびプログラム | |
US20070143582A1 (en) | System and method for grouping execution threads | |
US10268519B2 (en) | Scheduling method and processing device for thread groups execution in a computing system | |
US9940134B2 (en) | Decentralized allocation of resources and interconnect structures to support the execution of instruction sequences by a plurality of engines | |
CN114153500A (zh) | 指令调度方法、指令调度装置、处理器及存储介质 | |
Chen et al. | Mgmr: Multi-gpu based mapreduce | |
US11340942B2 (en) | Cooperative work-stealing scheduler | |
Hoffmann et al. | Performance evaluation of task pools based on hardware synchronization | |
CN117271136A (zh) | 数据处理方法、装置、设备和存储介质 | |
CN112114877A (zh) | 一种动态补偿线程束warp的方法、处理器及计算机存储介质 | |
CN116302504A (zh) | 线程块的处理系统、方法及相关设备 | |
CN115775199A (zh) | 数据处理方法和装置、电子设备和计算机可读存储介质 | |
US11609785B2 (en) | Matrix data broadcast architecture | |
US20120137300A1 (en) | Information Processor and Information Processing Method | |
US20130166887A1 (en) | Data processing apparatus and data processing method | |
CN116483536B (zh) | 数据调度方法、计算芯片及电子设备 | |
Alnaasan et al. | AccDP: Accelerated Data-Parallel Distributed DNN Training for Modern GPU-Based HPC Clusters | |
US11467836B2 (en) | Executing cross-core copy instructions in an accelerator to temporarily store an operand that cannot be accommodated by on-chip memory of a primary core into a secondary core |
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 |