CN117971437A - 任务分配方法、电路、设备、介质及程序 - Google Patents

任务分配方法、电路、设备、介质及程序 Download PDF

Info

Publication number
CN117971437A
CN117971437A CN202410354246.2A CN202410354246A CN117971437A CN 117971437 A CN117971437 A CN 117971437A CN 202410354246 A CN202410354246 A CN 202410354246A CN 117971437 A CN117971437 A CN 117971437A
Authority
CN
China
Prior art keywords
task
register
allocated
stream processor
target
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
Application number
CN202410354246.2A
Other languages
English (en)
Inventor
请求不公布姓名
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Moore Threads Technology Co Ltd
Original Assignee
Moore Threads Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Moore Threads Technology Co Ltd filed Critical Moore Threads Technology Co Ltd
Priority to CN202410354246.2A priority Critical patent/CN117971437A/zh
Publication of CN117971437A publication Critical patent/CN117971437A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)

Abstract

本申请公开了一种任务分配方法、电路、设备、介质及程序,其中,所述任务分配方法包括:获取待分配任务匹配的第一寄存器的数量;在至少两个流处理器中,确定每一所述流处理器内处于空闲状态的第二寄存器的数量;从所述第二寄存器的数量大于等于所述第一寄存器的数量的流处理器中,确定目标流处理器;将所述待分配任务,分配至所述目标流处理器内的第二寄存器。这样,能够提高待分配任务,在至少两个流处理器组成的结构中的分配效率和处理效率。

Description

