CN118502847A - 用于确定匹配算子的方法、计算装置、介质和程序产品 - Google Patents
用于确定匹配算子的方法、计算装置、介质和程序产品 Download PDFInfo
- Publication number
- CN118502847A CN118502847A CN202410972004.XA CN202410972004A CN118502847A CN 118502847 A CN118502847 A CN 118502847A CN 202410972004 A CN202410972004 A CN 202410972004A CN 118502847 A CN118502847 A CN 118502847A
- Authority
- CN
- China
- Prior art keywords
- function
- attribute
- template
- computing task
- combination information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 64
- 238000013507 mapping Methods 0.000 claims abstract description 26
- 230000006870 function Effects 0.000 claims description 198
- 238000004590 computer program Methods 0.000 claims description 14
- 230000004044 response Effects 0.000 claims description 13
- 239000011159 matrix material Substances 0.000 description 18
- 238000012545 processing Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 11
- 238000004364 calculation method Methods 0.000 description 9
- 238000007796 conventional method Methods 0.000 description 7
- 238000013473 artificial intelligence Methods 0.000 description 5
- 238000011161 development Methods 0.000 description 3
- 230000006978 adaptation Effects 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000003116 impacting effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000011282 treatment Methods 0.000 description 1
- 239000011800 void material Substances 0.000 description 1
Landscapes
- Stored Programmes (AREA)
- Document Processing Apparatus (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种用于确定匹配算子的方法、计算装置、介质和程序产品。该方法包括:获取关于计算任务的属性组合信息,所述属性组合信息用于指示与所述计算任务相关的多种属性信息;通过键值对方式,建立属性组合信息与函数指针之间的映射关系;基于属性组合信息,经由所确定的特例化模板函数,确定对应的函数指针;以及基于所确定的对应的函数指针,调用与计算任务匹配的算子。本发明能够针对不同应用场景精确而快速地寻求匹配算子。
Description
技术领域
本发明的实施例总体上涉及人工智能领域,更具体地涉及一种用于确定匹配算子的方法、计算装置、计算机可读存储介质和计算机程序产品。
背景技术
由于人工智能应用场景的日益复杂化和多样化(例如,人工智能应用场景涉及图像处理、语音识别、广告推荐等),需要进行大规模的运算,这些运算函数体现在软件上即所谓的“算子”。 应当理解,对于不同的应用场景而言,通常需要不同的参数配置,相应的软件算子实现方式存在差异,使用的硬件资源也不尽相同,如果无法正确的调用到相应的算子,将会导致报错或者使得程序无法执行。因此,需要选择适配的算子以利用不同的硬件等资源来达到最佳的性能效果。
传统的用于确定匹配算子的方法例如主要采用“if else”手工维护的条件分支结构的方式,基于与算子适配相关的参数组合来选择与应用场景匹配的算子。随着应用场景的复杂化,相关的参数组合的数量日渐庞大,从而导致在软件库中搜索匹配算子的耗时也随之较多;同时,所采用的“if else”条件分支结构的出错概率也会增大。
综上,传统的用于确定匹配算子的方法存在的不足之处在于:针对不同应用场景,难于快速并精准地确定匹配算子。
发明内容
本发明提供了一种用于确定匹配算子的方法、计算装置、计算机可读存储介质和计算机程序产品,能够针对不同应用场景精确而快速地寻求匹配算子。
根据本发明的第一方面,提供了一种用于确定匹配算子的方法。该方法包括:获取关于计算任务的属性组合信息,所述属性组合信息用于指示与所述计算任务相关的多种属性信息;通过键值对方式,建立属性组合信息与函数指针之间的映射关系;基于属性组合信息,经由所确定的特例化模板函数,确定对应的函数指针;以及基于所确定的对应的函数指针,调用与计算任务匹配的算子。
在一些实施例中,所述多种属性信息包括以下各项中的多项:存储架构、广播模式、形状类型和数据类型。
在一些实施例中,所述与计算任务匹配的算子为与计算任务匹配的核函数,所述特例化模板函数是经由函数模板的特化而确定的。
在一些实施例中,用于确定匹配算子的方法还包括:确定是否缺乏支持计算任务的算子;响应于确定缺乏支持计算任务的算子,调用默认函数;响应于默认函数被调用,生成用于指示算子不支持所述计算任务的报错信息;以及响应于确定不缺乏支持计算任务的算子,基于计算任务的属性组合信息进行函数模板的特化,以生成特例化模板函数,所述特例化模板函数被用于调用支持所述计算任务的算子。
在一些实施例中,获取关于计算任务的属性组合信息包括:针对多种属性信息,确定与所述多种属性信息分别对应的多种属性权重,所述属性权重大于或者等于预定值,并且与不同种属性信息所对应的属性权重彼此不同;以及基于关于计算任务的多种属性信息、以及所确定的多种属性权重,计算关于当前计算任务的属性组合信息。
在一些实施例中,通过键值对方式,建立属性组合信息与函数指针之间的映射关系包括:采用哈希表或红黑树的方式,建立所计算的属性组合信息与函数指针的映射关系。
在一些实施例中,确定与所述多种属性信息分别对应的多种属性权重包括:确定与所述多种属性信息分别对应的多种属性权重,以使得针对不同属性信息组合所对应的各个属性信息与对应的属性权重的加权求和结果不同。
在一些实施例中,所述特例化模板函数经由以下而确定:经由编译器,基于函数模板的模板参数和预定表,确定特例化模板函数,所述预定表指示函数模板的模板参数与默认函数和特例化模板函数之间的对应关系。
在一些实施例中,用于确定匹配算子的方法还包括:响应于针对计算任务增加支持算子,基于计算任务的属性组合信息增加新的特例化模板函数;以及经由编译器,在预定表中增加与所增加的新的特例化模板函数对应的入口。
在一些实施例中,函数指针的数量等于特例化模板函数的数量加一。
根据本发明的第二方面,还提供了一种计算装置。该计算装置包括:至少一个处理器;以及与至少一个处理器通信连接的存储器;其中存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使计算装置能够执行本发明的第一方面的方法。
根据本发明的第三方面,还提供了一种计算机可读存储介质。该计算机可读存储介质上存储有计算机程序,计算机程序被机器执行时执行本发明的第一方面的方法。
根据本发明的第四方面,还提供了一种计算机程序产品,包括计算机程序,计算机程序被机器执行时执行本发明的第一方面的方法。
应当理解,本部分所描述的内容并非旨在标识本发明的实施例的关键或重要特征,也不用于限制本发明的范围。本发明的其它特征将通过以下的说明书而变得容易理解。
附图说明
结合附图并参考以下详细说明,本发明各实施例的上述和其他特征、优点及方面将变得更加明显。在附图中,相同或相似的附图标注表示相同或相似的元素。
图1示意性示出了根据本发明实施例的实施用于确定匹配算子的方法的计算装置的示意图。
图2示出了根据本发明的实施例的用于确定匹配算子的方法的流程图。
图3示出了根据本发明的实施例的用于建立属性组合信息与函数指针之间的映射关系的方法的流程图。
图4示出了根据本发明的实施例的用于生成特例化模板函数的方法的流程图。
在各个附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
下面将参照附图更详细地描述本发明的优选实施例。虽然附图中显示了本发明的优选实施例,然而应该理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了使本发明更加透彻和完整,并且能够将本发明的范围完整地传达给本领域的技术人员。
在本文中使用的术语“包括”及其变形表示开放性包括,即“包括但不限于”。术语“基于”表示“至少部分地基于”。术语“一个示例实施例”和“一个实施例”表示“至少一个示例实施例”。术语“另一实施例”表示“至少一个另外的实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。
如前文所描述,在传统的用于确定匹配算子的方法中,对于不同的应用场景,特别是在人工智能相关的应用场景,通常通过“if else”手工维护的条件分支结构来选择与应用场景匹配的算子。以下表一示意性示出了传统的确定匹配算子的方法的代码。
表一
应当理解,在人工智能相关的应用场景中,与算子适配相关的参数类型的数量、以及每种参数类型所包括的参数数量非常多。例如,以数据类型为例,其例如至少包括有:fp32、 bf16、 fp16、int8等4种类型。对于存储架构而言,其例如包括有:UMA、NUMA等2种方式。对于广播方式(Broadcast mode)而言,其例如包括有:A矩阵广播而B矩阵不广播、B矩阵广播而A矩阵、A矩阵和B矩阵均广播、以及A矩阵和B矩阵均不广播等4种情况。因此,仅考虑一个矩阵A的情况, 就已经有4*2*4 = 16 种不同的参数组合。而实际进行计算的过程中,至少会涉及3个矩阵的情形,这样就会出现16*3 = 48种不同的参数组合。因此,每增加一类参数,会导致参数组合的数量增长迅速。在传统的用于确定匹配算子的方法中,针对不同的参数组合,如表一所示例,利用“if else”条件分支结构来选择与参数组合匹配的合适的算子,因为数量庞大的参数组合,不仅会使得软件库的算子相关代码的维护变得非常困难,而且会使得针对软件库的匹配算子的搜索因为搜索路径较多而异常耗时。另外,在针对不同算子在执行过程中,所采用的“if else”条件分支结构的出错概率也会增大。
综上,传统的用于确定匹配算子的方法存在的不足之处在于:针对不同应用场景,难于快速并精准地确定匹配算子。
为了至少部分地解决上述问题以及其他潜在问题中的一个或者多个,本发明的示例实施例提出了一种用于确定匹配算子的方法。在该方法中,通过键值对的方式建立所获取的属性组合信息(其指示与计算任务相关的多种属性信息)与函数指针之间的映射关系;以及基于属性组合信息,经由所确定的特例化模板函数,确定对应的函数指针,本发明可以使得与不同应用场景的计算任务相关的大量的、不同属性组合信息,通过特例化模板函数而匹配到有限数量的函数指针,并经由所确定的函数指针,调用与计算任务匹配的算子,由此,可以显著地降低搜索匹配算子的成本和耗时。并且,因为无需利用“if else”条件分支结构来选择与参数组合匹配的合适的算子,因此避免了容易出错的问题。因而,本发明能够针对不同应用场景精确而快速地寻求匹配算子。
图1示意性示出了根据本发明实施例的实施用于确定匹配算子的方法的计算装置100的示意图。如图1所示,计算装置100可以具有一个或多个处理单元和存储器。该一个或多个处理单元例如包括诸如图形处理器(Graphics Processing Unit,GPU)、现场可程序化逻辑门阵列(Field Programmable Gate Array,FPGA)、专门应用的集成电路(ApplicationSpecific Integrated Circuit,ASIC)、或者通用图形处理器(General-purposecomputing on graphics processing units,GPGPU)等的专用处理单元以及诸如CPU的通用处理单元。应当理解,在计算装置100所配置的一个或多个处理单元还运行有多个软件模块。该软件模块例如包括:计算任务的属性组合信息获取单元102、属性组合信息与函数指针映射单元104、对应的函数指针确定单元106、以及匹配算子调用单元108。
关于计算任务的属性组合信息获取单元102,其用于获取关于计算任务的属性组合信息,所述属性组合信息用于指示与所述计算任务相关的多种属性信息。
关于属性组合信息与函数指针映射单元104,其用于通过键值对方式,建立属性组合信息与函数指针之间的映射关系。
关于对应的函数指针确定单元106,其用于基于属性组合信息,经由所确定的特例化模板函数,确定对应的函数指针。
关于匹配算子调用单元108,其用于基于所确定的对应的函数指针,调用与计算任务匹配的算子。
以下将结合图2描述本发明的实施例的用于确定匹配算子的方法200。图2示出了根据本发明的实施例的用于确定匹配算子的方法200的流程图。应当理解,方法200例如可以在图1所描述的计算装置100处执行。方法200还可以包括未示出的附加动作和/或可以省略所示出的动作,本发明的范围在此方面不受限制。
在步骤202处,计算装置100获取关于计算任务的属性组合信息,所述属性组合信息用于指示与所述计算任务相关的多种属性信息。
关于多种属性信息,其例如包括以下各项中的多项:存储架构(MemArch)、广播模式(BroadCastMode)、形状类型(ShapeType)和数据类型(DataType)。
关于属性组合信息,其例如用于指示与所述计算任务相关的多种属性信息。在一些实施例中,属性组合信息例如被配置为字符串(string)类型。例如,属性组合信息为MemArch_BroadCastMode_ShapeType。该属性键值例如包括多个不同的属性信息,不同属性信息中间例如用下划线连接。具体而言,属性组合信息例如为ALL_UMA_LtAiB_Normal,或者NUMA_LtAiBi_Large。在一些实施例中,属性组合信息例如指示二叉树或者多叉树的不同的搜索路径。
关于存储架构这一属性信息,其例如而不限于指示:ALL_UMA、NUMA等不同存储架构。其中,ALL_UMA代表A矩阵、B矩阵和C矩阵的存储架构均是UMA类型的。
关于广播模式,其例如而不限于指示:LtAiB 、LtAiBi等不同广播模式。其中,LtAiB例如代表A矩阵带有batch,而B矩阵不带有batch,以及B矩阵被广播到矩阵。LtAiBi例如代表A矩阵和B矩阵均不广播。
关于形状类型,其例如而不限于指示:Normal、Large等形状类型。其中,Large 例如代表矩阵有至少一个维度超过预定标准(例如,预定标准例如而不限于是8192)。Normal代表无维度超过预定标准。
关于形状类型,其例如至少包括有:fp32、 bf16、 fp16、int8等多种类型。
在一些实施例中,每一种属性信息根据其对应的情形而被表征为对应的枚举值。例如,存储架构这种属性信息为ALL_UMA时,被表征为“1”。存储架构例如指示NUMA时,被表征为“2”。广播模式例如指示LtAiB时,对应的属性信息被表征为“1”。广播模式例如指示LtAiBi时,对应的属性信息被表征为“2”。形状类型例如指示Normal时,对应的属性信息被表征为“1”。形状类型例如指示Large时,应的属性信息被表征为“2”。由此,属性组合信息例如指示“ALL_UMA_LtAiB_Normal”时,其例如被表征为“1_1_1”。属性组合信息例如指示“NUMA_LtAiBi_Large”时,其例如被表征为“2_2_2”。
在步骤204处,计算装置100通过键值对方式,建立属性组合信息与函数指针之间的映射关系。
例如,计算装置100以键-值(Key-Value)对的方式,建立属性组合信息与函数指针之间的映射关系。其中,Key例如为属性组合信息,其用于指示硬件和应用要求的各个属性组合。在一些实施例中,属性组合信息的数量很多。Value例如为函数指针,其用于指示对应的算子的地址(或者称“入口”)。在一些实施例中,Value例如为C++模板函数的函数指针。
具体而言,在一些实施例中,建立属性键值与函数指针之间的映射关系的方法例如包括:采用红黑树(std::map)的方式或者哈希表(std::unordered_map)的方式,建立属性组合信息与函数指针之间的映射关系(例如,键-值对方式的映射关系)。应当理解,无论采用红黑树的方式,还是采用哈希表的方式,键-值对之间的映射是唯一的。另外,采用红黑树或者采用哈希表的方式存储属性组合信息与函数指针之间的映射关系的内部实现虽然存在差异,但是,二者外部接口可以配置为一致的。在红黑树的方式中,如果已经存在相同的Key,则无法插入数据。如果没有找到对应的Key, 则这次搜索会报错。以下表二示意性示出采用红黑树的方式建立属性组合信息与函数指针之间的映射关系的示例性伪代码。表二的伪代码中示例了算子“L4NodesFunc”的函数指针与属性组合信息之间的映射。
表二
在步骤206处,计算装置100基于属性组合信息,经由所确定的特例化模板函数,确定对应的函数指针。
在一些实施例中,函数指针的数量等于特例化模板函数的数量加一。本发明的函数指针例如包括:一个与默认函数对应的函数指针,以及与每个特例化模板函数对应的函数指针。下文表五中示例了两个特例化模板函数,即,特例化模板函数1、以及特例化模板函数2。则配置分别对应于特例化模板函数1的第一函数指针、对应于特例化模板函数2的第二函数指针,以及对应于默认函数的第三函数指针。
例如,关于对应的确定函数指针的方式,其例如是经由搜索函数而实现的。例如,计算装置100基于用于指示属性组合信息的string_name,在搜索集合(例如,std::map )里,查找与string_name对应的函数指针(function pointer)。如果计算装置100确认没有查找到用于指示属性组合信息的string_name, 则指示错误信息。以下表三示意性示出了用于确定对应的函数指针的方式的示例性伪代码。
表三
关于特例化模板函数,其例如是经由函数模板的特化而确定的。在一些实施例中,关于生成特例化模板函数的方法,其例如包括:确定是否缺乏支持计算任务的算子;响应于确定缺乏支持计算任务的算子,调用默认函数;响应于默认函数被调用,生成用于指示算子不支持所述计算任务的报错信息;以及响应于确定不缺乏支持计算任务的算子,基于计算任务的属性组合信息进行函数模板的特化,以生成特例化模板函数,所述特例化模板函数被用于调用支持所述计算任务的算子。下文将结合图4详细说明用于生成特例化模板函数的方法,在此,不再赘述。
应当理解,如果希望支持某种属性组合,需要进行函数模板的特化(templatespecialization),以生成特例化的模板函数。关于确定特例化模板函数的方式,其例如包括:计算装置100经由编译器,基于函数模板的模板参数和预定表,确定特例化模板函数,关于预定表,其用于指示不同模板参数以及与模板参数所对应的函数实例,具体而言,其例如指示函数模板的模板参数与默认函数和特例化模板函数之间的对应关系。应当理解,预定表可以对开发者透明,不需要开发者关心。程序运行时,C++程序会匹配对应的模板参数,以便调用默认函数或者特例化模板函数。
待调用的函数(其例如包括:默认函数或者特例化模板函数)与模板参数之间的对应关系必须是唯一匹配的,一旦不唯一匹配或者无法匹配,则会出现编译错误。因此,在预定表中,模板参数只可能对应默认函数或者特例化模板函数,没有别的对应路径。在一些实施例中,在每次添加特例化模板函数之前,计算装置100确定模板参数(或者属性组合)与默认函数或者特例化模板函数之间的对应关系是否唯一;响应于确定模板参数(或者属性组合)与默认函数或者特例化模板函数之间的对应关系不唯一,生成编译错误指示。
在一些实施例中,方法200还包括:响应于针对计算任务增加支持算子,基于计算任务的属性组合信息增加新的特例化模板函数;以及经由编译器,在预定表中增加与所增加的新的特例化模板函数对应的入口。由此,本发明利于增量式开发,并且简化代码维护。
在步骤208处,计算装置100基于所确定的对应的函数指针,调用与计算任务匹配的算子。
关于与计算任务匹配的算子,其例如为与计算任务匹配的核函数。
关于与计算任务匹配的核函数,其例如是作为子函数配置在函数指针所指向的地址。
在上述方案中,本发明通过建立所获取的属性组合信息(其指示计算任务的多种属性信息)与函数指针之间的映射关系;以及基于属性组合信息,经由所确定的特例化模板函数,确定函数指针,本发明可以使得对应于不同应用场景计算任务的大量的、不同属性组合信息,通过特例化模板函数而匹配到有限数量的对应函数指针,并经由所确定的对应函数指针,调用与计算任务匹配的算子。由此,显著地降低了搜索匹配算子的成本和时间。由此,可以显著地降低搜索匹配算子的成本和耗时。并且,因为无需利用“if else”条件分支结构来选择与参数组合匹配的合适的算子,因此避免了容易出错的问题。
而在传统的用于确定匹配算子的方法中,由于不同应用场景所对应的参数组合很多,所以针对算子的搜索路径很多(以传统的二叉树匹配算子的方式为例,叶子节点对应算子,各个参数组合构成搜索路径),因而,依据传统方式针对不同应用场景找到匹配算子需要耗费大量的搜索成本、时间,而且容易产生搜索结果的错误。
本发明的实测数据表明,利用本发明的用于确定匹配算子的方法,针对不同场景而精确匹配到所需要的函数所需的时间均小于1us。因此,本发明能够快速精确匹配到所计算任务需要的函数。
以下将结合图3描述本发明的实施例的用于建立属性组合信息与函数指针之间的映射关系的方法300。图3示出了根据本发明的实施例的用于建立属性组合信息与函数指针之间的映射关系的方法300的流程图。应当理解,方法300例如可以在图1所描述的计算装置100处执行。方法300还可以包括未示出的附加动作和/或可以省略所示出的动作,本发明的范围在此方面不受限制。
在步骤302处,计算装置100针对多种属性信息,确定与所述多种属性信息分别对应的多种属性权重,所述属性权重大于或者等于预定值,并且与不同种属性信息所对应的属性权重彼此不同。
应当理解,由于不同的属性信息(例如而不限于是:存储架构、广播模式、形状类型和数据类型),其在系统里通常是被表征为枚举的整型值,例如1、 2、 3等等,并且这些整型值相距很近。如果将这些用于表征属性信息的整型值简单的连接或者相加,会导致不同的属性组合后的哈希值可能是一样的,进而容易导致哈希冲突(hash collision)。应当理解,哈希冲突会导致查询结果错误,严重影响哈希表的可用性。
为了防止哈希冲突,本发明需要针对多种属性信息,确定与所述多种属性信息对应的多个属性权重。关于确定与所述多种属性信息分别对应的多种属性权重的方法,其例如包括:计算装置100确定与所述多种属性信息分别对应的多种属性权重,以使得针对不同属性信息组合所对应的各个属性信息与对应的属性权重的加权求和结果不同。例如,对应于存储架构的属性权重为“10”,对应于广播模式的属性权重为“100”,对应于形状类型的属性权重为“1000”,对应于数据类型的属性权重例如为“10000”。
在步骤304处,计算装置100基于关于计算任务的多种属性信息、以及所确定的多种属性权重,计算关于当前计算任务的属性组合信息。通过采用上述手段,采用使得属性信息的整数倍增来防止哈希冲突。
关于计算属性组合信息的方法,其例如包括:基于关于计算任务的多种属性信息、所确定的多种属性权重进行加权求和,以便获得关于计算任务的属性组合信息。例如,关于计算任务的当前属性组合信息为“MemArch Bro_adCast _shape_type”,则所获得的关于计算任务的属性组合信息的值例如为MemArch * 10, BroadCast * 100, shape_type *1000。
在步骤306处,计算装置100采用哈希表的方式,建立所计算的属性组合信息与函数指针的映射关系。
通过采用上述技术手段,本发明使得属性权重大于或者等于预定值,并且与不同属性信息所对应的属性权重彼此不同,可以使得得到的关于计算任务的属性组合信息的值是比较大的离散数值,由此可以避免因哈希冲突会而导致查询结果错误。
以下将结合图4描述本发明的实施例的用于生成特例化模板函数的方法400。图4示出了根据本发明的实施例的用于生成特例化模板函数的方法400的流程图。应当理解,方法400例如可以在图1所描述的计算装置100处执行。方法400还可以包括未示出的附加动作和/或可以省略所示出的动作,本发明的范围在此方面不受限制。
在步骤402处,计算装置100确定是否缺乏支持计算任务的算子。
在步骤404处,如果计算装置100确定缺乏支持计算任务的算子,调用默认函数。
关于默认函数,其例如用于指示缺乏支持算子时函数的入口。在一些实施例中,如果用户调用到了不支持的模板组合,本发明通过C++程序里会调到默认函数的地址(即,默认函数的分支入口)。
应当理解,Key对应的属性组合信息的数量非常多,因此,一般而言,与属性组合信息对应的Value(即,函数指针)的数量也是非常多。由于AI模型的不同,实际应用中,并不需要一开始针对所有属性组合的Value(即,函数指针)生成对应代码。而是可以根据应用需求,进行增量式开发或代码生成。例如,存在100种属性组合信息。可以先针对其中的部分属性组合信息(例如,表五中示例的支持2种属性组合信息)开通所调用的算子(例如,核函数),针对剩余部分的属性组合信息暂时关闭其所调用的算子,由此,便于进行增量开发或增量代码生成。应当理解,算子除了所对应的Key值不同之外,其函数接口其实是十分相似。因此,本发明使用了 C++的template的方式实现函数接口的统一。并且配置了默认函数,以使得剩余部分的属性组合走的都是同一个入口“报错入口”。
在步骤406处,如果计算装置100确定默认函数被调用,生成用于指示算子不支持所述计算任务的报错信息。
以下表四示意性示出用于构建默认函数的示例性伪代码。例如,针对属性组合信息“NUMA_LtABi_Normal”,经由查询用于指示属性组合信息与函数指针映射关系的表,确定函数指针(例如,void Node_func_ptr(函数传参1,函数传参2, …))指向默认函数。如表四的伪代码所指示:如果确定默认函数被调用,生成用于指示算子不支持所述计算任务的报错信息。
表四
在步骤408处,如果计算装置100确定不缺乏支持计算任务的算子,基于计算任务的属性组合信息进行函数模板的特化,以生成特例化模板函数,所述特例化模板函数被用于调用支持所述计算任务的算子。
应当理解,如果希望算子支持某种属性组合(或者称为“不缺乏支持计算任务的算子”),需要进行函数模板的特化(template specialization)。
关于函数模板,其例如是C++函数模板。在一些实施例中,经由编译器,对C++模板函数隐含的构建了一张预定表。预定表指示函数模板的模板参数、以及对应的默认函数和特例化模板函数的对应关系。
关于模板参数,其例如与属性组合信息相对应。在一些实施例中,模板参数例如是表五中示例的“ComputeMemoryPair”、“BroadcastType”、“ShapeType”。
关于进行函数模板的特化的方式,其例如包括:计算装置100在程序编译时,经由编译器,基于函数模板的模板参数和预定表,确定特例化模板函数,所述预定表指示函数模板的模板参数与默认函数和特例化模板函数之间的对应关系。在一些实施例中,所生成的特例化模板函数包括用于调用对应核函数的子函数。以下表五示意性示出用于特例化模板函数的示例性伪代码。
表五
例如,表五中所示例的特例化模板函数1中包括用于调用核函数Kernel1的子函数。表五中所示例的特例化模板函数2中包括用于调用核函数Kernel2的子函数。
再例如,表五中的示例性代码例如指示了,针对属性组合信息“ALL_UMA_LtAiBi_Normal”,计算装置100确定不缺乏支持计算任务的算子,则使用对应的特例化模板函数1,例如,对应的函数指针例如指向",,",最终调用GPU上的、与属性组合信息“ALL_UMA_LtAiBi_Normal”对应的核函数Kernel1。
表五中的示例性代码例如还指示了,针对属性组合信息“NUMA_LtAiBi_Normal”,则使用对应的特例化模板函数2,例如,对应的函数指针例如指向",,",最终调用GPU上的、与属性组合信息“NUMA_LtAiBi_Normal”对应的核函数Kernel2。
通过采用上述手段,本发明针对缺乏算子的情形,利用默认函数报错,针对不缺乏支持算子的情形,利用特例化模板函数来确定函数入口,由此,适于代码增量开发或者代码生成的场景。
本文所描述的各个过程和处理,例如方法200、300、400,可在计算装置处执行。该计算装置例如包括:至少一个处理器(至少一个图形处理器和至少一个中央处理器);以及与至少一个处理器通信连接的存储器;其中存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行。在一些实施例中,方法200、300、400可被实现为计算机软件程序或程序产品,其被有形地包含于机器可读介质。在一些实施例中,计算机程序的部分或者全部可以经由只读存储器(Read-Only Memory,ROM)和/或通信单元而被载入和/或安装到计算装置上。当计算机程序被加载到随机存取存储器(Random-access memory, RAM)并由GPU和CPU执行时,可以执行上文描述的方法200、300、400的一个或多个动作。
本发明可以是方法、装置、系统和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于执行本发明的各个方面的计算机可读程序指令。计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是但不限于电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的中央处理单元,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的中央处理单元执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本申请中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本申请公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本申请保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。
Claims (13)
1.一种用于确定匹配算子的方法,其特征在于,所述方法包括:
获取关于计算任务的属性组合信息,所述属性组合信息用于指示与所述计算任务相关的多种属性信息;
通过键值对方式,建立属性组合信息与函数指针之间的映射关系;
基于属性组合信息,经由所确定的特例化模板函数,确定对应的函数指针;以及
基于所确定的对应的函数指针,调用与计算任务匹配的算子。
2.根据权利要求1所述的方法,其特征在于,所述多种属性信息包括以下各项中的多项:存储架构、广播模式、形状类型和数据类型。
3.根据权利要求1所述的方法,其特征在于,所述与计算任务匹配的算子为与计算任务匹配的核函数,所述特例化模板函数是经由函数模板的特化而确定的。
4.根据权利要求1所述的方法,其特征在于,还包括:
确定是否缺乏支持计算任务的算子;
响应于确定缺乏支持计算任务的算子,调用默认函数;
响应于默认函数被调用,生成用于指示算子不支持所述计算任务的报错信息;以及
响应于确定不缺乏支持计算任务的算子,基于计算任务的属性组合信息进行函数模板的特化,以生成特例化模板函数,所述特例化模板函数被用于调用支持所述计算任务的算子。
5.根据权利要求2所述的方法,其特征在于,获取关于计算任务的属性组合信息包括:
针对多种属性信息,确定与所述多种属性信息分别对应的多种属性权重,所述属性权重大于或者等于预定值,并且与不同种属性信息所对应的属性权重彼此不同;以及
基于关于计算任务的多种属性信息、以及所确定的多种属性权重,计算关于当前计算任务的属性组合信息。
6.根据权利要求5所述的方法,其特征在于,通过键值对方式,建立属性组合信息与函数指针之间的映射关系包括:
采用哈希表的方式,建立所计算的属性组合信息与函数指针的映射关系。
7.根据权利要求5所述的方法,其特征在于,确定与所述多种属性信息分别对应的多种属性权重包括:
确定与所述多种属性信息分别对应的多种属性权重,以使得针对不同属性信息组合所对应的各个属性信息与对应的属性权重的加权求和结果不同。
8.根据权利要求1所述的方法,其特征在于,所述特例化模板函数经由以下而确定:
经由编译器,基于函数模板的模板参数和预定表,确定特例化模板函数,所述预定表指示函数模板的模板参数与默认函数和特例化模板函数之间的对应关系。
9.根据权利要求4所述的方法,其特征在于,还包括:
响应于针对计算任务增加支持算子,基于计算任务的属性组合信息增加新的特例化模板函数;以及
经由编译器,在预定表中增加与所增加的新的特例化模板函数对应的入口。
10.根据权利要求1所述的方法,其特征在于,函数指针的数量等于特例化模板函数的数量加一。
11.一种计算装置,其特征在于,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-10中任一项所述的方法。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被机器执行时执行根据权利要求1-10中任一项所述的方法。
13.一种计算机程序产品,其特征在于,包括计算机程序,所述计算机程序被机器执行时执行根据权利要求1-10中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410972004.XA CN118502847A (zh) | 2024-07-19 | 2024-07-19 | 用于确定匹配算子的方法、计算装置、介质和程序产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410972004.XA CN118502847A (zh) | 2024-07-19 | 2024-07-19 | 用于确定匹配算子的方法、计算装置、介质和程序产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118502847A true CN118502847A (zh) | 2024-08-16 |
Family
ID=92231675
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410972004.XA Pending CN118502847A (zh) | 2024-07-19 | 2024-07-19 | 用于确定匹配算子的方法、计算装置、介质和程序产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118502847A (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130091485A1 (en) * | 2011-10-10 | 2013-04-11 | Telefonaktiebolaget L M Ericsson (Publ) | Bridging the gap between high level user requirements and availability management framework configurations |
CN115600664A (zh) * | 2022-09-28 | 2023-01-13 | 美的集团(上海)有限公司(Cn) | 算子处理方法、电子设备及存储介质 |
CN115994086A (zh) * | 2022-11-24 | 2023-04-21 | 中科慧远视觉技术(北京)有限公司 | 图像处理方法及装置、存储介质、终端 |
CN116483531A (zh) * | 2023-03-27 | 2023-07-25 | 阿里云计算有限公司 | 任务调度方法、装置、电子设备及存储介质 |
CN116932092A (zh) * | 2023-09-18 | 2023-10-24 | 之江实验室 | 一种算子调用代码自动生成的方法、装置、介质及设备 |
-
2024
- 2024-07-19 CN CN202410972004.XA patent/CN118502847A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130091485A1 (en) * | 2011-10-10 | 2013-04-11 | Telefonaktiebolaget L M Ericsson (Publ) | Bridging the gap between high level user requirements and availability management framework configurations |
CN115600664A (zh) * | 2022-09-28 | 2023-01-13 | 美的集团(上海)有限公司(Cn) | 算子处理方法、电子设备及存储介质 |
CN115994086A (zh) * | 2022-11-24 | 2023-04-21 | 中科慧远视觉技术(北京)有限公司 | 图像处理方法及装置、存储介质、终端 |
CN116483531A (zh) * | 2023-03-27 | 2023-07-25 | 阿里云计算有限公司 | 任务调度方法、装置、电子设备及存储介质 |
CN116932092A (zh) * | 2023-09-18 | 2023-10-24 | 之江实验室 | 一种算子调用代码自动生成的方法、装置、介质及设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108319460B (zh) | 应用程序安装包的生成方法、装置、电子设备及存储介质 | |
CN111611441B (zh) | 异构数据的处理方法、装置以及计算机设备 | |
CN113723589A (zh) | 混合精度神经网络 | |
CN109542462B (zh) | 一种系统环境部署方法、存储介质和服务器 | |
WO2020142300A1 (en) | Automatic resource management for build systems | |
CN111596920A (zh) | 文件编译方法、装置、编译设备及存储介质 | |
CN111882038A (zh) | 模型转换方法与装置 | |
CN111881477A (zh) | 数据内容的标引方法、装置、计算机设备及存储介质 | |
CN113656433B (zh) | 实体对象扩展方法、装置、电子设备和存储介质 | |
CN115599359A (zh) | 一种代码生成方法、装置、设备及介质 | |
CN118502847A (zh) | 用于确定匹配算子的方法、计算装置、介质和程序产品 | |
CN112395339A (zh) | 系统间数据准入校验方法、装置、计算机设备和存储介质 | |
CN113971019B (zh) | 数据类型创建方法、装置、服务器及介质 | |
CN108052335B (zh) | 数据管理方法、装置、计算设备及存储介质 | |
CN114995877B (zh) | 一种变量配置方法及装置 | |
CN116701143A (zh) | 性能分析方法、装置、系统、计算设备及存储介质 | |
CN113469284A (zh) | 一种数据分析的方法、装置及存储介质 | |
CN113204541A (zh) | 异构数据库数据迁移自动校正方法及装置 | |
CN110704696A (zh) | 数据标准化方法、装置、电子设备及可读存储介质 | |
CN110688430A (zh) | 一种获得数据旁路的方法、装置及电子设备 | |
CN109710310B (zh) | 用于嵌入式环境的数据处理方法、系统、终端及存储介质 | |
CN115543485B (zh) | 一种数据转换配置生成方法、装置、计算机设备及介质 | |
CN113900959B (zh) | 软件测试方法、装置、设备及存储介质 | |
CN116450250B (zh) | 一种动态脚本执行方法、系统及存储介质 | |
CN117952159A (zh) | 一种神经网络量化方法、装置、设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |