掌桥专利:专业的专利平台
掌桥专利
首页

数据处理方法、装置以及指令融合方法、代码生成方法

文献发布时间:2023-06-19 11:22:42


数据处理方法、装置以及指令融合方法、代码生成方法

技术领域

本公开涉及计算机技术领域,具体涉及数据处理方法、装置以及指令融合方法、代码生成方法。

背景技术

近年来,计算技术在各种场景得到了广泛应用。各个场景中业务落地的过程是通过计算依托特定的底层计算设备承载而完成。随着业务发展日益复杂和多样化,用计算表达的业务和底层硬件平台之间的适配效能将成为左右业务落地成本的重要因素之一。

当前,针对计算表达问题,相关技术中的方案是基于高级语言的计算图表示,然后通过专门的计算框架映射到底层硬件平台。这一设计理念使得计算图不局限于特定业务。但另一方面,为了兼顾用户表达的灵活性和业务多样性要求,计算图节点粒度在很多场景会相对细碎,且具有复杂的相互依赖结构。相关技术不能融合细碎节点,不能扩大硬件执行粒度,并且难以提升硬件效能。而且,相关技术的融合方案都基于从特定业务场景提炼的业务规则,因此在面对多样化的业务场景时缺乏泛化能力,难以适配各种不同的场景。

发明内容

为了解决相关技术中的问题,本公开实施例提供数据处理方法、装置以及指令融合方法、代码生成方法。

第一方面,本公开实施例中提供了一种数据处理方法,包括:

根据计算图获取计算图状态;

根据所述计算图状态获取所述计算图中的可融合指令组集合;

确定所述可融合指令组集合是否为空;

根据确定所述可融合指令组集合不为空,对所述可融合指令组集合中的指令组进行评估;

基于对所述可融合指令组集合中的指令组的评估结果,选择最优可融合指令组。

结合第一方面,本公开在第一方面的第一种实现方式中,还包括:

根据确定所述可融合指令组集合为空,选择置信度最大的可融合指令组作为最优可融合指令组。

结合第一方面,本公开在第一方面的第二种实现方式中,所述根据所述计算图状态获取所述计算图中的可融合指令组集合,包括:

根据所选择的最优可融合指令组,获取所述计算图中的可融合指令组集合。

结合第一方面,本公开在第一方面的第三种实现方式中,所述根据确定所述可融合指令组集合不为空,对所述可融合指令组集合中的指令组进行评估,包括:

根据确定所述可融合指令组集合不为空,针对指令组按照预设搜索指标进行状态搜索扩展。

结合第一方面的第三种实现方式,本公开在第一方面的第四种实现方式中,所述根据确定所述可融合指令组集合不为空,针对指令组按照预设搜索指标进行状态搜索扩展,包括:

根据确定所述可融合指令组集合不为空,确定所述可融合指令组集合中的指令组是否已被评估;

根据所述可融合指令组集合中的指令组已被评估,更新所述计算图状态的状态参数。

结合第一方面的第四种实现方式,本公开在第一方面的第五种实现方式中,所述根据确定所述可融合指令组集合不为空,针对指令组按照预设搜索指标进行状态搜索扩展,还包括:

根据所述可融合指令组集合中的指令组未被评估,针对未被评估的指令组计算图状态的状态参数;

按照预设搜索指标进行状态搜索扩展。

结合第一方面的第五种实现方式,本公开在第一方面的第六种实现方式中,所述按照预设搜索指标进行状态搜索扩展,还包括:

基于预设搜索规则,按照预设搜索指标进行状态搜索扩展。

结合第一方面的第五种实现方式,本公开在第一方面的第七种实现方式中,所述按照预设搜索指标进行状态搜索扩展,还包括:

根据按照预设搜索指标进行状态搜索扩展的结果,更新所述计算图状态的状态参数。

结合第一方面,本公开在第一方面的第八种实现方式中,所述根据确定所述可融合指令组集合不为空,对所述可融合指令组集合中的指令组进行评估,包括:

根据对所述可融合指令组集合中的指令组的评估结果,更新所述计算图状态。

结合第一方面,本公开在第一方面的第九种实现方式中,所述根据所述计算图状态获取所述计算图中的可融合指令组集合,包括:

确定所述计算图中的指令之间的依赖关系;

根据所确定的指令之间的依赖关系确定有依赖关系的指令是否能够被融合;

根据有依赖关系的指令能够被融合的确定结果,将能够被融合的指令构成一个指令组并加入所述可融合指令组集合。

结合第一方面的第九种实现方式,本公开在第一方面的第十种实现方式中,所述根据所确定的指令之间的依赖关系确定有依赖关系的指令是否能够被融合,包括:

根据所确定的指令之间的依赖关系对指令进行拓扑排序;

根据拓扑排序的结果遍历全部指令以确定各个指令所依赖的全部指令;

确定有依赖关系的指令是否能够被融合。

结合第一方面,本公开在第一方面的第十一种实现方式中,在所述根据所述计算图状态获取所述计算图中的可融合指令组集合之前,包括:

将所述可融合指令组集合初始化为空。

结合第一方面,本公开在第一方面的第十二种实现方式中,还包括:

根据预设指令融合规则,基于所选择的最优可融合指令组生成用于执行所述最优指令组所表示的融合动作的可执行代码。

结合第一方面,本公开在第一方面的第十三种实现方式中,所述计算图状态由包括指令类型和表示指令之间的依赖关系的连接位图的二元组表示。

结合第一方面的第四种实现方式,本公开在第一方面的第十四种实现方式中,所述计算图状态的状态参数包括状态的收益参数以及状态的访问频次参数。

结合第一方面的第十四种实现方式,本公开在第一方面的第十五种实现方式中,所述状态的收益参数通过预设性能模型预测或者调用代码生成器生成目标代码实际测量而被获得。

结合第一方面的第十四种实现方式,本公开在第一方面的第十六种实现方式中,所述状态的收益参数包括基于可融合指令组生成的可执行代码的执行性能参数和内存占用参数中的至少一项。

结合第一方面,本公开在第一方面的第十七种实现方式中,所述根据确定所述可融合指令组集合不为空,对所述可融合指令组集合中的指令组进行评估,包括:

选择所述可融合指令组集合中的子可融合指令组集合;

对所述子可融合指令组集合中的指令组进行评估。

结合第一方面,本公开在第一方面的第十八种实现方式中,所述根据确定所述可融合指令组集合不为空,对所述可融合指令组集合中的指令组进行评估,包括:

基于蒙特卡洛树搜索方法对所述可融合指令组集合中的指令组进行评估。

结合第一方面,本公开在第一方面的第十九种实现方式中,所述根据确定所述可融合指令组集合不为空,对所述可融合指令组集合中的指令组进行评估,包括:

对评估结果进行缓存。

第二方面,本公开实施例中提供了一种数据处理装置,包括:

第一获取模块,被配置为根据计算图获取计算图状态;

第二获取模块,被配置为根据所述计算图状态获取所述计算图中的可融合指令组集合;

确定模块,被配置为确定所述可融合指令组集合是否为空;

评估模块,被配置为根据所述确定模块确定所述可融合指令组集合不为空,对所述可融合指令组集合中的指令组进行评估;

选择模块,被配置为基于所述评估模块对所述可融合指令组集合中的指令组的评估结果,选择最优可融合指令组。

第三方面,本公开实施例中提供了一种指令融合方法,包括:

根据计算图获取计算图状态;

根据所述计算图状态获取所述计算图中的可融合指令组集合;

确定所述可融合指令组集合是否为空;

根据确定所述可融合指令组集合不为空,对所述可融合指令组集合中的指令组进行评估;

基于对所述可融合指令组集合中的指令组的评估结果,选择最优可融合指令组进行指令融合。

第四方面,本公开实施例中提供了一种代码生成方法,包括:

根据计算图获取计算图状态;

根据所述计算图状态获取所述计算图中的可融合指令组集合;

确定所述可融合指令组集合是否为空;

根据确定所述可融合指令组集合不为空,对所述可融合指令组集合中的指令组进行评估;

基于对所述可融合指令组集合中的指令组的评估结果,选择最优可融合指令组以生成用于执行所述最优指令组所表示的融合动作的可执行代码。

第五方面,本公开实施例中提供了一种电子设备,包括存储器和处理器;其中,

所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行以实现如第一方面、第一方面的第一种实现方式至第十九种实现方式、第三方面、第四方面任一项所述的方法。

第六方面,本公开实施例中提供了一种可读存储介质,其上存储有计算机指令,该计算机指令被处理器执行时实现如第一方面、第一方面的第一种实现方式至第十九种实现方式、第三方面、第四方面任一项所述的方法。

本公开实施例提供的技术方案可以包括以下有益效果:

根据本公开实施例提供的技术方案,通过根据计算图获取计算图状态;根据所述计算图状态获取所述计算图中的可融合指令组集合;确定所述可融合指令组集合是否为空;根据确定所述可融合指令组集合不为空,对所述可融合指令组集合中的指令组进行评估;基于对所述可融合指令组集合中的指令组的评估结果,选择最优可融合指令组,可以获取可融合指令组集合,并且根据评估结果选择的最优可融合指令组可以更高效地适配底层硬件设施。根据本公开实施例的方案能够融合细碎节点,扩大硬件执行粒度,并且提升硬件效能。而且,根据本公开实施例的方案不需要从特定业务场景提炼业务规则,因此在面对多样化的业务场景时具备泛化能力,可以适配各种不同的场景。

根据本公开实施例提供的技术方案,通过根据确定所述可融合指令组集合为空,选择置信度最大的可融合指令组作为最优可融合指令组,可以获取可融合指令组集合,并且根据评估结果选择的最优可融合指令组可以更高效地适配底层硬件设施。根据本公开实施例的方案能够融合细碎节点,扩大硬件执行粒度,并且提升硬件效能。而且,根据本公开实施例的方案不需要从特定业务场景提炼业务规则,因此在面对多样化的业务场景时具备泛化能力,可以适配各种不同的场景。