任务分配方法、电路、设备、介质及程序
技术领域
本申请实施例涉及信息技术领域,尤其涉及一种任务分配方法、电路、设备、介质及程序。
背景技术
相关技术中,在由多个流处理器组成的系统结构内进行任务分配时,通常会因轮询等待,而存在相关任务处理饱和的流处理器,从而会出现阻塞其他流处理器任务调度的现象;这样,易因任务分配不及时而导致任务处理效率过慢等一系列问题。
发明内容
有鉴于此,本申请实施例至少提供一种任务分配方法、电路、设备、介质及程序,旨在提高待分配任务,在至少两个流处理器组成的结构中的分配效率和处理效率。
为了实现上述目的,本申请实施例提供一种任务分配方法,所述任务分配方法包括:
获取待分配任务匹配的第一寄存器的数量;
在至少两个流处理器中,确定每一所述流处理器内处于空闲状态的第二寄存器的数量;
从所述第二寄存器的数量大于等于所述第一寄存器的数量的流处理器中,确定目标流处理器;
将所述待分配任务,分配至所述目标流处理器内的第二寄存器。
本申请实施例提供一种任务分配电路,所述任务分配电路包括:
任务管理单元,被配置为获取待分配任务匹配的第一寄存器的数量;
资源管理单元,被配置为在至少两个流处理器中,确定每一所述流处理器内处于空闲状态的第二寄存器的数量;
所述资源管理单元,还被配置为从所述第二寄存器的数量大于等于所述第一寄存器的数量的流处理器中,确定目标流处理器;
分配单元,被配置为将所述待分配任务,分配至所述目标流处理器内的第二寄存器。
相应地,本申请实施例提供一种计算机设备,所述计算机设备包括存储器和处理器,所述存储器上存储有计算机可执行指令,所述处理器运行所述存储器上的计算机可执行指令时能够实现上述任一所述的任务分配方法。
本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机可执行指令,该计算机可执行指令被执行后,能够实现上述任一所述的任务分配方法。
本申请实施例提供一种计算机程序产品,所述计算机程序产品包括计算机程序或指令,所述计算机程序或指令被处理器执行时,实现上述任一所述的任务分配方法。
本申请实施例提供一种任务分配方法、电路、设备、介质及程序,首先,获取待分配任务匹配的第一寄存器的数量;并在至少两个流处理器中,确定每一流处理器内处于空闲状态的第二寄存器的数量;如此,能够为后续待分配任务分配到至少两个流处理器中的目标流处理器,提供参数基础。然后,从第二寄存器的数量大于等于第一寄存器的数量的流处理器中,确定目标流处理器;并将待分配任务,分配至目标流处理器内的第二寄存器。这样,根据多个不同流处理器中每一流处理器内处于空闲状态的寄存器资源(可用寄存器资源),及待分配任务所匹配的第一寄存器的资源进行比对,能够便捷且高效地对待分配任务进行分配。且相对于相关技术来说,能够减少因轮询等待相关任务处理饱和的流处理器,而出现阻塞其他流处理器任务调度的现象,从而能够整体提高待分配任务,在至少两个流处理器组成的结构中的分配效率和处理效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本申请实施例提供的技术方案。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请实施例的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图,其中:
图1为本申请一些实施例提供的任务分配方法的流程示意图一;
图2为本申请一些实施例提供的任务分配方法的流程示意图二;
图3为本申请一些实施例提供的任务分配方法的流程示意图三;
图4为相关技术中图形处理器内的多个流处理器对应的寄存器资源框架图;
图5为相关技术中单个流处理器内多个不同寄存器资源对应的管理框架图;
图6为应用本申请一些实施例提供的任务分配方法中资源管理单元的示意图;
图7为本申请一些实施例提供的任务分配方法进行任务离散分配的示意图;
图8为本申请一些实施例提供的任务分配方法进行任务分配的系统框架示意图;
图9为本申请一些实施例提供的任务分配电路的结构组成示意图;
图10为本申请一些实施例计算机设备的组成结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对发明的具体技术方案做进一步详细描述。以下实施例用于说明本申请实施例,但不用来限制本申请实施例的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
在以下的描述中,所涉及的术语“第一\第二\第三”仅仅是是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请实施例的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请实施例。
对本申请实施例进行进一步详细说明之前,对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释。
1)流处理器:有可编程和不可编程两种;流处理器可以处理流数据,同样输出一个流数据,这个流数据可以应用在其它超标量流处理器(Stream Processors,SPs)当中,流处理器可以成组或者大数量的运行,从而大幅度提升了并行处理能力。
2)寄存器:其功能是存储二进制代码,它是由具有存储功能的触发器组合起来构成的。一个触发器可以存储1位二进制代码,故存放n位二进制代码的寄存器,需用n个触发器来构成。
下面说明本申请实施例提供的任务分配方法的示例性应用,本申请实施例提供的任务分配方法可以应用至具有图像采集功能的笔记本电脑,平板电脑,台式计算机,相机,移动设备(例如,个人数字助理,专用消息设备,便携式游戏设备)等各种类型的用户终端,也可以实施为服务器。
该任务分配方法可以应用于计算机设备,该方法所实现的功能可以通过计算机设备中的处理器调用程序代码来实现,当然程序代码可以保存在计算机存储介质中,可见,该计算机设备至少包括处理器和存储介质。
本申请实施例提供一种任务分配方法,在一种可能的实现方式中,任务分配方法通过集成电路实现,这一集成电路设计有资源管理单元,该资源管理单元管理一个或多个流处理器中的离散资源。如图1所示,为本申请一些实施例提供的任务分配方法的流程示意图一;以下结合图1所示步骤进行说明:
步骤S101,获取待分配任务匹配的第一寄存器的数量。
在本申请的一些实施例中,任务分配方法可以应用至任务分配电路,该任务分配电路包括至少两个流处理器,即该任务分配电路包括的流处理器数量可随实际需求而定(两个,或两个以上);且至少两个流处理器可并线接收并处理多个待分配任务。
在本申请的一些实施例中,待分配任务可以指代相关任务或请求组建之前关联的属性数据,或相关任务或请求组建好之后对应的任务数据。
在本申请的一些实施例中,可以基于待分配任务所需的内存大小,确定其匹配的第一寄存器的数量。这里,第一寄存器默认的数量可以是通过第一寄存器对应的内存大小为单位换算的。
在本申请的一些实施例中,待分配任务匹配的第一寄存器的数量可以是一个,也可以是两个及以上,此处的数量随待分配任务的实际需求而定。
可以理解的是,通过上述步骤,获取待分配任务匹配的第一寄存器的数量,能够为后续为待分配任务分配至对应的流处理器内的寄存器,提供参数基础,从而能够更加高效且精准地,提高待分配任务在多流处理器内的分配效率和处理效率。
步骤S102,在至少两个流处理器中,确定每一所述流处理器内处于空闲状态的第二寄存器的数量。
在本申请的一些实施例中,至少两个流处理器可以指代流式多处理器(StreamMulti-processor,SM),其每个流处理器可以视为具有较小结构的处理器。这里,接上文描述,因流处理器的数量在同等级的架构中可以直接影响设备的处理性能,从而在任务分配电路包括至少两个流处理器的情况下,其具有越高的处理能力。
需要说明的是,任务分配电路包括至少两个流处理器的情况下,通常可使用资源管理单元对至少两个流处理器进行管理,如:每一流处理器对应的任务分配事宜,每一流处理器处理相关任务对应的时长等。
在本申请的一些实施例中,每一流处理器内处于空闲状态的第二寄存器,可以指代暂无数据的寄存器,或没有分配相关任务的寄存器,或当前没有处理相关任务的寄存器等。
在本申请的一些实施例中,不同流处理器内的处于空闲状态的第二寄存器的数量可以相等,也可不等。示例性地,第一流处理器内处于空闲状态的第二寄存器的数量为5,第二流处理器内处于空闲状态的第二寄存器的数量为10等。
其中,第一流处理器与第二流处理器在可以为相邻或不相邻的流处理器。
在本申请的一些实施例中,还可以基于待分配任务所关联的任务属性,在至少两个流处理器中,确定每一流处理器内的处于空闲状态的第二寄存器的数量。示例性地,在待分配任务为相关任务或请求生成之前关联的属性数据的情况下,可确定每一流处理器内的处于空闲状态的属性寄存器的数量;在待分配任务为相关任务或请求组建好之后对应的任务数据的情况下,确定每一流处理器内的处于空闲状态的通用寄存器的数量。
需要说明的是,通用寄存器可用于传送和暂存数据,也可参与算术逻辑运算,并保存运算结果,其可以被程序中的任意指令所访问和使用。同时属性寄存器,为具有特定功能的寄存器,其用于存储相关属性数据,如:私有数据、地址信息、属性信息等。这里,通用寄存器和属性寄存器在设备中都扮演着重要的角色,两者的功能、数量、寄存器位宽和使用方式等方面有所不同,其中,通用寄存器和属性寄存器相互配合,共同完成设备的各项任务。
在本申请的一些实施例中,可以统计每一流处理器内处于空闲状态的,即当前可用于存储(加载)该待分配任务的第二寄存器的数量。这里,每一流处理器内处于空闲状态的第二寄存器为多个的情况下,每一流处理器内的多个第二寄存器,对应的寄存器编号可以连续,也可以不连续。此外,流处理器内处于空闲状态的第二寄存器的数量可以是一个,也可以是多个,还可以是0个,本申请实施例对此不作任何限定。
可以理解的是,通过上述步骤,获取每一流处理器内处于空闲状态的第二寄存器的数量,同样能够为后续为待分配任务分配至对应的流处理器内的寄存器,提供参数基础。
步骤S103,从所述第二寄存器的数量大于等于所述第一寄存器的数量的流处理器中,确定目标流处理器。
在本申请的一些实施例中,可以通过第一寄存器的数量,与每一流处理器中的第二寄存器的数量进行比对,在至少两个流处理器中选取目标流处理器。
在本申请的一些实施例中,首先,可以将每一流处理器内的第二寄存器的数量,与第一寄存器的数量进行比对,从而选取第二寄存器的数量大于等于第一寄存器的数量的至少一个中间流处理器;然后,在至少一个中间流处理器中,选取目标流处理器。这里,目标流处理器,可以是至少一个中间流处理器中,第二寄存器的数量最多的,或次多的等所对应的流处理器。
需要说明的是,若至少两个流处理器中,不存在第二寄存器的数量大于等于第一寄存器的数量的流处理器,可暂缓待分配任务的分配操作,即等待至少两个流处理器内的第二寄存器的数量更新(此处,因处于待分配任务之前的相关已分配任务已执行结束,会对应地释放寄存器,使其变更为处于空闲状态的第二寄存器),从而基于更新后的第二寄存器的数量,再次衡量至少两个流处理器中,是否存在第二寄存器的数量大于等于第一寄存器的数量的流处理器。
可以理解的是,通过上述步骤,通过数量比较操作,从至少两个流处理器中确定出目标流处理器,能够便捷且高效地对待分配任务进行分配。
步骤S104,将所述待分配任务,分配至所述目标流处理器内的第二寄存器。
在本申请的一些实施例中,可以将待分配任务,分配至目标流处理器内的第二寄存器中进行缓存或加载。
在本申请的一些实施例中,待分配任务分配至目标流处理器内的第二寄存器的数量,为多个的情况下,其在目标流处理器内对应的编号可以连续的,也可以是不连续。这里,可以将该多个编号不连续的或连续的第二寄存器,虚拟为连续存储空间,用于存储该待分配任务。
在本申请的一些实施例中,还可以进一步判断目标流处理器内的其他资源是否充足,以便在目标流处理器内的所有资源均足够的情况下,再将待分配任务分配至目标流处理器内的第二寄存器。此外,在将待分配任务分配至目标流处理器内的第二寄存器之后,还可以将该第二寄存器对应的标识信息,以及目标流处理器的标识信息同步反馈至任务分配电路,以便任务分配电路后续对待分配任务进行查询检索等。
在本申请的一些实施例中,还可以进一步将第一寄存器的数量,转换为第一寄存器行的数量;其中,每一寄存器行包括处于同一流处理器内的至少两个编号连续的寄存器。相应地,可将每一流处理器内的第二寄存器的数量,转换为每一流处理器内的第二寄存器行的数量,从而可从第二寄存器行的数量大于等于第一寄存器行的数量的流处理器中,确定目标流处理器,以便后续将待分配任务,分配至目标流处理器内的第二寄存器行。
接上文描述,首先,根据待分配任务所占内存大小,确定待分配任务所需的第一寄存器的数量,同时确定至少两个流处理器中每一流处理器内处于空闲状态的第二寄存器的数量;然后,将确定的第一寄存器的数量,以及每一流处理器内的第二寄存器的数量进行比对,以在至少两个流处理器内选取目标流处理器。这里,比对可以通过对第二寄存器的数量,以及第一寄存器的数量进行寄存器行的转换,从而确定对应的目标流处理器,进而将待分配任务分配至目标流处理器内的第二寄存器进行缓存。
可以理解的是,通过上述步骤,根据多个不同流处理器中每一流处理器内处于空闲状态的寄存器资源(可用寄存器资源),及待分配任务所匹配的第一寄存器的资源进行比对,能够高效地对待分配任务进行分配。且相对于相关技术来说,能够减少因轮询等待相关任务处理饱和的流处理器,而出现阻塞其他流处理器任务调度的现象,从而能够整体提高待分配任务,在至少两个流处理器组成的结构中的分配效率和处理效率。
在本申请的一些实施例中,在每一寄存器行包括在同一流处理器内的至少两个编号连续的寄存器的情况下,第一寄存器的数量可转换为第一寄存器行的数量,第二寄存器的数量转换为第二寄存器行的数量,从而上述步骤S103中确定目标流处理器,可以通过以下步骤S201来实现,参考图2,为本申请一些实施例提供的任务分配方法的流程示意图二,结合图2所示的步骤进行以下说明:
步骤S201,从所述第二寄存器行的数量大于等于所述第一寄存器行的数量的流处理器中,确定所述目标流处理器。
在本申请的一些实施例中,可以将第二寄存器的数量转换为第二寄存器行的数量,第一寄存器的数量转换为第一寄存器行的数量。示例性地,在每一寄存器行包括处于同一流处理器内的4个编号连续的寄存器的情况下,第二寄存器的数量为32个;对应的,第二寄存器行的数量即为8个,而第一寄存器的数量30个,其对应的第一寄存器行的数量也为8个。
在本申请的一些实施例中,从第二寄存器行的数量大于等于第一寄存器行的数量的流处理器中,选取相关参数满足预设条件的目标流处理器。这里,可以是选取第二寄存器行的数量最多的,或次多的,或第二寄存器行空闲时间最长的流处理器,本申请实施例对此不作任何限定。
需要说明的是,在流处理器内的多个寄存器中,可按照对应的分配粒度进行离散管理或连续管理。这里,粒度与寄存器的大小对应;其中,分配粒度可以表示为每次请求内存的时候最小给分配多少。
在一种可行的实现方式中,上述实施例提供的步骤S201可以通过以下步骤S2011和步骤S2012来实现(图中未示出):
步骤S2011,在所述第二寄存器行的数量大于等于所述第一寄存器行的数量的流处理器中,选取所述第二寄存器行的数量最多的流处理器。
步骤S2012,将所述第二寄存器行的数量最多的流处理器,确定为所述目标寄存器。
可以理解的是,通过上述步骤,选取可用资源最丰富的流处理器(第二寄存器行的数量最多的流处理器)。这样,能够使得在至少两个流处理器对应的架构中,不仅使得分配策略更加精准,且能够预留更加丰富资源以备后续新来的任务使用。
对应地,上述实施例提供的步骤S104可以通过以下步骤S202的方式来实现:
步骤S202,将所述待分配任务,分配至所述目标流处理器内的第二寄存器行。
在本申请的一些实施例中,可以将待分配任务,分配至目标流处理器内的第二寄存器行。这里,第二寄存器行的数量为两个及以上的情况下,至少两个第二寄存器行的编号不限于连续的,或,离散的。
可以理解的是,通过上述步骤,在第二寄存器行的数量大于等于第一寄存器行的数量的流处理器中,确定目标流处理器。一方面,能够实现将待分配任务加载或存储至目标流处理器内的第二寄存器行;一方面,因寄存器行的索引信息相对于寄存器的索引信息来说,相对较少,从而能够减少后续有关寄存器的索引信息,进而能够减少相关索引信息的缓存空间。
在本申请的一些实施例中,上述步骤S202中将待分配任务,分配至目标流处理器内的第二寄存器行,可以通过以下步骤S301和步骤S302的方式来实现,参照图3所示,为本申请一些实施例提供的任务分配方法的流程示意图三,结合图3所示的步骤进行以下说明:
步骤S301,在所述目标流处理器内的M个第二寄存器行内,采用多路查找方式,选取N个目标寄存器行。
其中,所述M为所述目标流处理器内的第二寄存器行的数量;所述N为所述第一寄存器行的数量;所述N个目标寄存器行对应的行编号为连续的或离散的。
在本申请的一些实施例中,从目标流处理器内的M个第二寄存器行内,选取N个行编号可能连续,也可能不连续的寄存器行。这里,M大于等于N(对应上文提及的:从第二寄存器行的数量大于等于第一寄存器行的数量的流处理器中,确定目标流处理器);同时在目标流处理器内,采用多路查找方式,可以提高在目标流处理器内确定多个目标寄存器行的获取效率。
需要说明的是,在本申请实施例中,M和N均为正整数。
在本申请的一些实施例中,可以是任务分配电路(内部包括至少两个流处理器)内的分配单元,采用多路查找方式,在目标流处理器内的M个第二寄存器行内,选取N个目标寄存器行。这里,多路查找方式即为:通过多个路径或多个节点在相关信息中进行目标信息的查找。也就是说,任务分配电路内的分配单元,在目标流处理器内的M个第二寄存器行内,通过多个节点或多个路径的查找方式,随机选取或按照预设选取规则,选取N个目标寄存器行。示例性地,在确定目标流处理器内存在M个第二寄存器行的情况下,可以对M个第二寄存器行进行划分,如等比例划分为I×J个第二寄存器行(这里,J小于N),并从每一J个第二寄存器行中选取至少一个目标寄存器行(如:一部分J个寄存器行内选取一个目标寄存器行,一部分J个寄存器行内选取多个目标寄存器行),以得到N个目标寄存器行。
在一种可行的实现方式中,因待分配任务的属性不同,其在流处理器内对应的存储或加载空间,即所匹配的寄存器类型不同,对应地,上述实施例提供的步骤S301可以划分以下两种情况来实现,即对应步骤S3011和步骤S3012(图中未示出):
步骤S3011,在所述待分配任务为任务组建之前的待分配属性数据的情况下,在所述目标流处理器内的M个处于空闲状态的属性寄存器行内,采用所述多路查找方式,选取所述N个目标属性寄存器行。
步骤S3012,在所述待分配任务为已组建好的待分配任务数据的情况下,在所述目标流处理器内的M个处于空闲状态的通用数据寄存器行内,采用所述多路查找方式,选取所述N个目标通用数据寄存器行。
在本申请的一些实施例中,基于待分配任务的属性不同,对目标流处理器内的不同寄存器进行选取,以便将对应的待分配任务(即已组建好的待分配任务,或组建之前的待分配任务),对应的存储至目标流处理器内的通用数据寄存器行,或,属性寄存器行。
在本申请的一些实施例中,任务组建之前的待分配属性数据,可以用于表征组建形成任务的线程数据的属性信息,如:地址信息、私有数据等。这里,组建形成任务的线程数据,如:顶点、几何、像素或计算单元等。
可以理解的是,通过上述步骤,在待分配任务为相关任务组建之前对应的属性数据的情况下,其在目标流处理器内对应的存储空间为属性寄存器,在待分配任务为任务组建好之后对应的任务数据的情况下,其在目标流处理器内对应的存储空间为通用数据寄存器。这样,基于任务的属性不同,即待分配的任务所涉及的数据类型,在目标流处理器内的M个第二寄存器行内,对应地选取适配的寄存器行进行分配,使得分配更加精准。
步骤S302,将选择的所述N个目标寄存器行虚拟为依次连续的存储空间,用于存储所述待分配任务。
在本申请的一些实施例中,可以将确定的N个目标寄存器行,默认为对应的连续存储空间,用于存储相关待分配任务。
可以理解的是,通过上述步骤,一方面,在目标流处理器内采用多路查找方式,能够提高在目标流处理器内确定多个目标寄存器行的获取效率;一方面,通过在目标流处理器内将待分配任务,进行不限于连续存储空间(寄存器)的分配,即可进行离散分配或连续分配,能够提高待分配任务在目标流处理器内的分配效率。
接上文描述,在获取待分配任务匹配的第一寄存器的数量,以实现后续将待分配任务分配至目标流处理器内的第二寄存器之前,还需对待分配任务进行合规检查,即本申请实施例提供的任务分配方法还可以执行以下步骤A1和步骤A2:
步骤A1,将初始任务,放入任务序列中进行合规检查。
步骤A2,将所述合规检查的结果为通过的所述初始任务,从所述任务序列中解除依赖,并将所述合规检查的结果为通过的所述初始任务,确定为所述待分配任务。
在本申请的一些实施例中,对于初始任务,即后续进行寄存器分配的任务,首先可以进行合规检查。这里,合规检查是用于确保该初始任务是否符合预设要求(这里随实际需求而定),以便后续将该初始任务分配至对应的寄存器后,相关程序或命令可正常查看或调用该初始任务的相关信息。
需要说明的是,任务序列可以为存放多个后续进行寄存器分配的任务。这里,在初始任务放入该任务序列之前,该任务序列可为空,也可不为空(即内部已存储有正在进行合规检查的任务,或等待进行合规检查的任务)。
在本申请的一些实施例中,合规检查的结果可以使用通过,不通过来表示,也可以使用合规,不合规来表示,本申请实施例对此不作任何限定。
在本申请的一些实施例中,在初始任务对应的合规检查的结果为通过,可先将该初始任务从任务序列中释放处理,即解除依赖(解除其在任务序列中的顺序依赖),并将该初始任务确定为待分配任务。
需要说明的是,若合规检查的结果为不通过,可根据任务分配电路内的相关执行策略对初始任务进行调整或处理。
可以理解的是,通过上述步骤,基于合规检查结果确定该初始任务,是否需要执行后续的寄存器分配,即是否为待分配任务。这样,能够为后续待分配任务进行寄存器的分配提供基础,从而能够确保待分配任务后续涉及的寄存器的正常分配。
继续接上文描述,在待分配任务的数量为至少两个的情况下,本申请实施例提供的任务分配方法还可以执行以下步骤B1和步骤B2:
步骤B1,对所述至少两个待分配任务,按照等待分配时长从长到短进行排序,得到待分配任务队列。
步骤B2,按照所述待分配任务队列中的排序,对所述待分配任务依次进行分配。
在本申请的一些实施例中,可以将至少两个待分配任务,按照其对应的等待分配时长从长到短依次排队,从而按照该队列中的待分配任务的排序,依次对待分配任务,在对应的目标流处理器内的寄存器行内进行分配。
这里,还可以进一步获取待分配任务对应的执行逻辑,从而按照待分配任务队列中的排序,及待分任务对应的执行逻辑,共同确定相关待分配任务的分配排序。
可以理解的是,通过上述步骤,通过对待分配任务的等待分配时长进行排序,以选取等待分配时长的待分配任务优先进行排序,从而能够减少相关待分配任务等待分配和处理的时间,进而能够进一步提高待分配任务的分配效率。
基于以上实施例,在将待分配任务存储至目标流处理器内的N个目标寄存器行之后,可对应的生成与N个目标寄存器行的行编号关联的索引信息,以便后续便于相关信息的搜索遍历;即本申请实施例提供的任务分配方法在执行步骤S302之后,还可以执行以下步骤C1和步骤C2:
步骤C1,获取所述目标流处理器内的寄存器行对应的索引表。
在本申请的一些实施例中,目标流处理器内的寄存器行对应的索引表,可以是任务分配电路事先已存储的,同时其可以随目标流处理器内的寄存器行的变动而变动。示例性第,该索引表可以表征为:寄存器行1的地址:xx1-xx2、寄存器行2的地址:xx2-xx5等。这里,寄存器行1和寄存器行2均为目标流处理器内的寄存器行。
需要说明的是,索引表是一种数据库结构,它是由数据表中的一列或多列组合而成的特殊数据结构。其主要作用是提供快速的数据访问方法,以便于进行数据的查找和排序。索引表通过在数据表上创建特定的索引结构,可以减少数据库需要处理的数据量,从而提高查询效率和系统整体的性能。
在本申请的一些实施例中,至少两个流处理器中每一流处理器内的寄存器均存在一个索引表,对应地,每一流处理器内的寄存器行均对应一个索引表。
步骤C2,在所述索引表中,确定与所述N个目标寄存器行的行编号关联的索引信息。
在本申请的一些实施例中,索引信息可以使用数值或文字进行描述,还可以直接为该N个目标寄存器行的行编号。
需要说明的是,索引信息就是根据表中的一列或若干列按照一定顺序建立的列值与记录行之间的对应关系表,其实质上是一张描述索引列的列值与原表中记录行之间一一对应关系的有序表。
可以理解的是,通过上述步骤,从索引表中,获取与N个目标寄存器行的行编号关联的索引信息,以便后续对加载或存储该待分配任务的搜索。
在一些实施例中,同步将目标流处理器内对应的可用寄存器行的数量进行更新,即基于M和N进行相减来确定。
对应地,在生成对应的索引信息之后,本申请实施例提供的任务分配方法还可以进一步执行以下步骤C3和步骤C4:
步骤C3,在所述待分配任务执行结束的情况下,清空所述索引信息。
步骤C4,基于所述N,对更新后的所述目标流处理器内的可用寄存器行的数量进行增加,以供下一个待分配任务使用。
其中,更新后的所述目标流处理器内的可用寄存器行的数量,为所述M与所述N之间的差值。
在本申请的一些实施例中,在待分配任务执行完成的情况下,即待分配任务,按照对应的执行逻辑依次执行并整体结束的情况下,可清空相关索引信息,并对更新后的目标流处理器内的可用寄存器行数,即计数值再次更新,以便下一个待分配任务使用。依次循环执行上述操作,使得包括至少两个流处理器的任务分配电路,在待分配任务进行寄存器的分配的过程中,通过对每一流处理器内的处于空闲状态的寄存器资源进行检查,以便基于待分配任务所需的寄存器资源,即第一寄存器的数量,选取较为合适的目标流处理器,并将待分配任务分配至目标流处理器内的相关寄存器中进行存储。
可以理解的是,通过上述步骤,能够整体提高待分配任务,在包括至少两个流处理器的任务分配电路中的分配效率和处理效率。
下面结合一个具体实施例对上述任务分配方法进行说明,然而值得注意的是,该具体实施例仅是为了更好地说明本申请实施例,并不构成对本申请实施例的不当限定。
图形处理器(Graphics Processing Unit,GPU)通常包含多种寄存器类型的资源,如:通用数据寄存器,属性寄存器等,其通常用于存放属性数据或私有数据或地址等相关信息,且对应的寄存器的使用量一般较大。示例性地,一般情况下每个单指令多数据(SingleInstruction Multiple Data,SIMD)Thread的任意一个系统进程(instance)均可以分配几十个到最多两百多个。如图4所示,GPU中的多流处理器管理单元401(这里,多流处理器即为至少两个流处理器)管理多个流处理器。这里,如图4所示,以示出的管理任一流处理器,即流处理器4011内包括的寄存器资源为例进行说明,该流处理器4011中包括多种不同类型的寄存器资源,如:通用数据寄存器40111、属性寄存器40112、常量寄存器40113、常数寄存器40114、标量寄存器40115以及掩码寄存器40116;其中,通用数据寄存器40111、属性寄存器40112以及常量寄存器40113通常是在相关任务执行过程中进行动态分配,而常数寄存器40114、标量寄存器40115以及掩码寄存器40116均为绑定分配。此外,在GPU中涉及的相关存储资源,如:还涉及图4中所示的:共享存储器4012、其他可用资源(包括图4中所示的其他可用资源1,即4013、其他可用资源2,即4014,. . .)等。
需要说明的是,任一流处理器内包括的不同类型的寄存器,其对应的数量可以相等,也可不等。
这里,如图5所示,图4中所示的流处理器4011内的寄存器资源,通常由GPU内的统一的资源管理单元501(该资源管理单元501可随实际需求,如:与图4中所示的多流处理器管理单元401集成在一起,也可分开)来集中管理,如此使得管理便捷且简单。对应地,图5中所示的502,即:资源类型1至资源类型n,即依次指代寄存器类型1至寄存器类型n;且,每个流处理器4011内包含的多种类型不同的寄存器,各个流处理器4011内的寄存器资源均是分开管理的。
需要说明的是,流处理器内的属性寄存器通常会在组建任务之前进行分配,其通过提前加载的方式,在任务组建之前对应的相关属性数据全部加载进去;而由于算术逻辑单元(Arithmetic Logic Unit,ALU)资源比较重要,而且临时(temp)资源(如:流处理器内的通用数据寄存器)有限。因此,通用数据寄存器通常是在任务全部准备就绪,需要调度至流处理器内执行时,才开始请求分配。此外,在多流处理器对应的系统结构中,存在相关任务数据需在流处理器1内的寄存器内进行存储,而流处理器1内的寄存器资源暂无可用,且其他流处理器内存在可用寄存器资源的情况;相关技术中,通常采用常规的轮询处理策略,即资源管理单元以及分配单元,会一直处于向流处理器1请求为该任务分配寄存器资源的状态,直至在流处理器1内申请到寄存器资源,进而执行相关任务数据的分配。这样,会存在阻塞其他流处理器的任务调度执行的现象。同样在相关任务数据调度时,当待分配的任务数据因执行逻辑而无法继续执行任务分配时,同样任务无法继续下发执行时,同样会出现阻塞其他流处理器的任务调度执行的现象。
也就是说,在多流处理器组成的系统结构中,任务分配时可能会产生互相等待的情况。示例性地,如在相关组建好的任务解除依赖并执行任务下发时,可能会存在因其初步预分配的流处理器内的通用数据寄存器,因存储任务已饱和,而导致相关组建好的任务无法下发时,出现阻塞整个任务下发出口的现象。
基于此,本申请实施例提供一种任务分配方法,通过充分利用多流处理器组成的系统结构中各流处理器内的可用寄存器资源,以减少各流处理器任务分配与调度上的阻塞,从而能够在多流处理器组成的系统架构中,实现更优的任务组建与任务分派调度效果;其对应的实施思想如下:
首先,在多流处理器组成的系统结构(对应本申请实施例提供的任务分配电路)中,设计统一的资源管理单元,其能够实现每一流处理器内的可用寄存器资源的计数,并对每一流处理器内的可用寄存器资源进行离散分配管理。从而基于该统一的资源管理单元,对多流处理器组成的系统结构中的相关任务数据进行分配统计。这样,即可实现组装新的任务时,根据多流处理器内每一流处理器的可用寄存器资源的计数,以及组装新的任务所需的寄存器资源的计数,确定能够进行任务分配的多个流处理器。这里,可以进一步选择可用寄存器的计数最多的且可进行分配的流处理器进行分配。对应的统一的资源管理单元,即本申请实施例提供的资源管理单元,可以参照如图6所示的资源管理单元501,可以对多流处理器中每一流处理器内的不同寄存器资源进行可用量计数,如图6中所示的601,即:资源类型1(如:属性寄存器)增加可用量计数信息、资源类型2(如:通用数据寄存器)增加可用量计数信息、…资源类型n增加可用量计数信息等。
对应地,若多流处理器组成的系统结构中,所有流处理器当前均无足够可用寄存器资源时,可等待前面未完成的任务完成时,实现资源回收,从而对应的增加可用寄存器资源量的计数,再次进行对应的所需寄存器资源和可用寄存器资源比较。同时将分配大小信息和剩余量计数信息同步给任务管理模块中的资源信息检测单元进行记录,方便后续资源检测参考。此外,当相关任务分配至对应的流处理器的可用寄存器之后,可以将该对应的流处理器的可用寄存器的数量,即计数值对应地进行减少。
示例性地,在需分配至通用数据寄存器的任务数据,在执行完任务序列的合规检查,并解除依赖之后,可同步检测各个流处理器内可用通用数据寄存器的剩余量;进一步比较可用通用数据寄存器的数量大小,依此对应选取目标流处理器,并进行可用通用数据寄存器缓存该任务数据。这里,可以选择出可用通用数据寄存器的数量充足的且数量最多的流处理器,作为目标流处理器。此外,在可用通用数据寄存器充足的情况下,依次基于执行逻辑和等待分配时间最长的任务数据进行任务分配。
这里,还可在任务调度分派后,进入流处理器内等待执行。当执行完成时,释放所申请的寄存器资源,同时回收并增加可用寄存器资源量计数。
以下具体实施例为将任务组建之前的属性参数,分配至对应的目标流处理器内的属性寄存器时,可将属性寄存器资源管理按照行分配粒度进行寄存器行计数,同时以离散形式进行分配管理。这里,将属性寄存器分配量,按属性寄存器分配粒度进行对齐后,基于待分配属性参数所需要分配的寄存器行数,然后通过多路查找方式查找可分配离散可用寄存器行,进行待分配属性参数的分配,并将分配的寄存器行编号存放至对应的索引中。同时将属性寄存器可用计数值减少对应行数值;并当任务结束释放时,清空索引信息,同时将属性寄存器可用计数值增加上述释放的行数值,供后续新分配任务使用。如图7所示,701为相关索引表中的条目1示例,702为701的条目1中任一索引示例,如:示出索引1;同时示出为702中的索引1分配有属性数据的流处理器内的可用属性寄存器行示例,703,即:可用属性寄存器行1至可用属性寄存器行4。这里,可用属性寄存器行1至可用属性寄存器行4在该流处理器内的行编号是离散的,即不连续的。
相对于相关技术来说,本方案提供的任务分配方法应用至多流处理器结构中,进行相关任务分配时所对应的系统框架图,如图8所示,该多流处理器结构内部包括:任务管理单元801、资源管理单元802、分配单元803以及至少两个流处理器804。这里。图8示出至少两个流处理器804包括:流处理器1至流处理器m;其中,m大于2。对应地,相关组建好的任务数据在多流处理器结构内进行任务分配之前,需执行以下步骤:第一步、通过任务管理单元801,依次执行合规检查8011:放入任务队列中进行合规检查,及解除依赖8012:在合规检查通过后,解除其在相关待进行合规检查的任务队列中的序号;第二步、在依赖解除之后,通过资源管理单元802执行申请寄存器资源8022。这里,资源管理单元802在执行申请寄存器资源8022之前,需先执行资源信息检测8021,以获取多流处理器结构中每一流处理器内的可用寄存器资源的计数。这样,资源管理单元802能够基于执行资源信息检测8021得到的信息,比较多流处理器结构中各个流处理器的相关可用寄存器资源信息,按照可用剩余量最多(寄存器资源)对应的流处理器、次多等依此递减的顺序进行流处理器的选取,即实现执行申请寄存器资源8022。第三步、通过分配单元803进行任务分配8031,实现即将任务数据分配至804中的目标流处理器(这里,目标流处理器即为第二步的资源管理单元802确定的)。
本申请实施例提供的任务分配方法,应用于包括至少两个流处理器的任务分配电路,其能够实现在组建任务之前对应的属性数据需分配寄存器资源时,资源管理单元可以提前算出各流处理器里面可用属性寄存器资源是否足够,找出可用(处于空闲状态)属性寄存器资源剩余量较多的流处理器,并将对应的属性数据分配在其中。同时,在需组建的任务数据下发至任务队列,进行统一调度管理,并在任务数据解除依赖后,通过选出下发至可用通用数据寄存器量充足的流多处理器内,将解除依赖的任务数据下发至其中。这样,在至少两个流处理器组成的系统架构,即任务分配电路中,不会存在因相关待分配任务排队等待分配,而出现阻塞其他流处理器对应的分配的现象,进而能够达到充分利用多个流处理器内的可用寄存器资源的效果。
且本申请实施例提供的任务分配方法,在将相关任务分配至流处理器内时,还可将部分寄存器资源改成离散管理结构,并在前续进行数据分配时使用,即通过整体可用寄存器的计数量来判断该流处理器是否可用。同时可将相关待分配任务分配至可用寄存器资源剩余量最多的流处理器,使得待分配任务对应的分配更佳精准。
本申请实施例提供一种任务分配电路900,图9为本申请实施例提供的任务分配电路的结构组成示意图,如图9所示,所述任务分配电路900包括:
任务管理单元901,被配置为获取待分配任务匹配的第一寄存器的数量;
资源管理单元902,被配置为在至少两个流处理器中,确定每一所述流处理器内处于空闲状态的第二寄存器的数量;
所述资源管理单元902,还被配置为从所述第二寄存器的数量大于等于所述第一寄存器的数量的流处理器中,确定目标流处理器;
分配单元903,被配置为将所述待分配任务,分配至所述目标流处理器内的第二寄存器。
在本申请的一些实施例中,每一寄存器行包括在同一流处理器内的至少两个编号连续的寄存器;所述第一寄存器的数量包括第一寄存器行的数量,所述第二寄存器的数量包括第二寄存器行的数量,所述资源管理单元902,还被配置为从所述第二寄存器行的数量大于等于所述第一寄存器行的数量的流处理器中,确定所述目标流处理器;所述分配单元903,还被配置为将所述待分配任务,分配至所述目标流处理器内的第二寄存器行。
在本申请的一些实施例中,所述资源管理单元902,还被配置为在所述第二寄存器行的数量大于等于所述第一寄存器行的数量的流处理器中,选取所述第二寄存器行的数量最多的流处理器;将所述第二寄存器行的数量最多的流处理器,确定为所述目标寄存器。
在本申请的一些实施例中,所述分配单元903,还被配置为在所述目标流处理器内的M个第二寄存器行内,采用多路查找方式,选取N个目标寄存器行;其中,所述M为所述目标流处理器内的第二寄存器行的数量;所述N为所述第一寄存器行的数量;所述N个目标寄存器行对应的行编号为连续的或离散的;将选择的所述N个目标寄存器行虚拟为依次连续的存储空间,用于存储所述待分配任务。
在本申请的一些实施例中,所述分配单元903,还被配置为在所述待分配任务为任务组建之前的待分配属性数据的情况下,在所述目标流处理器内的M个处于空闲状态的属性寄存器行内,采用所述多路查找方式,选取所述N个目标属性寄存器行;在所述待分配任务为已组建好的待分配任务数据的情况下,在所述目标流处理器内的M个处于空闲状态的通用数据寄存器行内,采用所述多路查找方式,选取所述N个目标通用数据寄存器行。
在本申请的一些实施例中,所述任务管理单元901,还被配置为将初始任务,放入任务序列中进行合规检查;将所述合规检查的结果为通过的所述初始任务,从所述任务序列中解除依赖,并将所述合规检查的结果为通过的所述初始任务,确定为所述待分配任务。
在本申请的一些实施例中,在所述待分配任务的数量为至少两个的情况下,所述任务管理单元901,还被配置为对所述至少两个待分配任务,按照等待分配时长从长到短进行排序,得到待分配任务队列;按照所述待分配任务队列中的排序,对所述待分配任务依次进行分配。
在本申请的一些实施例中,所述分配单元903,还被配置为取所述目标流处理器内的寄存器行对应的索引表;在所述索引表中,确定与所述N个目标寄存器行的行编号关联的索引信息。
在本申请的一些实施例中,所述分配单元903,还被配置为在所述待分配任务执行结束的情况下,清空所述索引信息;基于所述N,对更新后的所述目标流处理器内的可用寄存器行的数量进行增加,以供下一个待分配任务使用;其中,更新后的所述目标流处理器内的可用寄存器行的数量,为所述M与所述N之间的差值。
需要说明的是,以上任务分配电路实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请电路实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
需要说明的是,本申请实施例中,如果以软件功能模块的形式实现上述的任务分配方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是终端、服务器等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:U盘、运动硬盘、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本申请实施例不限制于任何特定的硬件和软件结合。
对应地,本申请实施例再提供一种计算机程序产品,所述计算机程序产品包括计算机程序或指令,所述计算机程序或指令被处理器执行时,能够实现本申请实施例提供的任务分配方法。
相应的,本申请实施例提供一种计算机设备,图10为本申请实施例计算机设备的组成结构示意图,如图10所示,所述计算机设备1000包括:一个处理器1001、至少一个通信总线1004、通信接口1002、至少一个外部通信接口和存储器1003。其中,通信接口1002配置为实现这些组件之间的连接通信。其中,通信接口1002可以包括显示屏,外部通信接口可以包括标准的有线接口和无线接口。其中,所述处理器1001,配置为执行存储器中的处理程序,以实现上述实施例提供的任务分配方法。
相应的,本申请实施例再提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机可执行指令,所述该计算机可执行指令被处理器执行时实现上述实施例提供的任务分配方法。
以上任务分配电路、计算机设备、存储介质及程序产品实施例的描述,与上述方法实施例的描述是类似的,具有同相应方法实施例相似的技术描述和有益效果,限于篇幅,可参照上述方法实施例的记载,故在此不再赘述。对于本申请中的任务分配电路、计算机设备、存储介质及程序产品实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本申请实施例的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本申请实施例的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
在本申请实施例所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本申请实施例各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、ROM、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本申请实施例上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本申请实施例各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、磁碟或者光盘等各种可以存储程序代码的介质。以上所述,仅为本申请实施例的具体实施方式,但本申请实施例的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请实施例揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请实施例的保护范围之内。

Claims (13)

1.一种任务分配方法,其特征在于,所述任务分配方法包括:
获取待分配任务匹配的第一寄存器的数量;
在至少两个流处理器中,确定每一所述流处理器内处于空闲状态的第二寄存器的数量;
从所述第二寄存器的数量大于等于所述第一寄存器的数量的流处理器中,确定目标流处理器;
将所述待分配任务,分配至所述目标流处理器内的第二寄存器。
2.根据权利要求1所述的任务分配方法,其特征在于,每一寄存器行包括在同一流处理器内的至少两个编号连续的寄存器;所述第一寄存器的数量包括第一寄存器行的数量,所述第二寄存器的数量包括第二寄存器行的数量,所述从所述第二寄存器的数量大于等于所述第一寄存器的数量的流处理器中,确定目标流处理器,包括:
从所述第二寄存器行的数量大于等于所述第一寄存器行的数量的流处理器中,确定所述目标流处理器;
所述将所述待分配任务,分配至所述目标流处理器内的第二寄存器,包括:
将所述待分配任务,分配至所述目标流处理器内的第二寄存器行。
3.根据权利要求2所述的任务分配方法,其特征在于,所述从所述第二寄存器行的数量大于等于所述第一寄存器行的数量的流处理器中,确定所述目标流处理器,包括:
在所述第二寄存器行的数量大于等于所述第一寄存器行的数量的流处理器中,选取所述第二寄存器行的数量最多的流处理器;
将所述第二寄存器行的数量最多的流处理器,确定为所述目标寄存器。
4.根据权利要求2所述的任务分配方法,其特征在于,所述将所述待分配任务,分配至所述目标流处理器内的第二寄存器行,包括:
在所述目标流处理器内的M个第二寄存器行内,采用多路查找方式,选取N个目标寄存器行;其中,所述M为所述目标流处理器内的第二寄存器行的数量;所述N为所述第一寄存器行的数量;所述N个目标寄存器行对应的行编号为连续的或离散的;
将选择的所述N个目标寄存器行虚拟为依次连续的存储空间,用于存储所述待分配任务。
5.根据权利要求4所述的任务分配方法,其特征在于,所述在所述目标流处理器内的M个第二寄存器行内,采用多路查找方式,选取N个目标寄存器行,包括:
在所述待分配任务为任务组建之前的待分配属性数据的情况下,在所述目标流处理器内的M个处于空闲状态的属性寄存器行内,采用所述多路查找方式,选取所述N个目标属性寄存器行;
在所述待分配任务为已组建好的待分配任务数据的情况下,在所述目标流处理器内的M个处于空闲状态的通用数据寄存器行内,采用所述多路查找方式,选取所述N个目标通用数据寄存器行。
6.根据权利要求1至5任一所述的任务分配方法,其特征在于,所述任务分配方法还包括:
将初始任务,放入任务序列中进行合规检查;
将所述合规检查的结果为通过的所述初始任务,从所述任务序列中解除依赖,并将所述合规检查的结果为通过的所述初始任务,确定为所述待分配任务。
7.根据权利要求1至5任一所述的任务分配方法,其特征在于,在所述待分配任务的数量为至少两个的情况下,所述任务分配方法还包括:
对所述至少两个待分配任务,按照等待分配时长从长到短进行排序,得到待分配任务队列;
按照所述待分配任务队列中的排序,对所述待分配任务依次进行分配。
8.根据权利要求4所述的任务分配方法,其特征在于,所述任务分配方法还包括:
获取所述目标流处理器内的寄存器行对应的索引表;
在所述索引表中,确定与所述N个目标寄存器行的行编号关联的索引信息。
9.根据权利要求8所述的任务分配方法,其特征在于,所述任务分配方法还包括:
在所述待分配任务执行结束的情况下,清空所述索引信息;
基于所述N,对更新后的所述目标流处理器内的可用寄存器行的数量进行增加,以供下一个待分配任务使用;其中,更新后的所述目标流处理器内的可用寄存器行的数量,为所述M与所述N之间的差值。
10.一种任务分配电路,其特征在于,所述任务分配电路包括:
任务管理单元,被配置为获取待分配任务匹配的第一寄存器的数量;
资源管理单元,被配置为在至少两个流处理器中,确定每一所述流处理器内处于空闲状态的第二寄存器的数量;
所述资源管理单元,还被配置为从所述第二寄存器的数量大于等于所述第一寄存器的数量的流处理器中,确定目标流处理器;
分配单元,被配置为将所述待分配任务,分配至所述目标流处理器内的第二寄存器。
11.一种计算机设备,其特征在于,所述计算机设备包括存储器和处理器,所述存储器上存储有计算机可执行指令,所述处理器运行所述存储器上的计算机可执行指令时能够实现权利要求1至9任一所述的任务分配方法。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机可执行指令,该计算机可执行指令被执行后,能够实现权利要求1至9任一所述的任务分配方法。
13.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机程序或指令,所述计算机程序或指令被处理器执行时,实现权利要求1至9任一所述的任务分配方法。
CN202410354246.2A 2024-03-26 2024-03-26 任务分配方法、电路、设备、介质及程序 Pending CN117971437A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410354246.2A CN117971437A (zh) 2024-03-26 2024-03-26 任务分配方法、电路、设备、介质及程序

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410354246.2A CN117971437A (zh) 2024-03-26 2024-03-26 任务分配方法、电路、设备、介质及程序

