CN116594745A - 任务执行方法、系统、芯片及电子设备 - Google Patents
任务执行方法、系统、芯片及电子设备 Download PDFInfo
- Publication number
- CN116594745A CN116594745A CN202310543047.1A CN202310543047A CN116594745A CN 116594745 A CN116594745 A CN 116594745A CN 202310543047 A CN202310543047 A CN 202310543047A CN 116594745 A CN116594745 A CN 116594745A
- Authority
- CN
- China
- Prior art keywords
- task
- data
- state
- gpu
- calculation
- 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
- 238000000034 method Methods 0.000 title claims abstract description 62
- 238000004364 calculation method Methods 0.000 claims abstract description 153
- 238000012545 processing Methods 0.000 claims abstract description 92
- 108090000623 proteins and genes Proteins 0.000 claims description 29
- 238000012163 sequencing technique Methods 0.000 claims description 27
- 230000006870 function Effects 0.000 claims description 22
- 238000004891 communication Methods 0.000 claims description 16
- 238000007405 data analysis Methods 0.000 claims description 9
- 230000008569 process Effects 0.000 description 17
- HPTJABJPZMULFH-UHFFFAOYSA-N 12-[(Cyclohexylcarbamoyl)amino]dodecanoic acid Chemical compound OC(=O)CCCCCCCCCCCNC(=O)NC1CCCCC1 HPTJABJPZMULFH-UHFFFAOYSA-N 0.000 description 13
- 230000007614 genetic variation Effects 0.000 description 12
- 238000004458 analytical method Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 9
- 238000011161 development Methods 0.000 description 5
- 230000002068 genetic effect Effects 0.000 description 4
- 230000001133 acceleration Effects 0.000 description 3
- 239000012634 fragment Substances 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 206010064571 Gene mutation Diseases 0.000 description 1
- 101100384355 Mus musculus Ctnnbip1 gene Proteins 0.000 description 1
- 230000005856 abnormality Effects 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012165 high-throughput sequencing Methods 0.000 description 1
- 235000003642 hunger Nutrition 0.000 description 1
- 150000002500 ions Chemical class 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000002773 nucleotide Substances 0.000 description 1
- 125000003729 nucleotide group Chemical group 0.000 description 1
- 238000011022 operating instruction Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000037351 starvation Effects 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 238000011282 treatment Methods 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- 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
-
- 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)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请实施例提供了一种任务执行方法、系统、芯片及电子设备,其中,任务执行方法包括:通过CPU的任务调度线程,检测任务池中存在的任务的任务状态,其中,所述任务池中的任务被用于执行相同的计算;将任务状态为数据准备完成的任务调度至GPU中,以通过所述GPU中用于执行所述计算的任务操作序列,对所述任务执行所述计算;根据所述GPU反馈的计算结果,对所述任务进行处理。通过本申请实施例,可以实现以较低的成本,对海量数据进行高效计算和处理。
Description
技术领域
本申请实施例涉及生物信息技术领域,尤其涉及一种任务执行方法、系统、芯片及电子设备。
背景技术
随着计算机技术的发展,越来越多的应用涉及到海量数据的处理,需要庞大的算力。以基因测序数据分析为例,随着高通量测序技术的发展,产生了海量的基因测序数据,例如,某些测序仪可以在30小时内输出6TB的测序数据,如何提供足够的算力对这些规模庞大的数据进行快速分析处理成为一个难题。
目前,解决该难题的一种方式是通过传统的CPU(Central Processing Unit,中央处理器)计算平台如x86平台单机进行计算,但因CPU算力有限,因此计算非常耗时;另一种方式是通过GPU(Graphic Processing Unit,图形处理器)进行计算,但GPU开发应用门槛较高、成本也较高。
因此,如何以较低成本,实现对海量数据的高效计算和处理,生成亟待解决的问题。
发明内容
有鉴于此,本申请实施例提供一种任务执行方案,以至少部分解决上述问题。
根据本申请实施例的第一方面,提供了一种任务执行方法,包括:通过CPU的任务调度线程,检测任务池中存在的任务的任务状态,其中,所述任务池中的任务被用于执行相同的计算;将任务状态为数据准备完成的任务调度至GPU中,以通过所述GPU中用于执行所述计算的任务操作序列,对所述任务执行所述计算;根据所述GPU反馈的计算结果,对所述任务进行处理。
根据本申请实施例的第二方面,提供了另一种任务执行方法,包括:通过CPU的任务调度线程,检测任务池中存在的任务的任务状态,其中,所述任务池中的任务基于基因测序数据生成,所述任务池中的任务用于执行相同的基因测序数据分析计算;将任务状态为数据准备完成的任务调度至GPU中,以通过所述GPU中用于执行所述基因测序数据分析计算的任务操作序列,对所述任务执行基因测序数据分析计算;根据所述GPU反馈的计算结果,对所述任务进行处理。
根据本申请实施例的第三方面,提供了一种任务执行系统,包括:CPU和GPU;所述CPU中设置有并行执行的数据读取线程、任务调度线程、和数据写入线程;所述GPU中设置有多个用于执行任务计算的任务操作序列;其中,所述CPU的数据读取线程,将用于待执行计算的待处理数据分批次读取入任务池中的、任务状态为空闲的任务中,并且,将所述任务的任务状态更新为数据准备完成;所述CPU的任务调度线程,检测任务池中存在的任务的任务状态,其中,所述任务池中的任务用于执行相同的计算;将任务状态为数据准备完成的任务调度至GPU中,以通过所述GPU中用于执行所述计算的任务操作序列,对所述任务执行所述计算;并且,根据所述GPU反馈的计算结果,更新所述任务的任务状态;所述CPU的数据写入线程,检测任务池中是否存在任务状态为待写入状态的任务;将待写入状态的任务对应的任务结果写入预设地址,并且,在写入完成后,将所述任务的任务状态更新为空闲。
根据本申请实施例的第四方面,提供了一种芯片,包括:如第三方面中所述的任务执行系统。
根据本申请实施例的第五方面,提供了一种电子设备,包括:如第四方面中所述的芯片、存储器、通信接口和通信总线,所述芯片、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放至少一可执行指令,所述可执行指令使所述芯片执行如第一方面或第二方面所述方法对应的操作。
根据本申请实施例提供的方案,采用CPU+GPU的异构计算框架,其中,在GPU中设置多个任务操作序列,来执行实际的计算任务,由CPU根据任务池中任务的任务状态,管理任务的执行逻辑。因相对而言,CPU的编程和开发稍易于GPU,而CPU算力不足的问题又可通过GPU进行有效弥补。并且,本申请实施例的方案中,CPU调用的是GPU中可执行所需计算的任务操作序列,该任务操作序列能较为完整地完成计算任务,无需CPU再进行计算,在快速计算基础上,还节约了CPU资源,提高了任务执行的整体速度和效率。由此,通过本申请实施例的方案,可以实现以较低的成本,对海量数据进行高效计算和处理。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1为适用本申请实施例方案的示例性系统框架的示意图;
图2A为根据本申请实施例一的一种任务执行方法的步骤流程图;
图2B为图2A所示实施例中的一种场景示例的示意图;
图3A为根据本申请实施例二的一种任务执行系统的结构框图;
图3B为图3A所示实施例中的一个具体示例的示意图;
图4为根据本申请实施例三的一种芯片的结构框图;
图5为根据本申请实施例四的一种电子设备的结构示意图。
具体实施方式
为了使本领域的人员更好地理解本申请实施例中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请实施例一部分实施例,而不是全部的实施例。基于本申请实施例中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于本申请实施例保护的范围。
下面结合本申请实施例附图进一步说明本申请实施例具体实现。
图1示出了一种适用本申请实施例方案的示例性系统框架。如图1所示,该系统框架包括CPU和GPU,形成CPU+GPU的异构计算架构。本示例中,CPU负责逻辑控制,GPU负责实际的计算处理。CPU与GPU通过PCIE(Peripheral Component Interconnect Express,外围组件快速互连,是一种高速串行计算机扩展总线)总线连接在一起协同工作,CPU所在位置称为为主机端(host),而GPU所在位置称为设备端(device)。
如图1中所示,CPU中主要包括:ALU(Arithmetic Logic Unit,算术逻辑运算单元)、CU(ControlUnit,控制单元)、Cache(高速缓冲存储器)、DRAM(Dynamic Random AccessMemory,动态随机存取存储器,一种系统内存)。此外,还可以包括图中未示出的寄存器(Register)、及实现各部件之间联系的数据(Data)、控制及状态的总线(Bus)等。
而GPU中则包括大量的ALU和少量的Cache,适合数据并行的计算密集型任务,其线程是轻量级的。此外,还可包括DRAM。
具体到本申请实施例,CPU部分控制任务的执行逻辑,而GPU部分则可实现实际的任务的计算处理。
基于上述系统框架,以下通过多个实施例,对本申请提供的方案进行说明。
实施例一
参照图2A,示出了根据本申请实施例一的一种任务执行方法的步骤流程图。
本实施例的任务执行方法包括以下步骤:
步骤S202:通过CPU的任务调度线程,检测任务池中存在的任务的任务状态。
本申请实施例中,CPU中设置有任务池,该任务池的大小基于CPU的Cache大小设置,不同的CPU可能Cache大小也不同,则任务池大小也不同,本申请实施例对此不作限制。
进一步地,可在任务池中设置多个任务,该多个任务对应的数据量可相同,以便于管理和处理。任务池中的任务可对应有:空闲、数据准备完成、运算中和待写入等多个任务状态。其中,当任务状态为空闲时,表示该任务可接收新的数据;当任务状态为数据准备完成时,表示该任务已接收完数据,可进行下一步的处理,如可被调度处理等;当任务状态为运算中,则表示该任务的数据已被调度至GPU中进行处理,目前处于GPU对数据进行计算的状态;当任务状态为待写入,表示GPU的计算结果已反馈至该任务,等待写入至预定位置。可选地,任务状态还可以有指示任务错误的状态,当任务状态为错误时,表示该任务执行出错,可进行重试。
初始时,可由CPU的主线程将任务池中的任务均初始化为空闲的任务状态。CPU一方面可与外部存储设备如硬盘进行交互,不断读入数据至空闲的任务中;另一方面可与GPU交互,不断发送数据准备完成的任务至GPU中进行计算。随着任务执行的不断变化,任务池中各任务的任务状态也不断更新变化。
在一个示例中,可以通过CPU的数据读取线程,将用于待执行计算的待处理数据按批次读取入任务池中的、任务状态为空闲的任务中,并且,将读入了待处理数据后的任务的任务状态更新为数据准备完成。由此,能够通过不断读取数据来不断生成相应状态的任务,并通过任务状态来实现任务的实时和有效处理。其中,待处理数据可为存储于外部存储设备如硬盘中的数据,也可以为已从外部存储设备读取入CPU的寄存器中的数据。本申请实施例的方案可对大数据量数据进行高效的批量处理,尤其适用于单条数据量规模小(如1-2Byte)、但数据量大、且不同条数据之间相关性小的规模数据,如基因测序数据,或者其它具有该类特性的大数据量数据等。并且,在一次规模性的处理中,待处理数据通常为实现某一相同功能的数据,如,均为用于执行基因数据比对的数据,或者,均为用于基因变异识别的数据,等等。也即,读入任务中的数据均用于执行相同的功能,相应地,任务池中的任务均被用于执行相同的计算,如,在后续均被用于执行基因变异识别计算,等。
在数据读取线程不断向任务池中的任务读入数据的同时,CPU中的任务调度线程,会实时检测任务池中存在的任务的任务状态,如果检测到任务池中存在任务状态为数据准备完成的任务,则对其进行调度,以通过调度至GPU中进行后续处理。
需要说明的是,本申请实施例中,若无特殊说明,“多个”、“多种”等与“多”有关的数量,均意指两个及两个以上。
步骤S204:将任务状态为数据准备完成的任务调度至GPU中,以通过GPU中用于执行计算的任务操作序列,对任务执行计算。
如前所述,任务池中的任务均来自于需要执行相同功能的待处理数据,对这些任务的计算也需采用同样的计算方式。为此,本申请实施例中,将GPU的算力拆分为多个任务操作序列,该多个任务操作序列针对调度来的任务执行相同的计算处理。并且,若GPU存在多个,每个GPU的算力又可被拆分为多个任务操作序列,则基于多个GPU的多个任务操作序列,可以提供更为有力的算力保障。在具体实现时,任务操作序列可实现为GPU的“流”,“流”可以理解为一系列异步的GPU操作,这些操作按照CPU中的主机代码确定的顺序在GPU上执行。但不限于此,其它可实现与“流”功能类似的任务操作序列的方式也同样适用于本申请实施例的方案。
本申请实施例中,任务操作序列是由CPU发出的、在GPU中执行的针对CPU调度来的任务的操作序列,多个任务操作序列间可并行执行。因需对待处理数据所进行的处理不同,则任务操作序列也不同。示例性地,对于基因数据比对任务,任务操作序列可设置为:获取待比对的基因片段及基因序列->将待比对的基因片段与基因序列进行匹配->获得匹配结果。再例如,对于基因变异识别任务,任务操作序列可设置为:获取待识别的基因片段->识别片段中是否存在非常规核甘酸序列->获得识别结果。可见,任务操作序列可由本领域技术人员根据实际需要完成功能的不同而不同,预先设置相对应的任务操作序列。以基因变异识别对应的多个任务操作序列为例,GPU在接收到CPU调度来的任务后,因GPU中的多个任务操作序列均为用于执行基因变异识别计算的任务操作序列,因此,不管哪个任务操作序列被分配给该任务,都会对该任务执行基因变异识别对应的计算。
此外,为了便于对任务操作序列进行管理和调度,本申请实施例的一种可行方式中,为任务操作序列也设置了状态,包括:空闲状态和忙状态。初始时,CPU的主线程将GPU中的多个任务操作序列均初始化为空闲状态。则,CPU的任务调度线程会检测GPU中、用于执行所述计算的多个任务操作序列中,是否存在状态为空闲的任务操作序列;若存在,则将任务状态为数据准备完成的任务调度至GPU中,以通过GPU中状态为空闲的任务操作序列,对该任务执行所述计算。进一步可选地,还可将执行所述计算的任务操作序列的状态更新为忙,将该任务的任务状态更新为运算中,以实现为各种状态的实时更新,并基于更新后的状态进行任务的逻辑控制和处理。若存在多个GPU,则CPU的任务调度线程会对该多个GPU均进行检测,以从中确定用于执行所述计算的多个任务操作序列中,是否存在状态为空闲的任务操作序列。也即,CPU可调度多个GPU为其提供服务。本申请实施例中,可将任务操作序列或者流理解为GPU对应的虚拟机,每个任务操作序列或流可使用GPU的部分或全部资源,虽然任务操作序列或流的数量可不作限制,但可选地,可为一个GPU设置较少数量的任务操作序列或流,如1至2个,以使任务操作序列或流能够使用更多的GPU资源对更多的待处理数据进行计算处理。
步骤S206:根据GPU反馈的计算结果,对所述任务进行处理。
GPU通过其多个任务操作序列中,状态为空闲的任务操作序列,为CPU调度来的任务提供服务,按照任务操作序列所指示的操作对该任务进行计算。对任务的计算可能正常完成,但也可能因各种原因无法正常完成。不管是何种情况,GPU都会向CPU反馈相应的计算结果。
基于此,在一种可行方式中,若计算正常完成,则CPU可根据GPU反馈的计算结果,将对应任务的任务状态更新为待写入状态。该种方式中,任务被正常计算完成,GPU可通过适当的方式向CPU反馈任务的计算结果,如某任务操作序列对分配给其的任务进行基因变异识别后,确定的该任务对应的数据中是否存在变异数据的结果,等。又因任务池中的任务数量有限,因此需要将该任务对应的计算结果及时写入预设位置,以使该任务的状态更新为空闲,再接收新的待处理数据进行后续处理。可见,通过该方式,可以有效对正常计算完成的数据进行后续处理,在确保任务处理有效性的同时,便于对其对应的任务进行再次使用和管理。
与此同时,CPU中的数据写入线程,会实时检测任务池中是否存在任务状态为待写入状态的任务;若存在,则将待写入状态的任务对应的任务结果写入预设地址,并且,在写入完成后,将该任务的任务状态更新为空闲。通过数据写入线程,可及时发现待写入状态的任务并进行相应的写入和状态更新处理,提高了任务处理的效率。
而在另一种可行方式中,若计算不能正常完成,则GPU也会向CPU反馈相应的、用于指示计算出错的计算结果。此种情况下,CPU中还设置有错误处理线程,则CPU可通过其错误处理线程,检测任务池中是否存在任务状态为错误的任务;然后,根据任务对应的错误类型,对该任务进行错误处理。通过该方式,可以高效应对实际的计算过程中出现的异常问题。
其中,所述错误类型可由本领域技术人员根据实际所需的计算过程中,可能发生的计算异常情况进行适当设定。但在本申请实施例中,主要归纳出两大类型错误,即GPU资源不足类型的错误、和原数据错误类型的错误。这两大类型的错误基本可涵盖本申请实施例方案执行过程中的大部分错误。当然,不限于此,本领域技术人员还可根据实际情况,设定更多的错误类型和处理方式。
GPU资源不足类型的错误用于指示分配给CPU调度至GPU中的任务的GPU计算资源不足引发的错误。因任务操作序列执行相同的计算,其计算时占用的计算资源和存储资源也相同。但不同的任务对应的不同的待处理数据中,所需的计算和存储资源难以估计,且差异较大。因此,可能导致对某一或某些任务的计算出现资源不足的情况。针对这种情况,本申请实施例中,在根据任务对应的错误类型,对任务进行错误处理时,可以包括:若根据错误类型,确定错误原因为执行任务的任务操作序列所需资源不足,则对该任务对应的待处理数据进行拆分,以形成对应的多个新任务进行处理。示例性地,可从任务状态为错误的原任务对应的待处理数据中拆分出部分数据;将该部分数据分配至任务池中状态为空闲的任务中;并且,将原任务和新分配了数据的任务的任务状态均更新为数据准备完成。在将原任务拆分为两个任务的情况下,再将这两个任务调度至GPU的两个任务操作序列执行计算,则将有两倍的GPU的资源可供使用,从而有效解决了对任务进行计算时,资源不足的问题。为了简化拆分操作,在一种可行方式中,可从原任务对应的待处理数据中拆分出一半数据,以形成新的任务。如,原任务保留前半部分数据,将后半部分数据拷贝至新任务中。
而原数据错误类型的错误则用于指示因原任务对应的待处理数据中存在错误数据,导致任务操作序列在进行计算时发生异常。针对该种情况,本申请实施例中,若根据错误类型,确定错误原因为任务的对应的待处理数据错误,则从该任务对应的待处理数据中删除错误数据,并将删除了错误数据后的任务的任务状态更新为数据准备完成。由此,可有效避免因待处理数据中存在的原发错误,而导致的任务整体处理错误,从而提高了任务整体的执行效率。
但如前所述,不管是计算正常完成,还是不能正常完成,GPU都会向CPU进行相应的反馈。而对于CPU来说,其可通过任务调度线程对应的任务调度线程回调函数,接收GPU反馈的计算结果;再根据计算结果,对任务的任务状态进行更新,并基于更新后的任务状态,对任务进行处理(如写入预设位置或进行错误处理等)。回调函数是一种被作为参数传递的函数,当特定的事件或条件发生的时候,调用方使用函数指针调用回调函数,以对事件进行处理。具体到本申请实施例,GPU完成计算后,会将计算结果传递给CPU,CPU可通过任务调度线程中的该回调函数,来分析该任务的计算正常完成还是未正常完成,进而,可基于分析结果将相对应的任务的任务状态更新为待写入状态(计算正常完成)或者错误状态(计算未正常完成)。通过回调函数的方式,可及时且准确地确定任务的计算结果,并对应更新任务的相应任务状态,以便于后续处理,提高处理效率。但不限于此,其它可及时获得计算结果的方式,也同样适用于本申请实施例的方案。
需要说明的是,上述CPU中的多个线程,包括:数据读取线程、任务调度线程、数据写入线程、和错误处理线程,它们之间异步并行工作,相互独立地完成各自的任务。并且,多个任务操作序列之间也是相互独立地并行执行各自的计算。由此,极大地提升了计算效率,实现了计算加速。
可选地,数据读取线程、任务调度线程、数据写入线程、和错误处理线程均可为单线程。并且,当线程进行相应的处理时占用CPU资源,当无需进行相关处理时,则会释放CPU资源,以使CPU资源可以得到更为有效的利用,从而极大地节约了CPU资源。例如,当任务池中有任务状态为空闲的任务时,数据读取线程工作,从外部存储器或文件系统不断读取待处理数据;而若任务池中已无任务状态为空闲的任务,或者,待处理数据已全部读完,则数据读取线程将释放其占用的资源。再例如,当任务池中已无任务状态为数据准备完成的任务时,任务调度线程也会释放其资源,直至任务池中再次出现任务状态为数据准备完成状态的线程,或者,由任务调度线程回调函数将其唤醒,以进行相对应的处理。与某些在CPU上设置多个任务调度线程,并长期占用CPU资源的方式相比,本申请实施例中的方式能够更好地利用CPU资源。又例如,对于数据写入线程,其会在任务池中存在待写入状态的任务时被唤醒,并申请CPU资源进行写入处理,但若写入处理完成,则会释放其占用的CPU资源。再例如,对于错误处理线程,其会在任务池中存在任务状态为错误的任务时被唤醒,使用CPU资源进行错误处理,而在非唤醒状态,则不会占用CPU资源。而且,数据读取线程进行数据读取处理、数据写入线程进行数据写入处理、以及GPU中的任务操作序列进行计算,这多个任务相互间完全解耦,不存在依赖关系,它们只与任务池相关,只要任务池足够大,这三个线程都可以以可能的限度发挥各自的性能。
以下,以一个具体场景为示例,对上述过程进行示例性说明,如图2B所示。
本示例中,以对基因测序数据进行基因测序数据分析为场景,待处理数据为存储于硬盘中的基因测序数据,则本示例中,可通过CPU的任务调度线程,检测任务池中存在的任务的任务状态,其中,任务池中的任务基于基因测序数据生成,任务池中的任务用于执行相同的基因测序数据分析计算;将任务状态为数据准备完成的任务调度至GPU中,以通过GPU中用于执行基因测序数据分析计算的任务操作序列,对所述任务执行基因测序数据分析计算;根据GPU反馈的计算结果,对所述任务进行处理。
具体地,以基因测序数据分析中的基因变异识别为例。假设任务池中可容纳10个任务,初始时,该10个任务均被CPU主线程初始化为空闲状态;再假设,本示例中的待处理数据即基因测序数据存储于硬盘中。则首先,CPU会通过其数据读取线程,不断且批量地从硬盘中读取基因测序数据至其任务池中任务状态为空闲的任务,设定按序读取至任务池中任务状态为空闲的任务中,并在相应的任务对应的基因测序数据读取完成后,将任务状态更新为数据准备完成。
假设,目前任务1的任务状态为数据准备完成,而其它任务的任务状态为空闲,则一方面,数据读取线程会持续从硬盘中读取基因测序数据给这些空闲的任务;另一方面,CPU的任务调度线程会实时检测任务池中任务的状态,当检测到任务1为数据准备完成时,任务调度线程将该任务1调度至GPU中。
本示例中,为便于说明,简单假设存在2个GPU,每个GPU中存在2个任务操作序列,分别为GPU1对应的任务操作序列01和02,GPU2对应的任务操作序列03和04。且,任务操作序列01、02、03和04均在初始化阶段,由CPU的主线程初始化为空闲状态。则,在此情况下,任务调度线程可随机中四个状态为空闲的任务操作序列中选择一个任务操作序列,例如,选择任务操作序列01。则,任务1将被任务调度线程调度给GPU中的任务操作序列01。与此同时,该任务1的任务状态将被更新为运算中,任务操作序列01的状态将被更新为忙。
任务操作序列01对任务1进行基因变异识别对应的一系列计算后,得到计算结果,并通过CPU的任务调度线程回调函数向CPU反馈。本示例中,该计算结果可以为基因变异识别的识别结果。在反馈完成后,任务操作序列01的状态将被更新为空闲,意味着可接受新的任务进行计算。
而在CPU侧,GPU反馈的该计算结果由CPU的任务调度线程回调函数获得,并对该计算结果进行分析。若根据分析结果,确定任务1被正常计算完成,则将任务1的任务状态更新为待写入状态。
与此同时,CPU的数据写入线程也会对任务池中的任务的任务状态进行检测,在发现任务1的任务状态为待写入状态后,将任务1的计算结果写入至预设位置,如预设寄存器或硬盘中等。在写入完成后,任务1的任务状态将被再次更新为空闲,意味着可接收新的基因测序数据,以形成新的任务。
上述过程如图2B中实线箭头所示。
在上述对任务1进行处理的任意时刻,当由其它任务的任务状态更新为数据准备完成,则对该任务也会进行如上述对任务1的处理类似的处理。
示例性地,假设在任务操作序列01在对任务1进行计算的过程中,任务2的任务状态更新为数据准备完成,则任务调度线程会从剩余的三个状态为空闲的任务操作序列中选择一个任务操作序列,例如,选择任务操作序列03。则,任务2将在任务1被执行计算的同时,被任务调度线程调度给GPU中的任务操作序列03。与此同时,该任务2的任务状态将被更新为运算中,任务操作序列03的状态将被更新为忙。
若任务操作序列03在对任务2进行基因变异识别对应的计算时,发现所需计算资源不足,则同样会通过CPU的任务调度线程回调函数向CPU反馈计算错误的计算结果。同时,任务操作序列03的状态将被更新为空闲。上述过程如图2B中稀疏虚线箭头所示。
CPU的任务调度线程回调函数获得该结果后,对该计算结果进行分析。本示例中,根据分析结果,确定任务2未被正常计算完成且错误类型为任务操作序列所需资源不足,则将任务2的任务状态更新为错误状态。CPU的错误处理线程也会实时对任务池中任务的任务状态进行检测,在发现任务2的任务状态为错误状态后,通过前述分析的分析结果确定错误原因为任务操作序列所需资源不足,则此时,会将任务2的前半部分数据仍保留在任务2中,而将任务2的后半部分数据拷贝至任务4中,从而通过当前的任务2和任务4来完成原任务2所要完成的任务。并且,将任务2和任务4的任务状态均更新为数据准备完成。
假设,在上述对原任务2进行处理的同时,任务3已被任务调度线程调度至任务操作序列03进行计算,则此时,任务调度线程可将任务2调度至空闲状态的任务操作序列04行计算,并将任务2的任务状态更新为运算中,将任务操作序列04的状态更新为忙。并且,将任务4调度至空闲状态的任务操作序列02进行计算,并将任务4的任务状态更新为运算中,将任务操作序列02的状态更新为忙。
任务操作序列04和02分别对任务2和4进行基因变异识别对应的一系列计算后,得到计算结果,并通过CPU的任务调度线程回调函数向CPU反馈。本示例中,该计算结果可以为基因变异识别的识别结果。在反馈完成后,任务操作序列04和02的状态将被更新为空闲,意味着可接受新的任务进行计算。
上述过程中,对新的任务2的处理如图2B中密集虚线箭头所示,对任务4的处理如图2B中点线状虚线箭头所示。
而在CPU侧,GPU反馈的计算结果由CPU的任务调度线程回调函数获得,并对该计算结果进行分析。若根据分析结果,确定任务2和4均被正常计算完成,则将任务2和4的任务状态分别更新为待写入状态。
与此同时,CPU的数据写入线程也会对任务池中的任务的任务状态进行检测,在发现任务2和4的任务状态为待写入状态后,将任务2和4的计算结果写入至预设位置。在写入完成后,任务2和4的任务状态将被再次更新为空闲,意味着可接收新的基因测序数据,以形成新的任务。
由上示例可见,对于待处理数据来说,其可被多个不同线程进行并行的不同操作,并可通过CPU调度GPU中的不同任务操作序列来对其进行并行计算处理,从而,极大地提高了数据处理速度和效率。
可见,通过本实施例,采用CPU+GPU的异构计算框架,其中,在GPU中设置多个任务操作序列,来执行实际的计算任务,由CPU根据任务池中任务的任务状态,管理任务的执行逻辑。因相对而言,CPU的编程和开发稍易于GPU,而CPU算力不足的问题又可通过GPU进行有效弥补。并且,本实施例的方案中,CPU调用的是GPU中可执行所需计算的任务操作序列,该任务操作序列能较为完整地完成计算任务,无需CPU再进行计算,在快速计算基础上,还节约了CPU资源,提高了任务执行的整体速度和效率。由此,通过本实施例的方案,可以实现以较低的成本,对海量数据进行高效计算和处理。
实施例二
参照图3A,示出了根据本申请实施例二的一种任务执行系统的结构框图。
本实施例的任务执行系统包括:CPU 302和GPU 304,CPU 302和GPU 304之间可通过PCI E总线进行连接和通信。
CPU 302中设置有并行执行的数据读取线程、任务调度线程、和数据写入线程;GPU304中设置有多个用于执行任务计算的任务操作序列。
其中:
CPU 302的数据读取线程,将用于待执行计算的待处理数据分批次读取入任务池中的、任务状态为空闲的任务中,并且,将相应任务的任务状态更新为数据准备完成。
其中,任务池中可设置多个任务,该多个任务对应的数据量可相同,以便于管理和处理。任务池中的任务可对应有:空闲、数据准备完成、运算中和待写入等多个任务状态。当任务状态为空闲时,表示该任务可接收新的数据;当任务状态为数据准备完成时,表示该任务已接收完数据,可进行下一步的处理,如可被调度处理等;当任务状态为运算中,则表示该任务的数据已被调度至GPU中进行处理,目前处于GPU对数据进行计算的状态;当任务状态为待写入,表示GPU的计算结果已反馈至该任务,等待写入至预定位置。可选地,任务状态还可以有指示任务错误的状态,当任务状态为错误时,表示该任务执行出错,可进行重试。
初始时,可由CPU的主线程将任务池中的任务均初始化为空闲的任务状态。CPU一方面可与外部存储设备如硬盘进行交互,不断读入数据至空闲的任务中;另一方面可与GPU交互,不断发送数据准备完成的任务至GPU中进行计算。随着任务执行的不断变化,任务池中各任务的任务状态也不断更新变化。
CPU 302的任务调度线程,检测任务池中存在的任务的任务状态,其中,任务池中的任务用于执行相同的计算;将任务状态为数据准备完成的任务调度至GPU 304中,以通过GPU 304中用于执行所述计算的任务操作序列,对所述任务执行所述计算;并且,根据GPU304反馈的计算结果,更新所述任务的任务状态。
在数据读取线程不断向任务池中的任务读入数据的同时,CPU中的任务调度线程,会实时检测任务池中存在的任务的任务状态,如果检测到任务池中存在任务状态为数据准备完成的任务,则对其进行调度,以通过调度至GPU中进行后续处理。
在本申请实施例的一种可行方式中,为了便于对任务操作序列进行管理和调度,为任务操作序列也设置了状态,包括:空闲状态和忙状态。初始时,CPU的主线程将GPU中的多个任务操作序列均初始化为空闲状态。则,CPU的任务调度线程会检测GPU中、用于执行所述计算的多个任务操作序列中,是否存在状态为空闲的任务操作序列;若存在,则将任务状态为数据准备完成的任务调度至GPU中,以通过GPU中状态为空闲的任务操作序列,对该任务执行所述计算。进一步可选地,还可将执行所述计算的任务操作序列的状态更新为忙,将该任务的任务状态更新为运算中,以实现为各种状态的实时更新,并基于更新后的状态进行任务的逻辑控制和处理。若存在多个GPU,则CPU的任务调度线程会对该多个GPU均进行检测,以从中确定用于执行所述计算的多个任务操作序列中,是否存在状态为空闲的任务操作序列。也即,CPU可调度多个GPU为其提供服务。
CPU 302的数据写入线程,检测任务池中是否存在任务状态为待写入状态的任务;将待写入状态的任务对应的任务结果写入预设地址,并且,在写入完成后,将所述任务的任务状态更新为空闲。
其中,在一种可行方式中,若计算正常完成,则CPU可根据GPU反馈的计算结果,将对应任务的任务状态更新为待写入状态。与此同时,CPU中的数据写入线程,会实时检测任务池中是否存在任务状态为待写入状态的任务;若存在,则将待写入状态的任务对应的任务结果写入预设地址,并且,在写入完成后,将该任务的任务状态更新为空闲。
在另一种可行方式中,若计算不能正常完成,则GPU也会向CPU反馈相应的、用于指示计算出错的计算结果。若根据错误类型,确定错误原因为执行任务的任务操作序列所需资源不足,则对该任务对应的待处理数据进行拆分,以形成对应的多个新任务进行处理。示例性地,可从任务状态为错误的原任务对应的待处理数据中拆分出部分数据;将该部分数据分配至任务池中状态为空闲的任务中;并且,将原任务和新分配了数据的任务的任务状态均更新为数据准备完成。若根据错误类型,确定错误原因为任务的对应的待处理数据错误,则从该任务对应的待处理数据中删除错误数据,并将删除了错误数据后的任务的任务状态更新为数据准备完成。
上述CPU中的多个线程,包括:数据读取线程、任务调度线程、数据写入线程、和错误处理线程,它们之间异步并行工作,相互独立地完成各自的任务。并且,多个任务操作序列之间也是相互独立地并行执行各自的计算。由此,极大地提升了计算效率,实现了计算加速。
以下,以一个具体示例,对上述系统进行示例性说明,如图3B所示。本示例中,前述任务执行方法的具体实现可通过CUDA编程实现,GPU中的任务操作序列可实现为CUDA流。
在本示例中的任务执行系统实现为基于CUDA的异构系统,其中的CPU被称为主机部分,GPU被称为设备部分。
主机部分中,由主线程负责初始化工作,四个工作线程,即数据读取线程、任务调度线程、数据写入线程和错误处理线程,并行且独立地完成各自对应的数据读取、任务调度、数据写入、和错误处理四个不同的任务。设备部分中,每个GPU都可以拆分为多个CUDA流,由CUDA流来执行实际的计算工作。
具体地:
(1)主线程的工作过程包括:
步骤1、初始化CPU的任务池中的任务为空闲状态;
步骤2、初始化所有GPU的CUDA流为空闲状态。
(2)数据读取线程的工作过程包括:
步骤1、检查任务池是否有任务状态为空闲的任务,直到有任务状态为空闲的任务;
步骤2、从外部存储设备或文件系统等读取数据到该任务中;
步骤3、设置该任务状态为数据准备完成。
(3)任务调度线程的工作过程包括:
步骤1、检测任务池是否有任务状态为数据准备完成的任务,直到有任务状态为数据准备完成的任务;
步骤2、检测GPU中是否有状态为空闲的CUDA流,直到有空闲的CUDA流;
步骤3、把该数据准备完成的任务发送给空闲的CUDA流;
步骤4、设置该CUDA流的状态为忙;
步骤5、设置该任务的任务状态为运算中。
(4)CUDA流的工作过程包括:
步骤1、接收任务调度线程通过PCIE调度的任务的任务数据;
步骤2、按照预先开发的应用算法对对任务数据进行计算;
步骤3、把该任务的计算结果通过PCIE传输回CPU内存的任务里;
步骤4、通过任务调度线程回调函数通知任务调度线程处理任务的计算结果。
(5)任务调度线程回调函数的工作过程包括:
步骤1、根据任务的计算结果,确定任务的计算是成功还是失败,如果成功则进入步骤2,如果失败则进入步骤3;
步骤2、确定计算成功,修改该任务的任务状态为待写入状态;
步骤3、确定计算失败,修改该任务的任务状态为错误状态。
(6-1)数据写入线程的工作过程:
步骤1、检测任务池是否有任务状态为待写入状态的任务,直到有任务状态为待写入状态的任务。
步骤2、把该任务的计算结果写入到外部存储设备或文件系统中;
步骤3、把该任务的任务状态置为空闲状态。
(6-2)错误处理线程的工作过程包括:
步骤1、检测任务池是否有任务状态为错误状态的任务,直到有任务状态为错误状态的任务;
步骤2、检查错误状态的任务的错误类型,并作出不同处理。包括:
(A)错误类型1、GPU资源不足类型
处理过程包括:
步骤A1、从任务池中获取一个空闲状态的任务,此处称为新任务;
步骤A2、从中间拆分原任务数据,如:原任务保留前半部分数据,后半部分数据拷贝至新任务中;
步骤A3、设置原任务的任务状态为数据准备完成;
步骤A4、设置新任务的任务状态为数据准备完成。
(B)错误类型2、原数据错误类型
处理过程包括:
步骤B1、从原任务中删除导致CUDA流运行出错的数据;
步骤B2、设置原任务状态为数据准备完成。
由上可见,首先,因CPU中的多个执行不同任务的线程及CUDA流均独立且并行执行,可以实现CPU、GPU、和外部存储设备如硬盘之间的并行工作,减少短板效应,每个部分都可发挥其最大交通。其次,针对计算过程中可能出现的大概率错误问题,完善了错误处理机制。因大规模数据计算如基因测序数据分析计算中,一个批次中的单条数据在计算分析中需要的GPU资源难以估计,且差异很大,同时,还存在一些极端数据需要被忽略,因此,基于错误处理线程实现的错误处理机制,可以较好地应对这些情况。再者,若GPU存在多个,CPU中的任务调度线程也可高效地调度多个GPU中的多个CUDA流同时工作,实现了计算资源的有效扩展,且进一步提高了计算速度和效率。
需要说明的是,本实施例中对部分功能实现的描述比较简单,相关之处可参照实施例一中相关部分的描述。
实施例三
参照图4,示出了根据本申请实施例三的一种芯片的结构框图。
本实施例中的芯片至少包括任务执行系统400,该任务执行系统400可以如实施例二所述的任务执行系统。但除此之外,本领域技术人员还可根据实际需求在该芯片中设置其它部件,如其它数据处理部件、数据控制部件、数据处理加速部件等中的至少一种。
例如,存储器、定时器,等等
本实施例的芯片可实现前述方法实施例中所描述的任务执行方法,并具有相应方法实施例中的有益效果,在此不再赘述。
实施例四
参照图5,示出了根据本申请实施例四的一种电子设备的结构示意图,本申请具体实施例并不对电子设备的具体实现做限定。
如图5所示,该电子设备可以包括:芯片(processor)502、通信接口(Commun ications I nterface)504、存储器(memory)506、以及通信总线508。
其中:
芯片502、通信接口504、以及存储器506通过通信总线508完成相互间的通信。
通信接口504,用于与其它电子设备或服务器进行通信。
芯片502,用于执行程序510,具体可以执行上述任务执行方法实施例中的相关步骤。
具体地,程序510可以包括程序代码,该程序代码包括计算机操作指令。
芯片502可以是如实施例三中所述的芯片。
存储器506,用于存放程序510。存储器506可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
程序510可包括至少一条计算机可执行指令,程序510具体可以使该至少一条计算机可执行指令使得芯片502执行前述方法实施例所描述的任务执行方法对应的操作。
程序510中各步骤的具体实现可以参见上述方法实施例中的相应步骤和单元中对应的描述,并具有相应的有益效果,在此不赘述。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的设备和模块的具体工作过程,可以参考前述方法实施例中的对应过程描述,在此不再赘述。
本申请实施例还提供了一种计算机存储介质,其上存储有计算机程序,该程序被芯片执行时实现前述方法实施例所描述的方法。该计算机存储介质包括但不限于:只读光盘(Compact Disc Read-Only Memory,CD-ROM)、随机存储器(Random Access Memory,RAM)、软盘、硬盘或磁光盘等。
本申请实施例还提供了一种计算机程序产品,包括计算机指令,该计算机指令指示电子设备中的芯片执行上述方法实施例中的任务执行方法对应的操作。
此外,需要说明的是,本申请实施例所涉及到的与用户有关的信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于执行本申请实施例的任务执行方法的待处理数据、用于对模型进行训练的样本数据、用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
以上实施方式仅用于说明本申请实施例,而并非对本申请实施例的限制,有关技术领域的普通技术人员,在不脱离本申请实施例的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本申请实施例的范畴,本申请实施例的专利保护范围应由权利要求限定。
Claims (14)
1.一种任务执行方法,包括:
通过CPU的任务调度线程,检测任务池中存在的任务的任务状态,其中,所述任务池中的任务被用于执行相同的计算;
将任务状态为数据准备完成的任务调度至GPU中,以通过所述GPU中用于执行所述计算的任务操作序列,对所述任务执行所述计算;
根据所述GPU反馈的计算结果,对所述任务进行处理。
2.根据权利要求1所述的方法,其中,所述将任务状态为数据准备完成的任务调度至GPU中,以通过所述GPU中用于执行所述计算的、且状态为空闲的任务操作序列,对所述任务执行所述计算,包括:
检测所述GPU中、用于执行所述计算的多个任务操作序列中,是否存在状态为空闲的任务操作序列;
若存在,则将任务状态为数据准备完成的任务调度至所述GPU中,以通过所述GPU中、状态为空闲的所述任务操作序列,对所述任务执行所述计算;
并且,将执行所述计算的所述任务操作序列的状态更新为忙,将所述任务的任务状态更新为运算中。
3.根据权利要求1所述的方法,其中,在所述CPU通过任务调度线程,检测任务池中存在的任务的任务状态之前,所述方法还包括:
通过所述CPU的数据读取线程,将用于待执行所述计算的待处理数据按批次读取入任务池中的、任务状态为空闲的任务中,并且,将所述任务的任务状态更新为数据准备完成。
4.根据权利要求1所述的方法,其中,所述根据所述GPU反馈的计算结果,对所述任务进行处理,包括:
根据所述GPU反馈的计算结果,将所述任务的任务状态更新为待写入状态。
5.根据权利要求4所述的方法,其中,所述根据所述GPU反馈的计算结果,对所述任务进行处理,还包括:
通过所述CPU的数据写入线程,检测任务池中是否存在任务状态为待写入状态的任务;
将待写入状态的任务对应的任务结果写入预设地址,并且,在写入完成后,将所述任务的任务状态更新为空闲。
6.根据权利要求1-5任一项所述的方法,其中,所述根据所述GPU反馈的计算结果,对所述任务进行处理,包括:
通过所述CPU的错误处理线程,检测任务池中是否存在任务状态为错误的任务;
根据所述任务对应的错误类型,对所述任务进行错误处理。
7.根据权利要求6所述的方法,其中,所述根据所述任务对应的错误类型,对所述任务进行错误处理,包括:
若根据所述错误类型,确定错误原因为执行所述任务的任务操作序列所需资源不足,则对所述任务对应的待处理数据进行拆分,以形成对应的多个新任务进行处理。
8.根据权利要求7所述的方法,其中,所述对所述任务对应的待处理数据进行拆分,以形成对应的多个新任务进行处理,包括:
从任务状态为错误的原任务对应的待处理数据中拆分出部分数据;
将所述部分数据分配至所述任务池中状态为空闲的任务中;
并且,将所述原任务和新分配了数据的任务的任务状态均更新为数据准备完成。
9.根据权利要求6所述的方法,其中,所述根据所述任务对应的错误类型,对所述任务进行错误处理,包括:
若根据所述错误类型,确定错误原因为所述任务的对应的待处理数据错误,则从所述任务对应的待处理数据中删除错误数据,并将删除了错误数据后的所述任务的任务状态更新为数据准备完成。
10.根据权利要求1-5任一项所述的方法,其中,所述根据所述GPU反馈的计算结果,对所述任务进行处理,包括:
通过所述任务调度线程对应的任务调度线程回调函数,接收所述GPU反馈的计算结果;
根据所述计算结果,对所述任务的任务状态进行更新,并基于更新后的所述任务状态,对所述任务进行处理。
11.一种任务执行方法,包括:
通过CPU的任务调度线程,检测任务池中存在的任务的任务状态,其中,所述任务池中的任务基于基因测序数据生成,所述任务池中的任务用于执行相同的基因测序数据分析计算;
将任务状态为数据准备完成的任务调度至GPU中,以通过所述GPU中用于执行所述基因测序数据分析计算的任务操作序列,对所述任务执行基因测序数据分析计算;
根据所述GPU反馈的计算结果,对所述任务进行处理。
12.一种任务执行系统,包括:CPU和GPU;所述CPU中设置有并行执行的数据读取线程、任务调度线程、和数据写入线程;所述GPU中设置有多个用于执行任务计算的任务操作序列;
其中,
所述CPU的数据读取线程,将用于待执行计算的待处理数据分批次读取入任务池中的、任务状态为空闲的任务中,并且,将所述任务的任务状态更新为数据准备完成;
所述CPU的任务调度线程,检测任务池中存在的任务的任务状态,其中,所述任务池中的任务用于执行相同的计算;将任务状态为数据准备完成的任务调度至GPU中,以通过所述GPU中用于执行所述计算的任务操作序列,对所述任务执行所述计算;并且,根据所述GPU反馈的计算结果,更新所述任务的任务状态;
所述CPU的数据写入线程,检测任务池中是否存在任务状态为待写入状态的任务;将待写入状态的任务对应的任务结果写入预设地址,并且,在写入完成后,将所述任务的任务状态更新为空闲。
13.一种芯片,包括:如权利要求12中所述的任务执行系统。
14.一种电子设备,包括:如权利要求13所述的芯片,以及,存储器、通信接口和通信总线;所述芯片、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
所述存储器用于存放至少一可执行指令,所述可执行指令使所述芯片执行如权利要求1-11中任一项所述的方法对应的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310543047.1A CN116594745A (zh) | 2023-05-11 | 2023-05-11 | 任务执行方法、系统、芯片及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310543047.1A CN116594745A (zh) | 2023-05-11 | 2023-05-11 | 任务执行方法、系统、芯片及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116594745A true CN116594745A (zh) | 2023-08-15 |
Family
ID=87600235
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310543047.1A Pending CN116594745A (zh) | 2023-05-11 | 2023-05-11 | 任务执行方法、系统、芯片及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116594745A (zh) |
Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102929718A (zh) * | 2012-09-17 | 2013-02-13 | 江苏九章计算机科技有限公司 | 一种基于任务调度的分布式gpu计算机系统 |
CN109710442A (zh) * | 2018-12-20 | 2019-05-03 | 麒麟合盛网络技术股份有限公司 | 一种任务的执行方法和装置 |
CN110489223A (zh) * | 2019-08-26 | 2019-11-22 | 北京邮电大学 | 一种异构集群中任务调度方法、装置及电子设备 |
WO2020108303A1 (zh) * | 2018-11-30 | 2020-06-04 | 中兴通讯股份有限公司 | 一种基于异构计算的任务处理方法及软硬件框架系统 |
CN112070370A (zh) * | 2020-08-21 | 2020-12-11 | 中南大学 | 中继卫星任务规划方法、系统及存储介质 |
KR102194513B1 (ko) * | 2019-06-20 | 2020-12-23 | 배재대학교 산학협력단 | Gpgpu 기반 태스크 큐를 활용한 웹 서비스 제공 시스템 및 방법 |
CN112162854A (zh) * | 2020-09-21 | 2021-01-01 | 南开大学 | 一种cpu-gpu间计算任务调度方法、系统及介质 |
CN112181704A (zh) * | 2020-09-28 | 2021-01-05 | 京东数字科技控股股份有限公司 | 一种大数据任务处理方法、装置、电子设备及存储介质 |
CN112259168A (zh) * | 2020-10-22 | 2021-01-22 | 深圳华大基因科技服务有限公司 | 基因测序数据处理方法和基因测序数据处理装置 |
CN114610701A (zh) * | 2022-03-10 | 2022-06-10 | 北京百度网讯科技有限公司 | 任务数据处理方法、装置、电子设备和介质 |
CN114691311A (zh) * | 2020-12-30 | 2022-07-01 | 安徽寒武纪信息科技有限公司 | 一种执行异步任务的方法、设备和计算机程序产品 |
CN114764374A (zh) * | 2021-01-15 | 2022-07-19 | 安徽寒武纪信息科技有限公司 | 一种在加速卡系统中执行通信任务的方法和设备 |
CN114911612A (zh) * | 2022-04-29 | 2022-08-16 | 中国航空无线电电子研究所 | 一种面向cpu-gpu异构资源的任务调度方法 |
US20230124520A1 (en) * | 2020-06-19 | 2023-04-20 | Huawei Technologies Co., Ltd. | Task execution method and storage device |
CN116010102A (zh) * | 2023-01-17 | 2023-04-25 | 深圳华大医学检验实验室 | 生信检测任务分布式调度方法及装置 |
-
2023
- 2023-05-11 CN CN202310543047.1A patent/CN116594745A/zh active Pending
Patent Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102929718A (zh) * | 2012-09-17 | 2013-02-13 | 江苏九章计算机科技有限公司 | 一种基于任务调度的分布式gpu计算机系统 |
WO2020108303A1 (zh) * | 2018-11-30 | 2020-06-04 | 中兴通讯股份有限公司 | 一种基于异构计算的任务处理方法及软硬件框架系统 |
CN109710442A (zh) * | 2018-12-20 | 2019-05-03 | 麒麟合盛网络技术股份有限公司 | 一种任务的执行方法和装置 |
KR102194513B1 (ko) * | 2019-06-20 | 2020-12-23 | 배재대학교 산학협력단 | Gpgpu 기반 태스크 큐를 활용한 웹 서비스 제공 시스템 및 방법 |
CN110489223A (zh) * | 2019-08-26 | 2019-11-22 | 北京邮电大学 | 一种异构集群中任务调度方法、装置及电子设备 |
US20230124520A1 (en) * | 2020-06-19 | 2023-04-20 | Huawei Technologies Co., Ltd. | Task execution method and storage device |
CN112070370A (zh) * | 2020-08-21 | 2020-12-11 | 中南大学 | 中继卫星任务规划方法、系统及存储介质 |
CN112162854A (zh) * | 2020-09-21 | 2021-01-01 | 南开大学 | 一种cpu-gpu间计算任务调度方法、系统及介质 |
CN112181704A (zh) * | 2020-09-28 | 2021-01-05 | 京东数字科技控股股份有限公司 | 一种大数据任务处理方法、装置、电子设备及存储介质 |
CN112259168A (zh) * | 2020-10-22 | 2021-01-22 | 深圳华大基因科技服务有限公司 | 基因测序数据处理方法和基因测序数据处理装置 |
CN114691311A (zh) * | 2020-12-30 | 2022-07-01 | 安徽寒武纪信息科技有限公司 | 一种执行异步任务的方法、设备和计算机程序产品 |
CN114764374A (zh) * | 2021-01-15 | 2022-07-19 | 安徽寒武纪信息科技有限公司 | 一种在加速卡系统中执行通信任务的方法和设备 |
CN114610701A (zh) * | 2022-03-10 | 2022-06-10 | 北京百度网讯科技有限公司 | 任务数据处理方法、装置、电子设备和介质 |
CN114911612A (zh) * | 2022-04-29 | 2022-08-16 | 中国航空无线电电子研究所 | 一种面向cpu-gpu异构资源的任务调度方法 |
CN116010102A (zh) * | 2023-01-17 | 2023-04-25 | 深圳华大医学检验实验室 | 生信检测任务分布式调度方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20190114534A1 (en) | Neural network processing system having multiple processors and a neural network accelerator | |
EP2620873B1 (en) | Resource allocation method and apparatus of GPU | |
US9164769B2 (en) | Analyzing data flow graph to detect data for copying from central register file to local register file used in different execution modes in reconfigurable processing array | |
US11609792B2 (en) | Maximizing resource utilization of neural network computing system | |
CN111190741B (zh) | 基于深度学习节点计算的调度方法、设备及存储介质 | |
US20140143524A1 (en) | Information processing apparatus, information processing apparatus control method, and a computer-readable storage medium storing a control program for controlling an information processing apparatus | |
CN101546275B (zh) | 一种获取多处理器硬件信号量的方法 | |
CN104123236A (zh) | 用于使用预提升缓冲器的高吞吐量硬件加速的方法和系统 | |
US11934827B2 (en) | Partition and isolation of a processing-in-memory (PIM) device | |
CN114237911A (zh) | 基于cuda的基因数据处理方法、装置和cuda构架 | |
US20040093477A1 (en) | Scalable parallel processing on shared memory computers | |
CN110825502B (zh) | 神经网络处理器和用于神经网络处理器的任务调度方法 | |
CN112241289B (zh) | 一种文本数据的处理方法和电子设备 | |
CN111258950B (zh) | 原子访存方法、存储介质、计算机设备、装置和系统 | |
CN111831408A (zh) | 异步任务处理方法、装置、电子设备及介质 | |
CN116594745A (zh) | 任务执行方法、系统、芯片及电子设备 | |
CN116048770A (zh) | 用于进程调度的方法和设备 | |
US20220197696A1 (en) | Condensed command packet for high throughput and low overhead kernel launch | |
JPH02242434A (ja) | タスクのスケジューリング方法 | |
US7062633B1 (en) | Conditional vector arithmetic method and conditional vector arithmetic unit | |
US7899995B1 (en) | Apparatus, system, and method for dependent computations of streaming multiprocessors | |
CN111708812A (zh) | 一种分布式数据处理方法 | |
JP3564327B2 (ja) | 図形処理装置 | |
US20040015676A1 (en) | Sharing of a logic operator having a work register | |
CN113849334A (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 |