根据本公开实施例提供的技术方案,通过所述根据所述计算图状态获取所述计算图中的可融合指令组集合,包括:根据所选择的最优可融合指令组,获取所述计算图中的可融合指令组集合,可以获取可融合指令组集合,并且根据评估结果选择的最优可融合指令组可以更高效地适配底层硬件设施。根据本公开实施例的方案能够融合细碎节点,扩大硬件执行粒度,并且提升硬件效能。而且,根据本公开实施例的方案不需要从特定业务场景提炼业务规则,因此在面对多样化的业务场景时具备泛化能力,可以适配各种不同的场景。

根据本公开实施例提供的技术方案,通过所述根据确定所述可融合指令组集合不为空,对所述可融合指令组集合中的指令组进行评估,包括:根据确定所述可融合指令组集合不为空,针对指令组按照预设搜索指标进行状态搜索扩展,可以获取可融合指令组集合,并且根据评估结果选择的最优可融合指令组可以更高效地适配底层硬件设施。根据本公开实施例的方案能够融合细碎节点,扩大硬件执行粒度,并且提升硬件效能。而且,根据本公开实施例的方案不需要从特定业务场景提炼业务规则,因此在面对多样化的业务场景时具备泛化能力,可以适配各种不同的场景。

根据本公开实施例提供的技术方案,通过所述根据确定所述可融合指令组集合不为空,针对指令组按照预设搜索指标进行状态搜索扩展,包括:根据确定所述可融合指令组集合不为空,确定所述可融合指令组集合中的指令组是否已被评估;根据所述可融合指令组集合中的指令组已被评估,更新所述计算图状态的状态参数,可以获取可融合指令组集合,并且根据评估结果选择的最优可融合指令组可以更高效地适配底层硬件设施。根据本公开实施例的方案能够融合细碎节点,扩大硬件执行粒度,并且提升硬件效能。而且,根据本公开实施例的方案不需要从特定业务场景提炼业务规则,因此在面对多样化的业务场景时具备泛化能力,可以适配各种不同的场景。

根据本公开实施例提供的技术方案,通过所述根据确定所述可融合指令组集合不为空,针对指令组按照预设搜索指标进行状态搜索扩展,还包括:根据所述可融合指令组集合中的指令组未被评估,针对未被评估的指令组计算图状态的状态参数;按照预设搜索指标进行状态搜索扩展,可以获取可融合指令组集合,并且根据评估结果选择的最优可融合指令组可以更高效地适配底层硬件设施。根据本公开实施例的方案能够融合细碎节点,扩大硬件执行粒度,并且提升硬件效能。而且,根据本公开实施例的方案不需要从特定业务场景提炼业务规则,因此在面对多样化的业务场景时具备泛化能力,可以适配各种不同的场景。

根据本公开实施例提供的技术方案,通过所述按照预设搜索指标进行状态搜索扩展,还包括:基于预设搜索规则,按照预设搜索指标进行状态搜索扩展,可以获取可融合指令组集合,并且根据评估结果选择的最优可融合指令组可以更高效地适配底层硬件设施。根据本公开实施例的方案能够融合细碎节点,扩大硬件执行粒度,并且提升硬件效能。而且,根据本公开实施例的方案不需要从特定业务场景提炼业务规则,因此在面对多样化的业务场景时具备泛化能力,可以适配各种不同的场景。

根据本公开实施例提供的技术方案,通过所述按照预设搜索指标进行状态搜索扩展,还包括:根据按照预设搜索指标进行状态搜索扩展的结果,更新所述计算图状态的状态参数,可以获取可融合指令组集合,并且根据评估结果选择的最优可融合指令组可以更高效地适配底层硬件设施。根据本公开实施例的方案能够融合细碎节点,扩大硬件执行粒度,并且提升硬件效能。而且,根据本公开实施例的方案不需要从特定业务场景提炼业务规则,因此在面对多样化的业务场景时具备泛化能力,可以适配各种不同的场景。

根据本公开实施例提供的技术方案,通过所述根据确定所述可融合指令组集合不为空,对所述可融合指令组集合中的指令组进行评估,包括:根据对所述可融合指令组集合中的指令组的评估结果,更新所述计算图状态,可以获取可融合指令组集合,并且根据评估结果选择的最优可融合指令组可以更高效地适配底层硬件设施。根据本公开实施例的方案能够融合细碎节点,扩大硬件执行粒度,并且提升硬件效能。而且,根据本公开实施例的方案不需要从特定业务场景提炼业务规则,因此在面对多样化的业务场景时具备泛化能力,可以适配各种不同的场景。

根据本公开实施例提供的技术方案,通过所述根据所述计算图状态获取所述计算图中的可融合指令组集合,包括:确定所述计算图中的指令之间的依赖关系;根据所确定的指令之间的依赖关系确定有依赖关系的指令是否能够被融合;根据有依赖关系的指令能够被融合的确定结果,将能够被融合的指令构成一个指令组并加入所述可融合指令组集合,可以获取可融合指令组集合,并且根据评估结果选择的最优可融合指令组可以更高效地适配底层硬件设施。根据本公开实施例的方案能够融合细碎节点,扩大硬件执行粒度,并且提升硬件效能。而且,根据本公开实施例的方案不需要从特定业务场景提炼业务规则,因此在面对多样化的业务场景时具备泛化能力,可以适配各种不同的场景。

根据本公开实施例提供的技术方案,通过所述根据所确定的指令之间的依赖关系确定有依赖关系的指令是否能够被融合,包括:根据所确定的指令之间的依赖关系对指令进行拓扑排序;根据拓扑排序的结果遍历全部指令以确定各个指令所依赖的全部指令;确定有依赖关系的指令是否能够被融合,可以获取可融合指令组集合,并且根据评估结果选择的最优可融合指令组可以更高效地适配底层硬件设施。根据本公开实施例的方案能够融合细碎节点,扩大硬件执行粒度,并且提升硬件效能。而且,根据本公开实施例的方案不需要从特定业务场景提炼业务规则,因此在面对多样化的业务场景时具备泛化能力,可以适配各种不同的场景。

根据本公开实施例提供的技术方案,通过在所述根据所述计算图状态获取所述计算图中的可融合指令组集合之前,包括:将所述可融合指令组集合初始化为空,有利于实施可融合指令组集合的计算,并且根据评估结果选择的最优可融合指令组可以更高效地适配底层硬件设施。根据本公开实施例的方案能够融合细碎节点,扩大硬件执行粒度,并且提升硬件效能。而且,根据本公开实施例的方案不需要从特定业务场景提炼业务规则,因此在面对多样化的业务场景时具备泛化能力,可以适配各种不同的场景。

根据本公开实施例提供的技术方案,通过根据预设指令融合规则,基于所选择的最优可融合指令组生成用于执行所述最优指令组所表示的融合动作的可执行代码,可以获取可融合指令组集合,并且根据评估结果选择的最优可融合指令组可以更高效地适配底层硬件设施。根据本公开实施例的方案能够融合细碎节点,扩大硬件执行粒度,并且提升硬件效能。而且,根据本公开实施例的方案不需要从特定业务场景提炼业务规则,因此在面对多样化的业务场景时具备泛化能力,可以适配各种不同的场景。

根据本公开实施例提供的技术方案,通过所述计算图状态由包括指令类型和表示指令之间的依赖关系的连接位图的二元组表示,可以获取可融合指令组集合,并且根据评估结果选择的最优可融合指令组可以更高效地适配底层硬件设施。根据本公开实施例的方案能够融合细碎节点,扩大硬件执行粒度,并且提升硬件效能。而且,根据本公开实施例的方案不需要从特定业务场景提炼业务规则,因此在面对多样化的业务场景时具备泛化能力,可以适配各种不同的场景。

根据本公开实施例提供的技术方案,通过所述计算图状态的状态参数包括状态的收益参数以及状态的访问频次参数,可以获取可融合指令组集合,并且根据评估结果选择的最优可融合指令组可以更高效地适配底层硬件设施。根据本公开实施例的方案能够融合细碎节点,扩大硬件执行粒度,并且提升硬件效能。而且,根据本公开实施例的方案不需要从特定业务场景提炼业务规则,因此在面对多样化的业务场景时具备泛化能力,可以适配各种不同的场景。

根据本公开实施例提供的技术方案,通过所述状态的收益参数通过预设性能模型预测或者调用代码生成器生成目标代码实际测量而被获得,可以获取可融合指令组集合,并且根据评估结果选择的最优可融合指令组可以更高效地适配底层硬件设施。根据本公开实施例的方案能够融合细碎节点,扩大硬件执行粒度,并且提升硬件效能。而且,根据本公开实施例的方案不需要从特定业务场景提炼业务规则,因此在面对多样化的业务场景时具备泛化能力,可以适配各种不同的场景。

根据本公开实施例提供的技术方案,通过所述状态的收益参数包括基于可融合指令组生成的可执行代码的执行性能参数和内存占用参数中的至少一项,可以获取可融合指令组集合,并且根据评估结果选择的最优可融合指令组可以更高效地适配底层硬件设施。根据本公开实施例的方案能够融合细碎节点,扩大硬件执行粒度,并且提升硬件效能。而且,根据本公开实施例的方案不需要从特定业务场景提炼业务规则,因此在面对多样化的业务场景时具备泛化能力,可以适配各种不同的场景。

根据本公开实施例提供的技术方案,通过所述根据确定所述可融合指令组集合不为空,对所述可融合指令组集合中的指令组进行评估,包括:选择所述可融合指令组集合中的子可融合指令组集合;对所述子可融合指令组集合中的指令组进行评估,可以获取可融合指令组集合,并且根据评估结果选择的最优可融合指令组可以更高效地适配底层硬件设施。根据本公开实施例的方案能够融合细碎节点,扩大硬件执行粒度,并且提升硬件效能。而且,根据本公开实施例的方案不需要从特定业务场景提炼业务规则,因此在面对多样化的业务场景时具备泛化能力,可以适配各种不同的场景。

根据本公开实施例提供的技术方案,通过所述根据确定所述可融合指令组集合不为空,对所述可融合指令组集合中的指令组进行评估,包括:基于蒙特卡洛树搜索方法对所述可融合指令组集合中的指令组进行评估,可以获取可融合指令组集合,并且根据评估结果选择的最优可融合指令组可以更高效地适配底层硬件设施。根据本公开实施例的方案能够融合细碎节点,扩大硬件执行粒度,并且提升硬件效能。而且,根据本公开实施例的方案不需要从特定业务场景提炼业务规则,因此在面对多样化的业务场景时具备泛化能力,可以适配各种不同的场景。

