CN117667827A - 任务处理方法及异构计算系统 - Google Patents
任务处理方法及异构计算系统 Download PDFInfo
- Publication number
- CN117667827A CN117667827A CN202311735310.3A CN202311735310A CN117667827A CN 117667827 A CN117667827 A CN 117667827A CN 202311735310 A CN202311735310 A CN 202311735310A CN 117667827 A CN117667827 A CN 117667827A
- Authority
- CN
- China
- Prior art keywords
- processing unit
- subtask
- subtasks
- target
- task
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 35
- 238000012545 processing Methods 0.000 claims abstract description 495
- 238000000034 method Methods 0.000 claims abstract description 27
- 230000008569 process Effects 0.000 claims abstract description 14
- 230000015654 memory Effects 0.000 claims description 110
- 238000004891 communication Methods 0.000 claims description 15
- 230000000903 blocking effect Effects 0.000 description 35
- 238000010586 diagram Methods 0.000 description 14
- 238000004422 calculation algorithm Methods 0.000 description 11
- 238000007726 management method Methods 0.000 description 9
- 230000001133 acceleration Effects 0.000 description 7
- 238000004590 computer program Methods 0.000 description 7
- 101710176296 Switch 2 Proteins 0.000 description 5
- 238000010276 construction Methods 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000006978 adaptation Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 238000002955 isolation Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 238000004148 unit process Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001364 causal effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000013467 fragmentation Methods 0.000 description 1
- 238000006062 fragmentation reaction Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000002618 waking effect Effects 0.000 description 1
Classifications
-
- 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
- Stored Programmes (AREA)
Abstract
本公开关于一种任务处理方法及异构计算系统。该方法包括:目标交换处理单元接收目标任务的程序文件和目标任务标识;目标交换处理单元基于子任务的程序文件和目标任务标识,将每个子任务加载到与子任务对应的处理单元;目标交换处理单元在接收到所有子任务对应的子任务加载完成的消息后,向第一处理单元输入目标任务的输入数据,并将第一处理单元的输出数据,按照子任务之间的逻辑关系,传输给下一个子任务对应的处理单元作为输入数据,直至所有处理单元按照子任务之间的逻辑关系依次对各自的子任务进行处理。
Description
技术领域
本公开涉及计算机领域,尤其涉及一种任务处理方法及异构计算系统。
背景技术
现有的异构计算系统,如系统级芯片(System on Chip,缩写为SOC)的加速卸载模型,需要加速处理单元(处理单元,英文全称为processing element,缩写为PE)对某个计算任务进行加速时,停止中央处理器(Central Processing Unit,简称CPU)的指令执行,把该计算任务的数据和指令拷贝到加速处理单元,启动加速处理单元开始执行相应的指令,执行完成后把执行结果拷贝到CPU的地址空间,CPU继续执行后面的指令。但是,由于CPU的功耗较大且CPU能够传输的最大数据量较小(基本在20G左右),如果需要传输较大的数据量时(如PE数量超级多),则需要增加特别多的CPU,从而导致功耗和成本非常大。因此,对于PE的种类和数目都很多的异构计算,CPU为核心的模型限制了吞吐随PE数量的增加而线性增加,不适合异构集成几百以及几千个PE到一个SOC或者系统级封装(System-in-Package,缩写为SIP)上的数据中心处理器。
发明内容
本公开提供一种任务处理方法及异构计算系统,以至少解决相关技术无法适用PE种类和数目都很多的异构计算的问题。
根据本公开实施例的第一方面,提供一种任务处理方法,应用于异构计算系统,异构计算系统包含至少一个交换处理单元和多个处理单元,至少一个交换处理单元之间互相连接,多个处理单元中任意两个处理单元之间能够通过至少一个交换处理单元进行数据通信,任务处理方法包括:目标交换处理单元接收目标任务的程序文件和目标任务标识,其中,程序文件中包含目标任务包括的子任务的程序文件、子任务之间的逻辑关系,目标交换处理单元是至少一个交换处理单元中的一个交换处理单元;目标交换处理单元基于子任务的程序文件和目标任务标识,将每个子任务加载到与子任务对应的处理单元;目标交换处理单元在接收到所有子任务对应的子任务加载完成的消息后,向第一处理单元输入目标任务的输入数据,并将第一处理单元的输出数据,按照子任务之间的逻辑关系,传输给下一个子任务对应的处理单元作为输入数据,直至所有处理单元按照子任务之间的逻辑关系依次对各自的子任务进行处理,其中,第一处理单元是按照子任务之间的逻辑关系,第一个开始执行的子程序对应的处理单元。
可选地,在目标任务的子任务中存在多对子任务且每对子任务之间的数据通信量大于第一预定阈值的情况下,异构计算系统包含一个目标交换处理单元,每对子任务对应的处理单元分别连接到不同的交换处理单元。
可选地,在目标任务的子任务之间的数据通信量均小于第二预定阈值的情况下,异构计算系统包含多个目标交换处理单元,每个目标交换处理单元均连接预定数量的处理单元,其中,预定数量的处理单元与目标任务的子任务一一对应,每个目标交换处理单元和相应的预定数量的处理单元均能够执行本公开的任务处理方法。
可选地,目标交换处理单元基于子任务的程序文件和目标任务标识,将每个子任务加载到与子任务对应的处理单元,包括:对于每个子任务,目标交换处理单元将子任务的程序文件和目标任务标识发送给与子任务对应的处理单元;对于每个子任务对应的处理单元,处理单元基于相应的子任务的程序文件和目标任务标识,加载相应的子任务,并等待处理相应的子任务,向目标交换处理单元发送子任务加载完成的消息。
可选地,目标交换处理单元在将子任务的程序文件和目标任务标识发送给与子任务对应的处理单元之前,还包括:基于子任务的程序文件,获取子任务对应的处理单元的类型;从本地的处理单元表中查询类型下的所有处理单元,其中,处理单元表包含与目标交换处理单元连接的所有处理单元;从所有处理单元中选择出子任务对应的处理单元。
可选地,从所有处理单元中选择出子任务对应的处理单元,包括:确定所有处理单元中子任务数量最少的处理单元,并将子任务数量最少的处理单元对应的子任务数量加1;将子任务数量最少的处理单元,作为子任务对应的处理单元。
可选地,在从本地的处理单元表中查询类型下的所有处理单元之前,还包括:获取与目标交换处理单元连接的处理单元的类型和处理单元标识;基于处理单元的类型和处理单元标识,建立处理单元表,其中,处理单元表的每个表项中存储有预定处理单元的处理单元标识和每个预定处理单元上子任务数量,预定处理单元与目标交换处理单元连接且属于同一类型。
可选地,在从所有处理单元中选择出子任务对应的处理单元之前,还包括:在从本地的处理单元表中未查询到类型的情况下,从其他交换处理单元的处理单元表中查询类型,直至查询到类型,并查询类型下的所有处理单元。
可选地,处理单元基于相应的子任务的程序文件和目标任务标识,加载相应的子任务,包括:建立子任务的任务结构,其中,子任务的任务结构至少包括以下字段:子任务的子任务标识、目标任务标识、下一个子任务的子任务标识、子任务的执行代码;基于子任务的任务结构,为子任务分配所需的本地内存;在本地内存被分配完后,基于子任务的程序文件和目标任务标识,向子任务的任务结构中的字段填充信息。
可选地,子任务的任务结构还包括子任务的工作状态,其中,工作状态包括运行状态、阻塞状态和等待运行状态;对于每个处理单元,处理单元根据子任务的工作状态,对子任务进行相应的处理。
可选地,处理单元根据子任务的工作状态,对子任务进行相应的处理,包括:在工作状态为运行状态的情况下,根据输入数据开始执行子任务的执行代码;在工作状态为等待运行状态或阻塞状态的情况下,实时监测工作状态,在工作状态变更为运行状态时,根据输入数据开始执行子任务的执行代码。
可选地,对于每个处理单元,处理单元上设有运行队列、等待队列和阻塞队列,其中,运行队列中的子任务正在运行中,等待队列中的子任务已接收到输入数据等待运行中,阻塞队列中的子任务未接收到输入数据或无法继续运行;在任一个子任务加载到处理单元上且未接收到输入数据的情况下,将任一个子任务加入阻塞队列,并将任一个子任务的工作状态变更为阻塞状态;在阻塞队列中的任一个子任务接收到输入数据或接收到启动指示的情况下,将任一个子任务从阻塞队列移入等待队列,并将任一个子任务的工作状态变更为等待运行状态;在运行队列中出现空闲位置的情况下,从等待队列中选择子任务移入运行队列,并将选择的子任务的工作状态变更为运行状态;在运行队列中任一个子任务无法继续运行的情况下,将任一个子任务从运行队列移入阻塞队列,并将任一个子任务的工作状态变更为阻塞状态。
可选地,目标交换处理单元在接收目标任务的程序文件和目标任务标识之后,还包括:建立目标任务的任务结构,其中,目标任务的任务结构至少包括以下字段:目标任务的目标任务标识和页表;基于目标任务的程序文件,为目标任务分配所需的全局内存;在全局内存被分配完后,基于目标任务的程序文件,向目标任务的任务结构中的字段填充信息。
可选地,目标交换处理单元接收目标任务的任一个子任务对应的处理单元发送的申请全局内存的请求,其中,请求包括目标任务标识和所申请的全局内存大小;目标交换处理单元通过目标任务标识,确定目标任务对应的全局内存的位置,并为任一个子任务分配与所申请的全局内存大小对应的第一全局内存;任一个子任务对应的处理单元能够针对第一全局内存进行读或写操作。
根据本公开实施例的第二方面,提供一种异构计算系统,异构计算系统包含至少一个交换处理单元和多个处理单元,至少一个交换处理单元之间互相连接,多个处理单元中任意两个处理单元之间能够通过至少一个交换处理单元进行数据通信,其中,目标交换处理单元接收目标任务的程序文件和目标任务标识,其中,程序文件中包含目标任务包括的子任务的程序文件、子任务之间的逻辑关系,目标交换处理单元是至少一个交换处理单元中的一个交换处理单元;目标交换处理单元基于子任务的程序文件和目标任务标识,将每个子任务加载到与子任务对应的处理单元;目标交换处理单元在接收到所有子任务对应的子任务加载完成的消息后,向第一处理单元输入目标任务的输入数据,并将第一处理单元的输出数据,按照子任务之间的逻辑关系,传输给下一个子任务对应的处理单元作为输入数据,直至所有处理单元按照子任务之间的逻辑关系依次对各自的子任务进行处理,其中,第一处理单元是按照子任务之间的逻辑关系,第一个开始执行的子程序对应的处理单元。
根据本公开实施例的第三方面,提供了一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,处理器被配置为执行指令,以实现根据本公开的任务处理方法。
根据本公开实施例的第四方面,提供了一种计算机可读存储介质,当计算机可读存储介质中的指令被至少一个处理器运行时,促使至少一个处理器执行如上根据本公开的任务处理方法。
根据本公开实施例的第五方面,提供了一种计算机程序产品,包括计算机指令,计算机指令被处理器执行时实现根据本公开的任务处理方法。
本公开的实施例提供的技术方案至少带来以下有益效果:
根据本公开的任务处理方法及异构计算系统,引入专门用于数据通信的交换处理单元,通过交换处理单元,任意两个处理单元之间可以直接进行数据通信,无需再经过CPU,从而异构计算系统不再以CPU作为中心节点,避免了CPU为核心的系统限制吞吐随PE数量的增加而线性增加的问题,从而可以集成几百以及几千的PE到一个SOC或SIP上的数据中心处理器。因此,本公开解决了相关技术无法适用PE种类和数目都很多的异构计算的问题。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
图1是示出相关技术中异构计算系统的示意图;
图2是示出根据本公开的示例性实施例的任务处理方法的实施场景示意图;
图3是根据一示例性实施例示出的一种任务处理方法的流程图;
图4是根据一示例性实施例示出的一种异构计算系统的示意图;
图5是根据一示例性实施例示出的一种任务的程序文件的示意图;
图6是根据一示例性实施例示出的一种任务的执行流程的示意图;
图7是根据一示例性实施例示出的一种可选地异构计算系统的示意图;
图8是根据一示例性实施例示出的另一种可选地异构计算系统的示意图;
图9是根据一示例性实施例示出的再一种可选地异构计算系统的示意图;
图10是根据一示例性实施例示出的一种异构计算系统的框图;
图11是根据本公开实施例的一种电子设备1100的框图。
具体实施方式
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
在此需要说明的是,在本公开中出现的“若干项之中的至少一项”均表示包含“该若干项中的任意一项”、“该若干项中的任意多项的组合”、“该若干项的全体”这三类并列的情况。例如“包括A和B之中的至少一个”即包括如下三种并列的情况:(1)包括A;(2)包括B;(3)包括A和B。又例如“执行步骤一和步骤二之中的至少一个”,即表示如下三种并列的情况:(1)执行步骤一;(2)执行步骤二;(3)执行步骤一和步骤二。
异构计算系统相对于传统的同构计算系统而言,具有很大的性能提升潜力,异构计算系统被认为是工艺创新和体系结构创新遭遇瓶颈后,解决现代数字集成电路持续性能改进的关键路径,也是全球计算机产业竞争的必争之地。但是,以往往的异构计算机系统往往以CPU为中心的设计模式,如图1所示,展示是一个SOC,其包括一个CPU,一个图像处理器(Graphics Processing Unit,缩写为GPU),一个处理深度学习加速的网络处理器(Networks Processing Unit,缩写为NPU)和一个密码计算加速器(Crypto-Accelerator),该系统所有的程序运行在CPU上,当CPU需要GPU进行图形计算加速时,即可通过在程序中显式的GPU调用实现,此时停止CPU的执行,把数据和指令发送到GPU,启动GPU执行相应的指令,GPU执行结束后把数据拷贝回CPU的地址空间,CPU继续执行后面的指令。这种为了特定计算加速卸载的计算模式,当CPU和加速器数量很多很复杂,调用操作频繁时,CPU很容易成为计算瓶颈,因为所有对加速器的调用以及数据传输都是CPU发起的,但CPU的功耗较大且CPU能够传输的最大数据量较小(基本在20G左右),如果需要传输较大的数据量时(如PE数量超级多),则需要增加特别多的CPU,从而导致功耗和成本非常大。
目前,随着SOC或者SIP中的集成规模越来越大,在一个SOC集成几百个PE已经成为现实。而用NOC标准实现可以把这些PE进行高速互联,同时利用先进封装和NOC标准可以把几千到几万个具有独立功能的小芯片集成到一个封装里,可以构造更大的系统。在高性能计算机尤其是数据中心的业务里,能够集成的PE的类型和数量日益增多,以CPU为核心的系统不利于进行横向扩展,难以通过增加各种加速器和CPU的数量提高整个系统的吞吐。但是,解决异构PE规模在SOC和SIP的横向扩展问题,是个悬而未决的问题。
针对上述问题,本公开提供了一种任务处理方法及异构计算系统,能够满足PE种类和数目都很多的异构计算,下面以图像识别场景为例进行说明。
图2是示出根据本公开的示例性实施例的任务处理方法的实施场景示意图,如图2所述,该实施场景包括服务器200、用户终端210和用户终端220,其中,用户终端不限于2个,包括并不限于手机、个人计算机等设备,用户终端可以安装获取图像的摄像头,服务器可以是一个服务器,也可以是若干个服务器组成服务器集群,还可以是云计算平台或虚拟化中心。
服务器200上设置有异构计算系统,异构计算系统包含至少一个交换处理单元和多个处理单元,至少一个交换处理单元之间互相连接,多个处理单元中任意两个处理单元之间能够通过至少一个交换处理单元进行数据通信,其中,目标交换处理单元可以从用户终端210或220接收图像识别任务的程序文件,其中,程序文件中包含图像识别任务标识、图像识别任务包括的子任务的程序文件、子任务之间的逻辑关系,目标交换处理单元是至少一个交换处理单元中的一个交换处理单元;目标交换处理单元基于子任务的程序文件和图像识别任务标识,将每个子任务加载到与子任务对应的处理单元;目标交换处理单元在接收到所有子任务对应的子任务加载完成的消息后,从用户终端210或220接收待识别的图像,并向第一处理单元输入该待识别的图像,并将第一处理单元的输出数据,按照子任务之间的逻辑关系,传输给下一个子任务对应的处理单元作为输入数据,直至所有处理单元按照子任务之间的逻辑关系依次对各自的子任务进行处理,其中,第一处理单元是按照子任务之间的逻辑关系,第一个开始执行的子程序对应的处理单元。在所述处理单元按照子任务之间的逻辑关系依次完成对各自的子任务的处理后,最后一个处理单元的输出结果,即该待识别的图像的识别结果。
需要说明的是,该异构计算系统也可以设置在用户终端上,对此本公开并不进行限定。
下面,将参照附图详细描述根据本公开的示例性实施例的任务处理方法及异构计算系统。
图3是根据一示例性实施例示出的一种任务处理方法的流程图,如图3所示的任务处理方法可以应用于异构计算系统,异构计算系统包含至少一个交换处理单元和多个处理单元,至少一个交换处理单元之间互相连接,多个处理单元中任意两个处理单元之间能够通过至少一个交换处理单元进行数据通信。
图4是根据一示例性实施例示出的一种异构计算系统的示意图,如图4所示,该异构计算系统包含2个交换处理单元(switch1和switch2)和6个处理单元(PE1-PE6),switch1和switch2之间可以通过标准片上网络(network-on-chip,缩写为NOC)实现互相连接,PE1-PE6中任意两个处理单元之间能够通过switch1和switch2以数据包的方式通信,其中,PE1-PE6可以是6个异构计算节点,负责进行特定功能的计算,这些PE的指令集和体系结构可以是不同的,可以针对需求定制相应的功能的计算,而且,每个PE可以有两个部分组成-执行引擎和本地内存,执行引擎负责执行可执行程序,本地内存只给本PE的执行引擎使用,其它PE不能访问另一个PE的本地内存,PE之间通信通过发送消息实现;store1和store2可以是两个独立的硬盘;mPE1和mPE2可以是两块独立的内存,即该异构计算系统的全局内存PE,负责存储整个异构计算系统的全局数据,共同构成整个系统的全局物理地址空间。
需要说明的是,上述异构计算系统中,在任何一个PE1上,只要知道另一个PE2的地址,就可以发送一个报文给该PE2。每个交换PE(如图4的switch1和switch2)是异构计算系统的网络部分,负责把一个PE的报文发送到另一个PE上去,每个交换PE上有一个内存管理单元(Memory Management Unit,缩写为MMU),用来实现不同任务间的全局内存隔离,在内存访问时可以通过MMU把虚拟内存地址转化为物理内存地址并进行读或者写。
基于如图4所示的硬件构造,可以构造两个软件组件,例如可以命名为monitor和kernel,其中,monitor运行在每个PE上,每个PE通过monitor来管理自身的本地内存和子任务切换;kernel运行在每个交换PE上,每个交换PE通过kernel来管理整个系统的全局内存和程序加载,这里kernel可以包含子组件mmuMonitor和appLoader,mmuMonitor负责全局内存的管理,appLoader负责程序加载的管理。进而在异构计算系统启动初始化时,把kernel加载到每个交换PE上启动运行,把各个PE的monitor搬运到各自的PE上启动运行。
如图3所示的任务处理方法可以包括以下步骤:
在步骤301中,目标交换处理单元接收目标任务的程序文件和目标任务标识,其中,程序文件中包含目标任务包括的子任务的程序文件、子任务之间的逻辑关系,目标交换处理单元是至少一个交换处理单元中的一个交换处理单元。
上述目标任务的程序文件可以由数个子任务对应的程序文件(后续简称为子程序)组成,例如,如图5所示,目标任务的程序文件可以由4个子程序组成,其中,head里记录子程序在目标任务的程序文件中的偏移和长度,每个子程序可以包括硬件类型(T1,T2,T3或T4),子程序名(A,B,C或D),下一个子程序名(在图5中用圆括号表示),当前子程序的输出作为下一个子程序的输入。每个程序文件由数个子程序以树状结构组成,因此,图5所示的子程序表示的树状结构的执行流程如图6所示。需要说明的是,每个子程序针对确定的输入数据可以得出一个确定的输出数据,即一个子程序的输出只和它的输入有关,和这个子程序的执行历史无关,一个子程序的执行不会改变自身程序的内部状态,只要输入不变,不管执行多少次,输出都是相同的。这样的设计利于在分布式的程序中构造可以横向扩展的流水线。例如,图6中如果子程序A的输入是2,输出是3,无论A这个子程序执行多少次,这个结果是不变的,即只要输入是2,输出的必定是3。这些子程序的工作模式都是在没有输入数据时阻塞等待数据,当有数据输入时,立刻处理完成后把输出数据发送给下一个PE处理,该子程序继续等待数据输入。
上述目标任务的程序文件可以通过命令taskID=`run exectable_file`发送到目标交换处理单元上,该命令实现把名为exectable_file的程序文件部署到异构计算系统中并且返回目标任务标识taskID;也可以通过其他命令发送到目标交换处理单元上,只要能实现把名为exectable_file的程序文件部署到异构计算系统中即可,对此本公开并不进行限定。
上述目标交换处理单元可以是至少一个交换处理单元中的一个交换处理单元,例如,可以随机从至少一个交换处理单元中选择一个作为目标交换处理单元,也可以根据至少一个交换处理单元的剩余资源,选择一个剩余资源最大的交换处理单元作为目标交换处理单元,还可以通过其他策略选择目标交换处理单元,对此本公开并不进行限定。
根据本公开的示例性实施例,步骤301中目标交换处理单元在接收目标任务的程序文件和目标任务标识之后,建立目标任务的任务结构,其中,目标任务的任务结构至少包括以下字段:目标任务的目标任务标识和页表;基于目标任务的程序文件,为目标任务分配所需的全局内存;在全局内存被分配完后,基于目标任务的程序文件,向目标任务的任务结构中的字段填充信息。由于每个处理单元的内存是有限的,而且某些数据需要处理单元之间共享,所以通过本实施例可以为目标任务设置全局内存,增加目标任务的总内存空间。
作为示例,假设每个PE通过monitor来管理自身的本地内存和子任务切换;每个交换PE通过kernel来管理整个系统的全局内存和程序加载。目标任务的创建可以由命令taskID=`run exectable_file`触发,该命令用于把程序名为exectable_file的程序文件部署到异构计算系统中,当目标交换处理单元上的kernel收到用户提交的名为exectable_file的程序文件时,开始加载该程序文件,首先,在该目标交换处理单元上建立该目标任务的任务结构,其内容可以包含目标任务标识(taskID)和页表(page_table),其中,taskID只需要在整个异构计算系统里是唯一的即可,具体产生taskID的方式,本公开并不进行限定;page_table的具体格式与MMU硬件实现有关,本公开同样并不进行限定。然后,可以根据目标任务的任务结构,为目标任务分配合适的全局内存,并根据建立页表,可以使用伙伴算法管理该全局内存。
需要说明的是,伙伴算法(buddy算法)是计算机算法的一种,是为了核心内存管理能够快速响应请求,尽可能地在提高内存利用率的同时减少内存碎片的一种算法。本公开也可以适用其他算法管理全局内存,对此并不进行限定。
根据本公开的示例性实施例,目标交换处理单元接收目标任务的任一个子任务对应的处理单元发送的申请全局内存的请求,其中,请求包括目标任务标识和所申请的全局内存大小;目标交换处理单元通过目标任务标识,确定目标任务对应的全局内存的位置,并为任一个子任务分配与所申请的全局内存大小对应的第一全局内存;任一个子任务对应的处理单元能够针对第一全局内存进行读或写操作。通过本实施例,在一个子任务需要用到全局内存时,可以通过处理单元向目标交换处理单元申请,保证子任务获取到所需的全局内存。
作为示例,假设每个PE通过monitor来管理自身的本地内存和子任务切换;每个交换PE通过kernel来管理整个系统的全局内存和程序加载,这里kernel可以包含子组件mmuMonitor和appLoader,mmuMonitor负责全局内存的管理,appLoader负责程序加载的管理。当目标任务的一个子任务(subTask1)在对应的PE上运行且需要用到全局内存时,该PE的monitor可以调用命令alloc_global_memory(TaskID,size)发送给目标交换处理单元上的mmuMonitor,mmuMonitor通过taskID找到相应的目标任务的虚拟地址分配器(如分配算法可以是伙伴算法),通过虚拟地址分配器为subTask1分配一个size大小的虚拟全局内存,然后,目标交换处理单元上的mmuMonitor再通过调用命令alloc_global_memory_done(TaskID,p)将分配的全局内存的地址发送给subTask1对应的PE的monitor,其中,p是所分配的全局内存的地址。
需要说明的是,刚分配的全局内存是没有映射到物理地址的,因此,当上述子任务(subTask1)需要对刚分配的虚拟全局内存的地址进行写操作时,对应的PE可以通过命令write_global_memory(TaskID,src,dest,size)把写请求发送给目标交换处理单元上的mmuMonitor,其中,src为对应的PE本地内存指针,dest为全局内存指针,size为要写入的内容的长度,这个命令是请求把src中长度为size的数据写入全局内存dest中,src中的数据会被封装到报文中发送给目标交换处理单元上的mmuMonitor。但是,因为刚分配的虚拟全局内存没有到映射物理地址,因此,页面触发缺页异常,此时目标交换处理单元可以调用基于伙伴算法的物理页分配器从物理内存中获取合适大小的页面进行虚拟地址和物理地址的映射。然后对这块物理地址的内存的写操作直接借助硬件MMU的翻译被发送到PE上,并进行写入操作,在写操作完成后向PE上的monitor回复命令write_global_done(TaskID,dest)表示写入完成,PE上的monitor收到write_global_done(TaskID,dest)后可以继续执行其它指令。
当上述子任务(subTask1)需要对刚分配的虚拟全局内存的地址进行读操作时,对应的PE上的monitor可以向目标交换处理单元上的mmuMonitor发送命令read_global_memory(TaskID,src,dest,size)给mmuMonitor,其中,src为对应的PE本地内存指针,dest为全局内存指针,size为要读取的内容的长度。读取操作完成后,mmuMonitor可以发送命令read_global_done(TaskID,src,size)给PE上的monitor代表读取成功。PE上的monitor收到这个数据包后,把数据取出来写到本地内存的地址src里,读取结束。
当上述子任务(subTask1)需要释放部分全局内存时,相应的PE上的monito可以发送命令free_global_memory(TaskID,p)消息给目标交换处理单元上的mmuMonitor,表示需要释放地址为p的这块全局内存。mmuMonitor收到这个请求后调用虚拟内存分配器释放这块内存。
返回图3,在步骤302中,目标交换处理单元基于子任务的程序文件和目标任务标识,将每个子任务加载到与子任务对应的处理单元。
具体地,目标交换处理单元在接收到名为exectable_file程序文件后,可以解析该程序文件,找出程序文件中的所有子程序,如解析程序文件后,发现四个子任务P1,P2,P3,P4,然后将这四个子任务分别部署到相应的四个PE上。
根据本公开的示例性实施例,步骤302中目标交换处理单元基于子任务的程序文件和目标任务标识,将每个子任务加载到与子任务对应的处理单元,可以包括:对于每个子任务,目标交换处理单元将子任务的程序文件和目标任务标识发送给与子任务对应的处理单元;对于每个子任务对应的处理单元,处理单元基于相应的子任务的程序文件和目标任务标识,加载相应的子任务,并等待处理相应的子任务,向目标交换处理单元发送子任务加载完成的消息。通过本实施例,每个处理单元可以加载相应的子任务,并返回子任务加载完成的消息,以便在接收到目标任务的输入数据后,每个处理单元可以依次执行相应的子任务。
作为示例,目标交换处理单元在接收到目标任务的程序文件后,可以解析该程序文件,将所包含的子任务的程序文件以及接收到目标任务标识发送给与子任务对应的处理单元PE,每个PE可以基于相应的子任务的程序文件和目标任务标识,加载相应的子任务,并等待处理相应的子任务,向目标交换处理单元发送子任务加载完成的消息。
作为示例,目标交换处理单元上appLoader可以使用命令create_subTask(taskID,subProgramm)把目标任务标识和子任务的程序文件发送给对应PE的monitor,其中,taskID表示目标任务标识,subProgramm表示子任务的程序文件。每个PE上的monitor收到该命令后,可以根据子程序(subProgramm)加载子任务,在加载完子任务后,向目标交换处理单元上appLoader回复命令subTask_ready(TaskID),表示子任务已经在相应的PE上加载完成,并将PE自身的程序计数器设置为相应的子程序的可执行代码的存储地址,等待开始执行该可执行代码,需要说明的是,所有子程序开始执行后都是等待一个输入数据。
根据本公开的示例性实施例,处理单元基于相应的子任务的程序文件和目标任务标识,加载相应的子任务,可以包括:建立子任务的任务结构,其中,子任务的任务结构至少包括以下字段:子任务的子任务标识、目标任务标识、下一个子任务的子任务标识、子任务的执行代码;基于子任务的任务结构,为子任务分配所需的本地内存;在本地内存被分配完后,基于子任务的程序文件和目标任务标识,向子任务的任务结构中的字段填充信息。通过本实施例,为了能够处理相应的子任务,需要处理单元为相应的子任务分配合适的本地内存,以便子任务的执行代码可以被处理单元执行,而且,每个PE的内存仅限于本地可见,也隔离了不同的子任务,避免了子任务执行时发生混乱。
作为示例,每个PE上的monitor收到相应的子任务的程序文件后,可以调用命令malloc为该子任务分配一块合适的内存用来存储子任务的任务结构中的信息,其中,子任务的任务结构可以包括子任务的子任务标识(subTaskID)、目标任务标识(TaskID)、下一个子任务的子任务标识(nextPE)、子任务的执行代码(code),还可以包括寄存器(registers)、寄存器字节(register_size)、寄存器数量(number)等等,对此本公开并不进行限定。
需要说明的是,上述subTaskID只要在同一个PE的monitor管理的subTaskID中不重合即可,具体的分配策略,本公开并不进行限定;上述TaskID可以是目标交换处理单元kernel传递过来的;上述registers用来保存当一个子任务放弃所在的PE时所需要保存的状态,因为系统中的PE是异构的,这个变量可以表示保存这些状态的位置的首地址;上述register_size用来保存寄存器的字节数;上述number用来保存寄存器的数量;上述nextPE是下一个PE上的子任务标识subTaskID,可以从子任务的程序文件subProgramm的相应位置取出;上述code用来保存子任务要在这个PE上执行的可执行代码。
每个处理单元均可以进行本地内存的管理,例如,可以通过如下命令进行管理:malloc和free,其中,命令malloc(subTaskID,size)用来为子任务分配PE上的本地内存,其第一个参数subTaskID为子任务标识,代表需要这块内存的子任务ID,第二个参数size为需分配的内存大小,代表分配多大的内存。命令free(subTaskID,p)用来释放子任务在PE上的本地内存,其第一个参数subTaskID为子任务标识,代表需要这块内存的子任务ID,第二个参数p为要释放的地址。具体内存分配算法可以根据具体的PE功能和业务处理的特征实现,本公开不做限定,但是需要保证一个子任务分配的得到内存不会被另一个子任务访问和释放。
根据本公开的示例性实施例,步骤302中目标交换处理单元在将子任务的程序文件和目标任务标识发送给与子任务对应的处理单元之前,基于子任务的程序文件,获取子任务对应的处理单元的类型;从本地的处理单元表中查询该类型下的所有处理单元,其中,处理单元表包含与目标交换处理单元连接的所有处理单元;从所有处理单元中选择出子任务对应的处理单元。通过本实施例,在为子任务分配处理单元时,优先从目标交换处理单元连接的处理单元中,选择合适的处理单元,可以增加数据传输速率,从而加快目标任务的执行速度。
作为示例,目标交换处理单元在解析了目标任务的程序文件,找出了程序文件中的所有子程序后,对于每个子程序,获取其所对应的PE的类型,然后在异构计算系统启动初始化时建立的PE表里找到该类型下的表项,从该表项下的所有处理单元中选择出合适的处理单元,作为该子任务的处理单元。例如,可以选择所加载的子任务的数量最少的处理单元,作为该子任务的处理单元,也可以通过其他策略(如剩余资源)选择出合适的处理单元,作为该子任务的处理单元,对此本公开并不进行限定。
下面以选择所加载的子任务的数量最少的处理单元,作为该子任务的处理单元为例,说明如何从所有处理单元中选择出子任务对应的处理单元。
根据本公开的示例性实施例,从所有处理单元中选择出子任务对应的处理单元,可以包括:确定所有处理单元中子任务数量最少的处理单元,并将子任务数量最少的处理单元对应的子任务数量加1;将子任务数量最少的处理单元,作为子任务对应的处理单元。通过本实施例,选择子任务数量最少的处理单元,可以增加系统的吞吐量,且也可以保证子任务尽快被执行,从而进一步的加快目标任务的执行速度。
作为示例,在异构计算系统启动初始化时建立的PE表里找到该类型下的表项后,可以根据表项中每个处理单元的子任务数量,找到子任务数量最少的处理单元,可以将子任务数量最少的处理单元作为该子任务对应的处理单元,同时,可以将子任务数量最少的处理单元的子任务数量加1,表示这个PE上增加一个子任务。
根据本公开的示例性实施例,在从本地的处理单元表中查询类型下的所有处理单元之前,获取与目标交换处理单元连接的处理单元的类型和处理单元标识;基于处理单元的类型和处理单元标识,建立处理单元表,其中,处理单元表的每个表项中存储有预定处理单元的处理单元标识和每个预定处理单元上子任务数量,预定处理单元与目标交换处理单元连接且属于同一类型。通过本实施例,预先建立处理单元表,以便可以查询每个处理单元上的子任务数量,进而辅助为每个子任务选择出合适的处理单元。
作为示例,在异构计算系统启动时,每个交换PE可以执行以下操作:对于自身连接的PE的所有类型,建立一个由类型(PE_TYPE)索引的PE表,PE表的每个表项存储了一个类型下的所有PE的信息,每个PE都有对应有PE_inf,该PE_inf包括PE标识(PE_ID)和PE上的子任务数量(PE_ref)。具体地,对于每个交换PE,可以遍历与之直接相连的PE,然后把由PE_ID和PE_ref(初始值为0)组成的PE_Info放入其所属的PE_TYPE索引的表项里。配置NOC网络以PE_ID为地址进行寻址交换,这样在任何一个PE中,只要在需要发送消息时把发送地址写为所要发送的那个PE的PE_ID,就能发送一个消息到相应的PE上。
根据本公开的示例性实施例,在从所有处理单元中选择出子任务对应的处理单元之前,在从本地的处理单元表中未查询到类型的情况下,从其他交换处理单元的处理单元表中查询类型,直至查询到类型,并查询类型下的所有处理单元。通过本实施例,在目标交换处理单元的本地未查询到相应的类型,则可以向其他交换处理单元寻求帮助,即从其他交换处理单元的处理单元表中查询类型,以便找到子任务可用的处理单元,从而完成目标任务的执行。
返回图3,在步骤303中,目标交换处理单元在接收到所有子任务对应的子任务加载完成的消息后,向第一处理单元输入目标任务的输入数据,并将第一处理单元的输出数据,按照子任务之间的逻辑关系,传输给下一个子任务对应的处理单元作为输入数据,直至所有处理单元按照子任务之间的逻辑关系依次对各自的子任务进行处理,其中,第一处理单元是按照子任务之间的逻辑关系,第一个开始执行的子程序对应的处理单元。
作为示例,当目标交换处理单元上的apploader收到了所有子任务所在的PE的monitor返回的子任务加载完成的信息时,表示目标任务的程序文件就已经在异构计算系统上加载完成,此时可以通过异构计算系统执行目标任务了,即此时可以提交目标任务的输入数据了。例如,目标任务是图像识别的话,此时可以向异构计算系统提交待识别的图像了。目标任务的输入数据提交到异构计算系统后,第一处理单元根据加载自身的目标任务的子程序处理输入数据,得到相应的输出数据,该输出数据经由目标交换处理单元,传输给下一个子任务对应的处理单元,作为该处理单元的输入数据,继续执行该处理单元上的子程序,直至所有处理单元按照子任务之间的逻辑关系依次对各自的子任务进行处理,即执行了各自加载的子程序后,则完成了目标任务。
根据本公开的示例性实施例,子任务的任务结构还包括子任务的工作状态,其中,工作状态包括运行状态、阻塞状态和等待运行状态;对于每个处理单元,处理单元根据子任务的工作状态,对子任务进行相应的处理。通过本实施例,为了避免一个PE上同时执行的子任务数量过多,所以可以根据子任务的工作状态调度子任务的运行,即实现了子任务的调度。
作为示例,子任务的任务结构还可以包括子任务的工作状态(status),子任务的工作状态可以包含运行状态、阻塞状态和等待运行状态三种状态。每个子任务的任务结构在加载该子任务时候创建,同一个PE上子任务可以由调度器根据子任务的工作状态进行调度,即对于同一个PE上的子任务,PE可以根据子任务的工作状态,对子任务进行相应的处理。
根据本公开的示例性实施例,处理单元根据子任务的工作状态,对子任务进行相应的处理,可以包括:在工作状态为运行状态的情况下,根据输入数据开始执行子任务的执行代码;在工作状态为等待运行状态或阻塞状态的情况下,实时监测工作状态,在工作状态变更为运行状态时,根据输入数据开始执行子任务的执行代码。通过本实施例,通过监控子任务的工作状态,只有子任务处于运行状态时,才根据输入数据开始执行子任务的执行代码,使得子任务可以分批次进行处理,避免所有子任务集中被处理,导致处理单元负载过高。
根据本公开的示例性实施例,对于每个处理单元,处理单元上设有运行队列、等待队列和阻塞队列,其中,运行队列中的子任务正在运行中,等待队列中的子任务已接收到输入数据等待运行中,阻塞队列中的子任务未接收到输入数据或无法继续运行;在任一个子任务加载到处理单元上且未接收到输入数据的情况下,将任一个子任务加入阻塞队列,并将任一个子任务的工作状态变更为阻塞状态;在阻塞队列中的任一个子任务接收到输入数据或接收到启动指示的情况下,将任一个子任务从阻塞队列移入等待队列,并将任一个子任务的工作状态变更为等待运行状态;在运行队列中出现空闲位置的情况下,从等待队列中选择子任务移入运行队列,并将选择的子任务的工作状态变更为运行状态;在运行队列中任一个子任务无法继续运行的情况下,将任一个子任务从运行队列移入阻塞队列,并将任一个子任务的工作状态变更为阻塞状态。通过本实施例,可以根据子任务的加载情况、输入数据的接收情况、实际运行情况以及运行队列的占用情况,合理的调整每个队列中的子任务,并同时及时的变更子任务的工作状态,以便子任务可以被合理调度并执行。
作为示例,每个PE上可以设置三个队列,分别为运行队列、等待队列和阻塞队列,其中,运行队列中包含的是当前实际占有PE进行程序执行的子任务;等待队列包含的是准备运行的子任务队列,即已接收到输入数据等待运行中的子任务,阻塞队列包含的是等待输入数据或者无法继续在PE上运行的子任务。具体地,当一个子任务T1在PE上运行过程中,因为各种原因(如目标任务执行结束、等待输入数据、时间片用完等)放弃在PE上继续运行时,PE可以以一定的调度策略从等待队列中选出一个子任务T2,把T2放入运行队列,并获取T2的任务结构中registers字段保存的信息,加载到硬件寄存器中开始运行子任务T2;同时,把T1运行时的所有寄存器信息保存在T1的任务结构的registers字段,如果T1是因为阻塞或者等待输入数据的原因放弃在PE上继续运行,则把T1移入阻塞队列中等待唤醒,如果T1是因为时间片用完放弃在PE上继续运行,则把T1放入等待队列中。
需要说明的是,对于PE以一定的调度策略从等待队列中选出一个子任务T2中,所涉及的调度策略因为涉及具体的体系结构,本公开不进行限定,具体可以根据需要设计适合自己的体系结构的调度策略,一般情况下,调度策略在异构系统中高度依赖于业务、算法和硬件原理,不可能存在一种调度策略对所有的PE都是适用的。
根据本公开的示例性实施例,在目标任务的子任务中存在多对子任务且每对子任务之间的数据通信量大于第一预定阈值的情况下,异构计算系统包含一个目标交换处理单元,每对子任务对应的处理单元分别连接到不同的交换处理单元。通过本实施例,为了避免一个交换处理单元上承载过多的数据通信量,所以将数据通信量大的PE分配到不同的交换处理单元上,以便提高系统的性能。
作为示例,假设子任务P1和子任务P2之间有巨大的通信需求,子任务P3和子任务P4之间也有巨大的通信需求,为了避免一个交换处理单元上承载过多的数据通信量,可以把这些PE分布在两个交换处理单元上,如图7所示,将子任务P1和子任务P2分布在交换处理单元switch1上,将子任务P3和子任务P4分布在交换处理单元switch2上。事实上,图7的两个交换处理单元还可以连接处理其它业务但通信需求低的PE,这样在横向扩展时可以把通信需求高的PE和通信要求低的PE错开,从而提高系统的性能。
根据本公开的示例性实施例,在目标任务的子任务之间的数据通信量均小于第二预定阈值的情况下,异构计算系统包含多个目标交换处理单元,每个目标交换处理单元均连接预定数量的处理单元,其中,预定数量的处理单元与目标任务的子任务一一对应,每个目标交换处理单元和相应的预定数量的处理单元均能够执行本公开的任务处理方法。通过本实施例,设置多个可以同时执行目标任务的模块,即增加各个同类型的PE的数量,从而可以扩展系统的吞吐量,从而提高系统的性能。
作为示例,为了扩展异构计算系统的吞吐量,可以增加各个同种类型的PE的数量,如图8所示的扩展方式类似多核心,但是这里的每个核心换成了用NOC标准互联的异构的交换PE,如switch1和switch2。switch1和switch2均连接一套可以执行子任务P1-P4的处理单元,即每个switch同相应的4个处理单元可以同时执行目标任务,即该系统可以同时执行两个目标任务,其中,PE1与PE5属于同种类别,PE2与PE6属于同种类别,PE3与PE7属于同种类别,PE4与PE8属于同种类别。
为了方便理解本公开的上述实施例,下面结合图9对异构计算系统的工作流程进行系统的说明。
首先,启动异构计算系统并进行初始化,即每个交换PE可以执行以下操作:对于自身连接的PE的所有类型,建立一个由类型(PE_TYPE)索引的PE表,PE表的每个表项存储了一个类型下的所有PE的信息,每个PE都有对应有PE_inf,该PE_inf包括PE标识(PE_ID)和PE上的子任务数量(PE_ref)。具体地,对于每个交换PE,可以遍历与之直接相连的PE,然后把由PE_ID和PE_ref(初始值为0)组成的PE_Info放入其所属的PE_TYPE索引的表项里。配置NOC网络以PE_ID为地址进行寻址交换,这样在任何一个PE中,只要在需要发送消息时把发送地址写为所要发送的那个PE的PE_ID,就能发送一个消息到相应的PE上。同时,把kernel加载到每个交换PE上启动运行,把各个PE的monitor搬运到各自的PE上启动运行。
其次,启动完成后,当需要提交一个目标任务给异构计算系统时,可以通过命令taskID=`run exectable_file`把程序名为exectable_file的程序文件加载到异构计算系统中:
1)解析程序文件,找到其中包含的子任务(P1、P2、P3、P4),将这些子任务分别被部署到四个PE中,如图9所示,每个长方向框的PE代表一种PE,子任务及其对应的PE的因果关系是P1接收目标任务的输入数据,进行处理得到相应的输出数据,将P1的输出数据经交换PE(switch)发送给P2,P2进行相应的处理后,得到对应的输出数据,将P2的输出数据发送给P3,P3处理结束后也得到了相应的输出数据,将P3的输出数据发送给P4,P4处理结束后得到目标任务的输出结果。
2)可以通过命令data infile outfile taskID从infile中读取数据给到P1作为输入数据,触发目标任务的执行,并且在目标任务执行完毕后,将输出结果写入outfile作为目标任务最终的输出数据。
综上,本公开旨在解决现有SOC或SIP集成的PE类型和数量越来越多,CPU为中心节点的计算系统模型容易因为CPU的功耗和传输量导致系统瓶颈,无法让系统吞吐随着PE数量增加而增加。本公开建立了不以CPU为中心节点的异构计算系统,而是采用交换PE,使得每个PE计算完成后不再返回CPU,而是直接把计算得到的数据传递给需要这些数据的下一个PE,下一个PE继续进行计算。本公开充分利用了NOC标准实现异构构造,大大降低了异构计算的构造难度,让SOC和SIP级的设计更加简单,对系统的大规模横向扩展具有重要意义。通过本公开可以更加方便快捷的构造多PE的异构计算系统,同时编程非常简单,为快速构造异构计算系统带来了便利。基于小芯片(chiplet)的系统构造方法从制造层面为构造复杂的异构系统带来了可能,而且本公开异构计算系统让基于chiplet构造复杂系统变得简单,并且实现了必要的系统隔离。
图10是根据一示例性实施例示出的一种异构计算系统的框图。参照图10,异构计算系统100包含至少一个交换处理单元102和多个处理单元104,至少一个交换处理单元102之间互相连接,多个处理单元104中任意两个处理单元104之间能够通过至少一个交换处理单元102进行数据通信。
目标交换处理单元接收目标任务的程序文件和目标任务标识,其中,程序文件中包含目标任务包括的子任务的程序文件、子任务之间的逻辑关系,目标交换处理单元是至少一个交换处理单元中的一个交换处理单元;目标交换处理单元基于子任务的程序文件和目标任务标识,将每个子任务加载到与子任务对应的处理单元;目标交换处理单元在接收到所有子任务对应的子任务加载完成的消息后,向第一处理单元输入目标任务的输入数据,并将第一处理单元的输出数据,按照子任务之间的逻辑关系,传输给下一个子任务对应的处理单元作为输入数据,直至所有处理单元按照子任务之间的逻辑关系依次对各自的子任务进行处理,其中,第一处理单元是按照子任务之间的逻辑关系,第一个开始执行的子程序对应的处理单元。
根据本公开的示例性实施例,在目标任务的子任务中存在多对子任务且每对子任务之间的数据通信量大于第一预定阈值的情况下,异构计算系统包含一个目标交换处理单元,每对子任务对应的处理单元分别连接到不同的交换处理单元。
根据本公开的示例性实施例,在目标任务的子任务之间的数据通信量均小于第二预定阈值的情况下,异构计算系统包含多个目标交换处理单元,每个目标交换处理单元均连接预定数量的处理单元,其中,预定数量的处理单元与目标任务的子任务一一对应,每个目标交换处理单元和相应的预定数量的处理单元均能够执行本公开的任务处理方法。
根据本公开的示例性实施例,目标交换处理单元基于子任务的程序文件和目标任务标识,将每个子任务加载到与子任务对应的处理单元,包括:对于每个子任务,目标交换处理单元将子任务的程序文件和目标任务标识发送给与子任务对应的处理单元;对于每个子任务对应的处理单元,处理单元基于相应的子任务的程序文件和目标任务标识,加载相应的子任务,并等待处理相应的子任务,向目标交换处理单元发送子任务加载完成的消息。
根据本公开的示例性实施例,目标交换处理单元在将子任务的程序文件和目标任务标识发送给与子任务对应的处理单元之前,还包括:基于子任务的程序文件,获取子任务对应的处理单元的类型;从本地的处理单元表中查询类型下的所有处理单元,其中,处理单元表包含与目标交换处理单元连接的所有处理单元;从所有处理单元中选择出子任务对应的处理单元。
根据本公开的示例性实施例,从所有处理单元中选择出子任务对应的处理单元,包括:确定所有处理单元中子任务数量最少的处理单元,并将子任务数量最少的处理单元对应的子任务数量加1;将子任务数量最少的处理单元,作为子任务对应的处理单元。
根据本公开的示例性实施例,在从本地的处理单元表中查询类型下的所有处理单元之前,还包括:获取与目标交换处理单元连接的处理单元的类型和处理单元标识;基于处理单元的类型和处理单元标识,建立处理单元表,其中,处理单元表的每个表项中存储有预定处理单元的处理单元标识和每个预定处理单元上子任务数量,预定处理单元与目标交换处理单元连接且属于同一类型。
根据本公开的示例性实施例,在从所有处理单元中选择出子任务对应的处理单元之前,还包括:在从本地的处理单元表中未查询到类型的情况下,从其他交换处理单元的处理单元表中查询类型,直至查询到类型,并查询类型下的所有处理单元。
根据本公开的示例性实施例,处理单元基于相应的子任务的程序文件和目标任务标识,加载相应的子任务,包括:建立子任务的任务结构,其中,子任务的任务结构至少包括以下字段:子任务的子任务标识、目标任务标识、下一个子任务的子任务标识、子任务的执行代码;基于子任务的任务结构,为子任务分配所需的本地内存;在本地内存被分配完后,基于子任务的程序文件和目标任务标识,向子任务的任务结构中的字段填充信息。
根据本公开的示例性实施例,子任务的任务结构还包括子任务的工作状态,其中,工作状态包括运行状态、阻塞状态和等待运行状态;对于每个处理单元,处理单元根据子任务的工作状态,对子任务进行相应的处理。
根据本公开的示例性实施例,处理单元根据子任务的工作状态,对子任务进行相应的处理,包括:在工作状态为运行状态的情况下,根据输入数据开始执行子任务的执行代码;在工作状态为等待运行状态或阻塞状态的情况下,实时监测工作状态,在工作状态变更为运行状态时,根据输入数据开始执行子任务的执行代码。
根据本公开的示例性实施例,对于每个处理单元,处理单元上设有运行队列、等待队列和阻塞队列,其中,运行队列中的子任务正在运行中,等待队列中的子任务已接收到输入数据等待运行中,阻塞队列中的子任务未接收到输入数据或无法继续运行;在任一个子任务加载到处理单元上且未接收到输入数据的情况下,将任一个子任务加入阻塞队列,并将任一个子任务的工作状态变更为阻塞状态;在阻塞队列中的任一个子任务接收到输入数据或接收到启动指示的情况下,将任一个子任务从阻塞队列移入等待队列,并将任一个子任务的工作状态变更为等待运行状态;在运行队列中出现空闲位置的情况下,从等待队列中选择子任务移入运行队列,并将选择的子任务的工作状态变更为运行状态;在运行队列中任一个子任务无法继续运行的情况下,将任一个子任务从运行队列移入阻塞队列,并将任一个子任务的工作状态变更为阻塞状态。
根据本公开的示例性实施例,目标交换处理单元在接收目标任务的程序文件和目标任务标识之后,还包括:建立目标任务的任务结构,其中,目标任务的任务结构至少包括以下字段:目标任务的目标任务标识和页表;基于目标任务的程序文件,为目标任务分配所需的全局内存;在全局内存被分配完后,基于目标任务的程序文件,向目标任务的任务结构中的字段填充信息。
根据本公开的示例性实施例,目标交换处理单元接收目标任务的任一个子任务对应的处理单元发送的申请全局内存的请求,其中,请求包括目标任务标识和所申请的全局内存大小;目标交换处理单元通过目标任务标识,确定目标任务对应的全局内存的位置,并为任一个子任务分配与所申请的全局内存大小对应的第一全局内存;任一个子任务对应的处理单元能够针对第一全局内存进行读或写操作。
根据本公开的实施例,可提供一种电子设备。图11是根据本公开实施例的一种电子设备1100的框图,该电子设备包括至少一个存储器1101和至少一个处理器1102,所述至少一个存储器中存储有计算机可执行指令集合,当计算机可执行指令集合被至少一个处理器执行时,执行根据本公开实施例的任务处理方法。
作为示例,电子设备1100可以是PC计算机、平板装置、个人数字助理、智能手机、或其他能够执行上述指令集合的装置。这里,电子设备1100并非必须是单个的电子设备,还可以是任何能够单独或联合执行上述指令(或指令集)的装置或电路的集合体。电子设备1100还可以是集成控制系统或系统管理器的一部分,或者可被配置为与本地或远程(例如,经由无线传输)以接口互联的便携式电子设备。
在电子设备1100中,处理器1102可包括中央处理器(CPU)、图形处理器(GPU)、可编程逻辑装置、专用处理器系统、微控制器或微处理器。作为示例而非限制,处理器1102还可包括模拟处理器、数字处理器、微处理器、多核处理器、处理器阵列、网络处理器等。
处理器1102可运行存储在存储器中的指令或代码,其中,存储器1101还可以存储数据。指令和数据还可经由网络接口装置而通过网络被发送和接收,其中,网络接口装置可采用任何已知的传输协议。
存储器1101可与处理器1102集成为一体,例如,将RAM或闪存布置在集成电路微处理器等之内。此外,存储器1101可包括独立的装置,诸如,外部盘驱动、存储阵列或任何数据库系统可使用的其他存储装置。存储器1101和处理器1102可在操作上进行耦合,或者可例如通过I/O端口、网络连接等互相通信,使得处理器1102能够读取存储在存储器1101中的文件。
此外,电子设备1100还可包括视频显示器(诸如,液晶显示器)和用户交互接口(诸如,键盘、鼠标、触摸输入装置等)。电子设备的所有组件可经由总线和/或网络而彼此连接。
根据本公开的实施例,还可提供一种计算机可读存储介质,其中,当计算机可读存储介质中的指令被至少一个处理器运行时,促使至少一个处理器执行本公开实施例的任务处理方法。这里的计算机可读存储介质的示例包括:只读存储器(ROM)、随机存取可编程只读存储器(PROM)、电可擦除可编程只读存储器(EEPROM)、随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、闪存、非易失性存储器、CD-ROM、CD-R、CD+R、CD-RW、CD+RW、DVD-ROM、DVD-R、DVD+R、DVD-RW、DVD+RW、DVD-RAM、BD-ROM、BD-R、BD-R LTH、BD-RE、蓝光或光盘存储器、硬盘驱动器(HDD)、固态硬盘(SSD)、卡式存储器(诸如,多媒体卡、安全数字(SD)卡或极速数字(XD)卡)、磁带、软盘、磁光数据存储装置、光学数据存储装置、硬盘、固态盘以及任何其他装置,所述任何其他装置被配置为以非暂时性方式存储计算机程序以及任何相关联的数据、数据文件和数据结构并将所述计算机程序以及任何相关联的数据、数据文件和数据结构提供给处理器或计算机使得处理器或计算机能执行所述计算机程序。上述计算机可读存储介质中的计算机程序可在诸如客户端、主机、代理装置、服务器等计算机设备中部署的环境中运行,此外,在一个示例中,计算机程序以及任何相关联的数据、数据文件和数据结构分布在联网的计算机系统上,使得计算机程序以及任何相关联的数据、数据文件和数据结构通过一个或多个处理器或计算机以分布式方式存储、访问和执行。
根据本公开实施例,提供了一种计算机程序产品,包括计算机指令,计算机指令被处理器执行时实现本公开实施例的任务处理方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由所附的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (10)
1.一种任务处理方法,其特征在于,应用于异构计算系统,所述异构计算系统包含至少一个交换处理单元和多个处理单元,所述至少一个交换处理单元之间互相连接,所述多个处理单元中任意两个处理单元之间能够通过所述至少一个交换处理单元进行数据通信,所述任务处理方法包括:
目标交换处理单元接收目标任务的程序文件和目标任务标识,其中,所述程序文件中包含所述目标任务包括的子任务的程序文件、子任务之间的逻辑关系,所述目标交换处理单元是所述至少一个交换处理单元中的一个交换处理单元;
所述目标交换处理单元基于所述子任务的程序文件和所述目标任务标识,将每个子任务加载到与所述子任务对应的处理单元;
所述目标交换处理单元在接收到所有子任务对应的子任务加载完成的消息后,向第一处理单元输入所述目标任务的输入数据,并将所述第一处理单元的输出数据,按照所述子任务之间的逻辑关系,传输给下一个子任务对应的处理单元作为输入数据,直至所有处理单元按照所述子任务之间的逻辑关系依次对各自的子任务进行处理,其中,所述第一处理单元是按照所述子任务之间的逻辑关系,第一个开始执行的子程序对应的处理单元。
2.如权利要求1所述的任务处理方法,其特征在于,在所述目标任务的子任务中存在多对子任务且每对子任务之间的数据通信量大于第一预定阈值的情况下,所述异构计算系统包含一个目标交换处理单元,每对子任务对应的处理单元分别连接到不同的交换处理单元。
3.如权利要求2所述的任务处理方法,其特征在于,在所述目标任务的子任务之间的数据通信量均小于第二预定阈值的情况下,所述异构计算系统包含多个目标交换处理单元,每个目标交换处理单元均连接预定数量的处理单元,其中,所述预定数量的处理单元与所述目标任务的子任务一一对应,每个目标交换处理单元和相应的预定数量的处理单元均能够执行如权利要求1所述的任务处理方法。
4.如权利要求1所述的任务处理方法,其特征在于,所述目标交换处理单元基于所述子任务的程序文件和所述目标任务标识,将每个子任务加载到与所述子任务对应的处理单元,包括:
对于每个子任务,所述目标交换处理单元将所述子任务的程序文件和所述目标任务标识发送给与所述子任务对应的处理单元;
对于每个子任务对应的处理单元,所述处理单元基于相应的子任务的程序文件和所述目标任务标识,加载所述相应的子任务,并等待处理相应的子任务,向所述目标交换处理单元发送子任务加载完成的消息。
5.如权利要求4所述的任务处理方法,其特征在于,所述目标交换处理单元在将所述子任务的程序文件和所述目标任务标识发送给与所述子任务对应的处理单元之前,还包括:
基于所述子任务的程序文件,获取所述子任务对应的处理单元的类型;
从本地的处理单元表中查询所述类型下的所有处理单元,其中,所述处理单元表包含与所述目标交换处理单元连接的所有处理单元;
从所有处理单元中选择出所述子任务对应的处理单元。
6.如权利要求5所述的任务处理方法,其特征在于,所述从所有处理单元中选择出所述子任务对应的处理单元,包括:
确定所有处理单元中子任务数量最少的处理单元,并将所述子任务数量最少的处理单元对应的子任务数量加1;
将所述子任务数量最少的处理单元,作为所述子任务对应的处理单元。
7.如权利要求6所述的任务处理方法,其特征在于,在从本地的处理单元表中查询所述类型下的所有处理单元之前,还包括:
获取与所述目标交换处理单元连接的处理单元的类型和处理单元标识;
基于所述处理单元的类型和处理单元标识,建立处理单元表,其中,所述处理单元表的每个表项中存储有预定处理单元的处理单元标识和每个预定处理单元上子任务数量,所述预定处理单元与所述目标交换处理单元连接且属于同一类型。
8.一种异构计算系统,其特征在于,所述异构计算系统包含至少一个交换处理单元和多个处理单元,所述至少一个交换处理单元之间互相连接,所述多个处理单元中任意两个处理单元之间能够通过所述至少一个交换处理单元进行数据通信,其中,
目标交换处理单元接收目标任务的程序文件和目标任务标识,其中,所述程序文件中包含所述目标任务包括的子任务的程序文件、子任务之间的逻辑关系,所述目标交换处理单元是所述至少一个交换处理单元中的一个交换处理单元;
所述目标交换处理单元基于所述子任务的程序文件和所述目标任务标识,将每个子任务加载到与所述子任务对应的处理单元;
所述目标交换处理单元在接收到所有子任务对应的子任务加载完成的消息后,向第一处理单元输入所述目标任务的输入数据,并将所述第一处理单元的输出数据,按照所述子任务之间的逻辑关系,传输给下一个子任务对应的处理单元作为输入数据,直至所有处理单元按照所述子任务之间的逻辑关系依次对各自的子任务进行处理,其中,所述第一处理单元是按照所述子任务之间的逻辑关系,第一个开始执行的子程序对应的处理单元。
9.一种电子设备,其特征在于,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如权利要求1至7中任一项所述的任务处理方法。
10.一种计算机可读存储介质,其特征在于,当所述计算机可读存储介质中的指令被至少一个处理器运行时,促使所述至少一个处理器执行如权利要求1至7中任一项所述的任务处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311735310.3A CN117667827A (zh) | 2023-12-15 | 2023-12-15 | 任务处理方法及异构计算系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311735310.3A CN117667827A (zh) | 2023-12-15 | 2023-12-15 | 任务处理方法及异构计算系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117667827A true CN117667827A (zh) | 2024-03-08 |
Family
ID=90066004
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311735310.3A Pending CN117667827A (zh) | 2023-12-15 | 2023-12-15 | 任务处理方法及异构计算系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117667827A (zh) |
-
2023
- 2023-12-15 CN CN202311735310.3A patent/CN117667827A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112099941B (zh) | 实现硬件加速处理的方法、设备和系统 | |
US11934883B2 (en) | Computer cluster arrangement for processing a computation task and method for operation thereof | |
US7958184B2 (en) | Network virtualization in a multi-node system with multiple networks | |
CN110809760B (zh) | 资源池的管理方法、装置、资源池控制单元和通信设备 | |
US10379883B2 (en) | Simulation of high performance computing (HPC) application environment using virtual nodes | |
US20110265093A1 (en) | Computer System and Program Product | |
US20210258265A1 (en) | Resource management for components of a virtualized execution environment | |
US20210326221A1 (en) | Network interface device management of service execution failover | |
CN105242872A (zh) | 一种面向虚拟集群的共享存储系统 | |
WO2017173618A1 (zh) | 压缩数据的方法、装置和设备 | |
WO2024041576A1 (zh) | 一种虚拟机的热迁移方法、设备、系统及存储介质 | |
CN116800616B (zh) | 虚拟化网络设备的管理方法及相关装置 | |
CN115878301A (zh) | 一种数据库网络负载性能的加速框架、加速方法及设备 | |
EP4184324A1 (en) | Efficient accelerator offload in multi-accelerator framework | |
CN115878333A (zh) | 进程组间的一致性判断方法、装置及设备 | |
US11687451B2 (en) | Memory allocation manager and method performed thereby for managing memory allocation | |
CN117667827A (zh) | 任务处理方法及异构计算系统 | |
US11509562B1 (en) | System and method for a system level data sharding analysis of information handling systems | |
US20230205448A1 (en) | System and method for a local level data sharding analysis of information handling systems | |
CN117785758B (zh) | Cxl模组、控制器、任务处理方法、介质和系统 | |
US20240069755A1 (en) | Computer system, memory expansion device and method for use in computer system | |
EP4322001A1 (en) | Memory expansion method and related device | |
US20230229497A1 (en) | Transparent and remote kernel execution in a heterogeneous computing system | |
CN116662008A (zh) | 一种异构硬件统一纳管调度节点控制器 | |
CN116737690A (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 |