CN110955461A - 计算任务的处理方法、装置、***、服务器和存储介质 - Google Patents
计算任务的处理方法、装置、***、服务器和存储介质 Download PDFInfo
- Publication number
- CN110955461A CN110955461A CN201911159702.3A CN201911159702A CN110955461A CN 110955461 A CN110955461 A CN 110955461A CN 201911159702 A CN201911159702 A CN 201911159702A CN 110955461 A CN110955461 A CN 110955461A
- Authority
- CN
- China
- Prior art keywords
- task
- computing
- input
- cache region
- data
- 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.)
- Granted
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 9
- 238000004364 calculation method Methods 0.000 claims abstract description 123
- 238000012545 processing Methods 0.000 claims abstract description 69
- 239000000872 buffer Substances 0.000 claims abstract description 56
- 238000000034 method Methods 0.000 claims abstract description 43
- 230000005540 biological transmission Effects 0.000 abstract description 17
- 238000010586 diagram Methods 0.000 description 28
- 230000001133 acceleration Effects 0.000 description 14
- 238000003062 neural network model Methods 0.000 description 10
- 238000004590 computer program Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 7
- 239000011159 matrix material Substances 0.000 description 5
- 230000001360 synchronised effect Effects 0.000 description 5
- 238000013461 design Methods 0.000 description 4
- 230000000903 blocking effect Effects 0.000 description 3
- 230000000977 initiatory effect Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000001960 triggered effect Effects 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44568—Immediately runnable code
- G06F9/44578—Preparing or optimising for loading
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Multi Processors (AREA)
Abstract
本公开一种计算任务的处理方法、装置、***、服务器和存储介质所述服务器中设置有多个输入缓存区,所述方法包括:基于客户端发送的数据处理请求,生成多个计算任务;确定各所述计算任务的输入缓存区,并将计算任务对应的任务数据分别输入所述输入缓存区中;在各所述输入缓存区中存在符合启动条件的输入缓存区的情况下,则启动执行符合启动条件的输入缓存区对应的计算任务;将执行完成的计算任务的计算结果返回至对应的客户端。本公开可以减少数据传输带来的消耗,稳定服务端吞吐容量只与从设备的硬件计算性能有关,提高了从设备硬件利用率。
Description
技术领域
本公开涉及互联网技术领域,尤其涉及一种计算任务的处理方法、装置、***、服务器和存储介质。
背景技术
异构计算技术是一种使计算任务的并行性类型(代码类型)与机器能有效支持的计算类型(即机器能力)最相匹配、最能充分利用各种计算资源的并行和分布计算技术。在神经网络模型推理中包含了大量的矩阵乘法,卷积等基本计算单元,这些计算单元对并行计算具有较高的适配性。采用异构计算技术,特别是专用的并行加速硬件(如GPU、FPGA、ASIC等)能发挥其计算优势,从而极大的提升后端服务的吞吐容量。
参照图1,所示为一种服务端的异构计算加速示意图,在后端服务中,并行加速硬件通常作为服务器(下称“宿主机”)的“从设备”对客户端的计算任务进行卸载,服务端异构计算的加速方案具有以下特点:
1、并行加速硬件通常采用单指令多数据流的方式来做并行加速,如果要发挥从设备的计算优势,需要设置较大的批量规模;
2、从设备在执行计算任务读取数据时通常只能访问自身的内存,因此需要将宿主机数据通过内存复制的方式传输到从设备的内存上,在完成计算任务之后,需要将从设备上的计算结果复制到宿主机内存。
从上述特点可以看出,在一次神经网络模型的调用过程中会包含两次数据传输的时间和一次模型推理的时间。而在后端服务的多并发场景中,通常客户端发出数据处理请求是零散且频繁的,这种小批量的零散数据的在宿主机和从设备之间的来回复制效率非常低。因此如何充分发挥异构计算的硬件的算力,减少数据传输带来的消耗成为亟待解决的问题。
发明内容
本公开提供一种计算任务的处理方法、装置、***、服务器和存储介质,以至少解决相关技术中数据传输带来的消耗的问题。本公开的技术方案如下:
根据本公开实施例的第一方面,提供一种计算任务的处理方法,所述服务器中设置有多个输入缓存区,所述方法包括:
基于客户端发送的数据处理请求,生成多个计算任务;
确定各所述计算任务的输入缓存区,并将计算任务对应的任务数据分别输入所述输入缓存区中;
在各所述输入缓存区中存在符合启动条件的输入缓存区的情况下,则启动执行符合启动条件的输入缓存区对应的计算任务;
将执行完成的计算任务的计算结果返回至对应的客户端。
可选地,所述确定各所述计算任务的输入缓存区,并将计算任务对应的任务数据分别输入所述输入缓存区中包括:
查找空闲的输入缓存区,并读取所述空闲的输入缓存区对应的内存地址;
将所述计算任务的任务数据,根据所述内存地址分别输入所述空闲的输入缓存区中。
可选地,在启动执行符合启动条件的输入缓存区对应的计算任务之前,所述方法还包括:
若属于输入缓存区的计算任务的任务数据输入完成、且用于执行所述计算任务的计算资源未被占用,则确定所述输入缓存区符合启动条件。
可选地,所述启动执行符合启动条件的输入缓存区对应的计算任务包括:
采用所述符合启动条件的输入缓存区的内存地址,生成计算指令;
根据所述计算指令中的内存地址,从所述符合启动条件的输入缓存区中读取任务数据,以执行计算任务并得到计算结果。
可选地,在所述将执行完成的计算任务的计算结果返回至对应的客户端之后,还包括:
释放用于执行所述计算任务的计算资源。
可选地,在所述基于客户端发送的数据处理请求,生成多个计算任务之后,还包括:
针对某一计算任务,获取所述计算任务对应的数据处理请求的发送时间;
按照所述发送时间生成列表任务顺序。
可选地,所述服务器中设置有多个输出缓存区,所述将执行完成的计算任务的计算结果返回至对应的客户端包括:
将执行完成的计算任务的计算结果输入所述输出缓存区;
将所述输出缓存区的计算结果,按照所述列表任务顺序发送至对应的客户端。
可选地,所述计算任务为神经网络模型推理的计算任务,所述服务器具有使用异构计算技术的并行加速硬件。
根据本公开实施例的第二方面,提供一种计算任务的处理装置,应用于服务器,所述服务器中设置有多个输入缓存区,所述装置包括:
计算任务生成模块,被配置为基于客户端发送的数据处理请求,生成多个计算任务;
任务数据输入模块,被配置为确定各所述计算任务的输入缓存区,并将计算任务对应的任务数据分别输入所述输入缓存区中;
计算任务启动模块,被配置为在各所述输入缓存区中存在符合启动条件的输入缓存区的情况下,则启动执行符合启动条件的输入缓存区对应的计算任务;
计算结果返回模块,被配置为将执行完成的计算任务的计算结果返回至对应的客户端。
可选地,所述任务数据输入模块被配置为:查找空闲的输入缓存区,并读取所述空闲的输入缓存区对应的内存地址;将所述计算任务的任务数据,根据所述内存地址分别输入所述空闲的输入缓存区中。
可选地,所述装置还包括:
启动条件确定模块,被配置为若属于输入缓存区的计算任务的任务数据输入完成、且用于执行所述计算任务的计算资源未被占用,则确定所述输入缓存区符合启动条件。
可选地,所述计算任务启动模块被配置为:采用所述符合启动条件的输入缓存区的内存地址,生成计算指令;根据所述计算指令中的内存地址,从所述符合启动条件的输入缓存区中读取任务数据,以执行计算任务并得到计算结果。
可选地,所述装置还包括:
计算资源释放模块,被配置为释放用于执行所述计算任务的计算资源。
可选地,所述装置还包括:
发送时间获取模块,被配置为针对各计算任务,获取所述计算任务对应的数据处理请求的发送时间;
列表任务顺序生成模块,被配置为按照所述发送时间生成列表任务顺序。
可选地,计算结果返回模块,被配置为将执行完成的计算任务的计算结果输入所述输出缓存区;将所述输出缓存区的计算结果,按照所述列表任务顺序发送至对应的客户端。
可选地,所述计算任务为神经网络模型推理的计算任务,所述服务器具有使用异构计算技术的并行加速硬件。
根据本公开实施例的第三方面,提供一种计算任务的处理***,所述***包括客户端和服务器,其中:
所述客户端,用于向所述服务器发送数据处理请求;
所述服务器,所述服务器中设置有多个输入缓存区和输出缓存区,所述服务器用于基于客户端发送的数据处理请求,生成多个计算任务;确定各所述计算任务的输入缓存区,并将计算任务对应的任务数据分别输入所述输入缓存区中;在各所述输入缓存区中存在符合启动条件的输入缓存区的情况下,则启动执行符合启动条件的输入缓存区对应的计算任务;将执行完成的计算任务的计算结果返回至对应的客户端。
可选地,所述服务器包括宿主机和从设备,其中,
所述宿主机,用于接收所述客户端发送的数据处理请求,并基于接收到的所述数据处理请求生成多个计算任务,以及确定各所述计算任务的输入缓存区,并在各所述输入缓存区中存在符合启动条件的输入缓存区的情况下,则启动执行符合启动条件的输入缓存区对应的计算任务;
所述从设备,设置有硬件计算单元和多个所述输入缓存区,其中,
所述输入缓存区用于输入对应的计算任务的任务数据;
所述硬件计算单元用于执行符合启动条件的输入缓存区对应的计算任务,并将执行完成的计算任务的计算结果返回至所述宿主机。
可选地,所述从设备中还设置有寄存器,其中,
所述寄存器,用于记录所述硬件计算单元的计算资源是否被释放,并基于所述计算单元的计算资源被释放的状态通知给所述宿主机;
所述宿主机,用于在所述计算单元的计算资源处于被释放的状态下,生成用于启动执行符合启动条件的输入缓存区对应的计算任务的计算指令。
可选地,所述从设备中还设置有输出缓存区,其中,
所述输出缓存区,用于缓存执行完成的计算任务的计算结果,并将缓存的计算结果返回给所述宿主机;
所述宿主机,还用于将计算结果依序返回给客户端。
根据本公开实施例的第四方面,提供一种服务器,包括:处理器;用于存储所述处理器可执行指令的存储器;其中,所述处理器被配置为执行所述指令,以实现如第一方面的实施方式中的方法。
根据本公开实施例的第五方面,提供一种存储介质,包括:当所述存储介质中的指令由服务器的处理器执行时,使得服务器能够执行如第一方面的实施方式中的方法。
根据本公开实施例的第六方面,提供一种计算机程序产品,所述计算机程序产品包括:计算机程序代码,当所述计算机程序代码被计算机运行时,使得所述计算机执行上述各方面中的方法。
本公开的实施例提供的技术方案至少带来以下有益效果:
本公开的服务器中设置有多个输入缓存区,服务器基于客户端发送的数据处理请求,生成多个计算任务,确定各计算任务的输入缓存区,并将计算任务对应的任务数据分别输入到服务器的输入缓存区中,其中,在各输入缓存区中存在符合启动条件的输入缓存区的情况下,则启动执行符合启动条件的输入缓存区对应的计算任务,最后将执行完成的计算任务的计算结果返回至对应的客户端。本公开通过在服务器上设置多个内存缓存区来缓存服务器发送的任务数据,使得在传输任务数据到从设备的过程中无阻塞,不需要等待,这样减少数据传输带来的消耗,稳定服务端吞吐容量只与服务器的硬件计算性能有关,提高了服务器的硬件利用率。
其中,本公开适用于具有异构计算技术的服务器实现神经网络模型推理的计算任务,是因为在神经网络模型推理中包含了大量的矩阵乘法,卷积等基本计算单元,在服务器的并行加速硬件上有针对卷积、矩阵乘法这些基本计算单元的专用硬件电路设计,能够并行处理这些基本计算单元,相比CPU,能在更少的时间内完成计算。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
图1是示出的一种服务端的异构计算加速示意图。
图2是示出的一种批量处理数据的流程的示意图。
图3是示出的一种同步的数据传输方式的示意图。
图4是示出的一种异步的数据传输方式的示意图。
图5是示出的一种异步的数据传输方式的异常示意图。
图6是根据一示例性实施例示出的一种计算任务的处理方法的流程图。
图7是根据一示例性实施例示出的一种内存缓存区的工作流程示意图。
图8是根据一示例性实施例示出的一种采用内存缓存区的异步调用的示意图。
图9是根据一示例性实施例示出的一种宿主机侧和从设备侧交互工作流程示意图。
图10是根据一示例性实施例示出的一种客户端保证输入输出一致性示意图。
图11是根据一示例性实施例示出的一种计算任务的处理装置的框图。
图12是根据一示例性实施例示出的一种计算任务的处理***的框图。
图13是根据一示例性实施例示出的一种计算机设备的内部结构图。
具体实施方式
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的***和方法的例子。
针对背景技术的小批量的零散数据来回复制效率低问题,目前提出了大批量的处理数据的方案,参照图2,所示为一种批量处理数据的流程的示意图,目前的大批量的处理方案包含以下步骤:
1、在宿主机上采用任务队列方式收集从客户端发来的数据处理请求;
2、当任务队列中的数据攒到一个规模之后,将客户端的数据处理请求合并成一个大批量的数据(任务数据);
3、将大批量的数据从宿主机复制到从设备上;
4、从设备针对大批量的数据进行并行计算;
5、从设备完成计算后,将批量处理后得到的计算结果复制到宿主机;
6、宿主机拆分批量处理后得到的计算结果,返回给客户端。
在从设备的设计上,为发挥最大的计算性能,通常会尽可能将所有计算资源都用在神经网络模型的推理上,因此从设备可以理解为任务队列的单个消费者模型,在这种情况下,按照从设备的设计可分为同步和异步的两种数据传输方式。
参照图3,所示为一种同步的数据传输方式的示意图,硬件计算的利用率可以表示为T1/(T0+T1+T2),其中T0为数据输入的时间,T1为硬件计算的时间,T2为数据输出的时间,同步的数据传输方式,从设备需要等待数据的输入和输出,对从设备本身的性能有损失,导致从设备处理效率变低。
参照图4,所示为一种异步的数据传输方式的示意图,采用异步方式对比同步方式能够充分利用从设备的计算资源,无需等待数据的输入和输出,在实际应用中也以异步方式居多。
然而,采用异步方式,虽然能够充分利用从设备的计算资源,但这需要满足数据输入的时间一定要小于从设备硬件计算的时间,否则从设备等待数据输入,这样则会导致从设备处理效率变低。具体地,参照图5,所示为一种异步的数据传输方式的异常示意图,从图中可知,在从设备完成一次硬件计算后,需要等待数据输入,导致了从设备的硬件计算不能持续进行,处理效率变低。
在实际应用场景中,上述从设备要等数据输入的情况极有可能出现,而上述这种情况下,硬件计算的利用率可以表示为T1/T0,有以下几个原因:
1、数据输入的全过程包含以下部分:
a)数据处理请求解包;
b)数据预处理;
c)批量合并;
d)宿主机和从设备之间的内存拷贝。
在上述每个环节都有可能带来数据输入延时的不确定性。
2、从设备的算力提升发展速度要快于内存传输速度的提升发展速度。特别是在神经网络推理的场景中,输入的数据量较大(如图片,视频等),特别是在大批量数据的情况下,数据在宿主机和从设备之间的内存拷贝时间是不可忽视的一部分。
在目前的从设备异步方案中,由于数据输入的耗时具有不确定性,所以从设备的硬件计算的实际利用率可以表示为:
如果T1≥T0,即硬件计算的时间大于或等于数据输入的时间,则可以认为硬件的利用率达到100%,充分利用从设备的计算资源,反之,如果硬件计算的时间小于数据输入的时间,则可以认为没有充分利用硬件的计算资源。
本公开针对上述问题,提出了在从设备的内存上静态开辟一个“内存缓存区”,来缓存来自宿主机的任务数据并缓存计算结果,使得从设备无需等待数据的输入,提高从设备的利用率。
图6是根据一示例性实施例示出的一种计算任务的处理方法的流程图,如图6所示,计算任务的处理方法用于服务器,其中,所述服务器分为宿主机和使用异构计算技术的从设备,在从设备的内存中划分有多个输入缓存区和多个输出缓存区。宿主机用于发出计算指令,从设备则用于执行宿主机发送的计算指令。
在本公开中,从设备是利用异构计算技术的并行加速硬件,如GPU、FPGA、ASIC等,是服务器的一部分,属于服务器配件。其中,在从设备的内存上静态开辟一个“内存缓存区”来缓存宿主机输入的计算任务的任务数据,并缓存针对任务数据的计算结果。
假设任务数据的内存需求为MemIn Bytes,相应的输出的计算结果的内存需求为MemOut Bytes,本公开采需要在从设备上开辟N倍的内存,即大小为(MemIn+MemOut)×NBytes的内存区域作为输入缓存区和输出缓存区,其中N可以根据实际需求设定,通常N=3即可满足需求。
示例性地,参照图7,所示为一种内存缓存区的工作流程示意图,在图7中,在从设备(加速硬件)上划分了三个输入缓存区(输入数据缓存区),分别是输入数据缓存区0,输入数据缓存区1和输入数据缓存区2,以及,三个输出缓存区(输出数据缓存区),分别是输出数据缓存区0,输出数据缓存区1和输出数据缓存区2。
具体而言,本公开的计算任务的处理方法包括以下步骤:
在步骤S11中,基于客户端发送的数据处理请求,生成多个计算任务。
在本公开中,服务器采用任务队列方式收集从客户端发来的数据处理请求,参照图7,当队列中的数据处理请求积攒到限定的阈值,或者收集数据处理请求花费时间的超过阈值时,触发一个宿主机线程执行将这一批量的数据处理请求形成一个计算任务的任务数据,等到队列攒到下一个批量的数据处理请求时就会使用下一个宿主机线程继续进行该操作,形成新的计算任务。
在步骤S12中,确定各所述计算任务的输入缓存区,并将计算任务对应的任务数据分别输入所述输入缓存区中。
在形成一个计算任务后,就可以将该计算任务的任务数据输入到内存缓存区,等待被从设备执行。其中,在一个输入缓存区的任务数据没有被从设备执行完成前,无法对该输入缓存区继续输入其他的任务数据。
在服务器输入任务数据到输入缓存区时是并行无线程阻塞的,因为在本公开中设置了多个输入缓存区,一个宿主机线程在完成其任务数据的输入时,无需等待上一个计算任务的任务数据的输入完成。
在以前的方案中,有新的计算任务的任务数据输入时需要等待从设备内存释放,即先将另一个计算任务的任务数据从设备内存中释放,从而导致任务数据输入长时间处于等待中,而本公开因为不同的宿主机线程可以独立的使用自己的内存缓存区,因此解决了从设备数据输入延时的不确定性的问题。
需要说明的是,本公开适用于具有异构计算技术的从设备实现神经网络模型推理的计算任务,是因为在神经网络模型推理中包含了大量的矩阵乘法,卷积等基本计算单元,在并行加速硬件(从设备)上有针对卷积、矩阵乘法这些基本计算单元的专用硬件电路设计,能够并行处理这些基本计算单元,相比CPU,能在更少的时间内完成计算。
在一个可选实施例中,所述步骤S12可以包括:查找空闲的输入缓存区,并读取所述空闲的输入缓存区对应的内存地址;将所述计算任务的任务数据,根据所述内存地址分别输入所述空闲的输入缓存区中。
在本公开中,为配合从设备读取内存地址做出相应的改造,从而在硬件逻辑上可以读取宿主机直接指定的内存地址。具体地,从设备具有第一寄存器,并且从设备的寄存器中记录各内存缓存区的内存地址(首地址),宿主机可以查询到各个输入缓存区的内存地址。
其中,输入缓存区是否可用的、尚无写入其他任务数据,可以通过循环读取输入缓存区的方式来确定。具体地,本公开的内存缓存区,设计为设计一个循环缓存区。举例来说,当N=10时有0~9共10个缓存区,宿主机线程可以按照顺序循环读取内存缓存区,如果第i号缓存区已经被占用,那么就会继续读取第i+1号缓存区,如果i为9,则跳回0号缓存区。
在步骤S13中,在各所述输入缓存区中存在符合启动条件的输入缓存区的情况下,则启动执行符合启动条件的输入缓存区对应的计算任务。
本公开是采用异步调用方式,在单个宿主机线程在任务数据输入完成,也就是完成从设备上的内存拷入后,需要等待从设备的计算资源的释放后才能执行计算任务。
在一个可选实施例中,若属于输入缓存区的计算任务的任务数据输入完成、且用于执行所述计算任务的计算资源未被占用,则确定所述输入缓存区符合启动条件。也即是说,在输入缓存区的计算任务的任务数据输入完成,且从设备的计算资源未被占用,就可以将该输入缓存区确定为符合启动条件。
参照图8,所示为一种采用内存缓存区的异步调用的示意图,所述从设备包括硬件计算单元,在任务数据输入到输入缓存区后,如果硬件计算单元还在执行另一个计算任务,那么就需要等待从设备的计算资源释放。因此本公开在宿主机侧创建全局线程锁,来保证宿主机线程对从设备的计算资源的独占,同时保证对计算资源的充分利用。
具体地,当全局线程锁被占用时,表示当前从设备正在执行其他的计算任务,需要等待,当全局线程锁未被占用时,则让从设备去处理已经写入输入缓存区的任务数据。
在一个可选实施例中,所述步骤S13可以包括:采用所述符合启动条件的输入缓存区的内存地址,生成计算指令;根据所述计算指令中的内存地址,从所述符合启动条件的输入缓存区中读取任务数据,以执行计算任务并得到计算结果。
对于符合启动条件的输入缓存区,可以根据该输入缓存区的内存地址生成针对从设备的计算指令。
当生成针对从设备的计算指令后,将计算指令发送至从设备,从设备可以根据计算指令中的内存地址,定位到相应的输入缓存区,并从该缓存区中读取任务数据以执行计算任务,当执行完计算任务后,就可以得到计算结果。
在步骤S14中,将执行完成的计算任务的计算结果返回至对应的客户端。
在本公开中,输入缓存区相应设置了输出缓存区,当从设备完成计算任务得到计算结果后,就可以将计算结果输入到输出缓存区中,并且,还将进一步将计算结果拷贝到宿主机内存,宿主机对计算结果并分拆成反馈至相应的客户端。当然,计算结果的输出过程也是并行无阻塞。
在一个可选实施例中,所述方法还包括:释放用于执行所述计算任务的计算资源。
在具体实现中,当某个输入缓存区的任务数据被从设备执行完后,可以释放执行该计算任务的计算资源,并且,还可以修改从设备的寄存器的寄存状态,将寄存状态从占用状态修改为释放状态,表示从设备的计算资源被释放,可以执行下一宿主机线程的计算任务。
为了使本领域技术人员更好地理解本公开的实施例,下面采用一个具体示例来说明,参照图9,所示为一种宿主机侧和加速硬件侧(从设备)交互工作流程示意图,需要说明的是,图9为宿主机单个线程在执行过程中和从设备之间的交互工作流程,而在宿主机侧实际使用时多个相同的宿主机线程,在宿主机侧使用全局线程锁保证对从设备的计算资源的独占的同时,一旦完成计算,计算资源被释放立刻就会被另一宿主机线程所抢占。其中,从设备侧的寄存器记录了各输入缓存区的首地址(内存地址)。
在每个宿主机线程中,在启动线程循环前需要获取此线程对应的内存缓存区的内存地址,而在循环过程中执行顺序是:
1、拷贝宿主机任务数据到从设备的输入缓存区;
2、获取全局线程锁;如果全局线程锁被占用,那么宿主机将不断查询直至获取到全局线程锁;
3、指定从设备执行计算指令,其中,将此线程绑定的内存缓存区的内存地址作为计算指令的参数传入硬件执行逻辑中,这样,从设备侧根据计算指令根据内存地址从相应的输入数据缓存区中读取到任务数据以执行计算任务;
4、等待计算资源释放的信号,释放全局线程锁;具体来说,在计算资源释放后从设备的寄存器的状态数据会被修改,宿主机可以读取从设备的寄存器的状态数据,当状态数据为释放状态时,可以释放全局线程锁;
5、拷贝输出缓存区的计算结果到宿主机内存。
应用本公开的实施例,能够保障服务器使用异构计算技术的从设备的计算资源利用率,在服务端的多并发场景中能有效保证计算效率,从而提高可用***的容量,可以避免由于输入数据的延时导致的从设备被闲置的情况,提高了从设备的利用率。可见,本公开的实施例能够有效利用从设备的计算资源,稳定服务吞吐容量只与异构计算硬件的计算性能有关。
在一个可选实施例中,所述计算任务的处理方法还包括:针对各计算任务,获取所述计算任务对应的数据处理请求的发送时间;按照所述发送时间生成列表任务顺序;将执行完成的计算任务的计算结果输入所述输出缓存区;将所述输出缓存区的计算结果,按照所述列表任务顺序发送至对应的客户端。
在本公开中,为了保证输出的计算结果和客户端的数据处理请求的一致性,需要在宿主机的每个宿主机线程中列出当前批次(计算任务)的列表任务顺序,单个批次内的数据可以保证先进先出,从而可以在宿主机接收到从设备批量输出的计算结果时,可以在拆分后按照该列表任务顺序找到对应的客户端。
具体地,当队列中客户端的数据处理请求积攒到限定的阈值,或者收集数据处理请求花费时间的超过阈值时,可以将这些数据处理请求按照先进先出(比如发送时间)合并为一次计算任务的任务数据,然后按照发送时间生成列表任务顺序,该列表任务顺序按序记录了客户端的标志,通过客户端的标志可以将计算结果反馈至相应的客户端。
生成列表任务顺序后,将这些任务数据发送至从设备,从设备在执行时也将按照先进先出顺序执行,这样,在处理完后的输出的计算结果在顺序上和输入的数据处理请求是保持一一对应关系的,这样,在批量输出计算结果后,宿主机可以拆分计算结果,并根据列表任务顺序查找到对应的客户端,以通知客户端本任务结束。
参照图10,所示为一种客户端保证输入输出一致性示意图,以单个宿主机线程为例,假设在一个宿主机线程中,按照时间顺序将客户端A、客户端B、客户端C和客户端D的任务数据作为同一个批次的计算任务,然后按照任务数据的发送时间生成列表任务顺序,其中,列表任务顺序记录针对客户端的标志。
当从设备的计算资源空闲时,将按照先进先出方式依次处理队列中的任务数据,然后将批量输出数据(即计算结果),其中,从设备输出计算结果时,是按照先进先出方式批量输出,因此在宿主机接收到计算结果后,可以在拆分后在列表任务顺序查找到对应的客户端的标志,然后按照客户端的标志通知对应的客户端会话本任务结束,这样,保证了客户端接收到其所发送的任务数据对应的计算结果,保证了输入输出的一致性。
图11是根据一示例性实施例示出的一种计算任务的处理装置框图。参照图11,所述服务器中设置有多个输入缓存区,所述装置包括:
计算任务生成模块111,被配置为基于客户端发送的数据处理请求,生成多个计算任务;
任务数据输入模块112,被配置为确定各所述计算任务的输入缓存区,并将计算任务对应的任务数据分别输入所述输入缓存区中;
计算任务启动模块113,被配置为在各所述输入缓存区中存在符合启动条件的输入缓存区的情况下,则启动执行符合启动条件的输入缓存区对应的计算任务;
计算结果返回模块114,被配置为将执行完成的计算任务的计算结果返回至对应的客户端。
可选地,所述任务数据输入模块112被配置为:查找空闲的输入缓存区,并读取所述空闲的输入缓存区对应的内存地址;将所述计算任务的任务数据,根据所述内存地址分别输入所述空闲的输入缓存区中。
可选地,所述装置还包括:启动条件确定模块,被配置为若属于输入缓存区的计算任务的任务数据输入完成、且用于执行所述计算任务的计算资源未被占用,则确定所述输入缓存区符合启动条件。
可选地,所述计算任务启动模块被配置为:采用所述符合启动条件的输入缓存区的内存地址,生成计算指令;根据所述计算指令中的内存地址,从所述符合启动条件的输入缓存区中读取任务数据,以执行计算任务并得到计算结果。
可选地,所述装置还包括:计算资源释放模块,被配置为释放用于执行所述计算任务的计算资源。
可选地,还包括:发送时间获取模块,被配置为针对各计算任务,获取所述计算任务对应的数据处理请求的发送时间;列表任务顺序生成模块,被配置为按照所述发送时间生成列表任务顺序。
可选地,计算结果返回模块114,被配置为将执行完成的计算任务的计算结果输入所述输出缓存区;将所述输出缓存区的计算结果,按照所述列表任务顺序发送至对应的客户端。
可选地,所述计算任务为神经网络模型推理的计算任务,所述服务器具有使用异构计算技术的并行加速硬件。
图12是根据一示例性实施例示出的一种计算任务的处理***框图。参照图11,该***包括所述***包括客户端121和服务器122。
所述客户端121,用于向所述服务器122发送数据处理请求;
所述服务器122,所述服务器中设置有多个输入缓存区和输出缓存区,所述服务器112用于基于客户端121发送的数据处理请求,生成多个计算任务;确定各所述计算任务的输入缓存区,并将计算任务对应的任务数据分别输入所述输入缓存区中;在各所述输入缓存区中存在符合启动条件的输入缓存区的情况下,则启动执行符合启动条件的输入缓存区对应的计算任务;将执行完成的计算任务的计算结果返回至对应的客户端121。
可选地,所述服务器122包括宿主机和从设备,其中,
所述宿主机,用于接收所述客户端发送的数据处理请求,并基于接收到的所述数据处理请求生成多个计算任务,以及确定各所述计算任务的输入缓存区,并在各所述输入缓存区中存在符合启动条件的输入缓存区的情况下,则启动执行符合启动条件的输入缓存区对应的计算任务;
所述从设备,设置有硬件计算单元和多个所述输入缓存区,其中,
所述输入缓存区用于输入对应的计算任务的任务数据;
所述硬件计算单元用于执行符合启动条件的输入缓存区对应的计算任务,并将执行完成的计算任务的计算结果返回至所述宿主机。
可选地,所述从设备中还设置有寄存器,其中,
所述寄存器,用于记录所述硬件计算单元的计算资源是否被释放,并基于所述计算单元的计算资源被释放的状态通知给所述宿主机;
所述宿主机,用于在所述计算单元的计算资源处于被释放的状态下,生成用于启动执行符合启动条件的输入缓存区对应的计算任务的计算指令。
可选地,所述从设备中还设置有输出缓存区,其中,
所述输出缓存区,用于缓存执行完成的计算任务的计算结果,并将缓存的计算结果返回给所述宿主机;
所述宿主机,还用于将计算结果依序返回给客户端。
关于上述实施例中的***,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图13是根据一示例性实施例示出的一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图13所示。该计算机设备包括通过***总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作***和计算机程序。该内存储器为非易失性存储介质中的操作***和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种计算任务的处理方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图13中示出的结构,仅仅是与本公开方案相关的部分结构的框图,并不构成对本公开方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
本公开还提供了一种服务器,包括:处理器;用于存储处理器可执行指令的存储器;其中,处理器被配置为执行指令,以实现上述计算任务的处理方法实施例中对应的各个步骤和/或流程。
本公开还提供了一种存储介质,包括:当存储介质中的指令由服务器的处理器执行时,使得服务器能够执行上述计算任务的处理方法实施例中对应的各个步骤和/或流程。
本公开还提供了一种计算机程序产品,计算机程序产品包括:计算机程序代码,当计算机程序代码被计算机运行时,使得计算机执行上述计算任务的处理方法实施例中对应的各个步骤和/或流程。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (10)
1.一种计算任务的处理方法,应用于服务器,其特征在于,所述服务器中设置有多个输入缓存区,所述方法包括:
基于客户端发送的数据处理请求,生成多个计算任务;
确定各所述计算任务的输入缓存区,并将计算任务对应的任务数据分别输入所述输入缓存区中;
在各所述输入缓存区中存在符合启动条件的输入缓存区的情况下,则启动执行符合启动条件的输入缓存区对应的计算任务;
将执行完成的计算任务的计算结果返回至对应的客户端。
2.根据权利要求1所述的计算任务的处理方法,其特征在于,所述确定各所述计算任务的输入缓存区,并将计算任务对应的任务数据分别输入所述输入缓存区中包括:
查找空闲的输入缓存区,并读取所述空闲的输入缓存区对应的内存地址;
将所述计算任务的任务数据,根据所述内存地址分别输入所述空闲的输入缓存区中。
3.根据权利要求1所述的计算任务的处理方法,其特征在于,在启动执行符合启动条件的输入缓存区对应的计算任务之前,所述方法还包括:
若属于输入缓存区的计算任务的任务数据输入完成、且用于执行所述计算任务的计算资源未被占用,则确定所述输入缓存区符合启动条件。
4.根据权利要求3所述的计算任务的处理方法,其特征在于,所述启动执行符合启动条件的输入缓存区对应的计算任务包括:
采用所述符合启动条件的输入缓存区的内存地址,生成计算指令;
根据所述计算指令中的内存地址,从所述符合启动条件的输入缓存区中读取任务数据,以执行计算任务并得到计算结果。
5.根据权利要求3所述的计算任务的处理方法,其特征在于,在所述将执行完成的计算任务的计算结果返回至对应的客户端之后,还包括:
释放用于执行所述计算任务的计算资源。
6.根据权利要求1所述的计算任务的处理方法,其特征在于,在所述基于客户端发送的数据处理请求,生成多个计算任务之后,还包括:
针对各计算任务,获取所述计算任务对应的数据处理请求的发送时间;
按照所述发送时间生成列表任务顺序。
7.一种计算任务的处理装置,应用于服务器,其特征在于,所述服务器中设置有多个输入缓存区,所述装置包括:
计算任务生成模块,被配置为基于客户端发送的数据处理请求,生成多个计算任务;
任务数据输入模块,被配置为确定各所述计算任务的输入缓存区,并将计算任务对应的任务数据分别输入所述输入缓存区中;
计算任务启动模块,被配置为在各所述输入缓存区中存在符合启动条件的输入缓存区的情况下,则启动执行符合启动条件的输入缓存区对应的计算任务;
计算结果返回模块,被配置为将执行完成的计算任务的计算结果返回至对应的客户端。
8.一种计算任务的处理***,所述***包括客户端和服务器,其中:
所述客户端,用于向所述服务器发送数据处理请求;
所述服务器,所述服务器中设置有多个输入缓存区和输出缓存区,所述服务器用于基于客户端发送的数据处理请求,生成多个计算任务;确定各所述计算任务的输入缓存区,并将计算任务对应的任务数据分别输入所述输入缓存区中;在各所述输入缓存区中存在符合启动条件的输入缓存区的情况下,则启动执行符合启动条件的输入缓存区对应的计算任务;将执行完成的计算任务的计算结果返回至对应的客户端。
9.一种服务器,其特征在于,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如权利要求1至6中任一项所述的计算任务的处理方法。
10.一种存储介质,当所述存储介质中的指令由服务器的处理器执行时,使得服务器能够执行如权利要求1至6中任一项所述的计算任务的处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911159702.3A CN110955461B (zh) | 2019-11-22 | 2019-11-22 | 计算任务的处理方法、装置、***、服务器和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911159702.3A CN110955461B (zh) | 2019-11-22 | 2019-11-22 | 计算任务的处理方法、装置、***、服务器和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110955461A true CN110955461A (zh) | 2020-04-03 |
CN110955461B CN110955461B (zh) | 2024-01-12 |
Family
ID=69978310
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911159702.3A Active CN110955461B (zh) | 2019-11-22 | 2019-11-22 | 计算任务的处理方法、装置、***、服务器和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110955461B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112491963A (zh) * | 2020-11-03 | 2021-03-12 | 泰康保险集团股份有限公司 | 数据传输方法、装置、设备及可读存储介质 |
CN114638689A (zh) * | 2022-03-21 | 2022-06-17 | 北京自如信息科技有限公司 | 一种信用信息生成方法、装置、***和电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130046811A1 (en) * | 2011-08-18 | 2013-02-21 | International Business Machines Corporation | Stream processing using a client-server architecture |
CN108415771A (zh) * | 2018-02-01 | 2018-08-17 | 深圳市安信智控科技有限公司 | 多芯片分布式并行计算加速*** |
US10109030B1 (en) * | 2016-12-27 | 2018-10-23 | EMC IP Holding Company LLC | Queue-based GPU virtualization and management system |
CN109376004A (zh) * | 2018-08-20 | 2019-02-22 | 中国平安人寿保险股份有限公司 | 基于集群计算的数据批处理方法、装置、电子设备及介质 |
CN109933429A (zh) * | 2019-03-05 | 2019-06-25 | 北京达佳互联信息技术有限公司 | 数据处理方法、装置、电子设备及存储介质 |
-
2019
- 2019-11-22 CN CN201911159702.3A patent/CN110955461B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130046811A1 (en) * | 2011-08-18 | 2013-02-21 | International Business Machines Corporation | Stream processing using a client-server architecture |
US10109030B1 (en) * | 2016-12-27 | 2018-10-23 | EMC IP Holding Company LLC | Queue-based GPU virtualization and management system |
CN108415771A (zh) * | 2018-02-01 | 2018-08-17 | 深圳市安信智控科技有限公司 | 多芯片分布式并行计算加速*** |
CN109376004A (zh) * | 2018-08-20 | 2019-02-22 | 中国平安人寿保险股份有限公司 | 基于集群计算的数据批处理方法、装置、电子设备及介质 |
CN109933429A (zh) * | 2019-03-05 | 2019-06-25 | 北京达佳互联信息技术有限公司 | 数据处理方法、装置、电子设备及存储介质 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112491963A (zh) * | 2020-11-03 | 2021-03-12 | 泰康保险集团股份有限公司 | 数据传输方法、装置、设备及可读存储介质 |
CN112491963B (zh) * | 2020-11-03 | 2023-11-24 | 泰康保险集团股份有限公司 | 数据传输方法、装置、设备及可读存储介质 |
CN114638689A (zh) * | 2022-03-21 | 2022-06-17 | 北京自如信息科技有限公司 | 一种信用信息生成方法、装置、***和电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN110955461B (zh) | 2024-01-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108647104B (zh) | 请求处理方法、服务器及计算机可读存储介质 | |
CN109783255B (zh) | 数据解析分发装置及高并发数据处理方法 | |
CN110673959A (zh) | 用于处理任务的***、方法和装置 | |
CN107204998B (zh) | 处理数据的方法和装置 | |
CN113515320A (zh) | 一种硬件加速处理方法、装置以及服务器 | |
CN110955461A (zh) | 计算任务的处理方法、装置、***、服务器和存储介质 | |
CN111338769B (zh) | 一种数据处理方法、装置及计算机可读存储介质 | |
EP4361808A1 (en) | Resource scheduling method and device and computing node | |
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 | |
CN117370046A (zh) | 进程间通信方法、***、设备和存储介质 | |
CN114816777A (zh) | 命令处理装置、方法、电子设备以及计算机可读存储介质 | |
CN115391053B (zh) | 基于cpu和gpu混合计算的在线服务方法及装置 | |
WO2023160484A1 (zh) | 一种图像处理的方法及相关装置和*** | |
CN111831408A (zh) | 异步任务处理方法、装置、电子设备及介质 | |
CN115378937B (zh) | 任务的分布式并发方法、装置、设备和可读存储介质 | |
CN111209263A (zh) | 数据存储方法、装置、设备及存储介质 | |
CN111443898A (zh) | 基于优先级队列与有限状态机的流程式控制软件设计方法 | |
CN113923212B (zh) | 一种网络数据包处理方法和装置 | |
CN115618966A (zh) | 用于训练机器学习模型的方法、装置、设备和介质 | |
CN114741166A (zh) | 一种分布式任务的处理方法、分布式***及第一设备 | |
CN113076180B (zh) | 上行数据通路的构建方法及数据处理*** | |
CN113076189B (zh) | 具有多数据通路的数据处理***及用多数据通路构建虚拟电子设备 | |
CN113296972A (zh) | 一种信息的注册方法、计算设备及存储介质 | |
EP4191413A1 (en) | Message management method, device, and serverless system | |
CN111416872A (zh) | 基于mp和rdma的高速缓存文件***通信方法及*** |
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 |