根据本公开实施例提供的技术方案,通过所述根据确定所述可融合指令组集合不为空,对所述可融合指令组集合中的指令组进行评估,包括对评估结果进行缓存,可以在评估完成后遇到相同状态的评估时可以直接复用之前缓存的评估结果即可,从而避免重复评估,节省资源。

根据本公开实施例提供的技术方案,通过第一获取模块,被配置为根据计算图获取计算图状态;第二获取模块,被配置为根据所述计算图状态获取所述计算图中的可融合指令组集合;确定模块,被配置为确定所述可融合指令组集合是否为空;评估模块,被配置为根据所述确定模块确定所述可融合指令组集合不为空,对所述可融合指令组集合中的指令组进行评估;选择模块,被配置为基于所述评估模块对所述可融合指令组集合中的指令组的评估结果,选择最优可融合指令组,可以获取可融合指令组集合,并且根据评估结果选择的最优可融合指令组可以更高效地适配底层硬件设施。根据本公开实施例的方案能够融合细碎节点,扩大硬件执行粒度,并且提升硬件效能。而且,根据本公开实施例的方案不需要从特定业务场景提炼业务规则,因此在面对多样化的业务场景时具备泛化能力,可以适配各种不同的场景。

根据本公开实施例提供的技术方案,通过根据计算图获取计算图状态;根据所述计算图状态获取所述计算图中的可融合指令组集合;确定所述可融合指令组集合是否为空;根据确定所述可融合指令组集合不为空,对所述可融合指令组集合中的指令组进行评估;基于对所述可融合指令组集合中的指令组的评估结果,选择最优可融合指令组进行指令融合,可以获取可融合指令组集合,并且根据评估结果选择的最优可融合指令组可以更高效地适配底层硬件设施。根据本公开实施例的方案能够融合细碎节点,扩大硬件执行粒度,并且提升硬件效能。而且,根据本公开实施例的方案不需要从特定业务场景提炼业务规则,因此在面对多样化的业务场景时具备泛化能力,可以适配各种不同的场景。

根据本公开实施例提供的技术方案,通过根据计算图获取计算图状态;根据所述计算图状态获取所述计算图中的可融合指令组集合;确定所述可融合指令组集合是否为空;根据确定所述可融合指令组集合不为空,对所述可融合指令组集合中的指令组进行评估;基于对所述可融合指令组集合中的指令组的评估结果,选择最优可融合指令组以生成用于执行所述最优指令组所表示的融合动作的可执行代码,可以获取可融合指令组集合,并且根据评估结果选择的最优可融合指令组可以更高效地适配底层硬件设施。根据本公开实施例的方案能够融合细碎节点,扩大硬件执行粒度,并且提升硬件效能。而且,根据本公开实施例的方案不需要从特定业务场景提炼业务规则,因此在面对多样化的业务场景时具备泛化能力,可以适配各种不同的场景。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

附图说明

结合附图,通过以下非限制性实施方式的详细描述,本公开的其它标签、目的和优点将变得更加明显。在附图中:

图1示出根据本公开一实施方式的数据处理方法的流程图;

图2示出根据本公开另一实施方式的数据处理方法的流程图;

图3示出根据本公开又一实施方式的数据处理方法的流程图;

图4示出根据本公开又一实施方式的数据处理方法的流程图;

图5示出根据本公开一实施方式的数据处理方法中的状态空间搜索方式示意图;

图6示出根据本公开一实施方式的数据处理方法中的基于状态搜索的指令融合过程的示例性示意图;

图7示出根据本公开一实施方式的数据处理方法中的动作集合计算过程的示例性示意图;

图8示出根据本公开一实施方式的数据处理方法中的指令融合规则示例的示意图;

图9示出根据本公开一实施方式的数据处理方法中的动作评估及状态空间扩展过程的示例性示意图;

图10示出根据本公开一实施方式的数据处理方法中的动作选择流程的示例性示意图;

图11示出根据本公开一实施方式的数据处理装置的结构框图;

图12示出根据本公开一实施方式的指令融合方法的流程图;

图13示出根据本公开一实施方式的代码生成方法的流程图;

图14示出根据本公开一实施方式的电子设备的结构框图;

图15是适于用来实现根据本公开一实施方式的数据处理方法、指令融合方法或代码生成方法的计算机系统的结构示意图。

具体实施方式

下文中,将参考附图详细描述本公开的示例性实施方式,以使本领域技术人员可容易地实现它们。此外,为了清楚起见,在附图中省略了与描述示例性实施方式无关的部分。

在本公开中,应理解,诸如“包括”或“具有”等的术语旨在指示本说明书中所公开的标签、数字、步骤、行为、部件、部分或其组合的存在,并且不欲排除一个或多个其他标签、数字、步骤、行为、部件、部分或其组合存在或被添加的可能性。

另外还需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的标签可以相互组合。下面将参考附图并结合实施例来详细说明本公开。

根据本公开实施例提供的技术方案,通过根据计算图获取计算图状态;根据计算图状态获取计算图中的可融合指令组集合;确定可融合指令组集合是否为空;根据确定可融合指令组集合不为空,对可融合指令组集合中的指令组进行评估;基于对可融合指令组集合中的指令组的评估结果,选择最优可融合指令组,可以获取可融合指令组集合,并且根据评估结果选择的最优可融合指令组可以更高效地适配底层硬件设施。根据本公开实施例的方案能够融合细碎节点,扩大硬件执行粒度,并且提升硬件效能。而且,根据本公开实施例的方案不需要从特定业务场景提炼业务规则,因此在面对多样化的业务场景时具备泛化能力,可以适配各种不同的场景。

图1示出根据本公开一实施方式的数据处理方法的流程图。如图1所示,数据处理方法包括以下步骤S110、S120、S130、S140和S150:

在步骤S110中,根据计算图获取计算图状态。

在步骤S120中,根据计算图状态获取计算图中的可融合指令组集合。

在步骤S130中,确定可融合指令组集合是否为空。

在步骤S140中,根据确定可融合指令组集合不为空,对可融合指令组集合中的指令组进行评估。

在步骤S150中,基于对可融合指令组集合中的指令组的评估结果,选择最优可融合指令组。

在本公开的一个实施例中,计算图一旦执行一个由可融合指令组构成的融合动作就从当前状态进入一个新状态,当前状态和新状态可被称为计算图状态。

在本公开的一个实施例中,计算图状态由包括指令类型和表示指令之间的依赖关系的连接位图的二元组表示。

在本公开的一个实施例中,给定一个计算图,计算图状态可以被定义为一个二元组(指令类型,连接位图)。其中,指令类型为对计算图中各指令进行稳定拓扑排序后的操作符列表,表征各指令的计算类型。连接位图是用邻接矩阵表示的指令间依赖关系。注意,本公开中提及的指令可以是单个张量操作,或是融合后的指令序列,一般用一个特殊的类型编码表示。本领域技术人员可以理解,二元组形式的计算图状态仅仅是示例,只要能够实现本公开的技术方案,本公开可以采用各种形式的计算图状态。

在本公开的一个实施例中,由于随着计算图中可融合指令组(融合动作)的执行,计算图状态会随之改变,可以从每个状态出发扩展出状态空间。后续实施例会提及如何进行状态空间的搜索和扩展。

在本公开的一个实施例中,一个可融合指令组指的是构成一个融合动作的指令构成的组。

在本公开的一个实施例中,给定计算图和由计算图状态构成的状态空间,可融合动作可以被定义为一个可融合指令组,也可称为多元组。例如,多元组可以是二元组(指令A,指令B),表示将指令A和指令B合并成一条融合指令。注意,并非任意指令之间都可以融合为可融合指令组,指令是否可以融合取决于底层的代码生成系统的能力。还应该注意,可融合指令组不限于二元组形式,而可以是更多元组。例如,代码生成系统的能力可以用巴科斯范式(BNF范式)来形式化表征。后续的实施例会提供具体的例子。

在本公开的一个实施例中,确定可融合指令组集合是否为空可以表示是否对计算图中的全部可融合指令组(融合动作)都已经进行过基于计算图状态的评估。

在本公开的一个实施例中,对于一个融合动作,需要评估执行该融合动作能得到的收益。动作评估可以有两种方案。一种方案是测量法。测量法可以调用代码生成器生成可融合指令组融合前后的代码,在硬件上执行,实测收益。另一种方案是预测法。预测法可以构建一个性能模型,直接预测收益。一般而言,预测法速度快,但精度不如直接测量的测量法。一旦执行一个融合动作,计算图即进入一个新状态,可以在这个新状态的基础上进一步分析可融合指令组集合(合法的动作集合)并对新的可融合指令组(新动作)评估。理论上,可以不断执行可融合指令组,进行状态扩展直到没有可以融合的指令为止,但状态扩展深度越深,搜索代价越大。

在本公开的一个实施例中,在动作评估及状态扩展的基础上,最终选择一个融合动作来执行需要综合权衡已得到的搜索收益和未搜索空间的机会。例如,可以以蒙特卡洛树搜索算法的UCB(置信度上限)公式为基础来定制动作评估指标的计算方法。本领域技术人员可以理解,可以根据本公开实施方式的教导和相关技术来制定动作评估指标的计算方法,本公开对此不作限制。

以下参照图2描述根据本公开另一实施方式的数据处理方法。

图2示出根据本公开又一实施方式的数据处理方法的流程图。如图2所示的实施方式除了包括图1的实施方式所示的步骤S110至S150之外,还包括步骤S210。

在步骤S210中,根据确定可融合指令组集合为空,选择置信度最大的指令组作为最优可融合指令组。

根据本公开实施例提供的技术方案,通过根据确定可融合指令组集合为空,选择置信度最大的可融合指令组作为最优可融合指令组,可以获取可融合指令组集合,并且根据评估结果选择的最优可融合指令组可以更高效地适配底层硬件设施。根据本公开实施例的方案能够融合细碎节点,扩大硬件执行粒度,并且提升硬件效能。而且,根据本公开实施例的方案不需要从特定业务场景提炼业务规则,因此在面对多样化的业务场景时具备泛化能力,可以适配各种不同的场景。

