CN117407181B - 一种基于屏障指令的异构计算进程同步方法及系统 - Google Patents
一种基于屏障指令的异构计算进程同步方法及系统 Download PDFInfo
- Publication number
- CN117407181B CN117407181B CN202311713727.XA CN202311713727A CN117407181B CN 117407181 B CN117407181 B CN 117407181B CN 202311713727 A CN202311713727 A CN 202311713727A CN 117407181 B CN117407181 B CN 117407181B
- Authority
- CN
- China
- Prior art keywords
- processor
- instruction
- write
- barrier instruction
- barrier
- 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
- 238000000034 method Methods 0.000 title claims abstract description 106
- 230000004888 barrier function Effects 0.000 title claims abstract description 78
- 230000008569 process Effects 0.000 title claims abstract description 74
- 230000004044 response Effects 0.000 claims abstract description 15
- 230000001360 synchronised effect Effects 0.000 claims description 29
- 238000003860 storage Methods 0.000 claims description 21
- 238000004590 computer program Methods 0.000 claims description 16
- 230000000977 initiatory effect Effects 0.000 claims description 4
- 238000012545 processing Methods 0.000 abstract description 9
- 230000006870 function Effects 0.000 description 19
- 230000007246 mechanism Effects 0.000 description 12
- 238000010586 diagram Methods 0.000 description 10
- 230000000903 blocking effect Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000002360 preparation method Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000007599 discharging Methods 0.000 description 1
- 230000001815 facial effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
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/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
-
- 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
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Multi Processors (AREA)
Abstract
本发明提供一种基于屏障指令的异构计算进程同步方法及系统,属于数据处理领域,该方法包括:在第一处理器指令缓存区中插入屏障指令,屏障指令包括指令操作码、写地址、写数据,响应于接收到屏障指令,对屏障指令进行解析,得到屏障指令的写地址和写数据,基于写地址将写数据写入存储器,响应于第二处理器与第一处理器进程同步,从写地址中读取数据,比较读取数据与写数据是否相同,若是,则表示第一处理器执行到达同步点,完成同步操作,若否,则表示第一处理器还未执行到达同步点,第二处理器执行其他任务或者继续等待第一处理器运行到同步点。本发明有效降低了系统复杂度,不会增加系统响应时间,支持异构加速器片上各子系统间不同进程的同步。
Description
技术领域
本公开实施例涉及数据处理领域,具体地涉及一种基于屏障指令的异构计算进程同步方法及系统。
背景技术
异构计算(Heterogeneous Computing),主要指包含不同体系架构和类型指令集的计算单元进行联合计算,不同的计算单元适用于不同的计算场景,为获得更加高效的计算性能,需要将不同类型的计算任务分配给合理的计算单元。在AI领域,有CPU+GPU、CPU+FPGA、CPU+NPU等不同的计算平台,例如CPU适合串行计算与逻辑调度等场景,而GPU、FPGA或NPU等特定优化的加速器则适合矩阵计算等并行计算任务。
在异构计算平台上,需要有合适的同步方法来完成不同处理器之间的进程同步。以CPU+GPU的异构计算平台为例,GPU通常以异步方式执行任务,即当CPU下发任务到GPU的指令缓存(buffer)后,GPU可能不会立刻执行该任务,这是因为GPU有独自的运行逻辑,其可能会优化执行顺序,调度其他任务或者等待资源释放。而与此同时CPU会继续执行后续任务,并不会感知指令 buffer中的任务执行情况,因此会带来一些数据依赖和资源竞争问题。在对数据集进行训练、推理的过程中,GPU通常会依赖CPU存于某一块内存中的数据进行运算,如果CPU在GPU完成计算任务之前刷新这一块内存上的数据,则可能会导致GPU访问错误的数据,从而产生错误的结果。此外,在多线程环境下,CPU和GPU可能会在同一时刻访问同一处共享资源,如缓冲区(指令 buffer)、纹理(对于GPU,最基本的数据排列方式,是二维数组,也就是纹理)等,如果没有合适的同步机制,则会造成资源竞争的问题。
以CPU+GPU计算平台为例,现有技术中,为了解决CPU与GPU之间进程同步的问题,一般使用中断(Interrupt)机制,或者调用图像API(OpenGL、Vulkan)中的阻塞函数,如OpenGL中的glFinish()函数来完成同步。
一,中断机制。中断机制是计算机系统中的一种机制,用于处理来自设备内部或者外部其他设备的异步事件。当某个指定事件发生时,它会打断CPU当前的进程,将CPU的控制权移交给特定的中断处理程序。通过中断机制,GPU可以通过中断请求与CPU进行通信,同步当前CPU下发到指令 buffer中任务的执行状态。根据同步到的信息,CPU进行决策,决定下一步执行什么任务。但是中断机制也存在以下3个问题:
1. 引入上下文开销:当CPU侧收到中断时,CPU需要保存当前执行现场(上下文)的信息,接着启动中断执行程序。当中断程序执行完成后,CPU回到中断发生前的现场,这部分操作涉及到堆栈的切换、寄存器的保存和恢复等,并会带来一定的开销和延迟。
2. 增加系统复杂性:中断机制的引入需要中断处理程序和外部设备驱动程序等额外的软件支持;此外为了避免资源竞争和冲突,还需要合适的调度策略去管理和协调中断处理程序。
3. 引入系统不确定性,影响系统实时性能:由于中断机制具有异步性,所以从系统的角度来看,不知道何时会收到中断,当系统负载过重或者同时出现多个中断需要系统去响应时,可能会造成系统响应时间过长。
中断机制也可被用来做GPU片上各个子系统之间进程的同步,当前子系统进程将同步信息通过中断上报给CPU,再由CPU响应该中断,对GPU上另一子系统的进程告知同步信息。由这种方式来同步片上各个子系统的进程,也会引入中断机制存在的额外开销,增加系统复杂性,影响系统实时性能的问题。
二,软件阻塞。在OpenGL中,当下发绘图命令如glDrawArrays()或glDrawElements()时,这些命令会被添加到GPU的指令 buffer中去,但并不会被立刻执行,这样可以使CPU与GPU并行工作,提高整体性能。为了确保之前提交给GPU的绘图命令都被执行完成,OpenGL中提供一个阻塞函数称为glFinish(),它会阻塞当前线程,直到先前所有下发的任务都被完成,glFinish()函数才会返回,CPU此时知道先前下发的任务都已被执行完成,才可以执行后续的操作。glFinish()函数构造简单,使用方便,只需要在需要同步的地方调用即可,对需要等待绘制结果或与OpenGL相关的操作都十分有用。但是该阻塞函数也存在以下缺点:
1. 不适用于并行处理的系统:由于glFinish()函数会阻塞CPU的进程,所以它限制了CPU与GPU之间的并行处理能力。
2. 阻塞时间不确定,影响整体性能:glFinish()函数阻塞的时间由GPU的负载情况,下发的绘图任务的数量和复杂性决定。如果此时GPU负载较高且绘图任务多而复杂,那么CPU的进程将被阻塞相当长的时间。在等待的这段时间内,CPU将不会有其他操作,影响了系统的整体性能。
发明内容
本发明的目的在于提供一种基于屏障指令的异构计算进程同步方法及系统,以便于至少部分地解决上述问题。
根据本公开的一个方面,提出一种基于屏障指令的异构计算进程同步方法,包括:
在第一处理器指令缓存区中插入屏障指令,所述屏障指令包括指令操作码、写地址、写数据,
响应于接收到屏障指令,对屏障指令进行解析,得到屏障指令的写地址和写数据,
基于写地址将所述写数据写入存储器,
响应于第二处理器与第一处理器进程同步,从所述写地址中读取数据,
比较所述读取数据与所述写数据是否相同,
若是,则表示第一处理器执行到达同步点,完成同步操作,
若否,则表示第一处理器还未执行到达同步点,第二处理器执行其他任务或者继续等待第一处理器运行到同步点。
在一些实施例中,该方法还包括,所述第一处理器为异构加速器,所述第二处理器为CPU。
在一些实施例中,该方法还包括,所述异构加速器为GPU、FPGA或NPU。
在一些实施例中,该方法还包括,所述指令缓存区为FIFO结构。
在一些实施例中,该方法还包括,所述存储器的存储空间为屏障指令中地址位宽所能表示的最大值。
在一些实施例中,所述存储器为寄存器、SRAM、DDR或HBM。
根据本公开的另一个方面,提出一种基于屏障指令的异构计算进程同步系统,包括:
指令读写模块,用于在第一处理器的指令缓存区中插入屏障指令,并把屏障指令送到Fence状态控制模块,
Fence状态控制模块,用于响应于接收到屏障指令,对屏障指令进行解析,得到屏障指令的写地址和写数据,并根据写地址、写数据信息向存储模块发起写操作请求,
存储模块,用于基于写地址将所述写数据写入存储器,
比较模块,用于响应于第二处理器与第一处理器进程同步,从所述写地址中读取数据,
比较所述读取数据与所述写数据是否相同,若是,则表示第一处理器执行到达同步点,完成同步操作,若否,则表示第一处理器还未执行到达同步点,第二处理器执行其他任务或者继续等待第一处理器运行到同步点。
在一些实施例中,所述第一处理器为异构加速器,所述第二处理器为CPU。
在一些实施例中,所述异构加速器为GPU、FPGA或NPU。
在一些实施例中,所述指令缓存区为FIFO结构。
在一些实施例中,所述存储器的存储空间为屏障指令中地址位宽所能表示的最大值。
在一些实施例中,所述存储器为寄存器、SRAM、DDR或HBM。
本申请实施例还提供一种电子设备,所述电子设备包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器通过调用所述存储器中存储的所述计算机程序,执行如上任一实施例方法中的步骤。
本申请实施例还提供一种计算机可读存储介质,存储有计算机程序,其特征在于:所述计算机程序被处理器运行时执行如上任一实施例方法中的步骤。
本发明旨在实现一种简化高效的进程同步方法和系统,实现简化的、高效的跨硬件进程同步以及异构加速器片上各个子系统不同进程之间的同步。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
图1为本申请实施例提供的基于屏障指令的进程同步方法的框图。
图2为本申请实施例提供的基于屏障指令的进程同步系统的框图。
图3为本申请实施例提供的电子设备的结构示意图。
具体实施方式
下面结合附图对本发明的具体实施方式作进一步说明。在此需要说明的是,对于这些实施方式的说明用于帮助理解本发明,但并不构成对本发明的限定。此外,下面所描述的本发明各个实施方式中所涉及的技术特征只要彼此之间未构成冲突就可以相互组合。
需要说明的是,在本发明的描述中,术语“上”、“下”、“左”、“右”、“前”、“后”等指示的方位或位置关系为基于附图所示对本发明结构的说明,仅是为了便于描述本发明的简便,而不是指示或暗示所指的系统或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
对于本技术方案中的“第一”和“第二”,仅为对相同或相似结构,或者起相似功能的对应结构的称谓区分,不是对这些结构重要性的排列,也没有排序、或比较大小、或其他含义。
另外,除非另有明确的规定和限定,术语“安装”、“连接”应做广义理解,例如,连接可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个结构内部的连通。对于本领域的普通技术人员而言,可以根据本发明的总体思路,联系本方案上下文具体情况理解上述术语在本发明中的具体含义。
实施例一
针对现有同步机制存在的增加资源开销,增加系统复杂性,降低系统整体性能的问题,本公开采用一种基于屏障(Fence)指令的进程同步系统,实现简化的、高效的跨硬件进程同步以及异构加速器片上各个子系统不同进程之间的同步。
Fence译为“屏障”或“栅栏”,目的是确保“屏障”所在位置前的指令(任务)都被执行完成。Fence指令的逻辑即为CPU在GPU的指令 buffer(命令队列、执行逻辑)中插入一个同步点,然后CPU可以在需要与GPU之间进行进程同步的时候在该同步点处等待GPU。如果GPU执行任务到该同步点处,便会触发事件,从而完成与CPU的进程同步。该Fence指令将同步点转化为一个写存储器动作,涉及到需要写入的地址以及需要写入的数据,这套地址与数据相当于让CPU中有了GPU中同步对象的句柄。写地址能够在不同进程间传递,这就为多进程间的同步提供了基础。当在写地址中读到期望数据时,即代表同步点已经到达。
本公开实施例提供了专用的Fence指令,将其暴露给编译器,编译器可以一次性将软件平台上的同步函数,如fence_sync()函数编译成一条指令,数据写入操作对软件隐藏,整个过程中减少软件的干预。
具体地,请参阅图1,为本公开提供的一种基于屏障指令的异构计算进程同步方法。具体步骤如下:
步骤S1,在第一处理器指令缓存区中插入屏障指令,所述屏障指令包括指令操作码、写地址、写数据。
用户(处理器,可以是CPU)可以根据实际应用场景构造屏障(Fence)指令,Fence指令包含如下信息:Fence指令操作码(OP CODE),用以识别本命令,写地址,本次写操作的起始目的地址,长度为8Byte,内容由用户指定,写数据,本次写操作的完整数据,长度为8Byte,内容由用户指定。用户构造好Fence指令后将其写入GPU指令读写模块的缓存区(buffer)中,指令读写模块主要做指令的写入、缓存和读出。
最新的指令会被写到buffer下一个地址。指令buffer是一个先入先出的缓存,深度大小为M Byte,地址范围为0~M-1 Byte。当指令写到buffer最后一个地址M-1后,会重新从0开始。先写入的指令会最先被读出。
当指令 buffer非空时,就开始读指令,将Fence指令发送给Fence状态控制模块。每次发送的长度为L。L最小为1 Byte,最大为指令长度。
步骤S2,响应于接收到屏障指令,对屏障指令进行解析,得到屏障指令的写地址和写数据。
步骤S3,基于写地址将所述写数据写入存储器。
Fence状态控制模块主要做Fence指令的解析,解析出用户给到的写地址和写数据,并向存储模块发起写入请求。Fence状态控制模块包括空闲状态、指令解析状态、写操作状态、完成状态。首先,在初始状态下,Fence状态控制模块处于空闲状态,当Fence状态控制模块从指令读写模块收到Fence指令后,会进入指令解析状态,得到Fence指令携带的写地址、写数据信息,然后,进入写操作状态,向存储器发起写入请求,再后,在写操作成功后,进入完成状态,最后,返回到空闲状态,等待下一个Fence指令。存储模块主要做变量的存储、读操作和写操作。存储器可以为寄存器、SRAM、DDR、HBM等,本实施例不受限制。存储空间的范围为Fence指令中地址位宽所能表示的最大值。当存储器收到Fence状态控制模块发来的写入请求后,存储模块会根据写地址和写数据,将新的变量数据写入对应地址的存储单元中。在Fence指令执行过程中,不涉及对存储器的读操作。
步骤S4,响应于第二处理器与第一处理器进程同步,从所述写地址中读取数据。
当用户希望与GPU的进程进行同步时,向先前下发的Fence指令中包含的写地址发起读操作,若从写地址中读取到了Fence指令中包含的写数据,则表明GPU的进程已经运行到同步点,在Fence指令之前所下发的所有任务都已经被GPU执行完成;若从写地址中没有读取到Fence指令中所包含的写数据,则表明GPU正在执行Fence指令前下发的任务,GPU尚未到达同步点,用户此时可以选择执行其他任务或者继续等待GPU运行到同步点。
在一些实施例中,用户既可以是CPU或与CPU有相同或类似功能的处理器。
此外为了详细描述本公开的发明构思,以用户为CPU与GPU进程同步为例,本实施例具体流程简述如下:
用户向指令读写模块中下发多个指令,为了防止指令执行时产生资源竞争和数据错误,如用户需要确保指令完成后,才能够去指令操作的地址上读取GPU产生的数据或者写入新的数据,需要在其他指令后面加入Fence指令作为用户与GPU进程之间的同步点。示例性的,用户准备的Fence指令信息包括:Fence标识符0x5【OP CODE,全称为operation code,中文名称为操作码,是软件与硬件共同约定的信息,例如软件发来一笔指令,指令中的标识符是0x5,当硬件解析到这笔指令的标识符为0x5后,就获知软件下发的指令是Fence指令(屏障指令),然后让Fence状态控制模块根据指令中的其他信息(写地址,写数据)执行Fence指令。软件还可以下发其他指令给硬件,为区分不同的指令,在标识符上设置不同的值加以区分,0x5即代表Fence指令。】,写地址为0x16,写数据长度为8Byte,写数据为X(X代表自定义数据,软件下发的Fence指令里的写数据由软件自定义)。Fence指令长度为20Byte,包括4Byte指令头,8Byte写地址信息与8Byte写数据信息,在一些实施例中,为了简化软件地址管理,可以将Fence指令定义为4Byte对齐;
初始状态下,指令buffer中没有用户下达的其他指令和Fence指令,地址为0。在一些实施例中,buffer深度大小可以为1Mbyte,可以理解的是buffer深度大小可以根据需要设置,本发明不做限制。最新的Fence指令会插入到其他指令的最后面,从0地址开始,一同根据用户下发指令的顺序被写入到指令buffer中去;
当指令buffer非空时,表明已经有指令写入到指令 buffer中。此时,指令读写模块会主动把一段指令送到Fence状态控制模块,Fence状态控制模块会做Fence指令的解析,解析出Fence指令的写地址、写数据信息;Fence状态控制模块做写入准备,根据写地址、写数据信息向存储模块发起写操作请求;
存储模块收到写请求后,将数据写到以0x16为起始地址的连续8Byte的存储体中;
用户向指令读写模块下发了Fence指令后,即可去执行其他任务,当用户想要与GPU的进程进行同步时,为确保Fence指令前下发的指令都被执行完成,向先前下发的Fence指令中包含的写地址发起读操作,若从写地址中读取到了Fence指令中包含的写数据,则表明GPU的进程已经运行到同步点,在Fence指令之前所下发的所有任务都已经被GPU执行完成;若从写地址中没有读取到Fence指令中所包含的写数据,或读取的写数据与用户在Fence中设置的写数据不相同,则表明GPU正在执行Fence指令前下发的任务,GPU尚未到达同步点,用户此时可以选择执行其他任务或者继续等待GPU运行到同步点。
进一步的,为了详细描述本公开的发明构思,以GPU片上各个子系统之间进程同步为例,本实施例具体流程简述如下:
有时GPU片上各个子系统之间也需要做进程同步,例如子系统A需要知晓子系统B已经执行完用户下发的指令。用户向子系统B的指令读写模块中下发了多个指令,并在指令后面加入Fence指令作为进程之间的同步点。用户准备的Fence指令信息包括:Fence标识符0x5(OP CODE,自定义),写地址为0x16,写数据长度为8Byte,写数据为X。Fence指令长度为20 Byte,包括4Byte指令头,8Byte写地址信息与8Byte写数据信息,一些实施例中为了简化软件地址管理,可以将Fence指令定义为4Byte对齐。用户在下发完Fence指令后,同时将指令中的同步点地址与同步点握手数据告知子系统A;
初始状态下,子系统B中的指令buffer中没有用户下达的其他指令和Fence指令,地址为0。buffer深度大小为1MByte。因此,最新的Fence指令会插入到其他指令的最后面,从0地址开始,一同根据用户下发指令的顺序被写入到指令buffer中去;
当指令buffer非空时,表明已经有指令写入到指令 buffer中。此时,指令读写模块会主动把一段指令送到Fence状态控制模块;
Fence状态控制模块会做Fence指令的解析,解析出Fence指令的写地址、写数据信息;
Fence状态控制模块做写入准备,根据写地址、写数据信息向存储模块发起写操作请求;
存储模块收到写请求后,将数据写到以0x16为起始地址的连续8Byte的存储体中;
用户向子系统B的指令读写模块下发了Fence指令后,子系统A也获知了指令中的同步点地址与同步点握手数据。当子系统A想要与子系统B的进程进行同步,以确保Fence指令前下发的指令都被执行完成,则向先前下发的Fence指令中包含的写地址发起读操作,若从写地址中读取到了Fence指令中包含的写数据,则表明子系统B的进程已经运行到同步点,在Fence指令之前所下发的所有任务都已经被子系统B执行完成;若从写地址中没有读取到Fence指令中所包含的写数据,则表明子系统B正在执行Fence指令前下发的任务,子系统B尚未到达同步点,子系统A此时可以选择执行其他任务或者继续等待子系统B运行到同步点。
本领域技术人员可以理解的是,本实施例中实现同步的进程并不限定为GPU进程,也可以是FPGA或NPU等其他类型的异构加速器。
本公开实施例实现逻辑简单,不需要增加额外的寄存器、软件支持和调度策略,降低了系统的整体复杂度;不会阻塞CPU当前的进程,不会增加系统响应时间,对系统的整体性能影响较小;支持异构加速器片上各个子系统之间不同进程的同步,其他子系统的进程去指定地址读取到期望数据即代表完成同步。
实施例二
为实现上述目的,本实施例提出了一种基于屏障指令的异构计算进程同步系统,具体的请参阅图2。该系统包括:
指令读写模块,用于在第一处理器的指令缓存区中插入屏障指令,并把屏障指令送到Fence状态控制模块,
Fence状态控制模块,用于响应于接收到屏障指令,对屏障指令进行解析,得到屏障指令的写地址和写数据,并根据写地址、写数据信息向存储模块发起写操作请求,
存储模块,用于基于写地址将所述写数据写入存储器,
比较模块,用于响应于第二处理器与第一处理器进程同步,从所述写地址中读取数据,
比较所述读取数据与所述写数据是否相同,若是,则表示第一处理器执行到达同步点,完成同步操作,若否,则表示第一处理器还未执行到达同步点,第二处理器执行其他任务或者继续等待第一处理器运行到同步点。
用户构造Fence指令,将其写入指令读写模块的buffer中。接着,指令读写模块将指令从buffer中读出,发给Fence状态控制模块。状态控制模块会做指令解析,得到Fence指令携带的写地址、写数据。然后,根据这些信息向存储模块发起写请求。最终,完成指令携带数据的写入,等待用户新的指令。在用户侧,也即CPU侧,当Fence指令被写入读写模块的buffer中后,用户可以继续执行其他任务,当用户与GPU进程进行同步时,去写地址读取数据,如果读取到Fence指令携带的写数据,则代表GPU已经到达同步点。
在一些实施例中,对应的指令buffer为FIFO结构,存储模块的存储空间为屏障指令中地址位宽所能表示的最大值。
本领域技术人员可以理解的是,本实施例中实现同步的进程并不限定为GPU进程,也可以是FPGA或NPU等其他类型的异构加速器。
实施例三
相应的,本申请实施例还提供一种电子设备,该电子设备可以为终端或者服务器。如图3所示,图3为本申请实施例提供的电子设备的结构示意图。
该电子设备300包括有一个或者一个以上处理核心的处理器301、有一个或一个以上计算机可读存储介质的存储器302及存储在存储器302上并可在处理器上运行的计算机程序。其中,处理器301与存储器302电性连接。本领域技术人员可以理解,图中示出的电子设备结构并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
处理器301是电子设备300的控制中心,利用各种接口和线路连接整个电子设备300的各个部分,通过运行或加载存储在存储器302内的软件程序(计算机程序)和/或单元,以及调用存储在存储器302内的数据,执行电子设备300的各种功能和处理数据,从而对电子设备300进行整体监控。
在本申请实施例中,电子设备300中的处理器301会按照如下的步骤,将一个或一个以上的应用程序的进程对应的指令加载到存储器302中,并由处理器301来运行存储在存储器302中的应用程序,从而实现各种功能:
在第一处理器指令缓存区中插入屏障指令,所述屏障指令包括指令操作码、写地址、写数据,
响应于接收到屏障指令,对屏障指令进行解析,得到屏障指令的写地址和写数据,
基于写地址将所述写数据写入存储器,
响应于第二处理器与第一处理器进程同步,从所述写地址中读取数据,
比较所述读取数据与所述写数据是否相同,
若是,则表示第一处理器执行到达同步点,完成同步操作,
若否,则表示第一处理器还未执行到达同步点,第二处理器执行其他任务或者继续等待第一处理器运行到同步点。
可选的,如图3所示,电子设备300还包括:进程同步系统303、通信模块304、输入单元305以及电源306。其中,处理器301分别与进程同步系统303、通信模块304、输入单元305以及电源306电性连接。本领域技术人员可以理解,图3中示出的电子设备结构并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
进程同步系统303可用于实现基于屏障指令的进程同步。
通信模块304可用于与其他设备通信。
输入单元305可用于接收输入的数字、字符信息或用户特征信息(例如指纹、虹膜、面部信息等),以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
电源306用于给电子设备300的各个部件供电。可选的,电源306可以通过电源管理系统与处理器301逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源306还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
实施例四
本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于计算机可读存储介质中,并由处理器进行加载和执行。
为此,本申请实施例提供一种计算机可读存储介质,其中存储有多条计算机程序,该计算机程序能够被处理器进行加载,以执行本申请实施例所提供的一种基于屏障指令的异构计算进程同步方法的步骤。例如,该计算机程序可以执行如下步骤:
在第一处理器指令缓存区中插入屏障指令,所述屏障指令包括指令操作码、写地址、写数据,
响应于接收到屏障指令,对屏障指令进行解析,得到屏障指令的写地址和写数据,
基于写地址将所述写数据写入存储器,
响应于第二处理器与第一处理器进程同步,从所述写地址中读取数据,
比较所述读取数据与所述写数据是否相同,
若是,则表示第一处理器执行到达同步点,完成同步操作,
若否,则表示第一处理器还未执行到达同步点,第二处理器执行其他任务或者继续等待第一处理器运行到同步点。
以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
其中,该计算机可读存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。
由于该存储介质中所存储的计算机程序,可以执行本申请实施例所提供的任一种基于屏障指令的异构计算进程同步方法中的步骤,因此,可以实现本申请实施例所提供的任一种基于屏障指令的异构计算进程同步方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的系统。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令系统的制造品,该指令系统实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上结合附图对本发明的实施方式作了详细说明,但本发明不限于所描述的实施方式。对于本领域的技术人员而言,在不脱离本发明原理和精神的情况下,对这些实施方式进行多种变化、修改、替换和变型,仍落入本发明的保护范围内。
Claims (10)
1.一种基于屏障指令的异构计算进程同步方法,其特征在于,所述方法包括:
在第一处理器指令缓存区中插入屏障指令,所述屏障指令包括指令操作码、写地址、写数据,所述指令缓存区为FIFO结构,所述指令操作码用于区分屏障指令和其他指令,
响应于接收到屏障指令,对屏障指令进行解析,得到屏障指令的写地址和写数据,
基于写地址将所述写数据写入存储器,
其中,在第一处理器指令缓存区中插入屏障指令后,第二处理器即时获知所述屏障指令的写地址和写数据,
响应于第二处理器与第一处理器进程同步,从所述写地址中读取数据,
比较所述读取数据与所述写数据是否相同,
若是,则表示第一处理器执行到达同步点,完成同步操作,
若否,则表示第一处理器还未执行到达同步点,第二处理器执行其他任务或者继续等待第一处理器运行到同步点,
其中,所述第一处理器与所述第二处理器互为异构加速器,所述第二处理器为CPU。
2.根据权利要求1所述的方法,其特征在于:
所述第一处理器为GPU、FPGA或NPU。
3.根据权利要求1-2任一项所述的方法,其特征在于:
所述存储器的存储空间为屏障指令中地址位宽所能表示的最大值。
4.根据权利要求1-2任一项所述的方法,其特征在于:
所述存储器为寄存器、SRAM、DDR或HBM。
5.一种基于屏障指令的异构计算进程同步系统,其特征在于,所述系统包括:
指令读写模块,用于在第一处理器的指令缓存区中插入屏障指令,并把屏障指令送到Fence状态控制模块,所述指令缓存区为FIFO结构,所述指令操作码用于区分屏障指令和其他指令,其中,在第一处理器指令缓存区中插入屏障指令后,第二处理器即时获知所述屏障指令的写地址和写数据,
Fence状态控制模块,用于响应于接收到屏障指令,对屏障指令进行解析,得到屏障指令的写地址和写数据,并根据写地址、写数据信息向存储模块发起写操作请求,
存储模块,用于基于写地址将所述写数据写入存储器,
比较模块,用于响应于第二处理器与第一处理器进程同步,从所述写地址中读取数据,
比较所述读取数据与所述写数据是否相同,若是,则表示第一处理器执行到达同步点,完成同步操作,若否,则表示第一处理器还未执行到达同步点,第二处理器执行其他任务或者继续等待第一处理器运行到同步点,
所述第一处理器与所述第二处理器互为异构加速器,所述第二处理器为CPU。
6.据权利要求5所述的系统,其特征在于,
所述第一处理器为GPU、FPGA或NPU。
7.根据权利要求5-6任一项所述的系统,其特征在于:
所述存储器的存储空间为屏障指令中地址位宽所能表示的最大值。
8.根据权利要求5-6任一项所述的系统,其特征在于:
所述存储器为寄存器、SRAM、DDR或HBM。
9.一种电子设备,其特征在于:包括存储有可执行程序代码的存储器以及与所述存储器耦合的处理器;其中,所述处理器调用所述存储器中存储的可执行程序代码,执行如权利要求1-4任一项所述的方法。
10.一种计算机可读存储介质,存储有计算机程序,其特征在于:所述计算机程序被处理器运行时执行如权利要求1-4任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311713727.XA CN117407181B (zh) | 2023-12-14 | 2023-12-14 | 一种基于屏障指令的异构计算进程同步方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311713727.XA CN117407181B (zh) | 2023-12-14 | 2023-12-14 | 一种基于屏障指令的异构计算进程同步方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117407181A CN117407181A (zh) | 2024-01-16 |
CN117407181B true CN117407181B (zh) | 2024-03-22 |
Family
ID=89500208
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311713727.XA Active CN117407181B (zh) | 2023-12-14 | 2023-12-14 | 一种基于屏障指令的异构计算进程同步方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117407181B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114691557A (zh) * | 2020-12-31 | 2022-07-01 | 华为云计算技术有限公司 | 异构计算系统以及相关设备 |
CN114706813A (zh) * | 2022-05-05 | 2022-07-05 | 上海壁仞智能科技有限公司 | 多核异构片上系统、非对称同步方法、计算设备和介质 |
CN115269015A (zh) * | 2022-09-26 | 2022-11-01 | 沐曦集成电路(南京)有限公司 | 基于Atomic指令的共享变量处理系统 |
CN115373877A (zh) * | 2022-10-24 | 2022-11-22 | 北京智芯微电子科技有限公司 | 异构多核处理器保证共享缓存一致性的控制方法和装置 |
CN116757132A (zh) * | 2023-04-20 | 2023-09-15 | 国网浙江省电力有限公司电力科学研究院 | 异构多核fpga电路架构、构建方法及数据传输方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7457921B2 (en) * | 2005-02-23 | 2008-11-25 | Microsoft Corporation | Write barrier for data storage integrity |
-
2023
- 2023-12-14 CN CN202311713727.XA patent/CN117407181B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114691557A (zh) * | 2020-12-31 | 2022-07-01 | 华为云计算技术有限公司 | 异构计算系统以及相关设备 |
CN114706813A (zh) * | 2022-05-05 | 2022-07-05 | 上海壁仞智能科技有限公司 | 多核异构片上系统、非对称同步方法、计算设备和介质 |
CN115269015A (zh) * | 2022-09-26 | 2022-11-01 | 沐曦集成电路(南京)有限公司 | 基于Atomic指令的共享变量处理系统 |
CN115373877A (zh) * | 2022-10-24 | 2022-11-22 | 北京智芯微电子科技有限公司 | 异构多核处理器保证共享缓存一致性的控制方法和装置 |
CN116757132A (zh) * | 2023-04-20 | 2023-09-15 | 国网浙江省电力有限公司电力科学研究院 | 异构多核fpga电路架构、构建方法及数据传输方法 |
Also Published As
Publication number | Publication date |
---|---|
CN117407181A (zh) | 2024-01-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8112559B2 (en) | Increasing available FIFO space to prevent messaging queue deadlocks in a DMA environment | |
US6587906B2 (en) | Parallel multi-threaded processing | |
US4631674A (en) | Active wait | |
JP5650952B2 (ja) | マルチコア/スレッドのワークグループ計算スケジューラ | |
US20080109569A1 (en) | Remote DMA systems and methods for supporting synchronization of distributed processes in a multi-processor system using collective operations | |
CN108647104B (zh) | 请求处理方法、服务器及计算机可读存储介质 | |
US8255591B2 (en) | Method and system for managing cache injection in a multiprocessor system | |
US20080109570A1 (en) | System and method for remote direct memory access without page locking by the operating system | |
US6944850B2 (en) | Hop method for stepping parallel hardware threads | |
US20070091101A1 (en) | Graphics Input Command Stream Scheduling Method and Apparatus | |
US20100125717A1 (en) | Synchronization Controller For Multiple Multi-Threaded Processors | |
KR100936601B1 (ko) | 멀티 프로세서 시스템 | |
JP2003030050A (ja) | マルチスレッド実行方法及び並列プロセッサシステム | |
US7590990B2 (en) | Computer system | |
US6769121B1 (en) | Program execution device and process migrating method thereof and storage medium which stores process migration control program | |
JPH0439759A (ja) | バッファ記憶制御方法 | |
US20110173287A1 (en) | Preventing messaging queue deadlocks in a dma environment | |
EP1899827B1 (en) | Device and method for executing a dma task | |
US20150268985A1 (en) | Low Latency Data Delivery | |
US20080109604A1 (en) | Systems and methods for remote direct memory access to processor caches for RDMA reads and writes | |
CN117407181B (zh) | 一种基于屏障指令的异构计算进程同步方法及系统 | |
CN109992539B (zh) | 双主机协同工作装置 | |
US6675238B1 (en) | Each of a plurality of descriptors having a completion indicator and being stored in a cache memory of an input/output processor | |
EP1936514B1 (en) | Apparatus and method for controlling issue of requests to another operation processing device | |
CN117407182B (zh) | 一种基于Poll指令的进程同步方法、系统、设备及介质 |
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 |