CN116501594A - 系统建模评估方法、装置、电子设备及存储介质 - Google Patents
系统建模评估方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN116501594A CN116501594A CN202310761528.XA CN202310761528A CN116501594A CN 116501594 A CN116501594 A CN 116501594A CN 202310761528 A CN202310761528 A CN 202310761528A CN 116501594 A CN116501594 A CN 116501594A
- Authority
- CN
- China
- Prior art keywords
- data
- task
- sub
- target
- architecture
- 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
- 238000003860 storage Methods 0.000 title claims abstract description 140
- 238000011156 evaluation Methods 0.000 title claims abstract description 114
- 238000005094 computer simulation Methods 0.000 title claims abstract description 39
- 238000013507 mapping Methods 0.000 claims abstract description 284
- 238000000034 method Methods 0.000 claims abstract description 105
- 238000012360 testing method Methods 0.000 claims abstract description 59
- 238000004088 simulation Methods 0.000 claims abstract description 52
- 238000004364 calculation method Methods 0.000 claims description 115
- 238000012545 processing Methods 0.000 claims description 48
- 230000006870 function Effects 0.000 claims description 32
- 238000005259 measurement Methods 0.000 claims description 12
- 238000012216 screening Methods 0.000 claims description 9
- 238000001914 filtration Methods 0.000 claims description 4
- 230000002159 abnormal effect Effects 0.000 claims description 2
- 238000004590 computer program Methods 0.000 claims description 2
- 238000011161 development Methods 0.000 abstract description 10
- 238000010586 diagram Methods 0.000 description 32
- 230000008569 process Effects 0.000 description 29
- 230000018109 developmental process Effects 0.000 description 9
- 238000007726 management method Methods 0.000 description 9
- 230000014509 gene expression Effects 0.000 description 8
- 238000002360 preparation method Methods 0.000 description 8
- 238000012546 transfer Methods 0.000 description 7
- 125000004122 cyclic group Chemical group 0.000 description 5
- 230000001419 dependent effect Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 238000005457 optimization Methods 0.000 description 5
- 238000012937 correction Methods 0.000 description 4
- 238000013473 artificial intelligence Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 239000011159 matrix material Substances 0.000 description 3
- 230000005856 abnormality Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 239000002131 composite material Substances 0.000 description 2
- 230000008707 rearrangement Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000013210 evaluation model Methods 0.000 description 1
- 238000012854 evaluation process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000005304 joining Methods 0.000 description 1
- 230000006386 memory function Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000008685 targeting Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3447—Performance evaluation by modeling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
- G06F11/3433—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment for load management
-
- 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
- G06F9/505—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 considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5017—Task decomposition
-
- 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)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Evolutionary Biology (AREA)
- Bioinformatics & Computational Biology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种系统建模评估方法、装置、电子设备及存储介质。该方法包括,获取待加载至目标架构执行基准测试的负载任务,并获取与负载任务匹配的原始负载描述信息,以及与目标架构匹配的架构定义信息;根据原始负载描述信息和架构定义信息,生成负载任务中每个子任务的数据流在各时间片和目标架构的各子系统中的时空映射结果,作为负载仿真报告;根据负载仿真报告,生成负载任务在目标架构上的性能评估结果和功耗评估结果。本发明实施例的技术方案创造性的提出了一种灵活性、可扩展性强,且相对全面、准确的系统建模评估方法,可以更好的提升架构评估的全面性和准确性,并可以大大提高系统模型的开发以及评估效率。
Description
技术领域
本发明实施例涉及人工智能芯片架构的建模测试技术,尤其涉及一种系统建模评估方法、装置、电子设备及存储介质。
背景技术
在进行AI(Artificial Intelligence,人工智能)芯片的架构探索时,对于给定的多个数据流任务以及特定的某种架构,我们需要通过基准测试(benchmark)评估这些数据流任务在该架构上的执行情况。
面对种类繁多的基准测试,以及与之对应的不同规模的架构层级(例如,单颗芯片,多颗芯粒,多卡或者集群等),往往需要针对特定的架构建立模型,并开发与基准测试对应的接口。整体的开发代价和周期都较大。在评估时,也往往带有局限性,例如,只能重点关注一些特定的指标。此外,受到建模方法的限制,后续实现时也会具有较大的误差。
因此,如何有效提升架构评估的全面性及准确性,提高模型的开发及评估效率,是目前有待解决的一个重要问题。
发明内容
本发明实施例提供了一种系统建模评估方法、装置、电子设备及存储介质,以提供一种灵活性、可扩展性强,且相对全面、准确的系统建模评估方法。
第一方面,本发明实施例提供了一种系统建模评估方法,所述方法包括:
获取待加载至目标架构执行基准测试的负载任务,并获取与负载任务匹配的原始负载描述信息,以及与目标架构匹配的架构定义信息;
根据原始负载描述信息和架构定义信息,生成负载任务中每个子任务的数据流在各时间片和目标架构的各子系统中的时空映射结果,作为负载仿真报告;
其中,数据流中包括子任务中各数据维度的执行顺序、并行维度、子任务中各数据维度的切片大小,以及子任务中各数据维度在目标架构的每级缓冲区或每级缓存中的存储策略;
根据负载仿真报告,生成负载任务在目标架构上的性能评估结果和功耗评估结果。
第二方面,本发明实施例还提供了一种系统建模评估装置,该装置包括:
信息获取模块,用于获取待加载至目标架构执行基准测试的负载任务,并获取与负载任务匹配的原始负载描述信息,以及与目标架构匹配的架构定义信息;
负载仿真报告生成模块,用于根据原始负载描述信息和架构定义信息,生成负载任务中每个子任务的数据流在各时间片和目标架构的各子系统中的时空映射结果,作为负载仿真报告;
其中,数据流中包括子任务中各数据维度的执行顺序、并行维度、子任务中各数据维度的切片大小,以及子任务中各数据维度在目标架构的每级缓冲区或每级缓存中的存储策略;
评估模块,用于根据负载仿真报告,生成负载任务在目标架构上的性能评估结果和功耗评估结果。
第三方面,本发明实施例还提供了一种电子设备,所述电子设备包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行如本发明实施例中任一项所述的系统建模评估方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其中,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现如本发明实施例中任一项所述的系统建模评估方法。
本发明实施例的技术方案通过获取待加载至目标架构执行基准测试的负载任务,并获取与负载任务匹配的原始负载描述信息,以及与目标架构匹配的架构定义信息;根据原始负载描述信息和架构定义信息,生成负载任务中每个子任务的数据流在各时间片和目标架构的各子系统中的时空映射结果,作为负载仿真报告,根据负载仿真报告,生成负载任务在目标架构上的性能评估结果和功耗评估结果的技术手段,创造性的提出了一种灵活性、可扩展性强,且相对全面、准确的系统建模评估方法,可以更好的提升架构评估的全面性和准确性,并可以大大提高系统模型的开发以及评估效率。
附图说明
图1是本发明实施例一提供的一种系统建模评估方法的流程图;
图2是本发明实施例二提供的一种系统建模评估方法的流程图;
图3是本发明实施例的技术方案所适用的一种建立各子任务与目标架构中各子系统之间的任务架构映射关系的具体实现方式的流程图;
图4是本发明实施例的技术方案所适用的一种依赖关系分组的结构示意图;
图5是本发明实施例的技术方案所适用的一种确定各依赖关系分组的架构映射顺序的逻辑示意图;
图6是本发明实施例的技术方案所适用的一种将负载任务中的异构子任务映射至目标架构中的异构子系统的示意图;
图7是本发明实施例的技术方法所适用的一种建立各依赖关系分组中各子任务与目标架构中各子系统之间的任务架构映射关系的逻辑示意图;
图8是本发明实施例的技术方案所适用的一种在建立各子任务与目标架构中各子系统之间的任务架构映射关系之后,增加了推导得到数据接力空间节点以及数据接力时间节点的操作的具体实现方式的流程图;
图9是本发明实施例的技术方案所适用的一种数据接力空间节点的示意图;
图10是本发明实施例的技术方案所适用的另一种数据接力空间节点的示意图;
图11是本发明实施例的技术方案所适用的子系统在不同时间点下的数据驻留情况示意图;
图12是本发明实施例的技术方案所适用的一种具体应用场景的示意图;
图13是本发明实施例三提供的一种系统建模评估方法的流程图;
图14是本发明实施例的技术方案所适用的一种生成当前子任务的至少一个参数组的具体实现方式的流程图;
图15是本发明实施例的技术方案所适用的一种计算当前子任务的各数据维度在目标架构的每级缓冲区或每级缓存中的存储策略的具体实现方式的流程图;
图16是本发明实施例四提供的一种系统建模评估方法的流程图;
图17是本发明实施例的技术方案所适用的一种进行数据流的时空映射的具体实现方式的流程图;
图18是本发明实施例的方法所适用的一种子数据流在目标架构中每个层级下的时间映射结果的示意图;
图19是本发明实施例的技术方案所适用的另一种进行数据流的时空映射的具体实现方式的流程图;
图20是本发明实施例的方法所适用的一种子数据流的数据流路径的时间偏移处理结果的示意图;
图21是本发明实施例的技术方案所适用的又一种进行数据流的时空映射的具体实现方式的流程图;
图22是本发明实施例的方法所适用的一种多个子数据流的时空映射结果示意图;
图23是本发明实施例的方法所适用的一种对多个子数据流的数据流路径进行重排布后的时空映射结果示意图;
图24是本发明实施例的方法所适用的一种通过执行顺序检查规则的多个子数据流的时空映射结果示意图;
图25是本发明实施例的方法所适用的另一种通过执行顺序检查规则的多个子数据流的时空映射结果示意图;
图26是本发明实施例的技术方案所适用的再一种进行数据流的时空映射的具体实现方式的流程图;
图27是本发明实施例的方法所适用的一种将与各子数据流分别对应的数据流路径在统一时间线上进行排布后的时空映射结果示意图;
图28是本发明实施例的方法所适用的另一种将与各子数据流分别对应的数据流路径在统一时间线上进行排布后的时空映射结果示意图;
图29是本发明实施例的方法所适用的再一种将与各子数据流分别对应的数据流路径在统一时间线上进行排布后的时空映射结果示意图;
图30是本发明实施例五提供的一种系统建模评估装置的结构图;
图31是实现本发明实施例的系统建模评估方法的电子设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1为本发明实施例一提供的一种系统建模评估方法的流程图,本实施例可适用于对特定目标架构进行基准测试的建模,并对建模结果进行模型评估的情况,该方法可以由一种系统建模评估装置来执行,该装置可以通过软件和/或硬件的方式实现,并一般可以集成在具有数据处理功能的电子设备中。相应的,所述方法具体包括如下步骤:
S110、获取待加载至目标架构执行基准测试的负载任务,并获取与负载任务匹配的原始负载描述信息,以及与目标架构匹配的架构定义信息。
其中,目标架构是指待进行架构探索的AI架构,可以理解为一个用于处理负载任务的硬件资源集合。目标架构可以为一个已有的硬件实体架构,也可以为一个处于开发阶段的自定义软件实现架构等,目标架构中包括的硬件资源集合中可以全部为同构硬件资源,也可以为异构硬件资源等,本实施例对此并不进行限制。
具体的,该目标架构中可以包括有一个或者多个硬件子系统,不同子系统在该目标架构中具有设定的拓扑连接关系,以构成设定的层级架构。其中,每个子系统用于实现设定的子系统功能。例如,计算功能、编解码功能或者存储功能等。
在本实施例中,该目标架构可以通过子系统定义和子系统规格进行描述,上述两种信息可以统称为目标架构的架构定义信息。在该子系统定义中可以包含有下述信息:目标架构中包含的子系统层级、子系统例化数目、各子系统的标识信息,每个子系统与其他子系统之间的拓扑连接关系、子系统功能以及每个子系统内功能模块的例化数目,例如计算子系统中包括有多个计算单元作为功能模块。同时,针对每个子系统,分别通过子系统规格进行描述。不同功能类型的子系统,其子系统规格一般不同。
在一个具体的例子中,针对实现计算核计算的子系统,其子系统规格中一般包含:微架构类型,最高频率,向量计算算力,张量计算算力,张量计算形状,读、写带宽以及读、写端口数目;针对实现片内存储功能的子系统,其子系统规格中一般包含:微架构类型,存储容量,与其相连的子系统的读、写带宽,以及与其相连的子系统的读、写端口数目;针对实现片外存储功能的子系统,其子系统规格中一般包含:微架构类型,存储容量,与其相连的子系统的读、写带宽以及与其相连的子系统的读、写端口数目;针对实现子系统间互联功能的子系统,其子系统规格中一般包含:微架构类型,连接的子系统层级,读、写带宽以及读、写端口数目;针对实现子系统内互联功能的子系统,其子系统规格中一般包含:微架构类型,子系统类型,读、写带宽以及读、写端口数目等。
需要说明的是,针对硬件实体架构,该例化数目可以理解为该硬件实体架构中实际包含的数目,针对自定义软件实现架构,该例化数目可以理解为软件仿真得到的数目。
在本实施例中,负载任务可以理解为需要加载至目标架构中执行基准测试的任务,也即,该负载任务可以由目标架构执行,以实现一项或者多项负载功能。具体的,该负载任务可以为计算任务、存储任务或者编解码任务等实现单一功能类型的任务,还可以为多个单一功能类型的任务组合构成的多功能类型复合任务等,本实施例对此并不进行限制。
在本实施例中,测试人员可以根据实际的架构探索需求,自定义设置该负载任务,以满足实际的建模评估需求。其中,一个负载任务可以由多个子任务组合构成,相应的,可以通过定义与每个子任务分别匹配的原始负载描述信息,唯一定义一个负载任务。
具体的,该负载任务可以按照预设的拆分规则拆分为一个或者多个子任务。例如,如果该负载任务为基于设定计算图的计算任务,则可以按照计算图中包括的各个计算算子,将负载任务拆分为多个子任务,或者,还可以首先分析该负载任务中包含的功能类型数量,并以功能类型为单位,将负载任务拆分为多个子任务,或者,还可以首先评估该负载任务所需的硬件资源总数量,并基于该硬件资源总数量以及预设的子任务划分数量,预估每个子任务所需的平均硬件资源数量,并基于该平均硬件资源数量,将负载任务拆分为多个子任务等,本实施例对此并不进行限制。
可选的,各子任务的原始负载描述信息中可以包括:每个子任务的所属任务名称、域描述信息、操作数描述信息以及操作数访问类型,以及各子任务之间的依赖关系描述信息等。
其中,域描述信息中包含子任务本身所包含的数据维度以及操作数的形状描述信息;操作数描述信息中包含操作数名称、操作数域描述信息以及操作数的数据精度;操作数访问类型中包含读或者写等计算类型,依赖关系描述信息中包含子任务与其他子任务的显式依赖关系。
进一步的,原始负载描述信息中需要指定每个子任务的需求资源类型,也即,该需求资源类型定义一个子任务需要配置在何种功能类型的硬件资源(子系统)中执行。
需要说明的是,与负载任务匹配的原始负载描述信息,以及与目标架构匹配的架构定义信息,除了可以作为生成后续时空映射结果的输入参考信息,还可以作为生成性能评估结果和功耗评估结果的相关输入信息,与目标架构匹配的架构定义信息会影响负载任务的时空映射以及执行方式,同时,也会影响系统建模评估过程中引入的成本模型和评估模型的选择或者计算。
S120、根据原始负载描述信息和架构定义信息,生成负载任务中每个子任务的数据流在各时间片和目标架构的各子系统中的时空映射结果,作为负载仿真报告。
其中,数据流中包括子任务中各数据维度的执行顺序、并行维度、子任务中各数据维度的切片大小,以及子任务中各数据维度在目标架构的每级缓冲区或每级缓存中的存储策略。
其中,该数据维度描述信息可以包括子任务本身所包含的数据维度以及操作数的形状描述信息,例如,针对一个矩阵乘的子任务,与其对应的数据维度描述信息可以为[m,n,k]。可选的,可以在子任务的原始负载描述信息中提取域描述信息,并将该域描述信息作为数据维度描述信息。
其中,子任务中各数据维度的执行顺序可以理解为子任务在单个硬件计算单元上的数据移动顺序。该数据移动顺序可以理解为取操作数的顺序或者操作数的搬运顺序。可以理解的是,如果子任务中包括多个数据维度,上述各数据维度的搬运过程对应一个多层级的循环搬运过程,上述各数据维度的执行顺序决定了哪个数据维度为上述循环过程中的外层循环变量,哪个数据维度为上述循环过程中的内层循环变量。
不同的数据维度执行顺序一般对应不同的数据搬运效率。可选地,可以根据每个数据维度的数据量,例如,m、n以及k的具体取值,以及每个数据维度在实际计算过程中的数据属性,例如,是否为规约(reduce)维度等,确定出子任务中各数据维度的执行顺序。
并行维度可以理解为子任务本身所包含的各数据维度中,能够分配到不同硬件计算单元上进行并行计算的维度。可选地,可以根据每个数据维度的数据量以及子系统中包括的可用硬件计算单元的数目,计算得到每个数据维度在硬件计算单元上的执行次数,并基于上述执行次数计算结果,确定出最适宜的并行维度。
子任务中各数据维度的切片大小,可以理解为每个硬件计算单元中所能计算的最小数据量,该切片大小可以由目标架构中架构定义信息确定。
子任务中各数据维度在目标架构的每级缓冲区中的存储策略,可以理解为子任务的每个数据维度在目标架构中的各个缓冲区存储层级上的存储状态。子任务中各数据维度在目标架构的每级缓存中的存储策略,可以理解为子任务的每个数据维度在目标架构的每级缓存中的复用信息。可选的,可以通过每个子任务的数据维度描述信息以及目标架构的架构定义信息,构建一个或者多个约束条件,并通过求解线性方程组的方式,确定出子任务中各数据维度在目标架构的每级缓冲区或每级缓存中的存储策略。
可以理解的是,目标架构一般会择一选择缓冲区(buffer)存储策略或者缓存(cache)存储策略,进而,数据流中一般仅包括有子任务中各数据维度在目标架构的每级缓冲区中的存储策略,或者,仅包括有子任务中各数据维度在目标架构的每级缓存中的存储策略。
在本实施例的一个可选的实施方式中,根据原始负载描述信息和架构定义信息,生成负载任务中每个子任务的数据流在各时间片和目标架构的各子系统中的时空映射结果,可以包括:
将负载任务拆分为多个子任务,并建立各子任务与目标架构中各子系统之间的任务架构映射关系;
根据每个子任务的数据维度描述信息和该任务架构映射关系,确定与各子任务分别对应的至少一个数据流;
根据各数据流中定义的各项信息,将每个数据流分别进行时域和空域映射,得到负载任务中每个子任务的数据流在各时间片和目标架构的各子系统中的时空映射结果。
在本可选实施方式中,可以首先建立各子任务与目标架构中各子系统之间的任务架构映射关系,该任务架构映射关系用于描述负载任务中的哪个子任务需要映射至目标架构中的哪个子系统中执行基准测试仿真。之后,基于该任务架构映射关系之后,通过结合每个子任务的数据维度描述信息,可以生成与每个子任务分别对应的一个或者多个数据流,最后,通过将与每个子任务分别对应的一个或者多个数据流进行时域和空域双映射,可以生成负载任务中每个子任务的数据流在各时间片和目标架构的各子系统中的时空映射结果。
也即,上述时空映射结果反映在负载任务中的每个数据流在哪个时间片下需要映射到目标架构中的哪个子系统中执行何种类型的架构任务。进而,通过使用该时空映射结果作为负载仿真报告,也可以高效、准确的进行系统建模评估。
S130、根据负载仿真报告,生成负载任务在目标架构上的性能评估结果和功耗评估结果。
如前所述,该负载仿真报告中实质包含了目标架构中每个功能模块(包含互联模块)带有执行顺序信息的数据搬运量统计结果,以及计算量统计结果。进而,通过对负载仿真报告进行分析,可以得到所需的性能评估结果和功耗评估结果。
其中,该性能评估结果可以定义为目标架构在执行该负载任务时,目标架构中每个功能模块的利用率。该功耗评估结果可以定义为目标架构在执行该负载任务时,所产生的功率的损耗值。基于上述性能-功耗评估结果,可以有效对目标架构的架构合理性和性能的优劣进行有效的评估,为后续进行架构探索或者架构改进提供有效的数据保证。
在本实施例中,根据负载仿真报告,生成负载任务在目标架构上的性能评估结果和功耗评估结果,可以包括:
根据所述负载仿真报告以及所述架构定义信息,计算执行负载任务所需的时钟周期,并根据所述时钟周期,计算执行负载任务所需的时间;
根据执行负载任务所需的时间,计算目标架构中的功能模块利用率作为性能评估结果;
将负载仿真报告、功能模块利用率以及所述架构定义信息,输入至预先训练的成本模型中,获取功耗评估结果。
可选的,该成本模型中可以包括下述信息:1、计算、存储、数据搬运、互联等基础成本数据库;2、感知物理实现举例的开销预估;3、工艺、微架构相关的比例因子;4、电压、频率查找表。相应的,基于训练好的成本模型,可以有效获取功耗信息。
本发明实施例的技术方案通过获取待加载至目标架构执行基准测试的负载任务,并获取与负载任务匹配的原始负载描述信息,以及与目标架构匹配的架构定义信息;根据原始负载描述信息和架构定义信息,生成负载任务中每个子任务的数据流在各时间片和目标架构的各子系统中的时空映射结果,作为负载仿真报告,根据负载仿真报告,生成负载任务在目标架构上的性能评估结果和功耗评估结果的技术手段,创造性的提出了一种灵活性、可扩展性强,且相对全面、准确的系统建模评估方法,可以更好的提升架构评估的全面性和准确性,并可以大大提高系统模型的开发以及评估效率。
实施例二
图2是本发明实施例二提供的一种系统建模评估方法的流程图,本实施例以上述各实施例为基础进行优化,在本实施例中,对建立各子任务与目标架构中各子系统之间的任务架构映射关系的操作进行具体化,相应的,如图2所示,所述方法具体可以包括:
S210、获取待加载至目标架构执行基准测试的负载任务,并获取与负载任务匹配的原始负载描述信息,以及与目标架构匹配的架构定义信息。
S220、将负载任务拆分为多个子任务。
在本实施例的一个可选的实施方式中,可以初始化构建得到负载任务中各子任务的原始负载描述信息,进而,可以通过解析各子任务的原始负载描述信息的方式,简单、便捷的将该负载任务拆分为多个子任务。
S230、根据多个子任务之间的逻辑依赖关系,构建得到至少一个依赖关系分组,并确定各依赖关系分组的架构映射顺序。
在本实施例中,通过分析各子任务的原始负载描述信息,可以获取两两子任务之间的显式或者隐式的逻辑依赖关系。具体的,可以通过解析原始负载描述信息的方式,直接获取子任务1对子任务2的显式依赖关系,或者,还可以通过分析每个子任务的操作数描述信息和操作数访问类型的方式,确定子任务3在写出操作数X后,由子任务4读取出该操作数X进行处理,进而可以挖掘出子任务4对子任务3的隐式依赖关系。
进一步的,在获取多个子任务之间的逻辑依赖关系之后,可以将具有直接或者间接逻辑依赖关系的各子任务划分至同一依赖关系分组。进而,可以将上述多个子任务划分至一个或者多个依赖关系分组中。可选的,如果一个子任务与任一子任务均不具有逻辑依赖关系,可以将该子任务单独划分至一个独立的依赖关系分组中,也即,每个依赖关系分组中包含有一个或者多个子任务。
其中,如果构建得到的依赖关系分组的数量为多个,则可以首先确定各依赖关系分组的架构映射顺序。该架构映射顺序可以理解为各依赖关系分组以何种顺序,依序与目标架构中的各子系统建立映射关系。
在一个具体的例子中,如果针对依赖关系分组1和依赖关系分组2确定的架构映射顺序为依赖关系分组2->依赖关系分组1,则可以首先将依赖关系分组2中的各子任务映射至目标架构中之后,再将依赖关系分组1中的各子任务映射至目标架构中。
在本实施例中,可以采取预设的映射顺序确定策略,确定各依赖关系分组的架构映射顺序。该映射顺序确定策略可以为优先映射计算量大的依赖关系分组,也可以为优先映射与目标架构中计算单元数量相匹配的依赖关系分组等,本实施例对此并不进行限制。
S240、依据架构映射顺序,分别建立各依赖关系分组中各子任务与目标架构中各子系统之间的任务架构映射关系。
在本实施例中,在确定出架构映射顺序后,可以依序获取每个依赖关系分组,并按照每个依赖关系分组中各子任务的逻辑依赖关系,依序获取每个子任务分别映射至目标架构中的各子系统中,以建立负载任务中的子任务与目标架构中各子系统之间的任务架构映射关系。
其中,可以使用预先构建的一个或者多个映射策略,将某一个具体的子任务映射至目标架构中的某一个具体的子系统中。上述映射策略可以规定某些子任务可以被分配到多个运算资源上,某些子任务只由单个运算资源执行,多个子任务可以分配到同样的运算资源上,依序执行,以及异构任务需要根据其指定的架构资源,依序分配到特定的异构架构上等。
当然,可以理解的是,除了可以使用上述预先构建的一个或者多个映射策略,还可以通过预留人工干预接口的方式,由测试人员手动加入自定义的映射策略,例如,数据并行映射策略、模型并行映射策略或者流水并行映射策略等,以满足测试人员对某一特定方向的映射效果的意图探究。
在本实施例中,在获取到负载任务中各子任务与目标架构中各子系统之间的任务架构映射关系之后,可以将上述任务架构映射关系作为该基准测试中的一项建模参考信息,为将负载任务配置在目标架构上执行基准测试时的系统建模和架构评估提供高效、可用的数据准备。
S250、根据每个子任务的数据维度描述信息和该任务架构映射关系,确定与各子任务分别对应的至少一个数据流。
S260、根据各数据流中定义的各项信息,将每个数据流分别进行时域和空域映射,得到负载任务中每个子任务的数据流在各时间片和目标架构的各子系统中的时空映射结果,作为负载仿真报告。
S270、根据负载仿真报告,生成负载任务在目标架构上的性能评估结果和功耗评估结果。
本发明实施例通过获取待加载至目标架构执行基准测试的负载任务,并将该负载任务拆分为多个子任务;根据多个子任务之间的逻辑依赖关系,构建得到至少一个依赖关系分组,并确定各依赖关系分组的架构映射顺序;依据架构映射顺序,分别建立各依赖关系分组中各子任务与目标架构中各子系统之间的任务架构映射关系,作为该基准测试中的一项建模参考信息的技术手段,提供了一种全面、高可用、可扩展的负载任务的架构映射新方式,为后续进行灵活性、可扩展性的基准测试建模提供高效可用的数据准备,从一定程度上可以减低基准测试建模的开发代价和周期,并可以辅助提高架构评估的效率,从而在架构探索阶段完成更多、更广、更深入的评估。
进一步的,在上述各实施例的基础上,对将根据多个子任务之间的逻辑依赖关系,构建得到至少一个依赖关系分组,并确定各依赖关系分组的架构映射顺序,以及建立各依赖关系分组中各子任务与目标架构中各子系统之间的任务架构映射关系等操作的实现形式进行细化。相应的,如图3所示,上述细化操作具体可以包括:
S310、将负载任务拆分为多个子任务。
在本实施例中,可以通过任务标识来区分不同的负载任务,并通过结合使用任务标识和任务编号的方式,标识出由一个负载任务拆分出的多个子任务。
在一个具体的例子中,针对将一个任务标识为S的负载任务进行拆分,可以得到形如:S[1]、S[2]、S[3]、……、S[n]的多个子任务。
S320、根据各子任务的原始负载描述信息,推导出至少一个子任务关系对。
在本实施例中,每个子任务关系对中包括两个具有逻辑依赖关系的子任务。也即,在将负载任务拆分为多个子任务后,可以将上述多个子任务,形成一个或者多个子任务关系对。可以理解的是,在推导出至少一个子任务关系对之后,还可能包含有不属于任一子任务关系对的0个、1个或者多个孤立的子任务,上述各孤立的子任务与其他子任务之间没有任何逻辑依赖关系。同时,不同子任务关系对中可以包含有同一个子任务,表明该子任务同时和两个或者两个以上的其他子任务具有逻辑依赖关系。
在本实施例一个可选的实施方式中,根据各子任务的原始负载描述信息,推导出至少一个子任务关系对,可以包括:
在各子任务的原始负载描述信息中解析得到每个子任务的操作数描述信息和操作数访问类型,并将操作数描述信息相同,操作数访问类型分别为读和写的两个子任务,建立为一个子任务关系对。
具体的,可以通过各子任务的原始负载描述信息,构建任务负载中的各子任务对操作数的访问关系。例如,S[id]->Access[id],相应的,子任务之间的逻辑依赖关系可以通过域乘积(Domain Product)计算获得。其中,该域乘积表达式可以为:。
在一个具体的例子中:子任务S[3]对操作数Tensor[1]进行读操作,则可以构建形如的表达式;
子任务S[1]和子任务S[2]分别对操作数Tensor[1],和Tensor[2]进行写操作,则可以构建形如:的表达式。
通过将上述两个表达式代入域乘积表达式:可以计算得到:
相应的,可以确定子任务S[3]对子任务S[1]有隐式的逻辑依赖关系,进而,可以使用S[3]和S[1]构建得到一个子任务关系对。
在本实施例的另一个可选的实施方式中,根据各子任务的原始负载描述信息,推导出至少一个子任务关系对,还可以包括:
在各子任务的原始负载描述信息中解析得到显式依赖关系描述信息,并建立与各显式依赖关系描述信息分别对应的子任务关系对。
可选的,可以在该原始负载描述信息直接定义形如S[id]->S[id+1]的显式依赖关系描述信息,通过对该原始负载描述信息进行解析,可以直接使用S[id]和S[id+1]构建得到一个子任务关系对。
进一步的,可以在每个子任务关系对中指定出两个子任务之间的逻辑依赖关系,也即,指明上述两个子任务中具体哪个子任务为被逻辑依赖的子任务。在一个形如S[id]->S[id+1]的具体例子中,箭头右侧的子任务S[id]为被逻辑依赖的子任务。
S330、根据各子任务关系对,构建得到至少一个依赖关系分组。
在本实施例的一个可选的实施方式中,根据各子任务关系对,构建得到至少一个依赖关系分组,可以包括:
根据各子任务关系对中所包含的相同子任务,以子任务为节点构建至少一个依赖关系树,其中,不同依赖关系树上的任意子任务之间不具有依赖关系;将每个依赖关系树上的各子任务划分至同一依赖关系分组中。
在本可选实施方式中,通过将包含相同子任务的两两子任务关系对进行组合,可以构建得到以子任务为节点的一个或者多个依赖关系树。
具体的,在图4中示出了本发明实施例的技术方案所适用的一种依赖关系分组的结构示意图。以图4中的依赖关系分组1为例,假设子任务关系对1中包含子任务1和子任务2,子任务2依赖子任务1;子任务关系对2中包含子任务1和子任务3,子任务3依赖子任务1;子任务关系对3中包含子任务3和子任务4,子任务4依赖子任务3。通过分析子任务关系对1、子任务关系对2以及子任务关系对3中的相同子任务,可以构建形如图4所示的依赖关系树1,并将依赖关系树1上的各子任务划分至依赖关系分组1中。其中,依赖关系树1中的上层节点被下层节点所依赖。
需要说明的是,在构建得到子任务关系对的过程中,可能会出现与任一子任务均不具有逻辑依赖关系的孤立子任务,这类孤立子任务可以分别一个单独的依赖关系分组,例如,如图4所示的依赖关系分组3中仅包含子任务11。
S340、确定各依赖关系分组的架构映射顺序。
具体的,可以根据预设的映射顺序确定策略,确定各依赖关系分组的架构映射顺序。
在本实施例的一个可选的实施方式中,确定各依赖关系分组的架构映射顺序,可以包括:
分别计算每个依赖关系分组中各子任务在至少一个任务属性下的属性值,并根据计算结果,确定与每个依赖关系分组分别对应的属性总值;根据各属性总值,确定各依赖关系分组的架构映射顺序;其中,任务属性包括计算量、操作访问量和优先程度指标中的至少一项。
在本可选实施方式中,可以根据各子任务的原始负载描述信息,分别计算每个依赖关系分组中的每个子任务在至少一个任务属性下的属性值。以任务属性仅为计算量为例,通过分析设定依赖关系分组中各子任务的域描述信息、操作数描述信息以及操作数访问类型,可以评估每个子任务的子任务计算量,之后,将上述各子任务计算量进行累加求和,可以得到计算总量作为该依赖关系分组的属性总值。之后,可以按照计算总量由大到小或者有小到大的顺序,确定各依赖关系分组的架构映射顺序。
其中,子任务的计算量可以理解为执行子任务的任务功能所需的最小运算操作的运算次数,操作访问量可以理解为执行子任务的任务功能所需的最小操作数读写操作的读写次数,优先程度指标可以理解为预设的执行优先级,可以为“高”、“中”或者“低”等多档。
在本实施例的另一个可选的实施方式中,确定各依赖关系分组的架构映射顺序,还可以包括:
分别计算每个依赖关系分组中各子任务与目标架构中各子系统之间的匹配度指标,并根据计算结果,确定与每个依赖关系分组分别对应的指标总值;根据各指标总值,确定各依赖关系分组的架构映射顺序;其中,匹配度指标包括计算单元数量匹配度、计算能力匹配度和异构属性一致性中的至少一项。
其中,计算单元数量匹配度可以理解为执行子任务的任务功能所需的计算单元数量,与目标架构中各子系统所包括的计算单元数量的匹配度。可选的,可以设置两者的数量越接近,该计算单元数量匹配度越高。计算能力匹配度可以理解为执行子任务的任务功能所需消耗的计算能力,与目标架构中各子系统的计算能力的匹配度。异构属性一致性可以理解为执行子任务的任务功能所需的硬件资源的异构类型(例如,需要编解码以及CPU两种异构资源),与目标架构中各子系统所能提供的异构硬件资源的匹配度。
其中,在图5中示出了本发明实施例的技术方案所适用的一种确定各依赖关系分组的架构映射顺序的逻辑示意图。如图5所示,以计算每个依赖关系分组中各子任务与目标架构中各子系统之间的匹配度指标确定各依赖关系分组的架构映射顺序作为映射顺序确定策略为例,在获取目标架构的架构定义信息后,结合每个依赖关系分组中各子任务的原始负载描述信息,可以确定出上述依赖关系分组1、依赖关系分组2以及依赖关系分组3的架构映射顺序为先映射依赖关系分组2、再映射依赖关系分组3,最后映射依赖关系分组1。
S350、依据架构映射顺序,获取当前处理的目标依赖关系分组,并根据目标依赖关系分组中各子任务之间的逻辑依赖关系,获取当前处理的目标子任务。
在本实施例中,在确定出架构映射顺序之后,可以依序获取每个当前处理的目标依赖关系分组,并将每个当前处理的目标依赖关系分组按照各子任务之间的逻辑依赖关系,依序分别进行架构映射。
可选的,可以按照从被依赖子任务朝向依赖子任务的顺序,依序获取目标依赖关系分组中的每个子任务进行架构映射。在一个具体的例子中,针对如图4所示的依赖关系分组1,可以按照子任务1、子任务2、子任务3、子任务4的顺序,将上述各子任务分别进行架构映射。
S360、根据目标架构中当前的剩余硬件资源,以及各已占用硬件资源的预计释放时间点,确定在目标子任务匹配的预计执行时间点下的全部可用硬件资源。
在本实施例中,以目标子任务为例,描述将目标子任务进行架构映射的具体实现方式。具体的,首先可以根据目标架构中包括的全部硬件资源,以及在映射至目标子任务之前已经被分配给其他子任务的已占用硬件资源,确定出目标架构中当前的剩余硬件资源。之后,可以根据各子任务的逻辑依赖关系,确定出每个子任务的预计执行时间点以及对已占用硬件资源的预计释放时间点。
可以理解的是,在对负载任务中每个子任务进行架构映射的目的,是将各子任务分别分配给目标架构中各子系统进行执行。因此,首个子任务的执行,一定对应一个初始化的起始时间点,这个起始时间点确定后,根据各子任务之间的逻辑依赖关系,可以确定出每个子任务针对该起始时间点的预计执行时间点。此外,在确定每个子任务的功能类型以及目标架构的架构描述信息后,同样可以确定或者估计出每个子任务的执行结束时间,也即对已占用硬件资源的预计释放时间点。
基于上述各项信息,在目标子任务执行之前,一定可以预先预估出在目标子任务匹配的预计执行时间点下的全部可用硬件资源。此时,可以在上述全部可用硬件资源中,获取与该目标子任务最适配的子系统,与目标子任务建立映射关系。
S370、根据预设的映射策略,在全部可用硬件资源下获取与目标子任务匹配的目标子系统,并建立目标子任务与目标子系统之间的任务架构映射关系。
如前所述,上述映射策略可以根据实际情况预设,例如,可以为将目标子任务映射至与目标子任务的需求资源类型匹配的一个或者多个目标子系统中。在本实施例中,通过根据目标架构的架构定义信息,可以通过Arch[id]表示目标架构中的不同子系统。在本实施例的一个可选的实施方式中,如图6所示,可以将负载任务中包括的各异构子任务,分别映射至目标架构中的各异构的子系统中。
进一步的,在图7中示出了本发明实施例的技术方法所适用的一种建立各依赖关系分组中各子任务与目标架构中各子系统之间的任务架构映射关系的逻辑示意图。如图7所示,在获取目标架构的架构定义信息以及排序后的各依赖关系分组后,基于各依赖关系分组中各子任务的逻辑依赖关系,以及预设的映射策略,可以将每个子任务依序映射至各子系统中,最终形成标记了资源映射信息的子任务列表,也即,建立了目标子任务与目标子系统之间的任务架构映射关系。
本发明实施例的技术方案通过根据各子任务的原始负载描述信息,推导出至少一个子任务关系对;根据各子任务关系对,构建得到至少一个依赖关系分组;依据架构映射顺序,获取当前处理的目标依赖关系分组,并根据目标依赖关系分组中各子任务之间的逻辑依赖关系,获取当前处理的目标子任务;根据目标架构中当前的剩余硬件资源,以及各已占用硬件资源的预计释放时间点,确定在目标子任务匹配的预计执行时间点下的全部可用硬件资源;根据预设的映射策略,在全部可用硬件资源下获取与目标子任务匹配的目标子系统,并建立目标子任务与目标子系统之间的任务架构映射关系的技术手段,提供了一种全面、高可用、可扩展的负载任务的架构映射新方式,为后续进行灵活性、可扩展性的基准测试建模提供高效可用的数据准备,从一定程度上可以减低基准测试建模的开发代价和周期,并可以辅助提高架构评估的效率,从而在架构探索阶段完成更多、更广、更深入的评估。
在上述各实施例的基础上,进一步的在建立各依赖关系分组中各子任务与目标架构中各子系统之间的任务架构映射关系之后,确定与各子任务分别对应的至少一个数据流之前,增加了推导得到数据接力空间节点以及数据接力时间节点的操作,进而可以为该基准测试中增加更为丰富的建模参考信息。
相应的,如图8所示,所述方法具体可以包括:
S810、将该负载任务拆分为多个子任务。
S820、根据多个子任务之间的逻辑依赖关系,构建得到至少一个依赖关系分组,并确定各依赖关系分组的架构映射顺序。
S830、依据架构映射顺序,分别建立各依赖关系分组中各子任务与目标架构中各子系统之间的任务架构映射关系,作为该基准测试中的一项建模参考信息。
S840、根据各子任务之间的逻辑依赖关系、各子任务与各子系统之间的任务架构映射关系,以及目标架构中各子系统之间的层级架构关系,推导与各子任务匹配的数据接力空间节点。
在本实施例中,引入了数据接力节点的概念,其中,数据接力节点包含数据接力空间节点和数据接力时间节点。其中,数据接力空间节点,可以理解为具有依赖关系的两个子任务在目标架构中进行数据交换操作时,该数据交换操作所位于的子系统。
具体的,如图9所示,在目标架构中,子系统A、子系统B(B-1和B-2)以及子系统C(C-1、C-2、C-3和C-4)具有自顶向下的层级结构。在进行架构映射过程中,负载任务中的子任务1被映射至子系统C-1和子系统C-2中,子任务2被映射至子系统C-3和子系统C-4中。已知子任务1和子任务2之间具有逻辑依赖关系,通过子系统之间的层级架构关系以及连接关系可知,子任务1和子任务2之间的数据接力空间节点只能为子系统A。相类似的,如图10所示,由于子系统B-1和子系统C-2之间具有直连关系,子系统B-2和子系统C-1之间具有直连关系,则子任务1和子任务2之间的数据接力空间节点可以为子系统B-1或者子系统B-2。
在准确的确定出数据接力空间节点后,除了可以用于修正优化子任务和子系统之间的映射关系,还可以作为一项新的建模参考信息用于实现针对负载任务和目标架构的基准测试,以帮助提高架构评估的效率。
在本实施例的一个可选的实施方式中,根据各子任务之间的逻辑依赖关系、各子任务与各子系统之间的任务架构映射关系,以及目标架构中各子系统之间的层级架构关系,推导与各子任务匹配的数据接力空间节点,可以包括:
获取具有逻辑依赖关系的第一子任务和第二子任务,其中,第一子任务被第二子任务所依赖;在各子任务与各子系统之间的任务架构映射关系中,获取与第二子任务匹配的目标子系统;根据目标架构中各子系统之间的层级架构关系,按照由低层向高层的顺序,依次获取与第二子系统具有数据访问关系的一个备选子系统;如果确定第一子任务与该备选子系统之间具有连接关系,则将该备选子系统,作为第一子任务与第二子任务之间的数据接力节点;如果确定第一子任务与该备选子系统之间不具有连接关系,则返回执行依次获取与第二子系统具有数据访问关系的一个备选子系统的操作,直至确定出第一子任务与第二子任务之间的数据接力节点。
例如,假设子任务S[1]依赖子任务S[2],也即,S[1]->S[2],子任务S[2]通过架构映射,被映射至计算单元SIP[2]中,也即,S[2]->SIP[2]。通过将上述两者进行复合(composition)操作,可以计算得到: ;上述计算得到的表达式代表子任务S[1]对计算单元SIP[2]访问的数据也有依赖关系。
从最底层的子系统到最高层的子系统逐层遍历目标架构,首先获取与SIP[2]具有数据访问关系的存储子系统L1[2],也即,SIP[2]->L1[2]。
通过再次进行复合计算,可以得知:;上述计算得到的表达式代表子任务S[1]对存储子系统L1[2]中留存的数据具有逻辑依赖关系,此时,需要继续判断目标架构中,S[1]是否和L1[2]有连接关系:
若有连接关系,则确定L1[2]即是S[1]和S[2]的数据接力空间节点;若没有连接关系,则继续搜索L1[2]的上一级存储子系统,直至确定出S[1]和S[2]的数据接力空间节点。
S850、根据目标架构中各子系统之间的层级架构关系以及预设的存储管理规则,推导各子系统匹配的数据接力时间节点。
在本实施例中,该数据接力时间节点可以理解为两个具有逻辑依赖关系的子任务在某一个子系统中实现数据接力操作的时间点。在确定出数据接力时间节点后,该数据接力时间节点可以用于修正优化数据接力空间节点以及修正优化子任务和子系统之间的映射关系。此外,还可以作为一项新的建模参考信息用于实现针对负载任务和目标架构的基准测试,以帮助提高架构评估的效率。
在本实施例的一个可选的实施方式中,根据目标架构中各子系统之间的层级架构关系以及预设的存储管理规则,推导各子系统匹配的数据接力时间节点,可以包括:
按照预设的存储管理规则以及各子任务的操作数据描述信息,获取目标架构中的每个子系统在每个时间点下对一个或者多个操作数的驻留情况;根据目标架构中的每个子系统在每个时间点下对一个或者多个操作数的驻留情况,推导出与每个子系统匹配的数据接力时间节点。
可以理解的是,每个子任务在执行时,只能复用还留存在数据接力空间节点中的数据,而如果在发生数据复用的时间点下,该数据被从数据接力空间节点清理(没有实现数据驻留),则该子任务无法在该数据接力空间节点上进行复用,需要从更外层的存储空间搬运该数据。
作为示例而非限定,在图11中示出了一个子系统在时间点n-1、n以及n+1下对操作数A、B和C的驻留情况的示意图。可选的,预设的存储管理规则可以包括:基于复用收益的记分牌算法或者基于损失模型的动态规划算法等,本实施例对此并不进行限制。
S860、将数据接力空间节点和数据接力时间节点,作为该基准测试中的一项建模参考信息。
本发明实施例的技术方案通过增加了推导得到数据接力空间节点以及数据接力时间节点的操作,可以为该基准测试中增加更为丰富的建模参考信息,可以进一步辅助提高架构评估的效率,从而在架构探索阶段完成更多、更广、更深入的评估。
在上述各实施例的基础上,在根据目标架构中各子系统之间的层级架构关系以及预设的存储管理规则,推导各子系统匹配的数据接力时间节点之后,还可以包括:
使用数据接力空间节点和数据接力时间节点,对各子任务与目标架构中各子系统之间的任务架构映射关系进行修正。
通过上述设置,可以使得各子任务与目标架构中各子系统之间的任务架构映射关系更加合理,可用性更高。
具体应用场景
其中,在图12中示出了本发明实施例的技术方案所适用的一种具体应用场景的示意图。在本应用场景中,为了实现将负载任务映射至目标架构中,首先需要获取负载任务中各子任务的原始负载描述信息,以及目标架构的架构定义信息,同时,还可选输入人工干预策略,该人工干预策略可以包括映射顺序确定策略以及映射策略中的一项或者多项。当然,如果没有输入人工干预策略,则可以使用默认的映射顺序确定策略以及映射策略。基于上述信息,可以最终进行架构映射流程,最终输出得到负载任务中的各子任务与目标架构中各子系统之间的任务架构映射关系,基于上述任务架构映射关系,可以推导出两类数据接力节点,也即,数据接力空间节点和数据接力时间节点,通过选择上述数据接力节点作为反馈结果,可以在架构映射流程中更新修正得到新的子任务和子系统之间的任务架构映射关系。最后,上述任务架构映射关系以及两类数据接力节点,可以共同作为基准测试所使用的建模参考信息。
实施例三
图13是本发明实施例三提供的一种系统建模评估方法的流程图,本实施例以上述各实施例为基础进行优化,在本实施例中,对根据每个子任务的数据维度描述信息和该任务架构映射关系,确定与各子任务分别对应的至少一个数据流的操作进行具体化。相应的,如图13所示,所述方法具体可以包括:
S1310、获取待加载至目标架构执行基准测试的负载任务,并获取与负载任务匹配的原始负载描述信息,以及与目标架构匹配的架构定义信息。
S1320、将负载任务拆分为多个子任务,并建立各子任务与目标架构中各子系统之间的任务架构映射关系。
在本实施例中,在获取负载任务中各子任务与目标架构中各子系统之间的任务架构映射关系之后,通过结合每个子任务的数据维度描述信息,可以生成与每个子任务分别对应的一个或者多个数据流。
其中,数据流中包括:子任务中各数据维度的执行顺序、并行维度、子任务中各数据维度的切片大小,以及子任务中各数据维度在目标架构的每级缓冲区或每级缓存中的存储策略。
在本实施例中,可以自由设置子任务中各数据维度的执行顺序、并行维度以及子任务中各数据维度的切片大小的确定顺序,而子任务中各数据维度在目标架构的每级缓冲区或每级缓存中的存储策略需要在上述三项参数确定后,以上述三项参数的具体值为基础确定得到。
S1330、根据当前子任务的数据维度描述信息和与当前子任务具有任务架构映射关系的当前子系统的硬件描述信息,生成当前子任务的至少一个参数组。
其中,参数组中包括数据维度的执行顺序,并行维度和数据维度的切片大小。
S1340、在每个参数组的约束下,分别计算当前子任务的各数据维度在目标架构的每级缓冲区或每级缓存中的存储策略。
S1350、根据存储策略计算结果,筛选出至少一个目标参数组,并将各目标参数组与匹配的存储策略进行组合,生成与当前子任务对应的至少一个数据流。
S1360、根据各数据流中定义的各项信息,将每个数据流分别进行时域和空域映射,得到负载任务中每个子任务的数据流在各时间片和目标架构的各子系统中的时空映射结果,作为负载仿真报告。
S1370、根据负载仿真报告,生成负载任务在目标架构上的性能评估结果和功耗评估结果。
本发明实施例的技术方案通过获取负载任务中各子任务与目标架构中各子系统之间的任务架构映射关系;根据每个子任务的数据维度描述信息和该任务架构映射关系,确定与各子任务分别对应的至少一个数据流,作为该基准测试中的一项建模参考信息的技术手段,提供了一种全面、高效、准确的生成负载任务的数据流新方式,为后续进行灵活性、可扩展性的基准测试建模提供高效可用的数据准备,在充分利用架构硬件性能的基础上,减低了基准测试建模的开发代价和周期,并可以辅助提高架构评估的效率以及准确性,从而在架构探索阶段完成更多、更广、更深入的评估。
进一步的,在本发明实施例中,针对负载任务中的每个当前子任务,可以首先确定出一个或者多个由数据维度的执行顺序,并行维度和数据维度的切片大小构成的参数组,之后,分别计算出与每个参数组分别对应的缓冲区或者缓存的存储策略之后,基于不同缓存策略的缓存效果,在全部参数组中筛选出缓存效果较优的一个或者多个目标参数组,并将每个目标参数组,与该目标参数组对应的缓存策略进行组合,得到与该当前子任务对应的一个或者多个数据流。
通过上述设置,可以在结合子任务的数据维度信息和目标框架的框架定义信息的基础上,快速、准确的生成与每个子任务相适配的最优数据流,以提供一种针对不同负载任务,不同架构的高性能、在线的数据流生成方案,满足后续的基准测试建模需求。
进一步的,在上述各实施例的技术上,将根据当前子任务的数据维度描述信息和与当前子任务具有任务架构映射关系的当前子系统的硬件描述信息,生成当前子任务的至少一个参数组的操作进行具体化。
相应的,如图14所示,所述方法具体可以包括:
S1410、获取负载任务中各子任务与目标架构中各子系统之间的任务架构映射关系;其中,该负载任务为待加载至目标架构执行基准测试的任务。
S1420、根据当前子任务中每个数据维度的数据属性,构建备选维度集合。
在本可选实施方式中,以负载任务中的一个子任务,也即当前子任务为例,描述该当前子任务的数据流生成过程。其中,本实施例的技术方案以先确定并行维度,再确定一个或者多个数据维度的执行顺序,最后确定切片大小的确定顺序为例进行描述,实际上,上述三种参数的确定顺序可以任意设置,本实施例对此并不进行限制。
其中,每个数据维度的数据属性,可以理解为每个数据维度在进行当前子任务的计算过程中所呈现出来的特性。典型的,该数据属性可以具体为数据维度是否为规约维度的二值化结果(是,或者否)。其中,规约维度可以理解为在计算过程中会消失的维度。例如,针对一个m*k维度的数据1,与一个k*n维度的数据2之间的乘法计算,数据维度k在输入数据中存在,在输出结果中消失,则数据维度k即为规约维度,也可以称为reduce维度。
在实际的架构计算过程中,从计算性能角度来说,一般不会选择reduce维度作为并行维度,进而,可以首先基于一个数据维度是否为规约维度,作为该数据维度是否可以作为并行维度进行初步筛选。
其中,备选维度集合一般为当前子任务中各数据维度的子集,备选维度可以理解为通过初步筛选后,可以作为并行维度备选的数据维度。续前例,如果当前子任务的数据维度描述信息可以为[m,n,k],则当前子任务共具有m、n以及k三个数据维度,假设数据维度k为规约维度,则可以确定备选维度集合中包括{m,n}。进一步的,还考虑到可能当前子任务实际的数据维度可能无法满足实际的并行维度性能需求,因此,还可以使用当前已经确定出的备选维度集合中的各备选维度进行组合,得到更多的备选维度,进而可以挖掘出性能更好的并行维度。
在本实施例的一个可选的实施方式中,根据当前子任务中每个数据维度的数据属性,构建备选维度集合,可以包括:
在当前子任务的各数据维度中滤除规约维度,得到至少一个备选维度;如果备选维度的数量为多个且允许合并维度操作,则计算两两备选维度的乘积,作为新的备选维度;使用各所述备选维度,构建得到所述备选维度集合。
在本可选实施方式中,在确定出由规约维度作为筛选条件初步筛选后得到了多个备选维度后,可以根据实际的基准测试需求是否允许合并维度操作,挖掘出更多的备选维度。
其中,是否允许合并维度操作,是指在针对该当前子任务进行计算时,是否允许将两个或者多个维度进行合并处理,例如,针对[m,n,k]的矩阵乘计算,是否允许进行两两数据维度的合并(相乘),以对该数据维度进行升维处理,例如,将该矩阵乘计算升维为[m*n,k]。
在一个具体的例子中,在确定滤除规约维度后得到的备选维度为m、n以及p后,如果确定当前子任务允许合并维度操作,则可以生成m*n、m*p以及n*p这三个新的新的备选维度,并构建得到形如{m,n,p,m*n,m*p,n*p}的备选维度集合。
S1430、根据当前子任务中每个数据维度的维度值以及当前子系统的计算属性,在备选维度集合中,选取至少一个并行维度。
根据并行维度的定义可知,在计算得到每个数据维度在硬件计算单元上的执行次数之后,如果一个数据维度在计算单元中的执行次数越多,则将该数据维度作为并行维度的收益也越大。因此,可以将上述执行次数作为一项确定并行维度的重要指标。
具体的,通过前述获取的负载任务中各子任务与目标架构中各子系统之间的任务架构映射关系,可以在该任务架构映射关系中,获取与当前子任务匹配的当前子系统。也即,该当前子任务在基准任务建模过程中,需要由当前子系统中的各硬件计算单元执行。相应的,在计算得到每个数据维度在硬件计算单元上的执行次数时,需要首先获取当前子系统的计算属性,其中,该计算属性中可以包括:当前子系统中包括的计算单元数量,以及当前子系统中每个计算单元的单次计算量等算力描述信息。
在本实施例的一个可选的实施方式中,根据当前子任务中每个数据维度的维度值以及当前子系统的计算属性,在备选维度集合中,选取至少一个并行维度可以包括:
根据当前子系统中包括的计算单元数量,以及每个计算单元的单次计算量,计算得到当前子系统的单次计算量;根据当前子系统的单次计算量,确定每个备选维度在当前子系统中的执行次数衡量值;获取执行次数衡量值最大的至少一个备选维度,作为并行维度。
其中,执行次数衡量值,可以理解为与执行次数相关联的一个描述参数,具体的,该执行次数衡量值可以直接为每个维度在当前子系统中的执行次数。进一步的,考虑到执行次数的计算结果为非整数时,说明数据维度无法均匀的放置在每个计算单元上执行计算,进而,可以考虑优先选择执行次数的计算结果中余数较大的数据维度作为并行维度,因为这样选择可以提高数据的重用效率。相应的,可以基于执行次数计算结果中的整数部分的数值以及余数部分的数值,共同计算得到执行次数衡量值。
可选的,在构建得到执行次数衡量值得计算公式时,可以规定:执行次数的整数部分的数值越大,执行次数衡量值越大;执行次数的余数部分越大,该执行次数衡量值也越大。此时,可以选取执行次数衡量值最大的备选维度,作为并行维度。其中,如果执行次数衡量值最大的备选维度为多个,则可以将上述多个备选维度均作为并行维度。
在一个具体的例子中,根据当前子系统的单次计算量,确定每个备选维度在当前子系统中的执行次数衡量值,可以包括:
根据公式:
B=ROUND(dim_size/cu_size)+dim_size/(dim_size+cu_num-((dim_size/unit_size)%cu_num)),计算得到备选维度dim_size在当前子系统中的执行次数衡量值B;
其中,cu_size为当前子系统的单次计算量,cu_num为当前子系统中包括的计算单元数量,unit_size为每个计算单元的单次计算量,ROUND(.)为四舍五入函数。
S1440、根据当前子任务中每个数据维度的数据属性,确定与当前子任务匹配的至少一个数据维度的执行顺序。
在本实施例中,同样可以根据每个数据维度是否为规约维度的数据属性,确定与当前子任务匹配的至少一个数据维度的执行顺序。
通过实际仿真测试发现,规约维度作为数据搬运的循环过程中的最低层循环变量时,数据搬运的效率最高,因此,当各数据维度中存在规约维度时,可以基于该规约维度确定与当前子任务匹配的至少一个数据维度的执行顺序。
续前例,在当前子任务共具有m、n以及k三个数据维度,且数据维度k为规约维度时,数据维度的执行顺序的取值集合可以为{[m,n,k]、[n,m,k]}。
S1450、根据当前子系统的算力特征、指令集定义和当前子任务的计算类型,确定当前子任务中各数据维度的切片大小。
如前所示,切片大小可以理解为基于目标架构的架构特征确定出的最小切片粒度,也就是每个计算单元所能计算的最小数据量。当切片大小的选取与目标架构进行精准适配时,可以最大程度的避免算力浪费,从而使得数据流的规划更具有合理性。
在本实施例中,可以从目标架构的规格信息中获得每个子系统的算力特征(典型的,单个计算单元的计算量)以及指令集的定义。之后,可以针对不同子任务的计算类型(例如,卷积计算或者矩阵乘计算等),从指令集的定义中获取与每个子任务的计算类型分别对应的各数据维度的操作数的数据类型(例如,int型或者float型等),最后基于该数据类型以及算力特征,推导出每个数据维度的切片大小。
可选的,可以预先构建得到一个切片大小的推导模型,该推导模型的输入为设定计算类型下各数据维度的操作数的数据类型,以及设定子系统的算力数据,输出为与该计算类型下的每个数据维度的操作数分别对应的操作数域描述信息,进而,可以根据该操作数域描述信息,确定出每个数据维度的切片大小。
在一个具体的例子中,针对float 32类型的乘加指令可以确定出与三个数据维度分别对应的操作数A、B、C的操作数域描述信息分别为16*8、16*32以及8*32,进而,各数据维度的切片大小可以分别为16、32以及8。
S1460、根据至少一个并行维度、至少一个数据维度的执行顺序以及当前子任务中各数据维度的切片大小,组合得到与当前子任务对应的至少一个参数组。
其中,参数组中包括数据维度的执行顺序,并行维度和数据维度的切片大小。
可以理解的是,通过前述操作确定出的并行维度可以为一个或者多个,确定出的子任务中各数据维度的执行顺序也可以为一个或者多个。进而,通过对上述各项参数进行排列组合,可以得到一个或者多个参数组。每个参数组中包括有一个并行维度,一种类型的子任务中各数据维度的执行顺序,以及各数据维度的切片大小。
在一个具体的例子中,如果得到的并行维度包括并行维度A1和A2,子任务中各数据维度的执行顺序包括B1和B2,子任务中各数据维度的切片大小为C,则可以构建形如:{A1、B1、C}、{A1、B2、C}、{A2、B1、C}以及{A2、B2、C}的四个参数组。
S1470、在每个参数组的约束下,分别计算当前子任务的各数据维度在目标架构的每级缓冲区或每级缓存中的存储策略。
在本实施例中,在不同参数组的约束下,可以分别计算得到不同的存储策略。也即,如果共有5个参数组,则可以分别针对这5个参数组分别计算得到5种类型的存储策略。
S1480、根据存储策略计算结果,筛选出至少一个目标参数组,并将各目标参数组与匹配的存储策略进行组合,生成与当前子任务对应的至少一个数据流。
在本实施例中,可以根据不同存储策略的存储性能参数,例如,对缓冲区或者缓存的占用率或者带宽和计算的平衡度等,在全部参数组中选择出存储性能参数最优的一个或者多个目标参数组,并将目标参数组与匹配的存储策略进行组合,生成与当前子任务对应的至少一个数据流。
也即,如果最后保留的目标参数组为2个,则将每个目标参数组与各自的存储策略进行组合,得到2个数据流。
本发明实施例的技术方案提供了一种全面、高效、准确的生成负载任务的数据流新方式,为后续进行灵活性、可扩展性的基准测试建模提供高效可用的数据准备,在充分利用架构硬件性能的基础上,减低了基准测试建模的开发代价和周期,并可以辅助提高架构评估的效率以及准确性,从而在架构探索阶段完成更多、更广、更深入的评估。
在上述各实施例的技术上,在本可选实施方式中,对将在每个参数组的约束下,分别计算当前子任务的各数据维度在目标架构的每级缓冲区或每级缓存中的存储策略的操作进行具体化。
相应的,如图15所示,所述方法具体可以包括:
S1510、获取负载任务中各子任务与目标架构中各子系统之间的任务架构映射关系;其中,该负载任务为待加载至目标架构执行基准测试的任务。
S1520、根据当前子任务的数据维度描述信息和与当前子任务具有任务架构映射关系的当前子系统的硬件描述信息,生成当前子任务的至少一个参数组。
其中,参数组中包括数据维度的执行顺序,并行维度和数据维度的切片大小。
S1530、判断目标架构的数据缓存类型:如果确定目标架构使用缓冲区进行数据缓存,则执行S1540;如果确定目标架构使用缓存进行数据缓存,则执行S1550。
S1540、在每个参数组的约束下,分别计算当前子任务的各数据维度在每级缓冲区中缓存的切片个数,作为在该参数组下的存储策略。
在本实施例的一个可选的实施方式中,在每个参数组的约束下,分别计算当前子任务的各数据维度在每级缓冲区中缓存的切片个数,作为在该参数组下的存储策略,可以包括:
针对当前处理参数组,按照从内侧缓冲区朝向外侧缓冲区的顺序,依次获取当前缓冲区;根据当前缓冲区的当前缓冲量,当前子系统的理论算力和带宽,推导出在当前参数组和当前缓冲量的共同约束下,当达到数据运算时间和数据搬运时间的最优平衡时,各数据维度在当前缓冲区中缓存的切片个数;返回执行按照从内侧缓冲区朝向外侧缓冲区的顺序,依次获取当前缓冲区的操作,直至在当前参数组的约束下,计算得到各所述数据维度在每级缓冲区中缓存的切片个数。
其中,缓冲区(也可以称为存储单元)大小确定了在各个存储单元层次上,每个数据维度的存储状态,从而决定了数据的流动方式,是数据流的重点优化对象。相应的,在本可选实施方式中,提出了一种通过线性方程求解的方式,来确定各所述数据维度在每级缓冲区中缓存的切片个数(也可以称为buffer size)的具体的实现形式。
以目标架构中最内侧的存储单元(以下简称L1)为例,需要根据每个当前处理参数组中包括的数据维度的执行顺序(也可以称为loop order),以及并行维度(也可以称为parallel dim),计算得到各所述数据维度在每级缓冲区中缓存的切片个数。
可以理解的是,一个操作数对应一个或者多个数据维度,进而,每个操作数在相应的数据维度下,对应一个或者多个在L1中缓存的切片个数,所有操作数将与各自匹配的数据维度在L1中缓存的切片个数与各自切片大小的对应乘积,可以表达出全部操作数在L1中所占用的存储总量。同时,各操作数在L1中缓存的切片个数的选择空间是有限的,一般基于经验或复用距离确定。其中,复用距离可以理解为两次访问到同一个切分所需的循环次数,复用距离的取值由数据维度的执行顺序和并行维度共同确定。
在本可选实施方式中,以尽可能多地占用L1中可用的存储空间为原则,同时考虑带宽和计算的平衡,可以基于以下方式建模并求解出在给定数据维度的执行顺序和并行维度下,各所述数据维度在每级缓冲区中最优缓存的切片个数。
假设最外层循环的一次迭代过程中计算量为W,所需要的数据量为V,根据硬件的理论算力P以及带宽B,可以计算出数据运算时间T0 = W / P,和数据搬运时间T1 = V / B,当T0 > T1时,即认为达到了带宽平衡。
以乘累加运算为例,假设:数据维度的执行顺序为[m,n,k],并行维度为m,操作数A的形状为[m,k],操作数B的形状为[k,n],结果操作数C的形状为[m,n],使用以下方式表达各操作数在L1上所占用的存储空间:
操作数A:A1 = m_buffer_size * m_tile_size + k_buffer_size * k_tile_size;
操作数B:B1 = k_buffer_size * k_tile_size + n_buffer_size * n_tile_size;
操作数C:C1 = m_buffer_size * m_tile_size + n_buffer_size * n_tile_size。
其中,A1为操作数A在L1上所占用的存储空间,B1为操作数B在L1上所占用的存储空间,C1为操作数C在L1上所占用的存储空间,m_buffer_size为数据维度m在L1中缓存的切片个数,n_buffer_size为数据维度n在L1中缓存的切片个数,k_buffer_size为数据维度k在L1中缓存的切片个数,上述三个参数为需要求解的未知量。m_tile_size为数据维度m的切片大小,n_tile_size为数据维度m的切片大小,k_tile_size为数据维度k的切片大小,上述三个参数均为当前处理参数组中包括的已知量。
考虑L1中存储空间的限制,可以得到以下约束:;其中,/>为L1存储单元中的当前缓冲量(也即,存储空间容量上限)。以尽可能多地占用可用的存储空间为目标,则可以基于以下目标函数:/>,求得{m_buffer_size,n_buffer_size,k_buffer_size}的最优解。
其中,在当前处理参数组中的数据维度的执行顺序和并行维度确定后,可以得到在数据维度的执行顺序和并行维度的约束下,操作数A在L1中的重复搬运次数,以及操作数B在L1中的重复搬运次数/>。
进而,可以基于下述目标函数:,求得{m_buffer_size,n_buffer_size,k_buffer_size}的最优解,以最大化数据运算时间和数据搬运时间差值。其中,/>为针对A1和B1的数据计算量总和,/>为由和/>确定的数据搬运量总和,/>为数据运算时间,/>为数据搬运时间。
进一步的,在满足目标函数的若干最优解中,找到满足目标函数/>的最大解,从而确定L1上{m_buffer_size,n_buffer_size,k_buffer_size}的最优解。最后,可以通过按照从内侧缓冲区朝向外侧缓冲区的顺序,依次执行获取针对当前缓冲区计算得到的{m_buffer_size,n_buffer_size,k_buffer_size}的最优解的操作,直至计算得到各所述数据维度在每级缓冲区中缓存的切片个数。
S1550、在每个参数组的约束下,分别计算当前子任务的各数据维度在每级缓存中缓存的切片个数,作为在该参数组下的存储策略。
在本实施例的一个可选的实施方式中,在每个参数组的约束下,分别计算当前子任务的各数据维度在每级缓存中缓存的切片个数,作为在该参数组下的存储策略,可以包括:
针对当前处理参数组,按照从内侧缓存朝向外侧缓存的顺序,依次获取当前缓存;根据当前子任务的每个操作数在当前处理参数组下的复用距离,当前缓冲区的当前缓存量,当前子系统的理论算力和带宽,推导出在当前参数组和当前缓存量的共同约束下,当在存在或不存在缓存未命中情况达到数据运算时间和数据搬运时间最优平衡时,各数据维度在当前缓存中缓存的切片个数;返回执行按照从内侧缓存朝向外侧缓存的顺序,依次获取当前缓存的操作,直至在当前参数组的约束下,计算得到各所述数据维度在每级缓存中缓存的切片个数。
在本实施例中,目标架构使用缓存(cache)进行数据缓存,cache存储策略的决策,不同于上述显式的缓冲区存储策略,cache存储策略想要达成的目标是明确数据的复用信息。
其中,上述复用信息可以包括:1、时间复用:同一数据,在一定时间间隔内被下游资源(如计算单元,数据搬运单元)重复访问,且该间隔内对其他数据的访问量有限;2、空间复用:同一数据,在较短时间间隔内被多个下游硬件访问;3、时空复用。上述两种复用的组合。
在本可选实施方式中,需要使得当前处理参数组匹配当前硬件层级的cache特性,包括cache的当前缓存量(缓存空间容量上限)以及复用距离(cacheline)大小,以提高cache的命中率。
多级cache结构下,通过逐层推算(从内侧cache结构逐层向外侧推导或者从外侧cache结构逐层向内侧推导)的方式,可以确定各层级cache下,各数据维度缓存的切片个数,以适配每层cache的不同特性,从而提高硬件的利用率。
和缓冲区存储策略相类似,对每个操作数的每个数据维度,都有对应一个缓存的切片大小(后文称为tile number)以表征在该数据维度下有多少个数据切片在该层级的cache下被读取或计算。各操作数的tile number的选择空间也是有限的,可以基于经验或复用距离设定。对于不同的tile number,当前处理参数组中的数据维度的执行顺序和并行维度给定的情况下,会对各操作数复用距离造成影响,进而影响实际每级cache实际占用的缓存空间(也可以称为cache footprint)。当切片大小能够常驻cache时,cache footprint被简化为各切片大小的总和。
例如采取从内侧cache结构逐层向外侧推导的策略,确定最内侧cache(后文简称为C1)的当前缓存量大小为,同样以乘累加运算为例,假设:数据维度的执行顺序为[m,n,k],并行维度为m,操作数A的形状为[m,k],操作数B的形状为[k,n],结果操作数C的形状为[m,n],使用以下方式表达各操作数在C1上所占用的缓存量:
操作数A:a1 = m_tile_number * m_tile_size + k_tile_number * k_tile_size;
操作数B:b1 = n_tile_number * n_tile_size + k_tile_number * k_tile_size;
操作数C:c1 = m_tile_number * m_tile_size + n_tile_number * n_tile_size。
其中,a1为操作数A在C1上所占用的缓存空间,b1为操作数B在C1上所占用的缓存空间,c1为操作数C在C1上所占用的缓存空间,m_tile_number为数据维度m在C1中缓存的切片个数,n_tile_number为数据维度n在C1中缓存的切片个数,k_tile_number为数据维度k在C1中缓存的切片个数,上述三个参数为需要求解的未知量。m_tile_size为数据维度m的切片大小,n_tile_size为数据维度m的切片大小,k_tile_size为数据维度k的切片大小,上述三个参数均为当前处理参数组中包括的已知量。
同前述分析,需要同时考虑C1缓存空间的限制,以及切片能够常驻cache的情况下,最大化数据运算时间和数据搬运时间的差值的目标。此时,C1缓存空间的约束条件是:。此时,由数据运算量和数据搬运量确定的目标函数为:。
显然,上述计算公式中没有考虑重复搬运次数R,这是因为在缓冲区缓存策略下,可以显式管理切片的内存,从而做到显式控制各切片的重复搬运次数;而在cache模式下,各切片是否需要被重复搬运,取决于cache是否命中(也可以称为hit),以及各操作数在当前处理参数组中的数据维度的执行顺序和并行维度下的复用距离,而复用距离的大小决定了各操作数缓存未命中(也可称为cache miss)的先后顺序。复用距离越短,缓存未命中的概率越低。
具体的,如果上述两个约束条件有解,则确定不存在缓存未命中情况,此时可以直接求解C1下{m_tile_size,n_tile_size,k_tile_size}的最优解。
如果上述两个约束条件无解,则确定存在缓存未命中情况,因而需要考虑切片无法常驻cache的情况。可以分别计算得到各操作数在当前处理参数组中的数据维度的执行顺序和并行维度下的复用距离。此时,可以按照操作数复用距离从大到小排序,选择复用距离较大的操作数作为发生缓存未命中的操作数,而剩余的复用距离较小的操作数,则可以作为缓存命中的操作数,依次进行求解,优化后的约束条件是:。
其中,为选定的复用距离较小、能够命中缓存的操作数所对应的切片大小。相应的,前述目标函数可以进一步优化为:/>。
其中,为复用距离较大、未命中缓存的操作数所对应的切片大小,B为直接从缓存C1中搬运与/>对应的操作数所需的带宽,/>为从更远的缓存中搬运与/>对应的操作数所需的带宽。
基于存在缓存未命中情况下得到了两个优化后的约束条件,可以相应计算得到存在缓存未命中的情况时,C1下{m_tile_size,n_tile_size,k_tile_size}的最优解。
最后,可以通过按照从内侧缓存朝向外侧缓存的顺序,依次执行获取针对当前缓存计算得到的{m_tile_size,n_tile_size,k_tile_size}的最优解的操作,直至计算得到各所述数据维度在每级缓存中缓存的切片个数。
S1560、根据存储策略计算结果,筛选出至少一个目标参数组,并将各目标参数组与匹配的存储策略进行组合,生成与当前子任务对应的至少一个数据流。
本发明实施例的技术方案提供了一种全面、高效、准确的生成负载任务的数据流新方式,为后续进行灵活性、可扩展性的基准测试建模提供高效可用的数据准备,在充分利用架构硬件性能的基础上,减低了基准测试建模的开发代价和周期,并可以辅助提高架构评估的效率以及准确性,从而在架构探索阶段完成更多、更广、更深入的评估。
实施例四
图16是本发明实施例四提供的一种系统建模评估方法的流程图,本实施例以上述各实施例为基础进行优化,在本实施例中,对根据各数据流中定义的各项信息,将每个数据流分别进行时域和空域映射,得到负载任务中每个子任务的数据流在各时间片和目标架构的各子系统中的时空映射结果的操作进行具体化。
相应的,如图16所示,所述方法具体可以包括:
S1610、获取待加载至目标架构执行基准测试的负载任务,并获取与负载任务匹配的原始负载描述信息,以及与目标架构匹配的架构定义信息。
S1620、将负载任务拆分为多个子任务,并建立各子任务与目标架构中各子系统之间的任务架构映射关系。
S1630、根据每个子任务的数据维度描述信息和该任务架构映射关系,确定与各子任务分别对应的至少一个数据流。
S1640、获取待时空映射的目标数据流。
S1650、根据目标数据流中定义的与该目标负载任务匹配的各数据维度的执行顺序,并行维度和各数据维度的切片大小,对目标数据流进行时域映射,得到多个具有时域执行顺序的子数据流。
一般来说,目标子任务无法通过单次数据搬运完成任务的实施,具体的,可能涉及多次将不同存储位置的数据搬运至一个或者多个硬件计算单元中分别实施计算,或者将一个或者多个硬件计算单元的计算结果搬运至设定存储空间的情况。通过解析目标数据流中定义的与该目标子任务匹配的各数据维度的执行顺序,并行维度和各数据维度的切片大小,可以确定出与该目标子任务匹配的多个具有时序关系的数据搬运操作,并确定出与每个数据搬运操作对应的数据搬运对象(例如,存储单元L1中存储的,操作数形状为[m,n]的操作数A的一个切片大小a*b的一个数据切片,或者,硬件计算单元中当前计算得到的形状为[k,g]的计算结果数据),以及数据搬运方向(例如,从存储单元搬运至硬件计算单元,或者从硬件计算单元搬运至设定存储单元)。
进而,可以将目标数据流拆分得到多个子数据流,每个子数据流对应一个数据搬运操作,也即,在何种数据搬运方向下,对何种数据搬运对象实施数据搬运。
可以理解的是,与目标数据流对应的多个数据搬运操作在时间维度上是具有先后顺序的,例如,操作数A共对应两个数据切片a1和a2,则数据切片a1的数据搬运操作1的执行时间需要先于数据切片a2的数据搬运操作2。相应的,如果数据搬运操作1对应子数据流1,数据搬运操作2对应子数据流2,则上述两个子数据流的时域执行先后顺序为:子数据流1,子数据流2。可以理解的是,一个子数据流对应一个时间片,时间片可以理解为一个子数据流的执行时间段。一般来说,不同子数据流对应的时间片之间,具有时域先后顺序。
S1660、根据目标负载任务在目标架构中所映射的目标子系统和目标架构中定义的各子系统的连接关系,对各子数据流再进行空域映射,将在设定时间片下执行的每个子数据流分别映射至目标架构各层级的子系统中,生成负载仿真报告。
在一个具体的示例中,如果子任务S通过架构映射,被映射至计算单元SIP[2]中,则可以构建形如:S->SIP[2]的表达式,其表明子任务S中包括的各项操作数需要最终搬运至计算单元SIP[2]中实施计算。
在本实施例中,目标架构中定义的各子系统的连接关系可以理解为目标架构中各子系统之间的层级架构关系。例如,在目标架构中,包括有L2存储单元、L1存储单元以及多个计算单元(SIP或者computer)作为子系统,L2存储单元与L1存储单元直接相连,L1存储单元与各计算单元直接相连,则上述各子系统按照从上层到下层的层级架构关系可以为:L2->L1->SIP(或者computer)。
相应的,在获取了目标子任务在目标架构中所映射的目标子系统和目标架构中定义的各子系统的连接关系后,可以确定出每个子数据流对应的搬运数据在目标架构中的流转方式。例如,如果目标子任务映射至计算单元SIP[n]中,且确定目标架构中定义的各子系统的连接关系为L2->L1->SIP,则可以确定目标子任务的子数据流X对应的搬运数据需要从L2存储空间的设定存储地址中搬运至L1存储空间的设定存储地址后,再由L1存储空间的设定存储地址处,搬运至标识为n的SIP中实施计算。进而,可以将在不同时间片下执行的不同子数据流分别映射至目标架构各层级的子系统中。
在本实施例中,在将在设定时间片下执行的每个子数据流分别映射至目标架构各层级的子系统中之后,可以将最终得到的时空映射结果作为该基准测试中的一项建模参考信息,为将负载任务配置在目标架构上执行基准测试时的系统建模和架构评估提供高效、可用的数据准备。
具体的,在生成与负载任务中的每个子任务中的每个数据流的时空映射结果后,可以将上述时空映射结果作为负载仿真报告。
S1670、根据负载仿真报告,生成负载任务在目标架构上的性能评估结果和功耗评估结果。
本发明实施例的技术方案通过获取待时空映射的目标数据流;根据目标数据流中定义的与该目标子任务匹配的各数据维度的执行顺序,并行维度和各数据维度的切片大小,对目标数据流进行时域映射,得到多个具有时域执行顺序的子数据流;根据目标子任务在目标架构中所映射的目标子系统和目标架构中定义的各子系统的连接关系,对各子数据流再进行空域映射,将在设定时间片下执行的每个子数据流分别映射至目标架构各层级的子系统中的技术手段,实现了在架构和时间两个维度下,对数据流任务进行了简化和抽象,能够清晰的规划出数据流任务在一段时间内,在架构不同子系统中的执行情况,为后续进行灵活性、可扩展性的基准测试建模提供高效可用的数据准备,从一定程度上可以减低基准测试建模的开发代价和周期。
在上述各实施例的基础上,将针对数据流的时空映射方式进行具体化。相应的,如图17所示,所述方法具体可以包括:
S1710、获取待时空映射的目标数据流,其中,目标数据流由负载任务拆分出的一个目标子任务生成,负载任务为待加载至目标架构执行基准测试的任务。
S1720、根据目标数据流中包括的目标子任务中各数据维度的执行顺序,并行维度和和目标子任务中各数据维度的切片大小,将目标数据流拆分为多个子数据流,并确定每个子数据流的执行顺序。
如前所述,在获取目标数据流中包括的目标子任务中各数据维度的执行顺序,并行维度和和目标子任务中各数据维度的切片大小之后,可以将目标子任务拆分为基于多个数据搬运操作的计算过程,进而,可以生成与每个数据搬运操作分别对应的子数据流。
相应的,不同数据搬运操作之间的时域关系,决定了每个子数据流的执行顺序。
S1730、按照各子数据流的执行顺序,并将各子数据流在多个连续时间片上进行顺序排布。
其中,一个时间片对应一个时间区间。相应的,可以建立时间轴,并在该时间轴上,创建多个连续时间片。在初始化阶段,各时间片的起止时间点可以不在该时间轴上被赋值,仅指定每个时间片的所占用的时间间隔即可。当基准测试的启动时间点被确定后,上述各时间片的起止时间点将被唯一相应确定。
在一个具体的例子中,如果将目标数据流拆分为子数据流1和子数据流2,且子数据流1的时域执行时间先于子数据流2的时域执行区间。进而,可以在上述时间轴中,沿时间延伸顺序建立两个相邻的时间片1和时间片2后,将子数据流1排布在时间片1上,并将子数据流2排布在时间片2上。
S1740、获取与目标子任务具有架构映射关系的目标子系统,并根据目标子系统和目标架构中定义的各子系统的连接关系,确定出与设定时间片下执行的每个子数据流分别对应的数据流路径。
其中,数据流路径由多个相邻层级的子系统串联构成,且该数据流路径的起始路径点或终止路径点为目标子系统。
在本实施例中,通过查询预先建立的子任务和子系统之间的架构映射关系,可以获取与目标子任务匹配的目标子系统。可以理解的是,与一个子数据流匹配的数据搬运操作可以为将设定层级的存储空间中存储的操作数搬运至目标子系统中实施计算,也可以为将目标子系统计算得到的计算结果搬运至设定层级的存储空间中进行存储。相应的,可以确定该目标子系统为每个子数据流的数据流转起点或者数据流转终点。其中,在获取目标子系统后,结合与目标子任务对应的各操作数在目标架构中的存储位置,以及目标架构中定义的各子系统的连接关系,可以确定出与每个数据流分别对应的数据流路径。同时,每个数据流对应一个时间片,一个时间片可以理解为一个数据流的执行时间区间。
其中,在图18中示出了本发明实施例所适用的一种子数据流在目标架构中每个层级下的时间映射结果的示意图。如图18所示,子数据流1实现了在时间维度(Time)和空间架构维度(Arch)下的双重映射。具体的,在时间维度下,子数据流被映射至时间片T[a]下执行,在空间架构维度,假设Arch[a]为L2存储单元,Arch[b]为L1存储单元,Arch[c]为计算单元,则子数据流可以映射为从L2中的一个存储区域data[id]->L1中的一个存储区域data[id] ->计算单元中的一个具体的计算单元computer[id]的数据流路径。其中,与目标子任务具有架构映射关系的目标子系统为computer[id]。
本可选实施方式的技术方案,可以简单、高效且准确的实现数据流的时空映射,以辅助提高架构评估的效率。
在上述各实施例的技术上,在确定出与设定时间片下执行的每个子数据流分别对应的数据流路径的操作之后,进一步增加全部子数据流的数据流路径的时间偏移处理的操作。相应的,如图19所示,所述方法具体可以包括:
S1910、获取待时空映射的目标数据流,其中,目标数据流由负载任务拆分出的一个目标子任务生成,负载任务为待加载至目标架构执行基准测试的任务。
S1920、根据目标数据流中定义的与该目标子任务匹配的各数据维度的执行顺序,并行维度和各数据维度的切片大小,对目标数据流进行时域映射,得到多个具有时域执行顺序的子数据流。
S1930、根据目标子任务在目标架构中所映射的目标子系统和目标架构中定义的各子系统的连接关系,对各子数据流再进行空域映射,将在设定时间片下执行的每个子数据流分别映射至目标架构各层级的子系统中。
S1940、在全部子数据流中,获取与目标时间片对应的目标子数据流。
如前所述,在对目标数据流进行拆分的过程中,一般可以拆分得到多个子数据流。每个子数据流被映射至一个特定的时间片上,在本实施例中,以与目标时间片对应的目标子数据流为例,描述针对目标子数据流的时间偏移处理。
可以理解的是,一般需要按照各时间片的时间延伸顺序,依次选取各目标子数据流进行时间偏移处理。
S1950、获取与目标子数据流匹配的目标数据流路径,并计算目标数据流路径中包括的路径点数量。
如前所述,数据流路径中包括由多个相邻层级的子系统串联构成,该数据流路径表明了目标子数据流在目标架构中的流转过程。目标数据流路径中以子系统为路径点,通过统计该目标数据流路径中包括的子系统的数量值,可以确定出目标数据流路径中包括的路径点数量。
在一个具体的例子中,如果目标数据流路径中包括3个子系统,则目标数据流路径中包括的路径点数量为3。
S1960、以目标时间片为起点,获取与路径点数量匹配的连续时间片集合。
在本实施例中,考虑到目标子数据流在目标架构中的流转过程需要耗费一定的传输时间,因此,考虑加入时间线上的偏移,以体现不同的架构层级间,对于同一个子数据流(包含计算)的时域偏移关系。从而可以更合理地反应负载任务的执行顺序,并反映到之后的时域-空域统计结果中。
相应的,可以根据路径点数量,以目标时间片为起点选取多个连续时间片,并将目标数据流路径中的每个路径点,映射至不同的时间片中,以体现上述时域偏移关系。
S1970、将目标数据流路径中包括的各路径点顺序映射至连续时间片集合中的各时间片中。
为了便于说明,在图20示出了一种子数据流的数据流路径的时间偏移处理结果的示意图,该示意图是对图18示例的时空映射后的子数据流1进行的时间偏移处理。同图18示例,子数据流1的目标数据流路径为:从L2中的一个存储区域data[id]->L1中的一个存储区域data[id]->计算单元中的一个具体的计算单元computer[id]的目标数据流路径,路径点数量为3,由于子数据流1初始化映射至时间片T[a]中,则需要以T[a]为起点,共获取T[a]、T[b]以及T[c]三个连续时间片,并按照子数据流1的操作数流转顺序,将上述三个路径点分别映射在上述三个时间片上,以实现对目标数据流路径的时间偏移处理。
S1980、检测是否完成对全部子数据流的数据流路径的时间偏移处理:若是,结束流程;否则,返回执行S1940。
本可选实施方式的技术方案通过对完成时空映射的各子数据流分别进行时间偏移处理,可以使得最终的时空映射结果更合理地反应负载任务的执行顺序,以进一步提高架构评估的效率。
在上述各实施例的基础上,在完成对全部子数据流的时间偏移处理操作后进一步包括对时间片起终点范围内全部时间片的数据流执行顺序的检查的操作,相应的,如图21所示,所述方法具体可以包括:
S2110、获取待时空映射的目标数据流,其中,目标数据流由负载任务拆分出的一个目标子任务生成,负载任务为待加载至目标架构执行基准测试的任务。
S2120、根据目标数据流中定义的与该目标子任务匹配的各数据维度的执行顺序,并行维度和各数据维度的切片大小,对目标数据流进行时域映射,得到多个具有时域执行顺序的子数据流。
S2130、根据目标子任务在目标架构中所映射的目标子系统和目标架构中定义的各子系统的连接关系,对各子数据流再进行空域映射,将在设定时间片下执行的每个子数据流分别映射至目标架构各层级的子系统中。
S2140、对全部子数据流的数据流路径的时间偏移处理后,获取与全部子数据流匹配的时间片起终点范围。
其中,在图22中示出了一种在同一时间坐标系下映射多个完成时间偏移处理后的多个子数据流的示意图。具体的,在图22中示出了针对子任务S的多个子数据流,一个S[.]可以理解从一个或者多个操作数从外层存储单元流转至计算单元中实施计算后,重新流转至该外层存储单元中进行数据存储的全流转过程,一般对应两个连续的子数据流。相应的,图22中共包含S[id]、S[id+1]以及S[id+2]三个全流转过程,对应6个子数据流。
针对图22的实例,在对全部6个子数据流的数据流路径进行时间偏移处理后,获取与全部子数据流匹配的时间片起终点范围为从T[local a]至T[local f]的6个时间片。
S2150、在时间片起终点范围内依次获取当前处理时间片。
续前例,在确定从T[local a]至T[local f]的时间片起终点范围后,可以依次获取T[local a]、T[local b]、T[local c]、T[local d]、T[local e]以及T[local f]作为当前处理时间片,以进行数据流执行顺序的检查。
S2160、在每个子数据流的数据流路径中,分别识别与当前时间片匹配的映射路径点。
续前例,如果当前时间片为T[local d]时,则相应的映射路径点为映射至Arch[b]的与S[id]对应的data[id]以及与S[id+2]对应的data[id+2],以及,映射至Arch[c]的与S[id+1]对应的computer[id+1]。
S2170、根据至少一个执行顺序检查规则,对各映射路径点进行数据流执行顺序的检查,并在检测到执行顺序异常时,对各子数据流的数据流路径进行重排布,以确保任务执行顺序不被打乱。
可选地,该执行顺序检查规则可以包括:缓存空间的限制规则,以及缓存使用策略限制规则,其中,缓存使用策略限制规则包括:替换策略或预取策略。
续前例,如果目标架构采用buffer模式进行数据的缓存处理,则在buffer模式下,通常有两种限制规则,第一种是不考虑缓存空间的大小,我们假定缓存的空间无限大,任何数据都能够被存储在其中,那么我们可以将若干个子数据流叠加在一起,按照流水线模式排列。最终所有的子数据流都会被排列在Time[id]上。具体的,在如图22所示的目标架构中,Arch[b]使用缓存空间无限大的buffer,则在T[local d]的时刻,从Arch[a]处获取的存储区域data[id]处的数据1以及存储区域data[id+2]处获取的数据2均可以缓存在该Arch[b]的buffer中。
第二种限制规则是考虑缓存空间大小,在这种情况下,buffer不能无限存储数据,而是要遵循先进先出的原则,只有头部的数据从buffer中被删掉,新的数据才能够进入到buffer的尾部,此限制规则可以用来精准模拟内存分配(是一种任务创建和管理的常用手段)。所以,需要根据目标架构的架构定义获取buffer的大小。并且我们可以针对不同的操作数(输入,输出),分别定义各自的buffer大小(buffer大小也可以根据不同的存储层级独立定义),以提供更为灵活和全面的buffer分配方式。
例如,假设Arch[b]的输入、输出都共享一个buffer,且buffer大小是1,那么T[local d]的时刻就不能出现数据1和数据2都进入到Arch[b]的buffer中的情况。所以S[id+2]需要进行偏移。这样才能够满足一个时间点上只有一个数据进入到Arch[b]的buffer的要求。也即,此时需要对各子数据流的数据流路径进行重排布,以确保任务执行顺序不被打乱。
相应的,在图23中示出了本发明实施例的方案所适用的一种对多个子数据流的数据流路径进行重排布后的时空映射结果示意图。如图23所示,通过重排布T[local d]的映射路径点,可以满足Arch[b]上的buffer要求。
在另一个具体示例中,如果目标架构采用cache模式进行数据的缓存处理。在cache模式下,访问过的数据会被存储在cache中,所以在一定的时间窗口内或者是访问的空间内,数据如果很快再次被访问到,那么就能够从cache中直接获取到数据,而不需要从外层的内存中获取,从而提升了获取数据的速率。而如果原始数据过了很久才被访问,cache中存储的数据已经被替换成别的数据,则无法命中,依然需要从外层的内存中获取。所以,我们需要根据目标架构的架构定义获取复用距离(cache size),当两次访问同一项数据的时间片间隔内其他的数据量总和小于该复用距离时,就可以认为这个数据第二次访问时能够命中到cache中。
在一个具体的例子中,如图24所示,复用距离为4,那么data[id]对应的操作数和data[id+1]对应的操作数以及他们的运算结果都能够被存储在cache中,如果data[id]对应的操作数和data[id]对应的操作数很快再次被用到,那么就可以直接从Arch[b]获取到。相应的,图24中示出的时空映射结果通过了复用距离为4时的执行顺序检查规则,满足任务执行顺序要求。
在另一个具体的例子中,如图25所示,如果data[id]对应的操作数过了很久才被用到,以至于在这个过程中,cache中的数据被替换成了其他新的数据,那么原始数据再次被读的时候,则无法在cache中被获取到,依然需要从外部内存中获取。此时,如图25所示,需要在新的时间片中重新搬运data[id]对应的操作数到计算单元中进行计算。
需要说明的是,对于cache模式,我们还能够计算cache的命中率,同样作为一项基准测试中的一项建模参考信息,以便以后续进行建模分析。
其中,cache的命中率=命中在cache的数据量/访问的总数据量*100%。
S2180、检测是否完成对时间片起终点范围内全部时间片的数据流执行顺序的检查:若是,结束流程;否则,返回执行S2150。
通过上述设置,可以完全对目标数据流中的全部子数据流的时空映射。
本可选实施方式的技术方案通过根据至少一个执行顺序检查规则,对各映射路径点进行数据流执行顺序的检查,并在检测到执行顺序异常时,对各子数据流的数据流路径进行重排布的实现方式,可以确保负载任务执行顺序不被打乱,进而使得最终的时空映射结果更合理地反应负载任务的执行顺序,以进一步提高架构评估的效率。
在上述各实施例的技术上,进一步增加了获取与多个数据流中的各子数据流分别对应的数据流路径;根据不同数据流之间的依赖关系,将与各子数据流分别对应的数据流路径在统一时间线上进行排布的操作,相应的,如图26所示,所述方法具体可以包括:
S2610、获取待时空映射的目标数据流,其中,目标数据流由负载任务拆分出的一个目标子任务生成,负载任务为待加载至目标架构执行基准测试的任务。
S2620、根据目标数据流中定义的与该目标子任务匹配的各数据维度的执行顺序,并行维度和各数据维度的切片大小,对目标数据流进行时域映射,得到多个具有时域执行顺序的子数据流。
S2630、根据目标子任务在目标架构中所映射的目标子系统和目标架构中定义的各子系统的连接关系,对各子数据流再进行空域映射,将在设定时间片下执行的每个子数据流分别映射至目标架构各层级的子系统中。
S2640、对目标数据流的全部子数据流的数据流路径的时间偏移处理后,进行基于执行顺序检查规则的重排布处理。
S2650、获取与多个数据流中的各子数据流分别对应的数据流路径。
S2660、根据不同数据流之间的依赖关系,将与各子数据流分别对应的数据流路径在统一时间线上进行排布。
在本实施例中,可以预先建立不同数据流之间的依赖关系,可以理解的是,数据流与子任务之间具有一一对应关系,因此,可以通过获取不同子任务之间的依赖关系,作为不同数据流之间的依赖关系。
具体的,该依赖关系可以为不同子任务之间的先后执行顺序或者并行处理顺序。其中,该依赖关系可以通过各子任务的输入和输出直接被检测出来,例如,子任务1的输出为Y,子任务2的输入为Y,输出为Z,子任务3的输入为Z输出为D,则可以确定子任务3的执行需要依赖子任务2执行完成,子任务2的执行需要依赖子任务1的执行完成,因此,假设子任务1对应数据流1,子任务2对应数据流2,以及子任务3对应数据流3,则数据流1要先于数据流2执行,数据流2要先于数据流3执行。
或者,用户还可以根据实际需求显示构建不同子任务之间的关系,例如,强制规定子任务4需要依赖子任务5执行完成等,本实施例对此并不进行限制。
在获取不同数据流之间的依赖关系之后,可以确定不同数据流在时域上的先后排布顺序,进而可以将与各子数据流分别对应的数据流路径在统一时间线上进行排布。
其中,在图27中示出了一种将两个数据流中的子数据流的数据流路径在统一时间线上进行排布后的时空映射结果示意图。其中,S[id]隶属于与子任务S对应的数据流,S’[id’]隶属于与子任务S’中对应的数据流。
S2670、如果多个数据流中存在数据接力节点,则根据数据接力节点所在位置,对排布结果进行修正。
其中,在将全部数据流在统一时间线上进行排布后,可以进一步考虑基于数据接力节点对该排布结果进行修正,以进一步提高时空映射结果的精准性。
其中,数据接力节点包括数据接力空间节点和/或数据接力时间节点。其中,数据接力空间节点,可以理解为具有依赖关系的两个子任务在目标架构中进行数据交换操作时,该数据交换操作所位于的子系统。该数据接力时间节点可以理解为两个具有逻辑依赖关系的子任务在某一个子系统中实现数据接力操作的时间点。
续前例,如果Arch[b]是子任务S和子任务S’的数据接力空间节点,则可以在Arch[b]对应的时间片T[local d]处,对排布结果进行修正。具体的修正结果如图28所示。
S2680、如果多个数据流中存在数据同步关系,则根据数据同步关系所在位置,对排布结果进行修正。
在本可选实施方式中,进一步考虑了数据同步关系对排布结果对数据流执行过程的影响。例如,某两个数据流被安排并行执行,测试人员如果要求这两个数据流结束时进行“同步”。那么当其中一个数据流被先执行完时,遇到了“同步”信号就需要进行等待,直到另一个数据流完成,他们才能够同时进行到下一个数据流的处理。
其中,在图29中示出了一种引入了数据同步关系后,具体的修正结果示意图。
本发明实施例的技术方案通过增加了获取与多个数据流中的各子数据流分别对应的数据流路径;根据不同数据流之间的依赖关系,将与各子数据流分别对应的数据流路径在统一时间线上进行排布的操作,以及对排布结果进行修正的操作,可以使得最终的时空映射结果更合理地反应负载任务的执行顺序,以进一步提高架构评估的效率。
实施例五
图30是本发明实施例五提供的一种系统建模评估装置的结构图,如图30所示,该装置具体包括:信息获取模块3010、负载仿真报告生成模块3020,以及评估模块3030。
信息获取模块3010,用于获取待加载至目标架构执行基准测试的负载任务,并获取与负载任务匹配的原始负载描述信息,以及与目标架构匹配的架构定义信息;
负载仿真报告生成模块3020,用于根据原始负载描述信息和架构定义信息,生成负载任务中每个子任务的数据流在各时间片和目标架构的各子系统中的时空映射结果,作为负载仿真报告;
其中,数据流中包括子任务中各数据维度的执行顺序、并行维度、子任务中各数据维度的切片大小,以及子任务中各数据维度在目标架构的每级缓冲区或每级缓存中的存储策略;
评估模块3030,用于根据负载仿真报告,生成负载任务在目标架构上的性能评估结果和功耗评估结果。
本发明实施例的技术方案通过获取待加载至目标架构执行基准测试的负载任务,并获取与负载任务匹配的原始负载描述信息,以及与目标架构匹配的架构定义信息;根据原始负载描述信息和架构定义信息,生成负载任务中每个子任务的数据流在各时间片和目标架构的各子系统中的时空映射结果,作为负载仿真报告,根据负载仿真报告,生成负载任务在目标架构上的性能评估结果和功耗评估结果的技术手段,创造性的提出了一种灵活性、可扩展性强,且相对全面、准确的系统建模评估方法,可以更好的提升架构评估的全面性和准确性,并可以大大提高系统模型的开发以及评估效率。
在上述各实施例的基础上,负载仿真报告生成模块3020,可以包括:
任务架构映射关系建立单元,用于将负载任务拆分为多个子任务,并建立各子任务与目标架构中各子系统之间的任务架构映射关系;
数据流确定单元,用于根据每个子任务的数据维度描述信息和该任务架构映射关系,确定与各子任务分别对应的至少一个数据流;
时空映射单元,用于根据各数据流中定义的各项信息,将每个数据流分别进行时域和空域映射,得到负载任务中每个子任务的数据流在各时间片和目标架构的各子系统中的时空映射结果。
在上述各实施例的基础上,任务架构映射关系建立单元可以包括:
架构映射顺序确定子单元,用于根据多个子任务之间的逻辑依赖关系,构建得到至少一个依赖关系分组,并确定各依赖关系分组的架构映射顺序;
依序映射子单元,用于依据架构映射顺序,分别建立各依赖关系分组中各子任务与目标架构中各子系统之间的任务架构映射关系。
在上述各实施例的基础上,架构映射顺序确定子单元可以具体用于:
根据每个子任务的原始负载描述信息,推导出至少一个子任务关系对,其中,每个子任务关系对中包括两个具有逻辑依赖关系的子任务;
根据各子任务关系对,构建得到至少一个依赖关系分组。
在上述各实施例的基础上,架构映射顺序确定子单元可以进一步具体用于:
在每个子任务的原始负载描述信息中解析得到每个子任务的操作数描述信息和操作数访问类型,并将操作数据描述信息相同,操作数访问类型分别为读和写的两个子任务,建立为一个子任务关系对;
和/或
在每个子任务的原始负载描述信息中解析得到显式依赖关系描述信息,并建立与各显式依赖关系描述信息分别对应的子任务关系对。
在上述各实施例的基础上,架构映射顺序确定子单元可以具体用于:
根据各子任务关系对中所包含的相同子任务,以子任务为节点构建至少一个依赖关系树,其中,不同依赖关系树上的任意子任务之间不具有依赖关系;
将每个依赖关系树上的各子任务划分至同一依赖关系分组中。
在上述各实施例的基础上,架构映射顺序确定子单元可以具体用于:
分别计算每个依赖关系分组中各子任务在至少一个任务属性下的属性值,并根据计算结果,确定与每个依赖关系分组分别对应的属性总值;
根据各属性总值,确定各依赖关系分组的架构映射顺序;
其中,任务属性包括计算量、操作访问量和优先程度指标中的至少一项。
在上述各实施例的基础上,架构映射顺序确定子单元可以具体用于:
分别计算每个依赖关系分组中各子任务与目标架构中各子系统之间的匹配度指标,并根据计算结果,确定与每个依赖关系分组分别对应的指标总值;
根据各指标总值,确定各依赖关系分组的架构映射顺序;
其中,匹配度指标包括计算单元数量匹配度、计算能力匹配度和异构属性一致性中的至少一项。
在上述各实施例的基础上,依序映射子单元,可以具体用于:
依据架构映射顺序,获取当前处理的目标依赖关系分组,并根据目标依赖关系分组中各子任务之间的逻辑依赖关系,获取当前处理的目标子任务;
根据目标架构中当前的剩余硬件资源,以及各已占用硬件资源的预计释放时间点,确定在目标子任务匹配的预计执行时间点下的全部可用硬件资源;
根据预设的映射策略,在全部可用硬件资源下获取与目标子任务匹配的目标子系统,并建立目标子任务与目标子系统之间的任务架构映射关系。
在上述各实施例的技术上,数据流确定单元,可以具体包括:
参数组生成子单元,用于根据当前子任务的数据维度描述信息和与当前子任务具有任务架构映射关系的当前子系统的硬件描述信息,生成当前子任务的至少一个参数组;其中,参数组中包括数据维度的执行顺序,并行维度和数据维度的切片大小;
存储策略计算子单元,用于在每个参数组的约束下,分别计算当前子任务的各数据维度在目标架构的每级缓冲区或每级缓存中的存储策略;
参数组策略组合子单元,用于根据存储策略计算结果,筛选出至少一个目标参数组,并将各目标参数组与匹配的存储策略进行组合,生成与当前子任务对应的至少一个数据流。
在上述各实施例的基础上,参数组生成子单元,可以用于:
根据当前子任务中每个数据维度的数据属性,构建备选维度集合;
根据当前子任务中每个数据维度的维度值以及当前子系统的计算属性,在备选维度集合中,选取至少一个并行维度;
根据当前子任务中每个数据维度的数据属性,确定与当前子任务匹配的至少一个数据维度的执行顺序;
根据当前子系统的算力特征、指令集定义和当前子任务的计算类型,确定当前子任务中各数据维度的切片大小;
根据至少一个并行维度、至少一个数据维度的执行顺序以及当前子任务中各数据维度的切片大小,组合得到与当前子任务对应的至少一个参数组。
在上述各实施例的基础上,参数组生成子单元,可以进一步用于:
在当前子任务的各数据维度中滤除规约维度,得到至少一个备选维度;
如果备选维度的数量为多个且允许合并维度操作,则计算两两备选维度的乘积,作为新的备选维度;
使用各所述备选维度,构建得到所述备选维度集合。
在上述各实施例的基础上,参数组生成子单元,可以进一步用于:
根据当前子系统中包括的计算单元数量,以及每个计算单元的单次计算量,计算得到当前子系统的单次计算量;
根据当前子系统的单次计算量,确定每个备选维度在当前子系统中的执行次数衡量值;
获取执行次数衡量值最大的至少一个备选维度,作为并行维度。
在上述各实施例的基础上,参数组生成子单元,可以进一步用于,根据公式:
B=ROUND(dim_size/cu_size)+dim_size/(dim_size+cu_num-((dim_size/unit_size)%cu_num)),计算得到备选维度dim_size在当前子系统中的执行次数衡量值B;
其中,cu_size为当前子系统的单次计算量,cu_num为当前子系统中包括的计算单元数量,unit_size为每个计算单元的单次计算量,ROUND(.)为四舍五入函数。
在上述各实施例的基础上,存储策略计算子单元,可以具体用于:
如果目标架构使用缓冲区进行数据缓存,则在每个参数组的约束下,分别计算当前子任务的各数据维度在每级缓冲区中缓存的切片个数,作为在该参数组下的存储策略;
如果目标架构使用缓存进行数据缓存,则在每个参数组的约束下,分别计算当前子任务的各数据维度在每级缓存中缓存的切片个数,作为在该参数组下的存储策略。
在上述各实施例的基础上,存储策略计算子单元,可以具体用于:
针对当前处理参数组,按照从内侧缓冲区朝向外侧缓冲区的顺序,依次获取当前缓冲区;
根据当前缓冲区的当前缓冲量,当前子系统的理论算力和带宽,推导出在当前参数组和当前缓冲量的共同约束下,当达到数据运算时间和数据搬运时间的最优平衡时,各数据维度在当前缓冲区中缓存的切片个数;
返回执行按照从内侧缓冲区朝向外侧缓冲区的顺序,依次获取当前缓冲区的操作,直至在当前参数组的约束下,计算得到各所述数据维度在每级缓冲区中缓存的切片个数。
在上述各实施例的基础上,存储策略计算子单元,可以具体用于:
针对当前处理参数组,按照从内侧缓存朝向外侧缓存的顺序,依次获取当前缓存;
根据当前子任务的每个操作数在当前处理参数组下的复用距离,当前缓冲区的当前缓存量,当前子系统的理论算力和带宽,推导出在当前参数组和当前缓存量的共同约束下,当在存在或不存在缓存未命中情况达到数据运算时间和数据搬运时间最优平衡时,各数据维度在当前缓存中缓存的切片个数;
返回执行按照从内侧缓存朝向外侧缓存的顺序,依次获取当前缓存的操作,直至在当前参数组的约束下,计算得到各所述数据维度在每级缓存中缓存的切片个数。
在上述各实施例的基础上,时空映射单元,可以具体包括:
目标数据流获取子单元,用于获取待时空映射的目标数据流;
时域映射子单元,用于根据目标数据流中定义的与该目标负载任务匹配的各数据维度的执行顺序,并行维度和各数据维度的切片大小,对目标数据流进行时域映射,得到多个具有时域执行顺序的子数据流;
空域映射子单元,用于根据目标负载任务在目标架构中所映射的目标子系统和目标架构中定义的各子系统的连接关系,对各子数据流再进行空域映射,将在设定时间片下执行的每个子数据流分别映射至目标架构各层级的子系统中。
在上述各实施例的基础上,时域映射子单元,可以具体用于:
根据目标数据流中包括的目标子任务中各数据维度的执行顺序,并行维度和和目标子任务中各数据维度的切片大小,将目标数据流拆分为多个子数据流,并确定每个子数据流的执行顺序;
按照各子数据流的执行顺序,并将各子数据流在多个连续时间片上进行顺序排布。
在上述各实施例的基础上,空域映射子单元,可以具体用于:
获取与目标子任务具有架构映射关系的目标子系统,并根据目标子系统和目标架构中定义的各子系统的连接关系,确定出与设定时间片下执行的每个子数据流分别对应的数据流路径;
其中,数据流路径由多个相邻层级的子系统串联构成,且该数据流路径的起始路径点或终止路径点为目标子系统。
在上述各实施例的基础上,还可以包括,时间偏移处理子单元,用于:
在确定出与设定时间片下执行的每个子数据流分别对应的数据流路径之后,在全部子数据流中,获取与目标时间片对应的目标子数据流;
获取与目标子数据流匹配的目标数据流路径,并计算目标数据流路径中包括的路径点数量;
以目标时间片为起点,获取与路径点数量匹配的连续时间片集合;
将目标数据流路径中包括的各路径点顺序映射至连续时间片集合中的各时间片中;
返回执行在全部子数据流中,获取与目标时间片对应的目标子数据流的操作,直至完成对全部子数据流的数据流路径的时间偏移处理。
在上述各实施例的基础上,还可以包括,执行顺序检查子单元,用于:
在完成对全部子数据流的时间偏移处理后,获取与全部子数据流匹配的时间片起终点范围,并在时间片起终点范围内依次获取当前处理时间片;
在每个子数据流的数据流路径中,分别识别与当前时间片匹配的映射路径点;
根据至少一个执行顺序检查规则,对各映射路径点进行数据流执行顺序的检查,并在检测到执行顺序异常时,对各子数据流的数据流路径进行重排布,以确保任务执行顺序不被打乱;
返回执行在时间片起终点范围内依次获取当前处理时间片的操作,直至完成对时间片起终点范围内全部时间片的数据流执行顺序的检查。
在上述各实施例的基础上,所述执行顺序检查规则可以包括:
缓存空间的限制规则,以及缓存使用策略限制规则,其中,缓存使用策略限制规则包括:替换策略或预取策略。
在上述各实施例的基础上,还可以包括统一排布子单元,用于:
获取与多个数据流中的各子数据流分别对应的数据流路径;
根据不同数据流之间的依赖关系,将与各子数据流分别对应的数据流路径在统一时间线上进行排布。
在上述各实施例的基础上,还可以包括,数据接力节点生成单元,用于:
在建立各子任务与目标架构中各子系统之间的任务架构映射关系之后,根据各子任务之间的逻辑依赖关系、各子任务与各子系统之间的任务架构映射关系,以及目标架构中各子系统之间的层级架构关系,推导与各子任务匹配的数据接力空间节点;
根据目标架构中各子系统之间的层级架构关系以及预设的存储管理规则,推导各子系统匹配的数据接力时间节点;
相应的,时域映射子单元可以具体用于:
根据各数据流中定义的各项信息,各数据接力空间节点和各数据接力时间节点,将每个数据流分别进行时域和空域映射,得到负载任务中每个子任务的数据流在各时间片和目标架构的各子系统中的时空映射结果。
在上述各实施例的基础上,数据接力节点生成单元,可以具体用于:
获取具有逻辑依赖关系的第一子任务和第二子任务,其中,第一子任务被第二子任务所依赖;
在各子任务与各子系统之间的任务架构映射关系中,获取与第二子任务匹配的目标子系统;
根据目标架构中各子系统之间的层级架构关系,按照由低层向高层的顺序,依次获取与第二子系统具有数据访问关系的一个备选子系统;
如果确定第一子任务与该备选子系统之间具有连接关系,则将该备选子系统,作为第一子任务与第二子任务之间的数据接力节点;
如果确定第一子任务与该备选子系统之间不具有连接关系,则返回执行依次获取与第二子系统具有数据访问关系的一个备选子系统的操作,直至确定出第一子任务与第二子任务之间的数据接力节点。
在上述各实施例的基础上,数据接力节点生成单元,可以具体用于:
按照预设的存储管理规则以及各子任务的操作数据描述信息,获取目标架构中的每个子系统在每个时间点下对一个或者多个操作数的驻留情况;
根据目标架构中的每个子系统在每个时间点下对一个或者多个操作数的驻留情况,推导出与每个子系统匹配的数据接力时间节点。
在上述各实施例的基础上,还可以包括,任务架构映射关系修正子单元,用于:
在根据目标架构中各子系统之间的层级架构关系以及预设的存储管理规则,推导各子系统匹配的数据接力时间节点之后,使用数据接力空间节点和数据接力时间节点,对各子任务与目标架构中各子系统之间的任务架构映射关系进行修正。
在上述各实施例的基础上,还可以包括,排布结果修正子单元,用于:
在根据不同数据流之间的依赖关系,将与各子数据流分别对应的数据流路径在统一时间线上进行排布之后,如果确定多个数据流中存在数据接力节点,则根据数据接力节点所在位置,对排布结果进行修正;
和/或
如果多个数据流中存在数据同步关系,则根据数据同步关系所在位置,对排布结果进行修正。
在上述各实施例的基础上,评估模块3030,可以具体用于:
根据所述负载仿真报告以及所述架构定义信息,计算执行负载任务所需的时钟周期,并根据所述时钟周期,计算执行负载任务所需的时间;
根据执行负载任务所需的时间,计算目标架构中的功能模块利用率作为性能评估结果;
将负载仿真报告、功能模块利用率以及所述架构定义信息,输入至预先训练的成本模型中,获取功耗评估结果。
本发明实施例所提供的系统建模评估装置可执行本发明任意实施例所提供的系统建模评估方法,具备执行方法相应的功能模块和有益效果。
实施例六
图31为本发明实施例六提供的一种电子设备的结构示意图,如图31所示,该电子设备包括处理器3110、存储器3120、输入装置3130和输出装置3140;电子设备中处理器3110的数量可以是一个或多个,图31中以一个处理器3110为例;电子设备中的处理器3110、存储器3120、输入装置3130和输入装置3140可以通过总线或其他方式连接,图31中以通过总线连接为例。
存储器3120作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的系统建模评估方法对应的程序指令/模块(例如,系统建模评估装置中的信息获取模块3010、负载仿真报告生成模块3020,以及评估模块3030)。处理器3110通过运行存储在存储器3120中的软件程序、指令以及模块,从而执行电子设备的各种功能应用以及数据处理,即实现上述的系统建模评估方法。
也即:获取待加载至目标架构执行基准测试的负载任务,并获取与负载任务匹配的原始负载描述信息,以及与目标架构匹配的架构定义信息;
根据原始负载描述信息和架构定义信息,生成负载任务中每个子任务的数据流在各时间片和目标架构的各子系统中的时空映射结果,作为负载仿真报告;
其中,数据流中包括子任务中各数据维度的执行顺序、并行维度、子任务中各数据维度的切片大小,以及子任务中各数据维度在目标架构的每级缓冲区或每级缓存中的存储策略;
根据负载仿真报告,生成负载任务在目标架构上的性能评估结果和功耗评估结果。
存储器3120可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器3120可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器3120可进一步包括相对于处理器3110远程设置的存储器,这些远程存储器可以通过网络连接至电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置3130可用于接收输入的数字或字符信息,以及产生与电子设备的用户设置以及功能控制有关的键信号输入。输入装置3140可包括显示屏等显示设备。
实施例七
本发明实施例七还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种系统建模评估方法,该方法包括:
获取待加载至目标架构执行基准测试的负载任务,并获取与负载任务匹配的原始负载描述信息,以及与目标架构匹配的架构定义信息;
根据原始负载描述信息和架构定义信息,生成负载任务中每个子任务的数据流在各时间片和目标架构的各子系统中的时空映射结果,作为负载仿真报告;
其中,数据流中包括子任务中各数据维度的执行顺序、并行维度、子任务中各数据维度的切片大小,以及子任务中各数据维度在目标架构的每级缓冲区或每级缓存中的存储策略;
根据负载仿真报告,生成负载任务在目标架构上的性能评估结果和功耗评估结果。
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的系统建模评估方法中的相关操作.
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
值得注意的是,上述搜索装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能模块的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (32)
1.一种系统建模评估方法,其特征在于,包括:
获取待加载至目标架构执行基准测试的负载任务,并获取与负载任务匹配的原始负载描述信息,以及与目标架构匹配的架构定义信息;
根据原始负载描述信息和架构定义信息,生成负载任务中每个子任务的数据流在各时间片和目标架构的各子系统中的时空映射结果,作为负载仿真报告;
其中,数据流中包括子任务中各数据维度的执行顺序、并行维度、子任务中各数据维度的切片大小、以及子任务中各数据维度在目标架构的每级缓冲区或每级缓存中的存储策略;
根据负载仿真报告,生成负载任务在目标架构上的性能评估结果和功耗评估结果;
其中,根据负载仿真报告,生成负载任务在目标架构上的性能评估结果和功耗评估结果,包括:
根据所述负载仿真报告以及所述架构定义信息,计算执行负载任务所需的时钟周期,并根据所述时钟周期,计算执行负载任务所需的时间;
根据执行负载任务所需的时间,计算目标架构中的功能模块利用率作为性能评估结果;
将负载仿真报告、功能模块利用率以及所述架构定义信息,输入至预先训练的成本模型中,获取功耗评估结果。
2.根据权利要求1所述的方法,其特征在于,根据原始负载描述信息和架构定义信息,生成负载任务中每个子任务的数据流在各时间片和目标架构的各子系统中的时空映射结果,包括:
将负载任务拆分为多个子任务,并建立各子任务与目标架构中各子系统之间的任务架构映射关系;
根据每个子任务的数据维度描述信息和该任务架构映射关系,确定与各子任务分别对应的至少一个数据流;
根据各数据流中定义的各项信息,将每个数据流分别进行时域和空域映射,得到负载任务中每个子任务的数据流在各时间片和目标架构的各子系统中的时空映射结果。
3.根据权利要求2所述的方法,其特征在于,建立各子任务与目标架构中各子系统之间的任务架构映射关系,包括:
根据多个子任务之间的逻辑依赖关系,构建得到至少一个依赖关系分组,并确定各依赖关系分组的架构映射顺序;
依据架构映射顺序,分别建立各依赖关系分组中各子任务与目标架构中各子系统之间的任务架构映射关系。
4.根据权利要求3所述的方法,其特征在于,根据多个子任务之间的逻辑依赖关系,构建得到至少一个依赖关系分组,包括:
根据每个子任务的原始负载描述信息,推导出至少一个子任务关系对,其中,每个子任务关系对中包括两个具有逻辑依赖关系的子任务;
根据各子任务关系对,构建得到至少一个依赖关系分组。
5.根据权利要求4所述的方法,其特征在于,根据每个子任务的原始负载描述信息,推导出至少一个子任务关系对,包括:
在每个子任务的原始负载描述信息中解析得到每个子任务的操作数描述信息和操作数访问类型,并将操作数据描述信息相同,操作数访问类型分别为读和写的两个子任务,建立为一个子任务关系对;
和/或
在每个子任务的原始负载描述信息中解析得到显式依赖关系描述信息,并建立与各显式依赖关系描述信息分别对应的子任务关系对。
6.根据权利要求4所述的方法,其特征在于,根据各子任务关系对,构建得到至少一个依赖关系分组,包括:
根据各子任务关系对中所包含的相同子任务,以子任务为节点构建至少一个依赖关系树,其中,不同依赖关系树上的任意子任务之间不具有依赖关系;
将每个依赖关系树上的各子任务划分至同一依赖关系分组中。
7.根据权利要求3所述的方法,其特征在于,确定各依赖关系分组的架构映射顺序,包括:
分别计算每个依赖关系分组中各子任务在至少一个任务属性下的属性值,并根据计算结果,确定与每个依赖关系分组分别对应的属性总值;
根据各属性总值,确定各依赖关系分组的架构映射顺序;
其中,任务属性包括计算量、操作访问量和优先程度指标中的至少一项。
8.根据权利要求3所述的方法,其特征在于,确定各依赖关系分组的架构映射顺序,包括:
分别计算每个依赖关系分组中各子任务与目标架构中各子系统之间的匹配度指标,并根据计算结果,确定与每个依赖关系分组分别对应的指标总值;
根据各指标总值,确定各依赖关系分组的架构映射顺序;
其中,匹配度指标包括计算单元数量匹配度、计算能力匹配度和异构属性一致性中的至少一项。
9.根据权利要求3所述的方法,其特征在于,依据架构映射顺序,分别建立各依赖关系分组中各子任务与目标架构中各子系统之间的任务架构映射关系,包括:
依据架构映射顺序,获取当前处理的目标依赖关系分组,并根据目标依赖关系分组中各子任务之间的逻辑依赖关系,获取当前处理的目标子任务;
根据目标架构中当前的剩余硬件资源,以及各已占用硬件资源的预计释放时间点,确定在目标子任务匹配的预计执行时间点下的全部可用硬件资源;
根据预设的映射策略,在全部可用硬件资源下获取与目标子任务匹配的目标子系统,并建立目标子任务与目标子系统之间的任务架构映射关系。
10.根据权利要求2所述的方法,其特征在于,根据每个子任务的数据维度描述信息和该任务架构映射关系,确定与各子任务分别对应的至少一个数据流,包括:
根据当前子任务的数据维度描述信息和与当前子任务具有任务架构映射关系的当前子系统的硬件描述信息,生成当前子任务的至少一个参数组;其中,参数组中包括数据维度的执行顺序、并行维度和数据维度的切片大小;
在每个参数组的约束下,分别计算当前子任务的各数据维度在目标架构的每级缓冲区或每级缓存中的存储策略;
根据存储策略计算结果,筛选出至少一个目标参数组,并将各目标参数组与匹配的存储策略进行组合,生成与当前子任务对应的至少一个数据流。
11.根据权利要求10所述的方法,其特征在于,根据当前子任务的数据维度描述信息和与当前子任务具有任务架构映射关系的当前子系统的硬件描述信息,生成当前子任务的至少一个参数组,包括:
根据当前子任务中每个数据维度的数据属性,构建备选维度集合;
根据当前子任务中每个数据维度的维度值以及当前子系统的计算属性,在备选维度集合中,选取至少一个并行维度;
根据当前子任务中每个数据维度的数据属性,确定与当前子任务匹配的至少一个数据维度的执行顺序;
根据当前子系统的算力特征、指令集定义和当前子任务的计算类型,确定当前子任务中各数据维度的切片大小;
根据至少一个并行维度、至少一个数据维度的执行顺序以及当前子任务中各数据维度的切片大小,组合得到与当前子任务对应的至少一个参数组。
12.根据权利要求11所述的方法,其特征在于,根据当前子任务中每个数据维度的数据属性,构建备选维度集合,包括:
在当前子任务的各数据维度中滤除规约维度,得到至少一个备选维度;
如果备选维度的数量为多个且允许合并维度操作,则计算两两备选维度的乘积,作为新的备选维度;
使用各所述备选维度,构建得到所述备选维度集合。
13.根据权利要求11所述的方法,其特征在于,根据当前子任务中每个数据维度的维度值以及当前子系统的计算属性,在备选维度集合中,选取至少一个并行维度,包括:
根据当前子系统中包括的计算单元数量,以及每个计算单元的单次计算量,计算得到当前子系统的单次计算量;
根据当前子系统的单次计算量,确定每个备选维度在当前子系统中的执行次数衡量值;
获取执行次数衡量值最大的至少一个备选维度,作为并行维度。
14.根据权利要求13所述的方法,其特征在于,根据当前子系统的单次计算量,确定每个备选维度在当前子系统中的执行次数衡量值,包括:
根据公式:
B=ROUND(dim_size/cu_size)+dim_size/(dim_size+cu_num-((dim_size/unit_size)%cu_num)),计算得到备选维度dim_size在当前子系统中的执行次数衡量值B;
其中,cu_size为当前子系统的单次计算量,cu_num为当前子系统中包括的计算单元数量,unit_size为每个计算单元的单次计算量,ROUND(.)为四舍五入函数。
15.根据权利要求10所述的方法,其特征在于,在每个参数组的约束下,分别计算当前子任务的各数据维度在目标架构的每级缓冲区或每级缓存中的存储策略,包括:
如果目标架构使用缓冲区进行数据缓存,则在每个参数组的约束下,分别计算当前子任务的各数据维度在每级缓冲区中缓存的切片个数,作为在该参数组下的存储策略;
如果目标架构使用缓存进行数据缓存,则在每个参数组的约束下,分别计算当前子任务的各数据维度在每级缓存中缓存的切片个数,作为在该参数组下的存储策略。
16.根据权利要求15所述的方法,其特征在于,在每个参数组的约束下,分别计算当前子任务的各数据维度在每级缓冲区中缓存的切片个数,作为在该参数组下的存储策略,包括:
针对当前处理参数组,按照从内侧缓冲区朝向外侧缓冲区的顺序,依次获取当前缓冲区;
根据当前缓冲区的当前缓冲量,当前子系统的理论算力和带宽,推导出在当前参数组和当前缓冲量的共同约束下,当达到数据运算时间和数据搬运时间的最优平衡时,各数据维度在当前缓冲区中缓存的切片个数;
返回执行按照从内侧缓冲区朝向外侧缓冲区的顺序,依次获取当前缓冲区的操作,直至在当前参数组的约束下,计算得到各所述数据维度在每级缓冲区中缓存的切片个数。
17.根据权利要求15所述的方法,其特征在于,在每个参数组的约束下,分别计算当前子任务的各数据维度在每级缓存中缓存的切片个数,作为在该参数组下的存储策略,包括:
针对当前处理参数组,按照从内侧缓存朝向外侧缓存的顺序,依次获取当前缓存;
根据当前子任务的每个操作数在当前处理参数组下的复用距离、当前缓冲区的当前缓存量、当前子系统的理论算力和带宽,推导出在当前参数组和当前缓存量的共同约束下,当在存在或不存在缓存未命中情况达到数据运算时间和数据搬运时间最优平衡时,各数据维度在当前缓存中缓存的切片个数;
返回执行按照从内侧缓存朝向外侧缓存的顺序,依次获取当前缓存的操作,直至在当前参数组的约束下,计算得到各所述数据维度在每级缓存中缓存的切片个数。
18.根据权利要求2所述的方法,其特征在于,根据各数据流中定义的各项信息,将每个数据流分别进行时域和空域映射,得到负载任务中每个子任务的数据流在各时间片和目标架构的各子系统中的时空映射结果,包括:
获取待时空映射的目标数据流;
根据目标数据流中定义的与该目标负载任务匹配的各数据维度的执行顺序,并行维度和各数据维度的切片大小,对目标数据流进行时域映射,得到多个具有时域执行顺序的子数据流;
根据目标负载任务在目标架构中所映射的目标子系统和目标架构中定义的各子系统的连接关系,对各子数据流再进行空域映射,将在设定时间片下执行的每个子数据流分别映射至目标架构各层级的子系统中。
19.根据权利要求18所述的方法,其特征在于,根据目标数据流中定义的与该负载任务匹配的各数据维度的执行顺序,并行维度和各数据维度的切片大小,对目标数据流进行时域映射,得到多个具有时域执行顺序的子数据流,包括:
根据目标数据流中包括的目标子任务中各数据维度的执行顺序,并行维度和和目标子任务中各数据维度的切片大小,将目标数据流拆分为多个子数据流,并确定每个子数据流的执行顺序;
按照各子数据流的执行顺序,并将各子数据流在多个连续时间片上进行顺序排布。
20.根据权利要求18所述的方法,其特征在于,根据负载任务在目标架构中所映射的目标子系统和目标架构中定义的各子系统的连接关系,对各子数据流再映射空域映射,将在设定时间片下执行的每个子数据流分别映射至目标架构各层级的子系统中,包括:
获取与目标子任务具有架构映射关系的目标子系统,并根据目标子系统和目标架构中定义的各子系统的连接关系,确定出与设定时间片下执行的每个子数据流分别对应的数据流路径;
其中,数据流路径由多个相邻层级的子系统串联构成,且该数据流路径的起始路径点或终止路径点为目标子系统。
21.根据权利要求20所述的方法,其特征在于,在确定出与设定时间片下执行的每个子数据流分别对应的数据流路径之后,还包括:
在全部子数据流中,获取与目标时间片对应的目标子数据流;
获取与目标子数据流匹配的目标数据流路径,并计算目标数据流路径中包括的路径点数量;
以目标时间片为起点,获取与路径点数量匹配的连续时间片集合;
将目标数据流路径中包括的各路径点顺序映射至连续时间片集合中的各时间片中;
返回执行在全部子数据流中,获取与目标时间片对应的目标子数据流的操作,直至完成对全部子数据流的数据流路径的时间偏移处理。
22.根据权利要求21所述的方法,其特征在于,在完成对全部子数据流的时间偏移处理后,还包括:
获取与全部子数据流匹配的时间片起终点范围,并在时间片起终点范围内依次获取当前处理时间片;
在每个子数据流的数据流路径中,分别识别与当前时间片匹配的映射路径点;
根据至少一个执行顺序检查规则,对各映射路径点进行数据流执行顺序的检查,并在检测到执行顺序异常时,对各子数据流的数据流路径进行重排布,以确保任务执行顺序不被打乱;
返回执行在时间片起终点范围内依次获取当前处理时间片的操作,直至完成对时间片起终点范围内全部时间片的数据流执行顺序的检查。
23.根据权利要求22所述的方法,其特征在于,所述执行顺序检查规则包括:
缓存空间的限制规则,以及缓存使用策略限制规则,其中,缓存使用策略限制规则包括:替换策略或预取策略。
24.根据权利要求20所述的方法,其特征在于,所述方法还包括:
获取与多个数据流中的各子数据流分别对应的数据流路径;
根据不同数据流之间的依赖关系,将与各子数据流分别对应的数据流路径在统一时间线上进行排布。
25.根据权利要求3-24任一项所述的方法,其特征在于,在建立各子任务与目标架构中各子系统之间的任务架构映射关系之后,还包括:
根据各子任务之间的逻辑依赖关系、各子任务与各子系统之间的任务架构映射关系,以及目标架构中各子系统之间的层级架构关系,推导与各子任务匹配的数据接力空间节点;
根据目标架构中各子系统之间的层级架构关系以及预设的存储管理规则,推导各子系统匹配的数据接力时间节点;
根据各数据流中定义的各项信息,将每个数据流分别进行时域和空域映射,得到负载任务中每个子任务的数据流在各时间片和目标架构的各子系统中的时空映射结果,包括:
根据各数据流中定义的各项信息,各数据接力空间节点和各数据接力时间节点,将每个数据流分别进行时域和空域映射,得到负载任务中每个子任务的数据流在各时间片和目标架构的各子系统中的时空映射结果。
26.根据权利要求25所述的方法,其特征在于,根据各子任务之间的逻辑依赖关系、各子任务与各子系统之间的任务架构映射关系,以及目标架构中各子系统之间的层级架构关系,推导与各子任务匹配的数据接力空间节点,包括:
获取具有逻辑依赖关系的第一子任务和第二子任务,其中,第一子任务被第二子任务所依赖;
在各子任务与各子系统之间的任务架构映射关系中,获取与第二子任务匹配的目标子系统;
根据目标架构中各子系统之间的层级架构关系,按照由低层向高层的顺序,依次获取与第二子系统具有数据访问关系的一个备选子系统;
如果确定第一子任务与该备选子系统之间具有连接关系,则将该备选子系统,作为第一子任务与第二子任务之间的数据接力节点;
如果确定第一子任务与该备选子系统之间不具有连接关系,则返回执行依次获取与第二子系统具有数据访问关系的一个备选子系统的操作,直至确定出第一子任务与第二子任务之间的数据接力节点。
27.根据权利要求25所述的方法,其特征在于,根据目标架构中各子系统之间的层级架构关系以及预设的存储管理规则,推导各子系统匹配的数据接力时间节点,包括:
按照预设的存储管理规则以及各子任务的操作数据描述信息,获取目标架构中的每个子系统在每个时间点下对一个或者多个操作数的驻留情况;
根据目标架构中的每个子系统在每个时间点下对一个或者多个操作数的驻留情况,推导出与每个子系统匹配的数据接力时间节点。
28.根据权利要求25所述的方法,其特征在于,在根据目标架构中各子系统之间的层级架构关系以及预设的存储管理规则,推导各子系统匹配的数据接力时间节点之后,还包括:
使用数据接力空间节点和数据接力时间节点,对各子任务与目标架构中各子系统之间的任务架构映射关系进行修正。
29.根据权利要求25所述的方法,其特征在于,在根据不同数据流之间的依赖关系,将与各子数据流分别对应的数据流路径在统一时间线上进行排布之后,还包括:
如果确定多个数据流中存在数据接力节点,则根据数据接力节点所在位置,对排布结果进行修正;
和/或
如果多个数据流中存在数据同步关系,则根据数据同步关系所在位置,对排布结果进行修正。
30.一种系统建模评估装置,其特征在于,包括:
信息获取模块,用于获取待加载至目标架构执行基准测试的负载任务,并获取与负载任务匹配的原始负载描述信息,以及与目标架构匹配的架构定义信息;
负载仿真报告生成模块,用于根据原始负载描述信息和架构定义信息,生成负载任务中每个子任务的数据流在各时间片和目标架构的各子系统中的时空映射结果,作为负载仿真报告;
其中,数据流中包括子任务中各数据维度的执行顺序、并行维度、子任务中各数据维度的切片大小、以及子任务中各数据维度在目标架构的每级缓冲区或每级缓存中的存储策略;
评估模块,用于根据负载仿真报告,生成负载任务在目标架构上的性能评估结果和功耗评估结果;
其中,所述评估模块,具体用于:
根据所述负载仿真报告以及所述架构定义信息,计算执行负载任务所需的时钟周期,并根据所述时钟周期,计算执行负载任务所需的时间;
根据执行负载任务所需的时间,计算目标架构中的功能模块利用率作为性能评估结果;
将负载仿真报告、功能模块利用率以及所述架构定义信息,输入至预先训练的成本模型中,获取功耗评估结果。
31. 一种电子设备,其特征在于,所述电子设备包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-29中任一项所述的系统建模评估方法。
32.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现权利要求1-29中任一项所述的系统建模评估方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310761528.XA CN116501594B (zh) | 2023-06-27 | 2023-06-27 | 系统建模评估方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310761528.XA CN116501594B (zh) | 2023-06-27 | 2023-06-27 | 系统建模评估方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116501594A true CN116501594A (zh) | 2023-07-28 |
CN116501594B CN116501594B (zh) | 2023-09-08 |
Family
ID=87316923
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310761528.XA Active CN116501594B (zh) | 2023-06-27 | 2023-06-27 | 系统建模评估方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116501594B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118069896A (zh) * | 2024-04-22 | 2024-05-24 | 北京壁仞科技开发有限公司 | 功耗数据处理方法、装置、电子设备及存储介质 |
Citations (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU8017882A (en) * | 1981-05-22 | 1982-11-25 | Data General Corporation | Data processing system |
CA2017969A1 (en) * | 1989-08-07 | 1991-02-07 | Richard Alan Becker | Dynamic graphics arrangement for displaying spatial-time-series data |
WO2009001368A2 (en) * | 2007-06-28 | 2008-12-31 | Indian Institute Of Science | A method and system-on-chip fabric |
US20180357543A1 (en) * | 2016-01-27 | 2018-12-13 | Bonsai AI, Inc. | Artificial intelligence system configured to measure performance of artificial intelligence over time |
US20180357552A1 (en) * | 2016-01-27 | 2018-12-13 | Bonsai AI, Inc. | Artificial Intelligence Engine Having Various Algorithms to Build Different Concepts Contained Within a Same AI Model |
CN109376041A (zh) * | 2018-09-19 | 2019-02-22 | 广州优亿信息科技有限公司 | 一种用于ai手机芯片的基准测试系统及其工作流程 |
US20190066016A1 (en) * | 2017-08-31 | 2019-02-28 | Accenture Global Solutions Limited | Benchmarking for automated task management |
CN109408351A (zh) * | 2018-11-01 | 2019-03-01 | 郑州云海信息技术有限公司 | 一种ai环境检测和深度学习环境自动部署的方法和装置 |
CN110515739A (zh) * | 2019-10-23 | 2019-11-29 | 上海燧原智能科技有限公司 | 深度学习神经网络模型负载计算方法、装置、设备及介质 |
US20200042419A1 (en) * | 2018-07-31 | 2020-02-06 | Alibaba Group Holding Limited | System and method for benchmarking ai hardware using synthetic ai model |
WO2020049182A1 (en) * | 2018-09-08 | 2020-03-12 | Alpvision S.A. | Cognitive computing methods and systems based on biological neural networks |
US20200117906A1 (en) * | 2018-10-12 | 2020-04-16 | Adobe Inc. | Space-time memory network for locating target object in video content |
CN111143174A (zh) * | 2018-11-02 | 2020-05-12 | 辉达公司 | 在共享功率/热约束下操作的硬件的最佳操作点估计器 |
US20200218985A1 (en) * | 2019-01-03 | 2020-07-09 | Alibaba Group Holding Limited | System and method for synthetic-model-based benchmarking of ai hardware |
CA3065651A1 (en) * | 2019-04-18 | 2020-10-18 | Cambricon Technologies Corporation Limited | Data processing method and related products |
WO2020252390A1 (en) * | 2019-06-12 | 2020-12-17 | Arigato Machine, Inc., Dba Manifold | Predictive autoscaling and resource optimization |
US20210216338A1 (en) * | 2020-01-10 | 2021-07-15 | International Business Machines Corporation | Generation of benchmarks of applications based on performance traces |
CN113128143A (zh) * | 2021-06-17 | 2021-07-16 | 北京燧原智能科技有限公司 | Ai处理器的仿真方法、装置、计算机设备及存储介质 |
US20210326501A1 (en) * | 2018-04-22 | 2021-10-21 | Sas Institute Inc. | Data Set Generation for Performance Evaluation |
US20220091907A1 (en) * | 2020-09-22 | 2022-03-24 | Shunyao CAD Co., Ltd. | Processor based logic simulation acceleration and emulation system |
CN114461382A (zh) * | 2021-12-27 | 2022-05-10 | 天翼云科技有限公司 | 可灵活配置的算力调度实现方法、装置及存储介质 |
CN115580882A (zh) * | 2021-06-21 | 2023-01-06 | 中国电信股份有限公司 | 动态网络切片资源分配方法及装置、存储介质及电子设备 |
US20230077527A1 (en) * | 2020-12-31 | 2023-03-16 | Ajay Sarkar | Local agent system for obtaining hardware monitoring and risk information utilizing machine learning models |
CN115904539A (zh) * | 2022-11-29 | 2023-04-04 | 上海燧原科技有限公司 | 一种切分策略的在线生成方法、装置、设备及存储介质 |
CN116048944A (zh) * | 2023-02-21 | 2023-05-02 | 陈敏 | 用于大数据平台的负载趋势预测方法及系统 |
CN116069152A (zh) * | 2023-03-06 | 2023-05-05 | 鹏城实验室 | 针对ai计算集群的运行频率控制方法、系统及相关设备 |
-
2023
- 2023-06-27 CN CN202310761528.XA patent/CN116501594B/zh active Active
Patent Citations (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU8017882A (en) * | 1981-05-22 | 1982-11-25 | Data General Corporation | Data processing system |
CA2017969A1 (en) * | 1989-08-07 | 1991-02-07 | Richard Alan Becker | Dynamic graphics arrangement for displaying spatial-time-series data |
WO2009001368A2 (en) * | 2007-06-28 | 2008-12-31 | Indian Institute Of Science | A method and system-on-chip fabric |
US20180357543A1 (en) * | 2016-01-27 | 2018-12-13 | Bonsai AI, Inc. | Artificial intelligence system configured to measure performance of artificial intelligence over time |
US20180357552A1 (en) * | 2016-01-27 | 2018-12-13 | Bonsai AI, Inc. | Artificial Intelligence Engine Having Various Algorithms to Build Different Concepts Contained Within a Same AI Model |
US20190066016A1 (en) * | 2017-08-31 | 2019-02-28 | Accenture Global Solutions Limited | Benchmarking for automated task management |
US20210326501A1 (en) * | 2018-04-22 | 2021-10-21 | Sas Institute Inc. | Data Set Generation for Performance Evaluation |
US20200042419A1 (en) * | 2018-07-31 | 2020-02-06 | Alibaba Group Holding Limited | System and method for benchmarking ai hardware using synthetic ai model |
CN112673382A (zh) * | 2018-09-08 | 2021-04-16 | 艾普维真股份有限公司 | 基于生物神经网络的认知计算方法与系统 |
WO2020049182A1 (en) * | 2018-09-08 | 2020-03-12 | Alpvision S.A. | Cognitive computing methods and systems based on biological neural networks |
CN109376041A (zh) * | 2018-09-19 | 2019-02-22 | 广州优亿信息科技有限公司 | 一种用于ai手机芯片的基准测试系统及其工作流程 |
US20200117906A1 (en) * | 2018-10-12 | 2020-04-16 | Adobe Inc. | Space-time memory network for locating target object in video content |
CN109408351A (zh) * | 2018-11-01 | 2019-03-01 | 郑州云海信息技术有限公司 | 一种ai环境检测和深度学习环境自动部署的方法和装置 |
CN111143174A (zh) * | 2018-11-02 | 2020-05-12 | 辉达公司 | 在共享功率/热约束下操作的硬件的最佳操作点估计器 |
US20200218985A1 (en) * | 2019-01-03 | 2020-07-09 | Alibaba Group Holding Limited | System and method for synthetic-model-based benchmarking of ai hardware |
CA3065651A1 (en) * | 2019-04-18 | 2020-10-18 | Cambricon Technologies Corporation Limited | Data processing method and related products |
WO2020252390A1 (en) * | 2019-06-12 | 2020-12-17 | Arigato Machine, Inc., Dba Manifold | Predictive autoscaling and resource optimization |
CN110515739A (zh) * | 2019-10-23 | 2019-11-29 | 上海燧原智能科技有限公司 | 深度学习神经网络模型负载计算方法、装置、设备及介质 |
US20210216338A1 (en) * | 2020-01-10 | 2021-07-15 | International Business Machines Corporation | Generation of benchmarks of applications based on performance traces |
US20220091907A1 (en) * | 2020-09-22 | 2022-03-24 | Shunyao CAD Co., Ltd. | Processor based logic simulation acceleration and emulation system |
US20230077527A1 (en) * | 2020-12-31 | 2023-03-16 | Ajay Sarkar | Local agent system for obtaining hardware monitoring and risk information utilizing machine learning models |
CN113128143A (zh) * | 2021-06-17 | 2021-07-16 | 北京燧原智能科技有限公司 | Ai处理器的仿真方法、装置、计算机设备及存储介质 |
CN115580882A (zh) * | 2021-06-21 | 2023-01-06 | 中国电信股份有限公司 | 动态网络切片资源分配方法及装置、存储介质及电子设备 |
CN114461382A (zh) * | 2021-12-27 | 2022-05-10 | 天翼云科技有限公司 | 可灵活配置的算力调度实现方法、装置及存储介质 |
CN115904539A (zh) * | 2022-11-29 | 2023-04-04 | 上海燧原科技有限公司 | 一种切分策略的在线生成方法、装置、设备及存储介质 |
CN116048944A (zh) * | 2023-02-21 | 2023-05-02 | 陈敏 | 用于大数据平台的负载趋势预测方法及系统 |
CN116069152A (zh) * | 2023-03-06 | 2023-05-05 | 鹏城实验室 | 针对ai计算集群的运行频率控制方法、系统及相关设备 |
Non-Patent Citations (2)
Title |
---|
WANLING GAO ETC.: "AIBench Scenario: Scenario-distilling AI Benchmarking", INTERNATIONAL CONFERENCE ON PARALLEL ARCHITECTURES AND COMPILATION TECHNIQUES * |
杨婷婷;张笛;沙通;: "移动端AI芯片能力评测工具研究", 广东通信技术, no. 08 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118069896A (zh) * | 2024-04-22 | 2024-05-24 | 北京壁仞科技开发有限公司 | 功耗数据处理方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN116501594B (zh) | 2023-09-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11853867B2 (en) | Task activating for accelerated deep learning | |
US11232348B2 (en) | Data structure descriptors for deep learning acceleration | |
US11328208B2 (en) | Processor element redundancy for accelerated deep learning | |
US11488004B2 (en) | Neuron smearing for accelerated deep learning | |
US20220172030A1 (en) | Numerical representation for neural networks | |
US20200380370A1 (en) | Floating-point unit stochastic rounding for accelerated deep learning | |
CN116501594B (zh) | 系统建模评估方法、装置、电子设备及存储介质 | |
CN116501503B (zh) | 负载任务的架构映射方法、装置、计算机设备及介质 | |
CN116126777A (zh) | 一种基于网算一体的多芯粒集成系统网络设计方法 | |
CN116501504B (zh) | 数据流的时空映射方法、装置、电子设备及存储介质 | |
CN117573316A (zh) | 业务计算图的优化方法、处理方法、系统及存储介质 | |
Rai | A feasibility study on the application of stream architectures for packet processing applications | |
TWI434185B (zh) | 虛擬主機合併方法與管理實體主機 | |
CN111813540A (zh) | 一种基于图划分的tcam的分配方法 |
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 | ||
CP03 | Change of name, title or address |
Address after: Room a-522, 188 Yesheng Road, Lingang New District, China (Shanghai) pilot Free Trade Zone, Pudong New Area, Shanghai, 201306 Patentee after: Shanghai Suiyuan Technology Co.,Ltd. Country or region after: China Address before: Room a-522, 188 Yesheng Road, Lingang New District, China (Shanghai) pilot Free Trade Zone, Pudong New Area, Shanghai, 201306 Patentee before: SHANGHAI ENFLAME TECHNOLOGY Co.,Ltd. Country or region before: China |
|
CP03 | Change of name, title or address |