以下参照图5描述状态空间搜索方式的一个示例。

图5示出根据本公开一实施方式的数据处理方法中的状态空间搜索方式示意图。

状态树空间的搜索迭代方案示例如图5所示。图5中所示的初始状态S

在本公开的一个实施例中,步骤S120包括:根据所选择的最优可融合指令组,获取计算图中的可融合指令组集合。

根据本公开实施例提供的技术方案,通过根据计算图状态获取计算图中的可融合指令组集合,包括:根据所选择的最优可融合指令组,获取计算图中的可融合指令组集合,可以获取可融合指令组集合,并且根据评估结果选择的最优可融合指令组可以更高效地适配底层硬件设施。根据本公开实施例的方案能够融合细碎节点,扩大硬件执行粒度,并且提升硬件效能。而且,根据本公开实施例的方案不需要从特定业务场景提炼业务规则,因此在面对多样化的业务场景时具备泛化能力,可以适配各种不同的场景。

在本公开的一个实施例中,在当前状态,计算图中的指令可以形成不同的可融合指令组,因此,对不同的可融合指令组(融合动作)的评估结果也可能不同。在获取了不同的可融合指令组的评估结果之后,可以执行评估指标最佳(例如,置信度最高)的可融合指令组。

以下参照图6描述基于状态搜索的指令融合过程的一个示例。

图6示出根据本公开一实施方式的数据处理方法中的基于状态搜索的指令融合过程的示例性示意图。

首先输入计算图(步骤S610),计算图输入的方式可以是业界通行的各种方式。

之后,进行状态建模,并设定初始状态(步骤S620),表示融合前的计算图状态。

接下来,根据给定的计算图状态,即图中的指令构成(指令类型)及相互连接关系(连接位图),计算当前计算图中可以融合的指令组(可融合动作)集合(步骤S630)。可以融合的指令组(可融合动作)集合指的是符合底层代码生成规则的动作集合。如果在步骤S640判断为动作集合为空,则说明状态搜索已经完毕,流程结束。如果在步骤S640判断为动作集合不为空,则评估选定动作集合中的动作并基于评估的指标(例如,收益情况等)进行状态扩展继续搜索(步骤S650)。

对于实际计算图,有可能动作集合太大,全部评估和搜索非常耗时,这时可以依据一定的贪心策略或者随机选取一个动作子集来搜索子状态空间。在对选定动作扩展状态空间时,还可以设定一个合适的搜索深度,在搜索效率和动作质量的选择之间做平衡。需要注意,动作评估和状态空间搜索的过程不修改计算图本身,因为需要确保这些状态的搜索可以回溯。

在动作评估及状态扩展(步骤S650)完成后,回到开始选定的状态对所有评估过的动作,综合考虑评估指标(例如,收益和状态节点访问频次等),选择最优动作(步骤S660)。此时执行该动作,修改计算图,并且进入下一个状态。重复以上过程,即,在执行最优动作之后,再次计算当前计算图中可以融合的指令组(可融合动作)集合(步骤S630),并执行相应操作。

在本公开的一个实施例中,步骤S120包括:确定计算图中的指令之间的依赖关系;根据所确定的指令之间的依赖关系确定有依赖关系的指令是否能够被融合;根据有依赖关系的指令能够被融合的确定结果,将能够被融合的指令构成一个指令组并加入可融合指令组集合。

根据本公开实施例提供的技术方案,通过根据计算图状态获取计算图中的可融合指令组集合,包括:确定计算图中的指令之间的依赖关系;根据所确定的指令之间的依赖关系确定有依赖关系的指令是否能够被融合;根据有依赖关系的指令能够被融合的确定结果,将能够被融合的指令构成一个指令组并加入可融合指令组集合,可以获取可融合指令组集合,并且根据评估结果选择的最优可融合指令组可以更高效地适配底层硬件设施。根据本公开实施例的方案能够融合细碎节点,扩大硬件执行粒度,并且提升硬件效能。而且,根据本公开实施例的方案不需要从特定业务场景提炼业务规则,因此在面对多样化的业务场景时具备泛化能力,可以适配各种不同的场景。

在本公开的一个实施例中,根据所确定的指令之间的依赖关系确定有依赖关系的指令是否能够被融合,包括:根据所确定的指令之间的依赖关系对指令进行拓扑排序;根据拓扑排序的结果遍历全部指令以确定各个指令所依赖的全部指令;确定有依赖关系的指令是否能够被融合。

根据本公开实施例提供的技术方案,通过根据所确定的指令之间的依赖关系确定有依赖关系的指令是否能够被融合,包括:根据所确定的指令之间的依赖关系对指令进行拓扑排序;根据拓扑排序的结果遍历全部指令以确定各个指令所依赖的全部指令;确定有依赖关系的指令是否能够被融合,可以获取可融合指令组集合,并且根据评估结果选择的最优可融合指令组可以更高效地适配底层硬件设施。根据本公开实施例的方案能够融合细碎节点,扩大硬件执行粒度,并且提升硬件效能。而且,根据本公开实施例的方案不需要从特定业务场景提炼业务规则,因此在面对多样化的业务场景时具备泛化能力,可以适配各种不同的场景。

以下参照图7描述的动作集合计算过程的一个示例。

图7示出根据本公开一实施方式的数据处理方法中的动作集合计算过程的示例性示意图。

图7是对计算图(在步骤S710输入)的合法动作集合(可融合指令组集合)计算流程示例。在此,可以为计算图定义一条输出指令,产生整个计算图的输出张量。在开始计算之前,先初始化动作集合为空(步骤S720)。然后依据指令间依赖关系进行拓扑排序(步骤S730),即:对指令A->指令B,即B依赖于A,则A排序在前。在完成排序(步骤S730)后,从输出指令开始逆序遍历每条指令(步骤S740),直到所有指令遍历完(步骤S750判断结果为是)结束。在遍历未完成(步骤S750判断结果为否)的情况下,对每条遍历的指令,检查该指令依赖的所有指令,并判断是否能和该指令融合(步骤S760),如果能融合则产生一个合法动作(可融合指令组)则加入动作集合(步骤S770)。

在本公开的一个实施例中,判断多条指令(指令组)是否可融合取决于底层的代码生成能力。注意,在本公开的实施例中,不需要引入任何业务领域相关的规则来辅助收益判断,而是只要能生成目标代码的指令组都是合法动作(可融合指令组)。因此,可以获取可融合指令组集合,并且选择的最优可融合指令组更高效地适配底层硬件设施,提升硬件效能。

例如,给定代码生成器,可以用一组BNF范式来形式化描述这一规则,一个例子如图8所示。

图8示出根据本公开一实施方式的数据处理方法中的指令融合规则示例的示意图。

图8中所示的指令INST可以是Reduce、二元操作Binary、一元操作Unary、位转换Bitcast、张量切片Slice、张量拼接Concat、张量转置Transpose、张量筛选Gather、张量广播Broadcast和融合指令Fusion。在图8所示的融合规则中,只要是由这些指令构成的指令序列INSTS,都能被代码生成工具生成目标代码,但不保证硬件资源可满足或硬件资源满足情况下的执行性能。硬件资源的满足性或性能约束可以通过动作评估和子状态空间扩展来自适应规划解决。因此,根据本公开实施例的方案能够融合细碎节点,扩大硬件执行粒度,并且提升硬件效能。而且,根据本公开实施例的方案不需要从特定业务场景提炼业务规则,因此在面对多样化的业务场景时具备泛化能力,可以适配各种不同的场景。本领域技术人员可以理解,只要执行计算图的系统的底层的代码生成能力允许,融合规则可以不做任何具体限制。

以下参照实施例进一步描述对合法动作集合(可融合指令组集合)评估及状态空间扩展的流程。

在本公开的一个实施例中,步骤S140包括:根据确定可融合指令组集合不为空,针对指令组按照预设搜索指标进行状态搜索扩展。

根据本公开实施例提供的技术方案,通过根据确定可融合指令组集合不为空,对可融合指令组集合中的指令组进行评估,包括:根据确定可融合指令组集合不为空,针对指令组按照预设搜索指标进行状态搜索扩展,可以获取可融合指令组集合,并且根据评估结果选择的最优可融合指令组可以更高效地适配底层硬件设施。根据本公开实施例的方案能够融合细碎节点,扩大硬件执行粒度,并且提升硬件效能。而且,根据本公开实施例的方案不需要从特定业务场景提炼业务规则,因此在面对多样化的业务场景时具备泛化能力,可以适配各种不同的场景。

在本公开的一个实施例中,搜索指标可以指的是例如融合动作的收益和状态节点访问频次,或者是基于综合考虑融合动作的收益和状态节点访问频次的置信度等。

在本公开的一个实施例中,根据确定可融合指令组集合不为空,针对指令组按照预设搜索指标进行状态搜索扩展,包括:根据确定可融合指令组集合不为空,确定可融合指令组集合中的指令组是否已被评估;根据可融合指令组集合中的指令组已被评估,更新计算图状态的状态参数。

根据本公开实施例提供的技术方案,通过根据确定可融合指令组集合不为空,针对指令组按照预设搜索指标进行状态搜索扩展,包括:根据确定可融合指令组集合不为空,确定可融合指令组集合中的指令组是否已被评估;根据可融合指令组集合中的指令组已被评估,更新计算图状态的状态参数,可以获取可融合指令组集合,并且根据评估结果选择的最优可融合指令组可以更高效地适配底层硬件设施。根据本公开实施例的方案能够融合细碎节点,扩大硬件执行粒度,并且提升硬件效能。而且,根据本公开实施例的方案不需要从特定业务场景提炼业务规则,因此在面对多样化的业务场景时具备泛化能力,可以适配各种不同的场景。

在本公开的一个实施例中,根据确定可融合指令组集合不为空,针对指令组按照预设搜索指标进行状态搜索扩展,还包括:根据可融合指令组集合中的指令组未被评估,针对未被评估的指令组计算图状态的状态参数;按照预设搜索指标进行状态搜索扩展。

