CN116501505B - 负载任务的数据流生成方法、装置、设备及介质 - Google Patents

负载任务的数据流生成方法、装置、设备及介质 Download PDF

Info

Publication number
CN116501505B
CN116501505B CN202310761943.5A CN202310761943A CN116501505B CN 116501505 B CN116501505 B CN 116501505B CN 202310761943 A CN202310761943 A CN 202310761943A CN 116501505 B CN116501505 B CN 116501505B
Authority
CN
China
Prior art keywords
current
data
dimension
subtask
task
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202310761943.5A
Other languages
English (en)
Other versions
CN116501505A (zh
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.)
Shanghai Suiyuan Technology Co ltd
Original Assignee
Shanghai Enflame 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 Shanghai Enflame Technology Co ltd filed Critical Shanghai Enflame Technology Co ltd
Priority to CN202310761943.5A priority Critical patent/CN116501505B/zh
Publication of CN116501505A publication Critical patent/CN116501505A/zh
Application granted granted Critical
Publication of CN116501505B publication Critical patent/CN116501505B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation 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/505Allocation 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording 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/3409Recording 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/3433Recording 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording 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/3447Performance evaluation by modeling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5017Task decomposition
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Evolutionary Biology (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Debugging And Monitoring (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

本发明实施例公开了一种负载任务的数据流生成方法、装置、设备及介质。该方法包括:获取负载任务中各子任务与目标架构中各子系统之间的任务架构映射关系;根据每个子任务的数据维度描述信息和该任务架构映射关系,确定与各子任务分别对应的至少一个数据流,作为该基准测试中的一项建模参考信息。本发明实施例的技术方案提供了一种全面、高效、准确的生成负载任务的数据流新方式,为后续进行灵活性、可扩展性的基准测试建模提供高效可用的数据准备,在充分利用架构硬件性能的基础上,减低了基准测试建模的开发代价和周期,并可以辅助提高架构评估的效率以及准确性,从而在架构探索阶段完成更多、更广、更深入的评估。

Description

负载任务的数据流生成方法、装置、设备及介质
技术领域
本发明实施例涉及人工智能芯片架构的建模测试技术,尤其涉及一种负载任务的数据流生成方法、装置、设备及介质。
背景技术
在进行AI(Artificial Intelligence,人工智能)芯片的架构探索时,对于给定的负载任务以及特定的某种架构,我们需要通过基准测试评估负载任务在该架构上的执行情况。
面对不同类型的负载任务,以及与之对应的不同规模的芯片架构层级(例如,单颗芯片,多颗芯粒,多卡以及集群等),往往需要针对特定的芯片架构和负载任务类型计算数据流。不同的数据流计算方法会很大程度影响负载任务的执行性能和功耗等,进而影响基准测试的性能评估结果。
发明内容
本发明提供一种负载任务的数据流生成方法、装置、设备及介质,以高效、准确的生成负载任务的数据流,为后续进行基准测试建模提供高效可用的数据准备。
第一方面,本发明实施例提供了一种负载任务的数据流生成方法,该方法包括:
获取负载任务中各子任务与目标架构中各子系统之间的任务架构映射关系;其中,该负载任务为待加载至目标架构执行基准测试的任务;
根据每个子任务的数据维度描述信息和该任务架构映射关系,确定与各子任务分别对应的至少一个数据流,作为该基准测试中的一项建模参考信息;
其中,数据流中包括:子任务中各数据维度的执行顺序、并行维度、子任务中各数据维度的切片大小,以及子任务中各数据维度在目标架构的每级缓冲区或每级缓存中的存储策略。
第二方面,本发明实施例还提供了一种负载任务的数据流生成装置,该装置包括:
任务架构映射关系获取模块,用于获取负载任务中各子任务与目标架构中各子系统之间的任务架构映射关系;其中,该负载任务为待加载至目标架构执行基准测试的任务;
数据流确定模块,用于根据每个子任务的数据维度描述信息和该任务架构映射关系,确定与各子任务分别对应的至少一个数据流,作为该基准测试中的一项建模参考信息;
其中,数据流中包括:子任务中各数据维度的执行顺序、并行维度、子任务中各数据维度的切片大小,以及子任务中各数据维度在目标架构的每级缓冲区或每级缓存中的存储策略。
第三方面,本发明实施例还提供了一种电子设备,该电子设备包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行如本发明任一实施例所述的负载任务的数据流生成方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现如本发明任一实施例所述的负载任务的数据流生成方法。
本发明实施例的技术方案通过获取负载任务中各子任务与目标架构中各子系统之间的任务架构映射关系;根据每个子任务的数据维度描述信息和该任务架构映射关系,确定与各子任务分别对应的至少一个数据流,作为该基准测试中的一项建模参考信息的技术手段,提供了一种全面、高效、准确的生成负载任务的数据流新方式,为后续进行灵活性、可扩展性的基准测试建模提供高效可用的数据准备,在充分利用架构硬件性能的基础上,减低了基准测试建模的开发代价和周期,并可以辅助提高架构评估的效率以及准确性,从而在架构探索阶段完成更多、更广、更深入的评估。
附图说明
图1为本发明实施例一提供的一种负载任务的数据流生成方法的流程图;
图2是本发明实施例二提供的一种负载任务的数据流生成方法的流程图;
图3是本发明实施例三中提供的一种负载任务的数据流生成方法的流程图;
图4是本发明实施例四中提供的一种负载任务的数据流生成装置的结构图;
图5是实现本发明实施例的负载任务的数据流生成方法的电子设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1为本发明实施例一提供的一种负载任务的数据流生成方法的流程图,本实施例可适用于生成负载任务在目标结构中所适配的数据流情况,该方法可以由负载任务的数据流生成装置来执行,该装置可以采用软件和/或硬件的方式实现,并一般可以集成在具有数据处理功能的计算机设备中。
相应的,如图1所示,该方法具体包括如下步骤:
S110、获取负载任务中各子任务与目标架构中各子系统之间的任务架构映射关系,其中,该负载任务为待加载至目标架构执行基准测试的任务。
其中,目标架构是指待进行架构探索的AI架构,可以理解为一个用于处理负载任务的硬件资源集合。目标架构可以为一个已有的硬件实体架构,也可以为一个处于开发阶段的自定义软件实现架构等,目标架构中包括的硬件资源集合中可以全部为同构硬件资源,也可以为异构硬件资源等,本实施例对此并不进行限制。
具体的,该目标架构中可以包括有一个或者多个硬件子系统,不同子系统在该目标架构中具有设定的拓扑连接关系,以构成设定的层级架构。其中,每个子系统用于实现设定的子系统功能。例如,计算功能、编解码功能或者存储功能等。
在本实施例中,该目标架构可以通过子系统定义和子系统规格进行描述,上述两种信息可以统称为目标架构的架构定义信息。在该子系统定义中可以包含有下述信息:目标架构中包含的子系统层级、子系统例化数目、各子系统的标识信息,每个子系统与其他子系统之间的拓扑连接关系、子系统功能以及每个子系统内功能模块的例化数目,例如计算子系统中包括有多个计算单元作为功能模块。同时,针对每个子系统,分别通过子系统规格进行描述。不同功能类型的子系统,其子系统规格一般不同。
在一个具体的例子中,针对实现计算核计算的子系统,其子系统规格中一般包含:微架构类型,最高频率,向量计算算力,张量计算算力,张量计算形状,读、写带宽以及读、写端口数目;针对实现片内存储功能的子系统,其子系统规格中一般包含:微架构类型,存储容量,与其相连的子系统的读、写带宽,以及与其相连的子系统的读、写端口数目;针对实现片外存储功能的子系统,其子系统规格中一般包含:微架构类型,存储容量,与其相连的子系统的读、写带宽以及与其相连的子系统的读、写端口数目;针对实现子系统间互联功能的子系统,其子系统规格中一般包含:微架构类型,连接的子系统层级,读、写带宽以及读、写端口数目;针对实现子系统内互联功能的子系统,其子系统规格中一般包含:微架构类型,子系统类型,读、写带宽以及读、写端口数目等。
需要说明的是,针对硬件实体架构,该例化数目可以理解为该硬件实体架构中实际包含的数目,针对自定义软件实现架构,该例化数目可以理解为软件仿真得到的数目。
在本实施例中,负载任务可以理解为需要加载至目标架构中执行基准测试的任务,也即,该负载任务可以由目标架构执行,以实现一项或者多项负载功能。具体的,该负载任务可以为计算任务、存储任务或者编解码任务等实现单一功能类型的任务,还可以为多个单一功能类型的任务组合构成的多功能类型复合任务等,本实施例对此并不进行限制。
在本实施例中,测试人员可以根据实际的架构探索需求,自定义设置该负载任务,以满足实际的建模评估需求。具体的,该负载任务可以按照预设的拆分规则拆分为一个或者多个子任务。例如,如果该负载任务为基于设定计算图的计算任务,则可以按照计算图中包括的各个计算算子,将负载任务拆分为多个子任务,或者,还可以首先分析该负载任务中包含的功能类型数量,并以功能类型为单位,将负载任务拆分为多个子任务,或者,还可以首先评估该负载任务所需的硬件资源总数量,并基于该硬件资源总数量以及预设的子任务划分数量,预估每个子任务所需的平均硬件资源数量,并基于该平均硬件资源数量,将负载任务拆分为多个子任务等,本实施例对此并不进行限制。
在本实施例的一个可选的实施方式中,可以初始化构建得到负载任务中各子任务的原始负载描述信息,进而,可以通过解析各子任务的原始负载描述信息的方式,简单、便捷的将该负载任务拆分为多个子任务。
可选的,各子任务的原始负载描述信息中可以包括:每个子任务的所属任务名称、域描述信息、操作数描述信息以及操作数访问类型,以及各子任务之间的依赖关系描述信息等。
其中,域描述信息中包含子任务本身所包含的数据维度以及操作数的形状描述信息;操作数描述信息中包含操作数名称、操作数域描述信息以及操作数的数据精度;操作数访问类型中包含读或者写等计算类型,依赖关系描述信息中包含子任务与其他子任务的显示依赖关系。
进一步的,原始负载描述信息中需要指定每个子任务的需求资源类型,也即,该需求资源类型定义一个子任务需要配置在何种功能类型的硬件资源(子系统)中执行。
在本实施例中,负载任务中各子任务与目标架构中各子系统之间的任务架构映射关系用于描述负载任务中的哪个子任务需要映射至目标架构中的哪个子系统中执行基准测试仿真。
其中,可以使用预先构建的一个或者多个映射策略,将某一个具体的子任务映射至目标架构中的某一个具体的子系统中。上述映射策略可以规定某些子任务可以被分配到多个运算资源上,某些子任务只由单个运算资源执行,多个子任务可以分配到同样的运算资源上,依序执行,以及异构任务需要根据其指定的架构资源,依序分配到特定的异构架构上等。
当然,可以理解的是,除了可以使用上述预先构建的一个或者多个映射策略,还可以通过预留人工干预接口的方式,由测试人员手动加入自定义的映射策略,例如,数据并行映射策略、模型并行映射策略或者流水并行映射策略等,以满足测试人员对某一特定方向的映射效果的意图探究。
S120、根据每个子任务的数据维度描述信息和该任务架构映射关系,确定与各子任务分别对应的至少一个数据流,作为该基准测试中的一项建模参考信息。
其中,数据流中包括:子任务中各数据维度的执行顺序、并行维度、子任务中各数据维度的切片大小,以及子任务中各数据维度在目标架构的每级缓冲区或每级缓存中的存储策略。
在本实施例中,在获取负载任务中各子任务与目标架构中各子系统之间的任务架构映射关系之后,通过结合每个子任务的数据维度描述信息,可以生成与每个子任务分别对应的一个或者多个数据流。
其中,该数据维度描述信息可以包括子任务本身所包含的数据维度以及操作数的形状描述信息,例如,针对一个矩阵乘的子任务,与其对应的数据维度描述信息可以为[m,n,k]。可选的,可以在子任务的原始负载描述信息中提取域描述信息,并将该域描述信息作为数据维度描述信息。
其中,子任务中各数据维度的执行顺序可以理解为子任务在单个硬件计算单元上的数据移动顺序。该数据移动顺序可以理解为取操作数的顺序或者操作数的搬运顺序。可以理解的是,如果子任务中包括多个数据维度,上述各数据维度的搬运过程对应一个多层级的循环搬运过程,上述各数据维度的执行顺序决定了哪个数据维度为上述循环过程中的外层循环变量,哪个数据维度为上述循环过程中的内层循环变量。
不同的数据维度执行顺序一般对应不同的数据搬运效率。可选地,可以根据每个数据维度的数据量,例如,m、n以及k的具体取值,以及每个数据维度在实际计算过程中的数据属性,例如,是否为规约(reduce)维度等,确定出子任务中各数据维度的执行顺序。
并行维度可以理解为子任务本身所包含的各数据维度中,能够分配到不同硬件计算单元上进行并行计算的维度。可选地,可以根据每个数据维度的数据量以及子系统中包括的可用硬件计算单元的数目,计算得到每个数据维度在硬件计算单元上的执行次数,并基于上述执行次数计算结果,确定出最适宜的并行维度。
子任务中各数据维度的切片大小,可以理解为每个硬件计算单元中所能计算的最小数据量,该切片大小可以由目标架构中架构定义信息确定。
子任务中各数据维度在目标架构的每级缓冲区中的存储策略,可以理解为子任务的每个数据维度在目标架构中的各个缓冲区存储层级上的存储状态。子任务中各数据维度在目标架构的每级缓存中的存储策略,可以理解为子任务的每个数据维度在目标架构的每级缓存中的复用信息。可选的,可以通过每个子任务的数据维度描述信息以及目标架构的架构定义信息,构建一个或者多个约束条件,并通过求解线性方程组的方式,确定出子任务中各数据维度在目标架构的每级缓冲区或每级缓存中的存储策略。
可以理解的是,目标架构一般会择一选择缓冲区(buffer)存储策略或者缓存(cache)存储策略,进而,数据流中一般仅包括有子任务中各数据维度在目标架构的每级缓冲区中的存储策略,或者,仅包括有子任务中各数据维度在目标架构的每级缓存中的存储策略。
在本实施例中,可以自由设置子任务中各数据维度的执行顺序、并行维度以及子任务中各数据维度的切片大小的确定顺序,而子任务中各数据维度在目标架构的每级缓冲区或每级缓存中的存储策略需要在上述三项参数确定后,以上述三项参数的具体值为基础确定得到。
本发明实施例的技术方案通过获取负载任务中各子任务与目标架构中各子系统之间的任务架构映射关系;根据每个子任务的数据维度描述信息和该任务架构映射关系,确定与各子任务分别对应的至少一个数据流,作为该基准测试中的一项建模参考信息的技术手段,提供了一种全面、高效、准确的生成负载任务的数据流新方式,为后续进行灵活性、可扩展性的基准测试建模提供高效可用的数据准备,在充分利用架构硬件性能的基础上,减低了基准测试建模的开发代价和周期,并可以辅助提高架构评估的效率以及准确性,从而在架构探索阶段完成更多、更广、更深入的评估。
在本实施例的一个可选的实施方式中,根据每个子任务的数据维度描述信息和该任务架构映射关系,确定与各子任务分别对应的至少一个数据流,可以包括:
根据当前子任务的数据维度描述信息和与当前子任务具有任务架构映射关系的当前子系统的硬件描述信息,生成当前子任务的至少一个参数组;其中,参数组中包括数据维度的执行顺序,并行维度和数据维度的切片大小;
在每个参数组的约束下,分别计算当前子任务的各数据维度在目标架构的每级缓冲区或每级缓存中的存储策略;
根据存储策略计算结果,筛选出至少一个目标参数组,并将各目标参数组与匹配的存储策略进行组合,生成与当前子任务对应的至少一个数据流。
在本可选实施方式中,针对负载任务中的每个当前子任务,可以首先确定出一个或者多个由数据维度的执行顺序,并行维度和数据维度的切片大小构成的参数组,之后,分别计算出与每个参数组分别对应的缓冲区或者缓存的存储策略之后,基于不同缓存策略的缓存效果,在全部参数组中筛选出缓存效果较优的一个或者多个目标参数组,并将每个目标参数组,与该目标参数组对应的缓存策略进行组合,得到与该当前子任务对应的一个或者多个数据流。
通过上述设置,可以在结合子任务的数据维度信息和目标框架的框架定义信息的基础上,快速、准确的生成与每个子任务相适配的最优数据流,以提供一种针对不同负载任务,不同架构的高性能、在线的数据流生成方案,满足后续的基准测试建模需求。
实施例二
图2是本发明实施例二提供的一种负载任务的数据流生成方法的流程图,本实施例以上述实施例为技术进行细化,在本实施例中,将根据当前子任务的数据维度描述信息和与当前子任务具有任务架构映射关系的当前子系统的硬件描述信息,生成当前子任务的至少一个参数组的操作进行具体化。
相应的,如图2所示,所述方法具体可以包括:
S210、获取负载任务中各子任务与目标架构中各子系统之间的任务架构映射关系;其中,该负载任务为待加载至目标架构执行基准测试的任务。
S220、根据当前子任务中每个数据维度的数据属性,构建备选维度集合。
在本实施例中,以负载任务中的一个子任务,也即当前子任务为例,描述该当前子任务的数据流生成过程。其中,本实施例的技术方案以先确定并行维度,再确定一个或者多个数据维度的执行顺序,最后确定切片大小的确定顺序为例进行描述,实际上,上述三种参数的确定顺序可以任意设置,本实施例对此并不进行限制。
其中,每个数据维度的数据属性,可以理解为每个数据维度在进行当前子任务的计算过程中所呈现出来的特性。典型的,该数据属性可以具体为数据维度是否为规约维度的二值化结果(是,或者否)。其中,规约维度可以理解为在计算过程中会消失的维度。例如,针对一个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}的备选维度集合。
S230、根据当前子任务中每个数据维度的维度值以及当前子系统的计算属性,在备选维度集合中,选取至少一个并行维度。
根据并行维度的定义可知,在计算得到每个数据维度在硬件计算单元上的执行次数之后,如果一个数据维度在计算单元中的执行次数越多,则将该数据维度作为并行维度的收益也越大。因此,可以将上述执行次数作为一项确定并行维度的重要指标。
具体的,通过前述获取的负载任务中各子任务与目标架构中各子系统之间的任务架构映射关系,可以在该任务架构映射关系中,获取与当前子任务匹配的当前子系统。也即,该当前子任务在基准任务建模过程中,需要由当前子系统中的各硬件计算单元执行。相应的,在计算得到每个数据维度在硬件计算单元上的执行次数时,需要首先获取当前子系统的计算属性,其中,该计算属性中可以包括:当前子系统中包括的计算单元数量,以及当前子系统中每个计算单元的单次计算量等算力描述信息。
在本实施例的一个可选的实施方式中,根据当前子任务中每个数据维度的维度值以及当前子系统的计算属性,在备选维度集合中,选取至少一个并行维度可以包括:
根据当前子系统中包括的计算单元数量,以及每个计算单元的单次计算量,计算得到当前子系统的单次计算量;根据当前子系统的单次计算量,确定每个备选维度在当前子系统中的执行次数衡量值;获取执行次数衡量值最大的至少一个备选维度,作为并行维度。
其中,执行次数衡量值,可以理解为与执行次数相关联的一个描述参数,具体的,该执行次数衡量值可以直接为每个维度在当前子系统中的执行次数。进一步的,考虑到执行次数的计算结果为非整数时,说明数据维度无法均匀的放置在每个计算单元上执行计算,进而,可以考虑优先选择执行次数的计算结果中余数较大的数据维度作为并行维度,因为这样选择可以提高数据的重用效率。相应的,可以基于执行次数计算结果中的整数部分的数值以及余数部分的数值,共同计算得到执行次数衡量值。
可选的,在构建得到执行次数衡量值得计算公式时,可以规定:执行次数的整数部分的数值越大,执行次数衡量值越大;执行次数的余数部分越大,该执行次数衡量值也越大。此时,可以选取执行次数衡量值最大的备选维度,作为并行维度。其中,如果执行次数衡量值最大的备选维度为多个,则可以将上述多个备选维度均作为并行维度。
在一个具体的例子中,根据当前子系统的单次计算量,确定每个备选维度在当前子系统中的执行次数衡量值,可以包括:
根据公式:
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(.)为四舍五入函数。
S240、根据当前子任务中每个数据维度的数据属性,确定与当前子任务匹配的至少一个数据维度的执行顺序。
在本实施例中,同样可以根据每个数据维度是否为规约维度的数据属性,确定与当前子任务匹配的至少一个数据维度的执行顺序。
通过实际仿真测试发现,规约维度作为数据搬运的循环过程中的最低层循环变量时,数据搬运的效率最高,因此,当各数据维度中存在规约维度时,可以基于该规约维度确定与当前子任务匹配的至少一个数据维度的执行顺序。
续前例,在当前子任务共具有m、n以及k三个数据维度,且数据维度k为规约维度时,数据维度的执行顺序的取值集合可以为{[m,n,k]、[n,m,k]}。
S250、根据当前子系统的算力特征、指令集定义和当前子任务的计算类型,确定当前子任务中各数据维度的切片大小。
如前所示,切片大小可以理解为基于目标架构的架构特征确定出的最小切片粒度,也就是每个计算单元所能计算的最小数据量。当切片大小的选取与目标架构进行精准适配时,可以最大程度的避免算力浪费,从而使得数据流的规划更具有合理性。
在本实施例中,可以从目标架构的规格信息中获得每个子系统的算力特征(典型的,单个计算单元的计算量)以及指令集的定义。之后,可以针对不同子任务的计算类型(例如,卷积计算或者矩阵乘计算等),从指令集的定义中获取与每个子任务的计算类型分别对应的各数据维度的操作数的数据类型(例如,int型或者float型等),最后基于该数据类型以及算力特征,推导出每个数据维度的切片大小。
可选的,可以预先构建得到一个切片大小的推导模型,该推导模型的输入为设定计算类型下各数据维度的操作数的数据类型,以及设定子系统的算力数据,输出为与该计算类型下的每个数据维度的操作数分别对应的操作数域描述信息,进而,可以根据该操作数域描述信息,确定出每个数据维度的切片大小。
在一个具体的例子中,针对float 32类型的乘加指令可以确定出与三个数据维度分别对应的操作数A、B、C的操作数域描述信息分别为16*8、16*32以及8*32,进而,各数据维度的切片大小可以分别为16、32以及8。
S260、根据至少一个并行维度、至少一个数据维度的执行顺序以及当前子任务中各数据维度的切片大小,组合得到与当前子任务对应的至少一个参数组。
其中,参数组中包括数据维度的执行顺序,并行维度和数据维度的切片大小。
可以理解的是,通过前述操作确定出的并行维度可以为一个或者多个,确定出的子任务中各数据维度的执行顺序也可以为一个或者多个。进而,通过对上述各项参数进行排列组合,可以得到一个或者多个参数组。每个参数组中包括有一个并行维度,一种类型的子任务中各数据维度的执行顺序,以及各数据维度的切片大小。
在一个具体的例子中,如果得到的并行维度包括并行维度A1和A2,子任务中各数据维度的执行顺序包括B1和B2,子任务中各数据维度的切片大小为C,则可以构建形如:{A1、B1、C}、{A1、B2、C}、{A2、B1、C}以及{A2、B2、C}的四个参数组。
S270、在每个参数组的约束下,分别计算当前子任务的各数据维度在目标架构的每级缓冲区或每级缓存中的存储策略。
在本实施例中,在不同参数组的约束下,可以分别计算得到不同的存储策略。也即,如果共有5个参数组,则可以分别针对这5个参数组分别计算得到5种类型的存储策略。
S280、根据存储策略计算结果,筛选出至少一个目标参数组,并将各目标参数组与匹配的存储策略进行组合,生成与当前子任务对应的至少一个数据流。
在本实施例中,可以根据不同存储策略的存储性能参数,例如,对缓冲区或者缓存的占用率或者带宽和计算的平衡度等,在全部参数组中选择出存储性能参数最优的一个或者多个目标参数组,并将目标参数组与匹配的存储策略进行组合,生成与当前子任务对应的至少一个数据流。
也即,如果最后保留的目标参数组为2个,则将每个目标参数组与各自的存储策略进行组合,得到2个数据流。
本发明实施例的技术方案通过获取负载任务中各子任务与目标架构中各子系统之间的任务架构映射关系;根据每个子任务的数据维度描述信息和该任务架构映射关系,确定与各子任务分别对应的至少一个数据流,作为该基准测试中的一项建模参考信息的技术手段,提供了一种全面、高效、准确的生成负载任务的数据流新方式,为后续进行灵活性、可扩展性的基准测试建模提供高效可用的数据准备,在充分利用架构硬件性能的基础上,减低了基准测试建模的开发代价和周期,并可以辅助提高架构评估的效率以及准确性,从而在架构探索阶段完成更多、更广、更深入的评估。
实施例三
图3是本发明实施例三提供的一种负载任务的数据流生成方法的流程图,本实施例以上述实施例为技术进行细化,在本实施例中,将在每个参数组的约束下,分别计算当前子任务的各数据维度在目标架构的每级缓冲区或每级缓存中的存储策略的操作进行具体化。
相应的,如图3所示,本实施例的方法具体可以包括:
S310、获取负载任务中各子任务与目标架构中各子系统之间的任务架构映射关系;其中,该负载任务为待加载至目标架构执行基准测试的任务。
S320、根据当前子任务的数据维度描述信息和与当前子任务具有任务架构映射关系的当前子系统的硬件描述信息,生成当前子任务的至少一个参数组。
其中,参数组中包括数据维度的执行顺序,并行维度和数据维度的切片大小。
S330、判断目标架构的数据缓存类型:如果确定目标架构使用缓冲区进行数据缓存,则执行S340;如果确定目标架构使用缓存进行数据缓存,则执行S350。
S340、在每个参数组的约束下,分别计算当前子任务的各数据维度在每级缓冲区中缓存的切片个数,作为在该参数组下的存储策略。
在本实施例的一个可选的实施方式中,在每个参数组的约束下,分别计算当前子任务的各数据维度在每级缓冲区中缓存的切片个数,作为在该参数组下的存储策略,可以包括:
针对当前处理参数组,按照从内侧缓冲区朝向外侧缓冲区的顺序,依次获取当前缓冲区;根据当前缓冲区的当前缓冲量,当前子系统的理论算力和带宽,推导出在当前参数组和当前缓冲量的共同约束下,当达到数据运算时间和数据搬运时间的最优平衡时,各数据维度在当前缓冲区中缓存的切片个数;返回执行按照从内侧缓冲区朝向外侧缓冲区的顺序,依次获取当前缓冲区的操作,直至在当前参数组的约束下,计算得到各所述数据维度在每级缓冲区中缓存的切片个数。
其中,缓冲区(也可以称为存储单元)大小确定了在各个存储单元层次上,每个数据维度的存储状态,从而决定了数据的流动方式,是数据流的重点优化对象。相应的,在本可选实施方式中,提出了一种通过线性方程求解的方式,来确定各所述数据维度在每级缓冲区中缓存的切片个数(也可以称为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}的最优解的操作,直至计算得到各所述数据维度在每级缓冲区中缓存的切片个数。
S350、在每个参数组的约束下,分别计算当前子任务的各数据维度在每级缓存中缓存的切片个数,作为在该参数组下的存储策略。
在本实施例的一个可选的实施方式中,在每个参数组的约束下,分别计算当前子任务的各数据维度在每级缓存中缓存的切片个数,作为在该参数组下的存储策略,可以包括:
针对当前处理参数组,按照从内侧缓存朝向外侧缓存的顺序,依次获取当前缓存;根据当前子任务的每个操作数在当前处理参数组下的复用距离,当前缓冲区的当前缓存量,当前子系统的理论算力和带宽,推导出在当前参数组和当前缓存量的共同约束下,当在存在或不存在缓存未命中情况达到数据运算时间和数据搬运时间最优平衡时,各数据维度在当前缓存中缓存的切片个数;返回执行按照从内侧缓存朝向外侧缓存的顺序,依次获取当前缓存的操作,直至在当前参数组的约束下,计算得到各所述数据维度在每级缓存中缓存的切片个数。
在本实施例中,目标架构使用缓存(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}的最优解的操作,直至计算得到各所述数据维度在每级缓存中缓存的切片个数。
S360、根据存储策略计算结果,筛选出至少一个目标参数组,并将各目标参数组与匹配的存储策略进行组合,生成与当前子任务对应的至少一个数据流。
本发明实施例的技术方案通过获取负载任务中各子任务与目标架构中各子系统之间的任务架构映射关系;根据每个子任务的数据维度描述信息和该任务架构映射关系,确定与各子任务分别对应的至少一个数据流,作为该基准测试中的一项建模参考信息的技术手段,提供了一种全面、高效、准确的生成负载任务的数据流新方式,为后续进行灵活性、可扩展性的基准测试建模提供高效可用的数据准备,在充分利用架构硬件性能的基础上,减低了基准测试建模的开发代价和周期,并可以辅助提高架构评估的效率以及准确性,从而在架构探索阶段完成更多、更广、更深入的评估。
实施例四
图4是本发明实施例四提供的一种负载任务的数据流生成装置的结构图,如图4所示,所述装置具体包括:任务架构映射关系获取模块410以及数据流确定模块420,其中:
任务架构映射关系获取模块410,用于获取负载任务中各子任务与目标架构中各子系统之间的任务架构映射关系;其中,该负载任务为待加载至目标架构执行基准测试的任务;
数据流确定模块420,用于根据每个子任务的数据维度描述信息和该任务架构映射关系,确定与各子任务分别对应的至少一个数据流,作为该基准测试中的一项建模参考信息;
其中,数据流中包括:子任务中各数据维度的执行顺序、并行维度、子任务中各数据维度的切片大小,以及子任务中各数据维度在目标架构的每级缓冲区或每级缓存中的存储策略。
本发明实施例的技术方案通过获取负载任务中各子任务与目标架构中各子系统之间的任务架构映射关系;根据每个子任务的数据维度描述信息和该任务架构映射关系,确定与各子任务分别对应的至少一个数据流,作为该基准测试中的一项建模参考信息的技术手段,提供了一种全面、高效、准确的生成负载任务的数据流新方式,为后续进行灵活性、可扩展性的基准测试建模提供高效可用的数据准备,在充分利用架构硬件性能的基础上,减低了基准测试建模的开发代价和周期,并可以辅助提高架构评估的效率以及准确性,从而在架构探索阶段完成更多、更广、更深入的评估。
在上述各实施例的基础上,数据流确定模块420可以具体包括:
参数组生成单元,用于根据当前子任务的数据维度描述信息和与当前子任务具有任务架构映射关系的当前子系统的硬件描述信息,生成当前子任务的至少一个参数组;其中,参数组中包括数据维度的执行顺序,并行维度和数据维度的切片大小;
存储策略计算单元,用于在每个参数组的约束下,分别计算当前子任务的各数据维度在目标架构的每级缓冲区或每级缓存中的存储策略;
数据流生成单元,用于根据存储策略计算结果,筛选出至少一个目标参数组,并将各目标参数组与匹配的存储策略进行组合,生成与当前子任务对应的至少一个数据流。
在上述各实施例的基础上,参数组生成单元,可以具体包括:
备选维度集合构建子单元,用于根据当前子任务中每个数据维度的数据属性,构建备选维度集合;
并行维度选取子单元,用于根据当前子任务中每个数据维度的维度值以及当前子系统的计算属性,在备选维度集合中,选取至少一个并行维度;
执行顺序确定子单元,用于根据当前子任务中每个数据维度的数据属性,确定与当前子任务匹配的至少一个数据维度的执行顺序;
切片大小确定子单元,用于根据当前子系统的算力特征、指令集定义和当前子任务的计算类型,确定当前子任务中各数据维度的切片大小;
参数组组合子单元,用于根据至少一个并行维度、至少一个数据维度的执行顺序以及当前子任务中各数据维度的切片大小,组合得到与当前子任务对应的至少一个参数组。
在上述各实施例的基础上,备选维度集合构建子单元可以具体用于:
在当前子任务的各数据维度中滤除规约维度,得到至少一个备选维度;
如果备选维度的数量为多个且允许合并维度操作,则计算两两备选维度的乘积,作为新的备选维度;
使用各所述备选维度,构建得到所述备选维度集合。
在上述各实施例的基础上,并行维度选取子单元可以具体用于:
根据当前子系统中包括的计算单元数量,以及每个计算单元的单次计算量,计算得到当前子系统的单次计算量;
根据当前子系统的单次计算量,确定每个备选维度在当前子系统中的执行次数衡量值;
获取执行次数衡量值最大的至少一个备选维度,作为并行维度。
在上述各实施例的基础上,并行维度选取子单元可以进一步具体用于:
根据公式:
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(.)为四舍五入函数。
在上述各实施例的基础上,存储策略计算单元可以具体包括:
缓冲区存储策略计算子单元,用于如果目标架构使用缓冲区进行数据缓存,则在每个参数组的约束下,分别计算当前子任务的各数据维度在每级缓冲区中缓存的切片个数,作为在该参数组下的存储策略;
缓存存储策略计算子单元,用于如果目标架构使用缓存进行数据缓存,则在每个参数组的约束下,分别计算当前子任务的各数据维度在每级缓存中缓存的切片个数,作为在该参数组下的存储策略。
在上述各实施例的基础上,缓冲区存储策略计算子单元可以具体用于:
针对当前处理参数组,按照从内侧缓冲区朝向外侧缓冲区的顺序,依次获取当前缓冲区;
根据当前缓冲区的当前缓冲量,当前子系统的理论算力和带宽,推导出在当前参数组和当前缓冲量的共同约束下,当达到数据运算时间和数据搬运时间的最优平衡时,各数据维度在当前缓冲区中缓存的切片个数;
返回执行按照从内侧缓冲区朝向外侧缓冲区的顺序,依次获取当前缓冲区的操作,直至在当前参数组的约束下,计算得到各所述数据维度在每级缓冲区中缓存的切片个数。
在上述各实施例的基础上,缓存存储策略计算子单元,可以具体用于:
针对当前处理参数组,按照从内侧缓存朝向外侧缓存的顺序,依次获取当前缓存;
根据当前子任务的每个操作数在当前处理参数组下的复用距离,当前缓冲区的当前缓存量,当前子系统的理论算力和带宽,推导出在当前参数组和当前缓存量的共同约束下,当在存在或不存在缓存未命中情况达到数据运算时间和数据搬运时间最优平衡时,各数据维度在当前缓存中缓存的切片个数;
返回执行按照从内侧缓存朝向外侧缓存的顺序,依次获取当前缓存的操作,直至在当前参数组的约束下,计算得到各所述数据维度在每级缓存中缓存的切片个数。
本发明实施例所提供的负载任务的数据流生成装置可执行本发明任意实施例所提供的负载任务的数据流生成方法,具备执行方法相应的功能模块和有益效果。
实施例五
图5为本发明实施例五提供的一种计算机设备的结构示意图,如图5所示,该计算机设备包括处理器510、存储器520、输入装置530和输出装置540;计算机设备中处理器510的数量可以是一个或多个,图5中以一个处理器510为例;计算机设备中的处理器510、存储器520、输入装置530和输出装置540可以通过总线或其他方式连接,图5中以通过总线连接为例。
存储器520作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的负载任务的数据流生成方法对应的程序指令/模块(例如,任务架构映射关系获取模块410以及数据流确定模块420)。处理器510通过运行存储在存储器520中的软件程序、指令以及模块,从而执行计算机设备的各种功能应用以及数据处理,即实现上述的一种负载任务的数据流生成方法。
也即:获取负载任务中各子任务与目标架构中各子系统之间的任务架构映射关系;其中,该负载任务为待加载至目标架构执行基准测试的任务;
根据每个子任务的数据维度描述信息和该任务架构映射关系,确定与各子任务分别对应的至少一个数据流,作为该基准测试中的一项建模参考信息;
其中,数据流中包括:子任务中各数据维度的执行顺序、并行维度、子任务中各数据维度的切片大小,以及子任务中各数据维度在目标架构的每级缓冲区或每级缓存中的存储策略。
存储器520可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器520可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器520可进一步包括相对于处理器510远程设置的存储器,这些远程存储器可以通过网络连接至计算机设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置530可用于接收输入的数字或字符信息,以及产生与计算机设备的用户设置以及功能控制有关的键信号输入。输出装置540可包括显示屏等显示设备。
实施例六
本发明实施例六还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种负载任务的数据流生成方法,该方法包括:
获取负载任务中各子任务与目标架构中各子系统之间的任务架构映射关系;其中,该负载任务为待加载至目标架构执行基准测试的任务;
根据每个子任务的数据维度描述信息和该任务架构映射关系,确定与各子任务分别对应的至少一个数据流,作为该基准测试中的一项建模参考信息;
其中,数据流中包括:子任务中各数据维度的执行顺序、并行维度、子任务中各数据维度的切片大小,以及子任务中各数据维度在目标架构的每级缓冲区或每级缓存中的存储策略。
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的一种负载任务的数据流生成方法中的相关操作.
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory, ROM)、随机存取存储器(RandomAccess Memory, RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
值得注意的是,上述搜索装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

Claims (11)

1.一种负载任务的数据流生成方法,其特征在于,包括:
获取负载任务中各子任务与目标架构中各子系统之间的任务架构映射关系;其中,该负载任务为待加载至目标架构执行基准测试的任务;
根据每个子任务的数据维度描述信息和该任务架构映射关系,确定与各子任务分别对应的至少一个数据流,作为该基准测试中的一项建模参考信息;
其中,数据流中包括:子任务中各数据维度的执行顺序、并行维度、子任务中各数据维度的切片大小、以及子任务中各数据维度在目标架构的每级缓冲区或每级缓存中的存储策略;
其中,根据每个子任务的数据维度描述信息和该任务架构映射关系,确定与各子任务分别对应的至少一个数据流,包括:
根据当前子任务的数据维度描述信息和与当前子任务具有任务架构映射关系的当前子系统的硬件描述信息,生成当前子任务的至少一个参数组;其中,参数组中包括数据维度的执行顺序、并行维度和数据维度的切片大小;
在每个参数组的约束下,分别计算当前子任务的各数据维度在目标架构的每级缓冲区或每级缓存中的存储策略;
根据存储策略计算结果,筛选出至少一个目标参数组,并将各目标参数组与匹配的存储策略进行组合,生成与当前子任务对应的至少一个数据流。
2.根据权利要求1所述的方法,其特征在于,根据当前子任务的数据维度描述信息和与当前子任务具有任务架构映射关系的当前子系统的硬件描述信息,生成当前子任务的至少一个参数组,包括:
根据当前子任务中每个数据维度的数据属性,构建备选维度集合;
根据当前子任务中每个数据维度的维度值以及当前子系统的计算属性,在备选维度集合中,选取至少一个并行维度;
根据当前子任务中每个数据维度的数据属性,确定与当前子任务匹配的至少一个数据维度的执行顺序;
根据当前子系统的算力特征、指令集定义和当前子任务的计算类型,确定当前子任务中各数据维度的切片大小;
根据至少一个并行维度、至少一个数据维度的执行顺序以及当前子任务中各数据维度的切片大小,组合得到与当前子任务对应的至少一个参数组。
3.根据权利要求2所述的方法,其特征在于,根据当前子任务中每个数据维度的数据属性,构建备选维度集合,包括:
在当前子任务的各数据维度中滤除规约维度,得到至少一个备选维度;
如果备选维度的数量为多个且允许合并维度操作,则计算两两备选维度的乘积,作为新的备选维度;
使用各所述备选维度,构建得到所述备选维度集合。
4.根据权利要求2所述的方法,其特征在于,根据当前子任务中每个数据维度的维度值以及当前子系统的计算属性,在备选维度集合中,选取至少一个并行维度,包括:
根据当前子系统中包括的计算单元数量,以及每个计算单元的单次计算量,计算得到当前子系统的单次计算量;
根据当前子系统的单次计算量,确定每个备选维度在当前子系统中的执行次数衡量值;
获取执行次数衡量值最大的至少一个备选维度,作为并行维度。
5.根据权利要求4所述的方法,其特征在于,根据当前子系统的单次计算量,确定每个备选维度在当前子系统中的执行次数衡量值,包括:
根据公式:
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(.)为四舍五入函数。
6.根据权利要求1所述的方法,其特征在于,在每个参数组的约束下,分别计算当前子任务的各数据维度在目标架构的每级缓冲区或每级缓存中的存储策略,包括:
如果目标架构使用缓冲区进行数据缓存,则在每个参数组的约束下,分别计算当前子任务的各数据维度在每级缓冲区中缓存的切片个数,作为在该参数组下的存储策略;
如果目标架构使用缓存进行数据缓存,则在每个参数组的约束下,分别计算当前子任务的各数据维度在每级缓存中缓存的切片个数,作为在该参数组下的存储策略。
7.根据权利要求6所述的方法,其特征在于,在每个参数组的约束下,分别计算当前子任务的各数据维度在每级缓冲区中缓存的切片个数,作为在该参数组下的存储策略,包括:
针对当前处理参数组,按照从内侧缓冲区朝向外侧缓冲区的顺序,依次获取当前缓冲区;
根据当前缓冲区的当前缓冲量,当前子系统的理论算力和带宽,推导出在当前参数组和当前缓冲量的共同约束下,当达到数据运算时间和数据搬运时间的最优平衡时,各数据维度在当前缓冲区中缓存的切片个数;
返回执行按照从内侧缓冲区朝向外侧缓冲区的顺序,依次获取当前缓冲区的操作,直至在当前参数组的约束下,计算得到各所述数据维度在每级缓冲区中缓存的切片个数。
8.根据权利要求6所述的方法,其特征在于,在每个参数组的约束下,分别计算当前子任务的各数据维度在每级缓存中缓存的切片个数,作为在该参数组下的存储策略,包括:
针对当前处理参数组,按照从内侧缓存朝向外侧缓存的顺序,依次获取当前缓存;
根据当前子任务的每个操作数在当前处理参数组下的复用距离、当前缓冲区的当前缓存量、当前子系统的理论算力和带宽,推导出在当前参数组和当前缓存量的共同约束下,当在存在或不存在缓存未命中情况达到数据运算时间和数据搬运时间最优平衡时,各数据维度在当前缓存中缓存的切片个数;
返回执行按照从内侧缓存朝向外侧缓存的顺序,依次获取当前缓存的操作,直至在当前参数组的约束下,计算得到各所述数据维度在每级缓存中缓存的切片个数。
9.一种负载任务的数据流生成装置,其特征在于,包括:
任务架构映射关系获取模块,用于获取负载任务中各子任务与目标架构中各子系统之间的任务架构映射关系;其中,该负载任务为待加载至目标架构执行基准测试的任务;
数据流确定模块,用于根据每个子任务的数据维度描述信息和该任务架构映射关系,确定与各子任务分别对应的至少一个数据流,作为该基准测试中的一项建模参考信息;
其中,数据流中包括:子任务中各数据维度的执行顺序、并行维度、子任务中各数据维度的切片大小、以及子任务中各数据维度在目标架构的每级缓冲区或每级缓存中的存储策略;
其中,数据流确定模块,包括:
参数组生成单元,用于根据当前子任务的数据维度描述信息和与当前子任务具有任务架构映射关系的当前子系统的硬件描述信息,生成当前子任务的至少一个参数组;其中,参数组中包括数据维度的执行顺序,并行维度和数据维度的切片大小;
存储策略计算单元,用于在每个参数组的约束下,分别计算当前子任务的各数据维度在目标架构的每级缓冲区或每级缓存中的存储策略;
数据流生成单元,用于根据存储策略计算结果,筛选出至少一个目标参数组,并将各目标参数组与匹配的存储策略进行组合,生成与当前子任务对应的至少一个数据流。
10. 一种电子设备,其特征在于,所述电子设备包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-8中任一项所述的负载任务的数据流生成方法。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现权利要求1-8中任一项所述的负载任务的数据流生成方法。
CN202310761943.5A 2023-06-27 2023-06-27 负载任务的数据流生成方法、装置、设备及介质 Active CN116501505B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310761943.5A CN116501505B (zh) 2023-06-27 2023-06-27 负载任务的数据流生成方法、装置、设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310761943.5A CN116501505B (zh) 2023-06-27 2023-06-27 负载任务的数据流生成方法、装置、设备及介质

Publications (2)

Publication Number Publication Date
CN116501505A CN116501505A (zh) 2023-07-28
CN116501505B true CN116501505B (zh) 2023-09-12

Family

ID=87325170

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310761943.5A Active CN116501505B (zh) 2023-06-27 2023-06-27 负载任务的数据流生成方法、装置、设备及介质

Country Status (1)

Country Link
CN (1) CN116501505B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117076092B (zh) * 2023-10-13 2024-01-19 成都登临科技有限公司 多维数据任务的处理方法、装置、电子设备及存储介质
CN118093455B (zh) * 2024-04-23 2024-08-06 北京壁仞科技开发有限公司 数据加载方法、数据加载装置、处理器和电子设备

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6970791B1 (en) * 2003-05-23 2005-11-29 Verachem, Llc Tailored user interfaces for molecular modeling
CN110515739A (zh) * 2019-10-23 2019-11-29 上海燧原智能科技有限公司 深度学习神经网络模型负载计算方法、装置、设备及介质
CN114168993A (zh) * 2022-02-15 2022-03-11 佛山市达衍数据科技有限公司 企业数据处理方法、系统、计算机装置及存储介质
CN115827191A (zh) * 2022-11-17 2023-03-21 国家电网有限公司信息通信分公司 算力任务调度方法、装置及存储介质
CN115904539A (zh) * 2022-11-29 2023-04-04 上海燧原科技有限公司 一种切分策略的在线生成方法、装置、设备及存储介质
CN116225989A (zh) * 2022-12-13 2023-06-06 重庆邮电大学 一种卷积神经网络数据流切片尺寸的优化方法
CN116225690A (zh) * 2022-12-15 2023-06-06 北京元年科技股份有限公司 基于docker的内存多维数据库计算负载均衡方法及系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114169427B (zh) * 2021-12-06 2022-10-04 北京百度网讯科技有限公司 基于端到端自适应的分布式训练方法、装置、设备

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6970791B1 (en) * 2003-05-23 2005-11-29 Verachem, Llc Tailored user interfaces for molecular modeling
CN110515739A (zh) * 2019-10-23 2019-11-29 上海燧原智能科技有限公司 深度学习神经网络模型负载计算方法、装置、设备及介质
CN114168993A (zh) * 2022-02-15 2022-03-11 佛山市达衍数据科技有限公司 企业数据处理方法、系统、计算机装置及存储介质
CN115827191A (zh) * 2022-11-17 2023-03-21 国家电网有限公司信息通信分公司 算力任务调度方法、装置及存储介质
CN115904539A (zh) * 2022-11-29 2023-04-04 上海燧原科技有限公司 一种切分策略的在线生成方法、装置、设备及存储介质
CN116225989A (zh) * 2022-12-13 2023-06-06 重庆邮电大学 一种卷积神经网络数据流切片尺寸的优化方法
CN116225690A (zh) * 2022-12-15 2023-06-06 北京元年科技股份有限公司 基于docker的内存多维数据库计算负载均衡方法及系统

Also Published As

Publication number Publication date
CN116501505A (zh) 2023-07-28

Similar Documents

Publication Publication Date Title
CN116501505B (zh) 负载任务的数据流生成方法、装置、设备及介质
CN110399222B (zh) Gpu集群深度学习任务并行化方法、装置及电子设备
US20200160181A1 (en) Systems and methods for generation of sparse code for convolutional neural networks
US11216732B2 (en) Systems and methods for generation of sparse code for convolutional neural networks
CN109992404A (zh) 集群计算资源调度方法、装置、设备及介质
CN114327844A (zh) 内存分配方法、相关设备及计算机可读存储介质
CN115168027B (zh) 一种基于深度强化学习的算力资源度量方法
CN116501503B (zh) 负载任务的架构映射方法、装置、计算机设备及介质
Yeganeh et al. A novel Q-learning-based hybrid algorithm for the optimal offloading and scheduling in mobile edge computing environments
CN115904539A (zh) 一种切分策略的在线生成方法、装置、设备及存储介质
US20220343146A1 (en) Method and system for temporal graph neural network acceleration
CN113886080A (zh) 高性能集群任务调度方法、装置、电子设备及存储介质
CN113037800A (zh) 作业调度方法以及作业调度装置
CN112434785A (zh) 一种面向超级计算机的分布式并行深度神经网络性能评测方法
CN115016938A (zh) 一种基于强化学习的计算图自动划分方法
Symons et al. Towards heterogeneous multi-core accelerators exploiting fine-grained scheduling of layer-fused deep neural networks
CN116820730B (zh) 多引擎计算系统的任务调度方法、装置及存储介质
CN116680063B (zh) 任务调度方法、装置、计算系统、电子设备和存储介质
CN116501594B (zh) 系统建模评估方法、装置、电子设备及存储介质
CN114021733A (zh) 模型训练优化方法、装置、计算机设备及存储介质
CN111027669A (zh) 在现场可编程门阵列上实现深度神经网络的方法及装置
CN116166550A (zh) 处理器性能预测系统、方法以及相关设备
CN114564292A (zh) 一种数据的分布式网格化处理方法、装置、设备及介质
Larracoechea et al. Towards Services Profiling for Energy Management in Service-oriented Architectures.
Wang et al. GPARS: Graph predictive algorithm for efficient resource scheduling in heterogeneous GPU clusters

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
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