Publications (1)

Publication Number Publication Date
CN117971437A true CN117971437A (zh) 2024-05-03

Family

ID=90856535

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410354246.2A Pending CN117971437A (zh) 2024-03-26 2024-03-26 任务分配方法、电路、设备、介质及程序

Country Status (1)

Country Link
CN (1) CN117971437A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN118394489A (zh) * 2024-06-27 2024-07-26 苏州萨沙迈半导体有限公司 多任务切换方法、装置、嵌入式系统和介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180276051A1 (en) * 2015-09-28 2018-09-27 Sanechips Technology Co., Ltd. Processor and task processing method therefor, and storage medium
CN111522641A (zh) * 2020-04-21 2020-08-11 北京嘀嘀无限科技发展有限公司 任务调度方法、装置、计算机设备和存储介质
CN112559169A (zh) * 2020-11-25 2021-03-26 海光信息技术股份有限公司 资源分配方法以及装置
CN114510339A (zh) * 2022-04-20 2022-05-17 苏州浪潮智能科技有限公司 一种计算任务调度方法、装置、电子设备及可读存储介质
CN115934102A (zh) * 2022-12-29 2023-04-07 格兰菲智能科技有限公司 通用寄存器动态分配方法、装置、计算机设备和存储介质
CN116400982A (zh) * 2023-05-26 2023-07-07 摩尔线程智能科技(北京)有限责任公司 配置中继寄存器模块的方法和装置、计算设备和可读介质

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180276051A1 (en) * 2015-09-28 2018-09-27 Sanechips Technology Co., Ltd. Processor and task processing method therefor, and storage medium
CN111522641A (zh) * 2020-04-21 2020-08-11 北京嘀嘀无限科技发展有限公司 任务调度方法、装置、计算机设备和存储介质
CN112559169A (zh) * 2020-11-25 2021-03-26 海光信息技术股份有限公司 资源分配方法以及装置
CN114510339A (zh) * 2022-04-20 2022-05-17 苏州浪潮智能科技有限公司 一种计算任务调度方法、装置、电子设备及可读存储介质
CN115934102A (zh) * 2022-12-29 2023-04-07 格兰菲智能科技有限公司 通用寄存器动态分配方法、装置、计算机设备和存储介质
CN116400982A (zh) * 2023-05-26 2023-07-07 摩尔线程智能科技(北京)有限责任公司 配置中继寄存器模块的方法和装置、计算设备和可读介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN118394489A (zh) * 2024-06-27 2024-07-26 苏州萨沙迈半导体有限公司 多任务切换方法、装置、嵌入式系统和介质