根据本公开实施例提供的技术方案,通过根据确定可融合指令组集合不为空,针对指令组按照预设搜索指标进行状态搜索扩展,还包括:根据可融合指令组集合中的指令组未被评估,针对未被评估的指令组计算图状态的状态参数;按照预设搜索指标进行状态搜索扩展,可以获取可融合指令组集合,并且根据评估结果选择的最优可融合指令组可以更高效地适配底层硬件设施。根据本公开实施例的方案能够融合细碎节点,扩大硬件执行粒度,并且提升硬件效能。而且,根据本公开实施例的方案不需要从特定业务场景提炼业务规则,因此在面对多样化的业务场景时具备泛化能力,可以适配各种不同的场景。

在本公开的一个实施例中,按照预设搜索指标进行状态搜索扩展,还包括:基于预设搜索规则,按照预设搜索指标进行状态搜索扩展。

根据本公开实施例提供的技术方案,通过按照预设搜索指标进行状态搜索扩展,还包括:基于预设搜索规则,按照预设搜索指标进行状态搜索扩展,可以获取可融合指令组集合,并且根据评估结果选择的最优可融合指令组可以更高效地适配底层硬件设施。根据本公开实施例的方案能够融合细碎节点,扩大硬件执行粒度,并且提升硬件效能。而且,根据本公开实施例的方案不需要从特定业务场景提炼业务规则,因此在面对多样化的业务场景时具备泛化能力,可以适配各种不同的场景。

在本公开的一个实施例中,按照预设搜索指标进行状态搜索扩展,还包括:根据按照预设搜索指标进行状态搜索扩展的结果,更新计算图状态的状态参数。

根据本公开实施例提供的技术方案,通过按照预设搜索指标进行状态搜索扩展,还包括:根据按照预设搜索指标进行状态搜索扩展的结果,更新计算图状态的状态参数,可以获取可融合指令组集合,并且根据评估结果选择的最优可融合指令组可以更高效地适配底层硬件设施。根据本公开实施例的方案能够融合细碎节点,扩大硬件执行粒度,并且提升硬件效能。而且,根据本公开实施例的方案不需要从特定业务场景提炼业务规则,因此在面对多样化的业务场景时具备泛化能力,可以适配各种不同的场景。

在本公开的一个实施例中,计算图状态的状态参数包括状态的收益参数以及状态的访问频次参数。

根据本公开实施例提供的技术方案,通过计算图状态的状态参数包括状态的收益参数以及状态的访问频次参数,可以获取可融合指令组集合,并且根据评估结果选择的最优可融合指令组可以更高效地适配底层硬件设施。根据本公开实施例的方案能够融合细碎节点,扩大硬件执行粒度,并且提升硬件效能。而且,根据本公开实施例的方案不需要从特定业务场景提炼业务规则,因此在面对多样化的业务场景时具备泛化能力,可以适配各种不同的场景。

在本公开的一个实施例中,状态的收益参数通过预设性能模型预测或者调用代码生成器生成目标代码实际测量而被获得。

根据本公开实施例提供的技术方案,通过状态的收益参数通过预设性能模型预测或者调用代码生成器生成目标代码实际测量而被获得,可以获取可融合指令组集合,并且根据评估结果选择的最优可融合指令组可以更高效地适配底层硬件设施。根据本公开实施例的方案能够融合细碎节点,扩大硬件执行粒度,并且提升硬件效能。而且,根据本公开实施例的方案不需要从特定业务场景提炼业务规则,因此在面对多样化的业务场景时具备泛化能力,可以适配各种不同的场景。

在本公开的一个实施例中,状态的收益参数包括基于可融合指令组生成的可执行代码的执行性能参数和内存占用参数中的至少一项。

根据本公开实施例提供的技术方案,通过状态的收益参数包括基于可融合指令组生成的可执行代码的执行性能参数和内存占用参数中的至少一项,可以获取可融合指令组集合,并且根据评估结果选择的最优可融合指令组可以更高效地适配底层硬件设施。根据本公开实施例的方案能够融合细碎节点,扩大硬件执行粒度,并且提升硬件效能。而且,根据本公开实施例的方案不需要从特定业务场景提炼业务规则,因此在面对多样化的业务场景时具备泛化能力,可以适配各种不同的场景。

在本公开的一个实施例中,步骤S140包括:根据对可融合指令组集合中的指令组的评估结果,更新计算图状态。

根据本公开实施例提供的技术方案,通过根据确定可融合指令组集合不为空,对可融合指令组集合中的指令组进行评估,包括:根据对可融合指令组集合中的指令组的评估结果,更新计算图状态,可以获取可融合指令组集合,并且根据评估结果选择的最优可融合指令组可以更高效地适配底层硬件设施。根据本公开实施例的方案能够融合细碎节点,扩大硬件执行粒度,并且提升硬件效能。而且,根据本公开实施例的方案不需要从特定业务场景提炼业务规则,因此在面对多样化的业务场景时具备泛化能力,可以适配各种不同的场景。

以下参照图9描述的动作评估及状态空间扩展过程的一个示例。

图9示出根据本公开一实施方式的数据处理方法中的动作评估及状态空间扩展过程的示例性示意图。

图9是在给定状态下,对合法动作集合(可融合指令组集合)评估及状态空间扩展的流程的示例。首先,从输入动作集合(步骤S910)中选择需要评估的动作集合(步骤S920)。一般而言,只有对大型计算图,动作集合过大导致编译阶段开销过高时才有选择动作集合的必要。可以采用随机策略、模型预测或经验规则等来选择动作集合,之后进入动作评估阶段。

如果动作集合为空(步骤S930判断为是),则流程结束。如果动作集合不为空(步骤S930判断为否),获取初始动作或下一个动作(步骤S940)。可以定义该计算图在执行选定动作时得到的状态为初始状态,尝试动作评估。如果该动作已经评估过(步骤S950判断为是),则直接获取评估结果并回溯更新初始状态(步骤S980)。如果该动作未被评估过(步骤S950判断为否),则评估该动作(步骤S960),例如,计算该动作的收益V和状态访问频次N。

在本公开的一个实施例中,蒙特卡洛树搜索方法有可能重复访问一些状态节点,为了避免每次访问的时候重复评估,可以设计一个缓存来保存每次局部动作评估的结果。这样,在以后遇到相同状态的评估时可以直接复用之前缓存的评估结果即可,从而避免重复评估。

在本公开的一个实施例中,步骤S140包括:基于蒙特卡洛树搜索方法对可融合指令组集合中的指令组进行评估。

根据本公开实施例提供的技术方案,通过根据确定可融合指令组集合不为空,对可融合指令组集合中的指令组进行评估,包括:基于蒙特卡洛树搜索方法对可融合指令组集合中的指令组进行评估,可以获取可融合指令组集合,并且根据评估结果选择的最优可融合指令组可以更高效地适配底层硬件设施。根据本公开实施例的方案能够融合细碎节点,扩大硬件执行粒度,并且提升硬件效能。而且,根据本公开实施例的方案不需要从特定业务场景提炼业务规则,因此在面对多样化的业务场景时具备泛化能力,可以适配各种不同的场景。

在本公开的一个实施例中,步骤S140包括:对评估结果进行缓存。

根据本公开实施例提供的技术方案,通过根据确定可融合指令组集合不为空,对可融合指令组集合中的指令组进行评估,包括:对评估结果进行缓存,可以在评估完成后遇到相同状态的评估时可以直接复用之前缓存的评估结果即可,从而避免重复评估,节省资源。

在本公开的一个实施例中,动作评估(步骤S960)过程判断将其定义的指令组融合后生成代码执行的收益,当计算模式简单且硬件结构流水线软件可见时,可以通过构建性能模型的方法进行近似评估。另外,可以对动作(可融合指令组)直接编译生成目标代码,通过实际测量来判断。

在本公开的一个实施例中,动作(可融合指令组)评估的收益标准包括不限于如下两个维度:(1)指令组融合前后执行性能的好坏程度;(2)指令组融合前后的设备资源(如内存)的使用程度。例如,如果融合后资源节省,意味着可以承载更多的计算业务。在对各维度收益的评估后,汇总更新到该动作的收益V值中,同时将该动作定义的状态的访问频次N初始化为1。

子状态空间扩展(步骤S970)根据设定的探索深度,继续选择后续动作(可融合指令组)持续搜索,直到超过搜索深度或动作集合为空为止。搜索方法和前述流程类似,但在每次后续动作评估结束后,需要回溯更新初始状态的(V,N)值。在本公开的一个实施例中,更新初始状态的(V,N)值的方法如下:(1)V值更新,每次更新为从初始状态到叶子状态融合路径上收益的最大值;(2)N值更新,每搜索一个新状态,都将该状态的父状态开始直到初始状态的所有状态的N值加1。换言之,初始状态的(V,N)代表了扩展后的总体的收益和访问频次。

以下参照图10描述的动作选择流程的一个示例。

图10示出根据本公开一实施方式的数据处理方法中的动作选择流程的示例性示意图。

图10是动作评估后,为初始状态最终选择动作的流程的示例。首先,为初始状态初始化(V,N)值(步骤S1010)。之后,依次评估动作集合中的每个动作。例如,输入动作集合(可融合指令组集合)(步骤S1020),判断集合是否为空(步骤S1030)。如果集合不为空(步骤S1030判断结果为否),则获取动作(步骤S1040)。对每个动作k,评估得到子状态空间下的(V

例如,置信度的参考计算公式如下:

其中,C为常数。

本领域技术人员可以理解,根据本公开的教导,可以利用相关技术中已知的手段进行置信度计算,置信度的计算公式不限于上式。

以下参照图3描述根据本公开又一实施方式的数据处理方法。

图3示出根据本公开又一实施方式的数据处理方法的流程图。如图3所示的实施方式与图1所示的实施方式的区别在于在步骤S120之前还包括步骤S310。

在步骤S310中,将可融合指令组集合初始化为空。

根据本公开实施例提供的技术方案,通过在根据计算图状态获取计算图中的可融合指令组集合之前,包括:将可融合指令组集合初始化为空,有利于实施可融合指令组集合的计算,并且根据评估结果选择的最优可融合指令组可以更高效地适配底层硬件设施。根据本公开实施例的方案能够融合细碎节点,扩大硬件执行粒度,并且提升硬件效能。而且,根据本公开实施例的方案不需要从特定业务场景提炼业务规则,因此在面对多样化的业务场景时具备泛化能力,可以适配各种不同的场景。

以下参照图4描述根据本公开又一实施方式的数据处理方法。

图4示出根据本公开又一实施方式的数据处理方法的流程图。如图4所示的实施方式除了包括图1的实施方式所示的步骤S110至S150之外,还包括步骤S410。

在步骤S410中,根据预设指令融合规则,基于所选择的最优可融合指令组生成用于执行最优指令组所表示的融合动作的可执行代码。

根据本公开实施例提供的技术方案,通过根据预设指令融合规则,基于所选择的最优可融合指令组生成用于执行最优指令组所表示的融合动作的可执行代码,可以获取可融合指令组集合,并且根据评估结果选择的最优可融合指令组可以更高效地适配底层硬件设施。根据本公开实施例的方案能够融合细碎节点,扩大硬件执行粒度,并且提升硬件效能。而且,根据本公开实施例的方案不需要从特定业务场景提炼业务规则,因此在面对多样化的业务场景时具备泛化能力,可以适配各种不同的场景。

在本公开的一个实施例中,根据确定可融合指令组集合不为空,对可融合指令组集合中的指令组进行评估,包括:选择可融合指令组集合中的子可融合指令组集合;对子可融合指令组集合中的指令组进行评估。

根据本公开实施例提供的技术方案,通过根据确定可融合指令组集合不为空,对可融合指令组集合中的指令组进行评估,包括:选择可融合指令组集合中的子可融合指令组集合;对子可融合指令组集合中的指令组进行评估,可以获取可融合指令组集合,并且根据评估结果选择的最优可融合指令组可以更高效地适配底层硬件设施。根据本公开实施例的方案能够融合细碎节点,扩大硬件执行粒度,并且提升硬件效能。而且,根据本公开实施例的方案不需要从特定业务场景提炼业务规则,因此在面对多样化的业务场景时具备泛化能力,可以适配各种不同的场景。

以下参照图11描述根据本公开一实施方式的数据处理装置。

图11示出根据本公开一实施方式的数据处理装置1100的结构框图。如图11所示,数据处理装置1100包括第一获取模块1110、第二获取模块1120、确定模块1130、评估模块1140和选择模块1150。

第一获取模块1110被配置为根据计算图获取计算图状态。

第二获取模块1120被配置为根据计算图状态获取计算图中的可融合指令组集合。

确定模块1130被配置为确定可融合指令组集合是否为空。

评估模块1140被配置为根据确定模块1130确定可融合指令组集合不为空,对可融合指令组集合中的指令组进行评估。

选择模块1150被配置为基于评估模块1140对可融合指令组集合中的指令组的评估结果,选择最优可融合指令组。

根据本公开实施例提供的技术方案,通过第一获取模块,被配置为根据计算图获取计算图状态;第二获取模块,被配置为根据计算图状态获取计算图中的可融合指令组集合;确定模块,被配置为确定可融合指令组集合是否为空;评估模块,被配置为根据确定模块确定可融合指令组集合不为空,对可融合指令组集合中的指令组进行评估;选择模块,被配置为基于评估模块对可融合指令组集合中的指令组的评估结果,选择最优可融合指令组,可以获取可融合指令组集合,并且根据评估结果选择的最优可融合指令组可以更高效地适配底层硬件设施。根据本公开实施例的方案能够融合细碎节点,扩大硬件执行粒度,并且提升硬件效能。而且,根据本公开实施例的方案不需要从特定业务场景提炼业务规则,因此在面对多样化的业务场景时具备泛化能力,可以适配各种不同的场景。

本领域技术人员可以理解,参照图11描述的技术方案的可以与参照图1至图10描述的实施例结合,从而具备参照图1至图10描述的实施例所实现的技术效果。具体内容可以参照以上根据图1至图10进行的描述,其具体内容在此不再赘述。

以下参照图12描述根据本公开一实施方式的指令融合方法。

图12示出根据本公开一实施方式的指令融合方法的流程图。如图12所示,指令融合方法包括以下步骤S1210、S1220、S1230、S1240和S1250:

在步骤S1210中,根据计算图获取计算图状态。

在步骤S1220中,根据计算图状态获取计算图中的可融合指令组集合。

在步骤S1230中,确定可融合指令组集合是否为空。

在步骤S1240中,根据确定可融合指令组集合不为空,对可融合指令组集合中的指令组进行评估。

在步骤S1250中,基于对可融合指令组集合中的指令组的评估结果,选择最优可融合指令组进行指令融合。

根据本公开实施例提供的技术方案,通过根据计算图获取计算图状态;根据计算图状态获取计算图中的可融合指令组集合;确定可融合指令组集合是否为空;根据确定可融合指令组集合不为空,对可融合指令组集合中的指令组进行评估;基于对可融合指令组集合中的指令组的评估结果,选择最优可融合指令组进行指令融合,可以获取可融合指令组集合,并且根据评估结果选择的最优可融合指令组可以更高效地适配底层硬件设施。根据本公开实施例的方案能够融合细碎节点,扩大硬件执行粒度,并且提升硬件效能。而且,根据本公开实施例的方案不需要从特定业务场景提炼业务规则,因此在面对多样化的业务场景时具备泛化能力,可以适配各种不同的场景。

在本公开的一个实施例中,本实施例的方法还包括步骤:根据确定可融合指令组集合为空,选择置信度最大的可融合指令组作为最优可融合指令组。

根据本公开实施例提供的技术方案,通过根据确定可融合指令组集合为空,选择置信度最大的可融合指令组作为最优可融合指令组,可以获取可融合指令组集合,并且根据评估结果选择的最优可融合指令组可以更高效地适配底层硬件设施。根据本公开实施例的方案能够融合细碎节点,扩大硬件执行粒度,并且提升硬件效能。而且,根据本公开实施例的方案不需要从特定业务场景提炼业务规则,因此在面对多样化的业务场景时具备泛化能力,可以适配各种不同的场景。

在本公开的一个实施例中,根据计算图状态获取计算图中的可融合指令组集合,包括:根据所选择的最优可融合指令组,获取计算图中的可融合指令组集合。

根据本公开实施例提供的技术方案,通过根据计算图状态获取计算图中的可融合指令组集合,包括:根据所选择的最优可融合指令组,获取计算图中的可融合指令组集合,可以获取可融合指令组集合,并且根据评估结果选择的最优可融合指令组可以更高效地适配底层硬件设施。根据本公开实施例的方案能够融合细碎节点,扩大硬件执行粒度,并且提升硬件效能。而且,根据本公开实施例的方案不需要从特定业务场景提炼业务规则,因此在面对多样化的业务场景时具备泛化能力,可以适配各种不同的场景。

在本公开的一个实施例中,根据确定可融合指令组集合不为空,对可融合指令组集合中的指令组进行评估,包括:根据确定可融合指令组集合不为空,针对指令组按照预设搜索指标进行状态搜索扩展。

根据本公开实施例提供的技术方案,通过根据确定可融合指令组集合不为空,对可融合指令组集合中的指令组进行评估,包括:根据确定可融合指令组集合不为空,针对指令组按照预设搜索指标进行状态搜索扩展,可以获取可融合指令组集合,并且根据评估结果选择的最优可融合指令组可以更高效地适配底层硬件设施。根据本公开实施例的方案能够融合细碎节点,扩大硬件执行粒度,并且提升硬件效能。而且,根据本公开实施例的方案不需要从特定业务场景提炼业务规则,因此在面对多样化的业务场景时具备泛化能力,可以适配各种不同的场景。

在本公开的一个实施例中,根据确定可融合指令组集合不为空,针对指令组按照预设搜索指标进行状态搜索扩展,包括:根据确定可融合指令组集合不为空,确定可融合指令组集合中的指令组是否已被评估;根据可融合指令组集合中的指令组已被评估,更新计算图状态的状态参数。

根据本公开实施例提供的技术方案,通过根据确定可融合指令组集合不为空,针对指令组按照预设搜索指标进行状态搜索扩展,包括:根据确定可融合指令组集合不为空,确定可融合指令组集合中的指令组是否已被评估;根据可融合指令组集合中的指令组已被评估,更新计算图状态的状态参数,可以获取可融合指令组集合,并且根据评估结果选择的最优可融合指令组可以更高效地适配底层硬件设施。根据本公开实施例的方案能够融合细碎节点,扩大硬件执行粒度,并且提升硬件效能。而且,根据本公开实施例的方案不需要从特定业务场景提炼业务规则,因此在面对多样化的业务场景时具备泛化能力,可以适配各种不同的场景。

在本公开的一个实施例中,根据确定可融合指令组集合不为空,针对指令组按照预设搜索指标进行状态搜索扩展,还包括:根据可融合指令组集合中的指令组未被评估,针对未被评估的指令组计算图状态的状态参数;按照预设搜索指标进行状态搜索扩展。

根据本公开实施例提供的技术方案,通过根据确定可融合指令组集合不为空,针对指令组按照预设搜索指标进行状态搜索扩展,还包括:根据可融合指令组集合中的指令组未被评估,针对未被评估的指令组计算图状态的状态参数;按照预设搜索指标进行状态搜索扩展,可以获取可融合指令组集合,并且根据评估结果选择的最优可融合指令组可以更高效地适配底层硬件设施。根据本公开实施例的方案能够融合细碎节点,扩大硬件执行粒度,并且提升硬件效能。而且,根据本公开实施例的方案不需要从特定业务场景提炼业务规则,因此在面对多样化的业务场景时具备泛化能力,可以适配各种不同的场景。

在本公开的一个实施例中,按照预设搜索指标进行状态搜索扩展,还包括:基于预设搜索规则,按照预设搜索指标进行状态搜索扩展。

根据本公开实施例提供的技术方案,通过按照预设搜索指标进行状态搜索扩展,还包括:基于预设搜索规则,按照预设搜索指标进行状态搜索扩展,可以获取可融合指令组集合,并且根据评估结果选择的最优可融合指令组可以更高效地适配底层硬件设施。根据本公开实施例的方案能够融合细碎节点,扩大硬件执行粒度,并且提升硬件效能。而且,根据本公开实施例的方案不需要从特定业务场景提炼业务规则,因此在面对多样化的业务场景时具备泛化能力,可以适配各种不同的场景。

在本公开的一个实施例中,按照预设搜索指标进行状态搜索扩展,还包括:根据按照预设搜索指标进行状态搜索扩展的结果,更新计算图状态的状态参数。

根据本公开实施例提供的技术方案,通过按照预设搜索指标进行状态搜索扩展,还包括:根据按照预设搜索指标进行状态搜索扩展的结果,更新计算图状态的状态参数,可以获取可融合指令组集合,并且根据评估结果选择的最优可融合指令组可以更高效地适配底层硬件设施。根据本公开实施例的方案能够融合细碎节点,扩大硬件执行粒度,并且提升硬件效能。而且,根据本公开实施例的方案不需要从特定业务场景提炼业务规则,因此在面对多样化的业务场景时具备泛化能力,可以适配各种不同的场景。

在本公开的一个实施例中,根据确定可融合指令组集合不为空,对可融合指令组集合中的指令组进行评估,包括:根据对可融合指令组集合中的指令组的评估结果,更新计算图状态。

根据本公开实施例提供的技术方案,通过根据确定可融合指令组集合不为空,对可融合指令组集合中的指令组进行评估,包括:根据对可融合指令组集合中的指令组的评估结果,更新计算图状态,可以获取可融合指令组集合,并且根据评估结果选择的最优可融合指令组可以更高效地适配底层硬件设施。根据本公开实施例的方案能够融合细碎节点,扩大硬件执行粒度,并且提升硬件效能。而且,根据本公开实施例的方案不需要从特定业务场景提炼业务规则,因此在面对多样化的业务场景时具备泛化能力,可以适配各种不同的场景。

在本公开的一个实施例中,根据计算图状态获取计算图中的可融合指令组集合,包括:确定计算图中的指令之间的依赖关系;根据所确定的指令之间的依赖关系确定有依赖关系的指令是否能够被融合;根据有依赖关系的指令能够被融合的确定结果,将能够被融合的指令构成一个指令组并加入可融合指令组集合。

根据本公开实施例提供的技术方案,通过根据计算图状态获取计算图中的可融合指令组集合,包括:确定计算图中的指令之间的依赖关系;根据所确定的指令之间的依赖关系确定有依赖关系的指令是否能够被融合;根据有依赖关系的指令能够被融合的确定结果,将能够被融合的指令构成一个指令组并加入可融合指令组集合,可以获取可融合指令组集合,并且根据评估结果选择的最优可融合指令组可以更高效地适配底层硬件设施。根据本公开实施例的方案能够融合细碎节点,扩大硬件执行粒度,并且提升硬件效能。而且,根据本公开实施例的方案不需要从特定业务场景提炼业务规则,因此在面对多样化的业务场景时具备泛化能力,可以适配各种不同的场景。

在本公开的一个实施例中,根据所确定的指令之间的依赖关系确定有依赖关系的指令是否能够被融合,包括:根据所确定的指令之间的依赖关系对指令进行拓扑排序;根据拓扑排序的结果遍历全部指令以确定各个指令所依赖的全部指令;确定有依赖关系的指令是否能够被融合。

根据本公开实施例提供的技术方案,通过根据所确定的指令之间的依赖关系确定有依赖关系的指令是否能够被融合,包括:根据所确定的指令之间的依赖关系对指令进行拓扑排序;根据拓扑排序的结果遍历全部指令以确定各个指令所依赖的全部指令;确定有依赖关系的指令是否能够被融合,可以获取可融合指令组集合,并且根据评估结果选择的最优可融合指令组可以更高效地适配底层硬件设施。根据本公开实施例的方案能够融合细碎节点,扩大硬件执行粒度,并且提升硬件效能。而且,根据本公开实施例的方案不需要从特定业务场景提炼业务规则,因此在面对多样化的业务场景时具备泛化能力,可以适配各种不同的场景。

在本公开的一个实施例中,在根据计算图状态获取计算图中的可融合指令组集合之前,包括:将可融合指令组集合初始化为空。

根据本公开实施例提供的技术方案,通过在根据计算图状态获取计算图中的可融合指令组集合之前,包括:将可融合指令组集合初始化为空,有利于实施可融合指令组集合的计算,并且根据评估结果选择的最优可融合指令组可以更高效地适配底层硬件设施。根据本公开实施例的方案能够融合细碎节点,扩大硬件执行粒度,并且提升硬件效能。而且,根据本公开实施例的方案不需要从特定业务场景提炼业务规则,因此在面对多样化的业务场景时具备泛化能力,可以适配各种不同的场景。

在本公开的一个实施例中,根据预设指令融合规则,基于所选择的最优可融合指令组生成用于执行最优指令组所表示的融合动作的可执行代码。

根据本公开实施例提供的技术方案,通过根据预设指令融合规则,基于所选择的最优可融合指令组生成用于执行最优指令组所表示的融合动作的可执行代码,可以获取可融合指令组集合,并且根据评估结果选择的最优可融合指令组可以更高效地适配底层硬件设施。根据本公开实施例的方案能够融合细碎节点,扩大硬件执行粒度,并且提升硬件效能。而且,根据本公开实施例的方案不需要从特定业务场景提炼业务规则,因此在面对多样化的业务场景时具备泛化能力,可以适配各种不同的场景。

在本公开的一个实施例中,计算图状态由包括指令类型和表示指令之间的依赖关系的连接位图的二元组表示。

根据本公开实施例提供的技术方案,通过计算图状态由包括指令类型和表示指令之间的依赖关系的连接位图的二元组表示,可以获取可融合指令组集合,并且根据评估结果选择的最优可融合指令组可以更高效地适配底层硬件设施。根据本公开实施例的方案能够融合细碎节点,扩大硬件执行粒度,并且提升硬件效能。而且,根据本公开实施例的方案不需要从特定业务场景提炼业务规则,因此在面对多样化的业务场景时具备泛化能力,可以适配各种不同的场景。

在本公开的一个实施例中,计算图状态的状态参数包括状态的收益参数以及状态的访问频次参数。

根据本公开实施例提供的技术方案,通过计算图状态的状态参数包括状态的收益参数以及状态的访问频次参数,可以获取可融合指令组集合,并且根据评估结果选择的最优可融合指令组可以更高效地适配底层硬件设施。根据本公开实施例的方案能够融合细碎节点,扩大硬件执行粒度,并且提升硬件效能。而且,根据本公开实施例的方案不需要从特定业务场景提炼业务规则,因此在面对多样化的业务场景时具备泛化能力,可以适配各种不同的场景。

在本公开的一个实施例中,状态的收益参数通过预设性能模型预测或者调用代码生成器生成目标代码实际测量而被获得。

根据本公开实施例提供的技术方案,通过状态的收益参数通过预设性能模型预测或者调用代码生成器生成目标代码实际测量而被获得,可以获取可融合指令组集合,并且根据评估结果选择的最优可融合指令组可以更高效地适配底层硬件设施。根据本公开实施例的方案能够融合细碎节点,扩大硬件执行粒度,并且提升硬件效能。而且,根据本公开实施例的方案不需要从特定业务场景提炼业务规则,因此在面对多样化的业务场景时具备泛化能力,可以适配各种不同的场景。

在本公开的一个实施例中,状态的收益参数包括基于可融合指令组生成的可执行代码的执行性能参数和内存占用参数中的至少一项。

根据本公开实施例提供的技术方案,通过状态的收益参数包括基于可融合指令组生成的可执行代码的执行性能参数和内存占用参数中的至少一项,可以获取可融合指令组集合,并且根据评估结果选择的最优可融合指令组可以更高效地适配底层硬件设施。根据本公开实施例的方案能够融合细碎节点,扩大硬件执行粒度,并且提升硬件效能。而且,根据本公开实施例的方案不需要从特定业务场景提炼业务规则,因此在面对多样化的业务场景时具备泛化能力,可以适配各种不同的场景。

在本公开的一个实施例中,根据确定可融合指令组集合不为空,对可融合指令组集合中的指令组进行评估,包括:选择可融合指令组集合中的子可融合指令组集合;对子可融合指令组集合中的指令组进行评估。

根据本公开实施例提供的技术方案,通过根据确定可融合指令组集合不为空,对可融合指令组集合中的指令组进行评估,包括:选择可融合指令组集合中的子可融合指令组集合;对子可融合指令组集合中的指令组进行评估,可以获取可融合指令组集合,并且根据评估结果选择的最优可融合指令组可以更高效地适配底层硬件设施。根据本公开实施例的方案能够融合细碎节点,扩大硬件执行粒度,并且提升硬件效能。而且,根据本公开实施例的方案不需要从特定业务场景提炼业务规则,因此在面对多样化的业务场景时具备泛化能力,可以适配各种不同的场景。

在本公开的一个实施例中,根据确定可融合指令组集合不为空,对可融合指令组集合中的指令组进行评估,包括:基于蒙特卡洛树搜索方法对可融合指令组集合中的指令组进行评估。

根据本公开实施例提供的技术方案,通过根据确定可融合指令组集合不为空,对可融合指令组集合中的指令组进行评估,包括:基于蒙特卡洛树搜索方法对可融合指令组集合中的指令组进行评估,可以获取可融合指令组集合,并且根据评估结果选择的最优可融合指令组可以更高效地适配底层硬件设施。根据本公开实施例的方案能够融合细碎节点,扩大硬件执行粒度,并且提升硬件效能。而且,根据本公开实施例的方案不需要从特定业务场景提炼业务规则,因此在面对多样化的业务场景时具备泛化能力,可以适配各种不同的场景。

在本公开的一个实施例中,根据确定可融合指令组集合不为空,对可融合指令组集合中的指令组进行评估,包括:对评估结果进行缓存。

根据本公开实施例提供的技术方案,通过根据确定可融合指令组集合不为空,对可融合指令组集合中的指令组进行评估,包括对评估结果进行缓存,可以在评估完成后遇到相同状态的评估时可以直接复用之前缓存的评估结果即可,从而避免重复评估,节省资源。

本领域技术人员可以理解,参照图12描述的技术方案的可以与参照图1至图11描述的实施例结合,从而具备参照图1至图11描述的实施例所实现的技术效果。具体内容可以参照以上根据图1至图11进行的描述,其具体内容在此不再赘述。

以下参照图13描述根据本公开一实施方式的代码生成方法。

图13示出根据本公开一实施方式的代码生成方法的流程图。如图13所示,代码生成方法包括以下步骤S1310、S1320、S1330、S1340和S1350。

在步骤S1310中,根据计算图获取计算图状态。

在步骤S1320中,根据计算图状态获取计算图中的可融合指令组集合。

在步骤S1330中,确定可融合指令组集合是否为空。

在步骤S1340中,根据确定可融合指令组集合不为空,对可融合指令组集合中的指令组进行评估。

在步骤S1350中,基于对可融合指令组集合中的指令组的评估结果,选择最优可融合指令组以生成用于执行最优指令组所表示的融合动作的可执行代码。

根据本公开实施例提供的技术方案,通过根据计算图获取计算图状态;根据计算图状态获取计算图中的可融合指令组集合;确定可融合指令组集合是否为空;根据确定可融合指令组集合不为空,对可融合指令组集合中的指令组进行评估;基于对可融合指令组集合中的指令组的评估结果,选择最优可融合指令组以生成用于执行最优指令组所表示的融合动作的可执行代码,可以获取可融合指令组集合,并且根据评估结果选择的最优可融合指令组可以更高效地适配底层硬件设施。根据本公开实施例的方案能够融合细碎节点,扩大硬件执行粒度,并且提升硬件效能。而且,根据本公开实施例的方案不需要从特定业务场景提炼业务规则,因此在面对多样化的业务场景时具备泛化能力,可以适配各种不同的场景。

本领域技术人员可以理解,该实施例的技术方案的可以与参照图1至图12描述的实施例结合,从而具备参照图1至图12描述的实施例所实现的技术效果。具体内容可以参照以上根据图1至图12进行的描述,其具体内容在此不再赘述。

前述实施例描述了数据处理装置的内部功能和结构,在一个可能的设计中,数据处理装置的结构可实现为电子设备,如图14中所示,该电子设备1400可以包括处理器1401以及存储器1402。

存储器1402用于存储支持定位装置执行上述任一实施例中的数据处理方法或代码生成方法的程序,所述处理器1401被配置为用于执行所述存储器1402中存储的程序。

在本公开的一个实施例中,所述存储器1402用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器1401执行以实现以下步骤:

根据计算图获取计算图状态;

根据所述计算图状态获取所述计算图中的可融合指令组集合;

确定所述可融合指令组集合是否为空;

根据确定所述可融合指令组集合不为空,对所述可融合指令组集合中的指令组进行评估;

基于对所述可融合指令组集合中的指令组的评估结果,选择最优可融合指令组。

在本公开的一个实施例中,所述一条或多条计算机指令还被所述处理器1401执行以实现以下步骤:

根据确定所述可融合指令组集合为空,选择置信度最大的可融合指令组作为最优可融合指令组。

在本公开的一个实施例中,所述根据所述计算图状态获取所述计算图中的可融合指令组集合,包括:

根据所选择的最优可融合指令组,获取所述计算图中的可融合指令组集合。

在本公开的一个实施例中,所述根据确定所述可融合指令组集合不为空,对所述可融合指令组集合中的指令组进行评估,包括:

根据确定所述可融合指令组集合不为空,针对指令组按照预设搜索指标进行状态搜索扩展。

在本公开的一个实施例中,所述根据确定所述可融合指令组集合不为空,针对指令组按照预设搜索指标进行状态搜索扩展,包括:

根据确定所述可融合指令组集合不为空,确定所述可融合指令组集合中的指令组是否已被评估;

根据所述可融合指令组集合中的指令组已被评估,更新所述计算图状态的状态参数。

在本公开的一个实施例中,所述根据确定所述可融合指令组集合不为空,针对指令组按照预设搜索指标进行状态搜索扩展,还包括:

根据所述可融合指令组集合中的指令组未被评估,针对未被评估的指令组计算图状态的状态参数;

按照预设搜索指标进行状态搜索扩展。

在本公开的一个实施例中,所述按照预设搜索指标进行状态搜索扩展,还包括:

基于预设搜索规则,按照预设搜索指标进行状态搜索扩展。

在本公开的一个实施例中,所述按照预设搜索指标进行状态搜索扩展,还包括:

根据按照预设搜索指标进行状态搜索扩展的结果,更新所述计算图状态的状态参数。

在本公开的一个实施例中,所述根据确定所述可融合指令组集合不为空,对所述可融合指令组集合中的指令组进行评估,包括:

根据对所述可融合指令组集合中的指令组的评估结果,更新所述计算图状态。

在本公开的一个实施例中,所述根据所述计算图状态获取所述计算图中的可融合指令组集合,包括:

确定所述计算图中的指令之间的依赖关系;

根据所确定的指令之间的依赖关系确定有依赖关系的指令是否能够被融合;

根据有依赖关系的指令能够被融合的确定结果,将能够被融合的指令构成一个指令组并加入所述可融合指令组集合。

在本公开的一个实施例中,所述根据所确定的指令之间的依赖关系确定有依赖关系的指令是否能够被融合,包括:

根据所确定的指令之间的依赖关系对指令进行拓扑排序;

根据拓扑排序的结果遍历全部指令以确定各个指令所依赖的全部指令;

确定有依赖关系的指令是否能够被融合。

在本公开的一个实施例中,在所述根据所述计算图状态获取所述计算图中的可融合指令组集合之前,包括:

将所述可融合指令组集合初始化为空。

在本公开的一个实施例中,所述一条或多条计算机指令还被所述处理器1401执行以实现以下步骤:

根据预设指令融合规则,基于所选择的最优可融合指令组生成用于执行所述最优指令组所表示的融合动作的可执行代码。

在本公开的一个实施例中,所述计算图状态由包括指令类型和表示指令之间的依赖关系的连接位图的二元组表示。

在本公开的一个实施例中,所述计算图状态的状态参数包括状态的收益参数以及状态的访问频次参数。

在本公开的一个实施例中,所述状态的收益参数通过预设性能模型预测或者调用代码生成器生成目标代码实际测量而被获得。

在本公开的一个实施例中,所述状态的收益参数包括基于可融合指令组生成的可执行代码的执行性能参数和内存占用参数中的至少一项。

在本公开的一个实施例中,所述根据确定所述可融合指令组集合不为空,对所述可融合指令组集合中的指令组进行评估,包括:

选择所述可融合指令组集合中的子可融合指令组集合;

对所述子可融合指令组集合中的指令组进行评估。

在本公开的一个实施例中,所述根据确定所述可融合指令组集合不为空,对所述可融合指令组集合中的指令组进行评估,包括:

基于蒙特卡洛树搜索方法对所述可融合指令组集合中的指令组进行评估。

在本公开的一个实施例中,所述根据确定所述可融合指令组集合不为空,对所述可融合指令组集合中的指令组进行评估,包括:

对评估结果进行缓存。

在本公开的另一个实施例中,所述一条或多条计算机指令被所述处理器1401执行以实现以下步骤:

根据计算图获取计算图状态;

根据所述计算图状态获取所述计算图中的可融合指令组集合;

确定所述可融合指令组集合是否为空;

根据确定所述可融合指令组集合不为空,对所述可融合指令组集合中的指令组进行评估;

基于对所述可融合指令组集合中的指令组的评估结果,选择最优可融合指令组进行指令融合。

在本公开的又一个实施例中,所述一条或多条计算机指令被所述处理器1401执行以实现以下步骤:

根据计算图获取计算图状态;

根据所述计算图状态获取所述计算图中的可融合指令组集合;

确定所述可融合指令组集合是否为空;

根据确定所述可融合指令组集合不为空,对所述可融合指令组集合中的指令组进行评估;

基于对所述可融合指令组集合中的指令组的评估结果,选择最优可融合指令组以生成用于执行所述最优指令组所表示的融合动作的可执行代码。

本公开示例性实施例还提供了一种计算机存储介质,用于储存所述定位装置所用的计算机软件指令,其包含用于执行上述任一实施例所涉及的程序,从而具备方法所带来的技术效果。

图15是适于用来实现根据本公开一实施方式的数据处理方法、指令融合方法或代码生成方法的计算机系统的结构示意图。

如图15所示,计算机系统1500包括中央处理单元(CPU)1501,其可以根据存储在只读存储器(ROM)1502中的程序或者从存储部分1508加载到随机访问存储器(RAM)1503中的程序而执行上述附图所示的实施方式中的各种处理。在RAM1503中,还存储有系统1500操作所需的各种程序和数据。CPU1501、ROM1502以及RAM1503通过总线1504彼此相连。输入/输出(I/O)接口1505也连接至总线1504。

以下部件连接至I/O接口1505:包括键盘、鼠标等的输入部分1506;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分1507;包括硬盘等的存储部分1508;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分1509。通信部分1509经由诸如因特网的网络执行通信处理。驱动器1510也根据需要连接至I/O接口1505。可拆卸介质1511,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1510上,以便于从其上读出的计算机程序根据需要被安装入存储部分1508。

特别地,根据本公开的实施方式,上文参考附图描述的方法可以被实现为计算机软件程序。例如,本公开的实施方式包括一种计算机程序产品,其包括有形地包含在及其可读介质上的计算机程序,所述计算机程序包含用于执行附图中的方法的程序代码。在这样的实施方式中,该计算机程序可以通过通信部分1509从网络上被下载和安装,和/或从可拆卸介质1511被安装。

附图中的流程图和框图,图示了按照本公开各种实施方式的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,路程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

描述于本公开实施方式中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定。

作为另一方面,本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施方式中所述装置中所包含的计算机可读存储介质;也可以是单独存在,未装配入设备中的计算机可读存储介质。计算机可读存储介质存储有一个或者一个以上程序,所述程序被一个或者一个以上的处理器用来执行描述于本公开的方法,从而具备方法所带来的技术效果。

以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

相关技术
  • 数据处理方法、装置以及指令融合方法、代码生成方法
  • 一种数据处理方法及前端代码生成装置
技术分类

06120112901617