Similar Documents

Publication Publication Date Title
CN105893126B (zh) 一种任务调度方法及装置
CN117971437A (zh) 任务分配方法、电路、设备、介质及程序
CN110609742B (zh) 一种Kubernetes调度器的队列的配置方法和装置
US7418576B1 (en) Prioritized issuing of operation dedicated execution unit tagged instructions from multiple different type threads performing different set of operations
US9875139B2 (en) Graphics processing unit controller, host system, and methods
US11175940B2 (en) Scheduling framework for tightly coupled jobs
US8375390B2 (en) Scheduling method and scheduling apparatus
US20100211954A1 (en) Practical contention-free distributed weighted fair-share scheduler
CN110308982B (zh) 一种共享内存复用方法及装置
CN113886052A (zh) 任务调度方法、装置、设备、存储介质
CN109840149B (zh) 任务调度方法、装置、设备及存储介质
US7243354B1 (en) System and method for efficiently processing information in a multithread environment
CN112416368B (zh) 缓存部署与任务调度方法、终端和计算机可读存储介质
US20140089932A1 (en) Concurrency identification for processing of multistage workflows
CN114265679A (zh) 数据处理方法、装置和服务器
CN112925616A (zh) 任务分配方法、装置、存储介质及电子设备
CN111597044A (zh) 任务调度方法、装置、存储介质及电子设备
CN113765949A (zh) 资源分配的方法以及装置
CN107391253B (zh) 一种降低系统内存分配释放冲突的方法
CN116954850A (zh) 计算任务调度方法、装置、片上系统和存储介质
CN116260876A (zh) 基于K8s的AI应用调度方法、装置及电子设备
US20150121382A1 (en) Concurrency control mechanisms for highly multi-threaded systems
CN115576685A (zh) 容器的调度方法、装置及计算机设备
CN114490002A (zh) 数据处理系统、任务调度方法、装置、芯片、及电子设备
CN113419827A (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